電丸のブログ

電子部品の紹介などをしていきます‼

超小型・低消費電力マイコンの隠れた実力!ATTINY84 のすべてを徹底解説

今日の電子工作や組み込みシステム設計において、マイクロコントローラ(マイコン)はプロジェクトの「脳」として不可欠な存在です。

特に、小型化、低消費電力化、そしてコスト削減が強く求められるIoTデバイスやウェアラブル機器、バッテリー駆動のアプリケーションでは、高い処理能力だけでなく、これらの要素が非常に重要な選定基準となります。

 

数あるマイコンの中でも、Atmel社(現在はMicrochip Technologyの一部)が開発した ATTINY84 は、その名の通り「Tiny(小型)」でありながら、豊富な機能を備え、多くの電子工作愛好家やプロのエンジニアから根強い支持を得ています。

Arduinoのような使いやすさと、AVRマイコンならではの堅牢性を兼ね備えたこのICは、まさに「隠れた実力者」と言えるでしょう。

 

本記事では、ATTINY84 の基本的な特徴から、詳細なピン配置と機能、具体的なプログラミング方法(Arduino IDEによる開発)、豊富なアプリケーション事例、そして設計時に押さえておくべきポイントまで、徹底的に深掘りしていきます。

ATTINY84をこれから使ってみようと考えている方から、すでに使用しているがもっと理解を深めたい方まで、すべての方に役立つ情報を提供します。

1. ATTINY84 とは?なぜ多くのプロジェクトで選ばれるのか?

ATTINY84 は、AVRアーキテクチャに基づく8ビットのマイクロコントローラです。その名前が示す通り、極めて小型で低消費電力な設計が特徴であり、特に以下のような点で多くのプロジェクトで選ばれています。

  • コンパクトなパッケージ:
    • 14ピンDIPパッケージ(スルーホール実装用)や、14ピンSOIC/TSSOPパッケージ(表面実装用)など、非常に小型なパッケージで提供されています。

      これにより、基板スペースに制約がある小型デバイスやウェアラブル機器への組み込みが容易です。
  • 豊富なI/Oピン:
    • 14ピンのパッケージにもかかわらず、**12本の汎用I/Oピン(GPIO)**を提供します。これは、同等のサイズのマイコンと比較しても非常に多くのI/Oであり、LED点灯、スイッチ入力、センサー読み取りなど、多様な入出力要件に対応できます。
  • 低消費電力動作:
    • バッテリー駆動のアプリケーションにとって非常に重要な特性です。スリープモードを適切に活用することで、nA(ナノアンペア)オーダーの超低消費電力を実現でき、バッテリー寿命を大幅に延長することが可能です。

      これは、IoTセンサーノードや、長期間の監視が必要なデバイスに最適です。

  • 内蔵機能の充実:
    • 8KBのフラッシュメモリ: プログラムコードを保存するためのメモリです。
    • 512バイトのSRAM: 変数やスタックを一時的に保存するためのメモリです。
    • 512バイトのEEPROM: 電源を切ってもデータが保持される不揮発性メモリです(設定値の保存などに便利)。

    • 豊富なペリフェラル:
      • タイマー/カウンタ: 8ビットと16ビットのタイマーをそれぞれ1つずつ搭載。PWM出力(モーター制御、LED調光など)や、正確な時間管理に利用できます。

      • アナログ-デジタルコンバータ (ADC): 10ビット分解能のADCを8チャンネル搭載。アナログセンサー(温度センサー、光センサーなど)の値をデジタルデータに変換できます。

      • ユニバーサルシリアルインターフェース (USI): I2C(TWI)やSPIなどのシリアル通信プロトコルをソフトウェアで実装するための柔軟なインターフェースです。

      • ウォッチドッグタイマー (WDT): プログラムの暴走を検知し、マイコンをリセットして正常な動作に戻すための安全機能です。

      • 内部オシレータ: 外部に水晶発振子を接続することなく動作可能。部品点数を減らし、コストと基板スペースを削減できます。

  • コストパフォーマンス:
    • その多機能性と小型性を考えると、非常に手頃な価格で入手できる点も、多くのプロジェクトで採用される大きな理由です。

  • Arduino互換性:
    • 非公式ながら、Arduino IDEを使って開発することが可能です。これにより、Arduinoの豊富なライブラリやコミュニティの恩恵を受けながら、より小型でカスタマイズされたソリューションを構築できます。

これらの特徴が相まって、ATTINY84 は、リソースが限られた小型プロジェクトや、低消費電力が必要なアプリケーションにおいて、非常に強力な選択肢となっています。

2. ATTINY84 のピン配置と機能:小さいながらも強力なI/O

ATTINY84 の14ピンパッケージ(DIP)は、その小さなサイズにもかかわらず、非常に多くの機能ピンを提供しています。各ピンの主な機能は以下の通りです。

  • VCC (Pin 14): 電源供給ピン(通常1.8V~5.5V)。

  • GND (Pin 7): グランドピン。

  • PA0 - PA7 (Pin 13, 12, 11, 10, 9, 8, 2, 1): Port A のI/Oピン。デジタル入出力、ADC入力、PWM出力、USI機能など、多岐にわたる機能を兼ね備えています。特にPA0〜PA7はADCのチャンネルとしても機能します。

  • PB0 - PB3 (Pin 3, 4, 5, 6): Port B のI/Oピン。デジタル入出力、タイマー/カウンタの入力/出力、USI機能などを提供します。PB2は通常リセットピン(!RESET)として使用されます。

  • !RESET (PB2/Pin 4): マイコンをリセットするためのピン。通常、プルアップ抵抗を介してVCCに接続されます。

  • SCK, MISO, MOSI (PA4, PA5, PA6): USIモジュールを利用してSPI通信を行う際のピン。

  • SDA, SCL (PA4, PA6): USIモジュールを利用してI2C(TWI)通信を行う際のピン。

  • AREF (PA1): ADCの基準電圧入力ピン。より正確なアナログ値の読み取りが必要な場合に外部基準電圧を供給できます。

このように、限られたピン数の中に、デジタルI/O、アナログ入力、PWM出力、シリアル通信といった、電子工作に必要なほとんどの機能が詰め込まれています。

特に、ピンごとに複数の機能を持つ「多機能ピン(Multiplexed Pins)」を理解し、適切に設定することが、ATTINY84を使いこなす鍵となります。

3. ATTINY84 で開発を始める:Arduino IDE を活用した手軽なプログラミング

ATTINY84 は、Atmel Studioのような専用開発環境だけでなく、多くの電子工作愛好家にとって馴染み深いArduino IDEを使って簡単にプログラミングできる点が大きな魅力です。

これにより、Arduinoの豊富なライブラリやサンプルコード、そして広大なコミュニティの知識をATTINY84のプロジェクトに活用できます。

3.1. 必要なもの

  • ATTINY84 マイコン(DIPパッケージがブレッドボードで使いやすい)
  • Arduino UNO (またはISPプログラマーとして機能する別のArduinoボード)
  • ブレッドボード、ジャンパーワイヤー
  • Arduino IDE (PCにインストール済み)

3.2. Arduino IDE の設定

ATTINY84 をArduino IDEでプログラミングするには、まず「ボードマネージャー」にATTINYボードの定義を追加する必要があります。これは、標準ではATTINYシリーズのサポートが含まれていないためです。

  1. ボードマネージャーURLの追加:
    • Arduino IDE の「ファイル」→「環境設定」を開きます。
    • 「追加のボードマネージャーのURL」に以下のURLを追加します。 http://drazzy.com/package_drazzy.com_index.json
    • OKをクリックして設定を保存します。

  2. ATTINYボードのインストール:
    • 「ツール」→「ボード」→「ボードマネージャー...」を開きます。
    • 検索バーに「attiny」と入力し、「attiny by Spence Konde」を見つけてインストールします。

  3. ボードの選択:
    • インストール後、「ツール」→「ボード」から「ATtiny84」を選択します。
    • 「Processor」や「Clock」などのオプションも、プロジェクトに合わせて設定します。例えば、「ATtiny84 -> 16MHz (external)」や「ATtiny84 -> 8MHz (internal)」など。内部オシレータを使用する場合は外部クロックは不要です。
    • 「Programmer」を「Arduino as ISP」に設定します。

3.3. ISPプログラミング (In-System Programming)

ATTINY84 は、USBインターフェースを内蔵していないため、Arduino UNOなどの別のマイコンを「ISPプログラマー」として利用してプログラムを書き込みます。

  1. Arduino UNO をISPプログラマーにする:
    • Arduino UNO をPCに接続し、Arduino IDE の「ファイル」→「スケッチ例」→「11.ArduinoISP」→「ArduinoISP」スケッチを開き、Arduino UNO に書き込みます。

  2. ATTINY84 と Arduino UNO の配線:
    • これらは特定のピンを接続することで行われます。一般的な配線は、MISO、MOSI、SCK、RESETピンを対応するArduino UNOのピンに接続し、さらにATTINY84のVCCとGNDをArduino UNOから供給します。

  3. ブートローダーの書き込み(オプション):
    • 初めてATTINY84を使う場合や、クロック設定を変更したい場合は、ブートローダーを書き込む必要があります。「ツール」→「ブートローダーを書き込む」を選択します。

  4. スケッチの書き込み:
    • 作成したATTINY84用のスケッチを開き、「スケッチ」→「書き込み装置を使って書き込む」を選択します。これで、Arduino UNO経由でATTINY84にプログラムが書き込まれます。

このように、少し初期設定は必要ですが、一度環境を整えてしまえば、Arduinoと同じ感覚でATTINY84の強力な機能を活用できるようになります。

4. ATTINY84 の豊富な応用事例:小型・低消費電力プロジェクトの要

ATTINY84 の持つ小型性、低消費電力性、そして豊富なI/Oと内蔵ペリフェラルは、非常に多岐にわたるアプリケーションでの活用を可能にします。

  • IoTセンサーノード:
    • 温度、湿度、光、振動などのセンサーデータを取得し、無線モジュール(例: LoRa, NRF24L01+など)を介してデータを送信する、バッテリー駆動の小型センサーノード。超低消費電力スリープモードを活用することで、数年にわたるバッテリー寿命を実現できます。

  • ウェアラブルデバイス:
    • スマートリング、スマートバッジ、小型の活動量計など、スペースと消費電力に制約があるウェアラブル機器の制御コア。

  • LED照明・調光コントローラ:
    • PWM出力を使って、RGB LEDの調光やアニメーション制御。人感センサーと組み合わせて自動点灯・消灯。

  • 小型ロボット・マイクロドローン:
    • 小型モーターの制御、シンプルなセンサー情報の処理。非常に軽量なため、機体の重量増を抑えられます。

  • バッテリー駆動の電子玩具:
    • 長時間の動作が必要な電子玩具やガジェット。

  • ホームオートメーション:
    • ワイヤレススイッチ、カーテン自動開閉、スマートコンセントなど、既存の家電をスマート化するための制御ユニット。

  • 自作キーボード・マクロパッド:
    • 限られた数のキー入力を処理し、PCに送信するカスタムキーボードやマクロパッド。

  • 組み込みアート・インタラクティブディスプレイ:
    • 限られた空間でインタラクティブな光や音の演出を行うための制御。

  • スマート農業:
    • 土壌水分センサーの監視、自動灌水システムの制御など、電源が確保しにくい屋外環境での利用。

  • 家電製品のサブコントローラ:
    • メインのマイコンの負荷を軽減するための補助的な制御や、特定の機能(例: パネルのLED表示、タッチボタン処理)を専門に担当するコントローラ。

これらの例はほんの一部に過ぎず、ATTINY84は、あなたの創造力とアイデア次第で、無限の可能性を秘めたプロジェクトを実現するための強力なパートナーとなるでしょう。

5. ATTINY84 を設計する際の注意点とトラブルシューティング

ATTINY84 は優れたマイコンですが、適切に動作させ、その性能を最大限に引き出すためには、設計時にいくつかの注意点があります。

  • フューズビットの設定:
    • ATTINY84 の動作クロック源(内部RCオシレータ、外部水晶、外部クロックなど)や、リセットピンの有効/無効化、ウォッチドッグタイマーの動作などは、「フューズビット」と呼ばれる特殊な設定ビットによって制御されます。

      これらの設定を間違えると、マイコンが動作しなくなったり、プログラムが書き込めなくなったりする可能性があります。

      特に、クロック設定は重要であり、Arduino IDEでブートローダーを書き込む際に設定されることが多いですが、手動で設定する場合は注意が必要です。

  • ピンの多機能性:
    • 各ピンが複数の機能を兼ね備えているため、意図しない機能が有効になっていないか確認が必要です。

      例えば、アナログ入力として使いたいピンをデジタル出力として誤って設定していないか、USI機能がアクティブになっていないかなど。

  • I/Oピンの駆動能力:
    • ATTINY84 のI/Oピンは、ある程度の電流を流すことができますが、直接大電流を消費するLEDアレイやモーターを駆動することはできません。必要な場合は、トランジスタやMOSFETなどの外部スイッチング素子を介して駆動するようにしてください。
  • 電源の品質とデカップリング:
    • 特にADCを使用する場合や、ノイズに敏感なアプリケーションでは、安定したクリーンな電源供給が不可欠です。

      VCCとGNDの間に0.1uFや10uF程度のデカップリングコンデンサをマイコンのピンのできるだけ近くに配置することで、電源ノイズを吸収し、安定動作を助けます。

  • 消費電力の最適化:
    • バッテリー駆動のプロジェクトでは、スリープモードの活用が非常に重要です。

      必要な時だけアクティブモードで動作させ、それ以外の時間はディープスリープモードに移行させることで、消費電流をnAオーダーに抑えることができます。

      また、使わないペリフェラル(ADCなど)はオフにする、未使用のI/Oピンは適切にプルアップ/プルダウン設定するなど、細かな工夫も消費電力削減に貢献します。

  • リセットピンの扱い:
    • 通常、リセットピン(PB2/Pin 4)はプルアップ抵抗を介してVCCに接続し、外部からのノイズによる誤リセットを防ぎます。ISPプログラミングを行う際も、このピンにプログラム信号が印加されます。

  • プログラミングのトラブル:
    • 「プログラムが書き込めない」という場合、最も多い原因は、フューズビット設定の誤り、配線ミス、またはISPプログラマーの設定ミスです。

      特にフューズビットで外部クロックを選択しているのに外部クロック源がない場合、マイコンは動作しなくなり、書き込みもできなくなります(この場合、外部クロックを一時的に接続して復旧させる方法もあります)。

6. まとめ:ATTINY84 が拓く、小型・低消費電力プロジェクトの未来

ATTINY84 は、その極めてコンパクトなサイズと低消費電力設計の中に、8ビットマイコンとしての優れた機能と豊富なI/Oピンを詰め込んだ、まさに「小さくてもパワフル」なマイクロコントローラです。

Arduino IDEでの開発が可能なため、プログラミング学習者からベテランエンジニアまで、幅広い層にとって非常に魅力的な選択肢となっています。

IoTデバイスの末端ノードから、ウェアラブル機器、バッテリー駆動のセンサー、スマートホームデバイス、そして趣味の電子工作まで、ATTINY84 はその隠れた実力をいかんなく発揮し、あなたのアイデアを現実のものとするための強力なツールとなるでしょう。

本記事で解説したATTINY84の基本、機能、開発環境、そして設計上の注意点を参考に、ぜひこの小さな巨人を使ったプロジェクトに挑戦してみてください。きっと、その堅牢性と汎用性の高さに驚かされることでしょう。

ATTINY84 は、これからも多くのイノベーションの舞台裏で、その確かな役割を果たし続けるに違いありません!!