PR

ブートローダ不要!ATtiny x02/x04シリーズへの超高速UPDI書き込み術を徹底解説

【DIY】ホームセーフティ実践
本文中に広告リンクが含まれています

1. はじめに:なぜ今、USBシリアル変換器によるUPDI書き込みなのか

マイクロチップ社のATtiny x02/x04シリーズ(例:ATtiny202, ATtiny402, ATtiny1604など)は、小型で高性能ながら非常に安価に入手できるため、電子工作やIoTプロジェクトにおいて人気が高まっています。これらの新しい世代のATtinyは、従来のISP(In-System Programming)ではなく、「UPDI (Unified Program and Debug Interface)」というシンプルな1ピンインターフェースを採用しています。

通常、ATtinyへの書き込みを行う際は、Arduino Nanoや専用のJ-Linkなどといったプログラマを利用する方法が一般的でした。しかし、この度ご紹介するのは、「USBシリアル変換器」とわずかな受動部品を用いることで、ブートローダなしで、しかも非常に高速にスケッチを直接書き込む方法です。

この方法は、特に開発のイテレーションを高速化したい方、書き込み専用のプログラマを用意する手間を省きたい方にとって、間違いなく最も優れた選択肢の一つとなります。

2. 準備するハードウェア:シンプルイズベストな構成

このUPDI書き込みインターフェースは、驚くほどシンプルな回路で構成されます。必要な部品は以下の通りです。

2.1. ターゲットMCU (マイコン)

  • ATtiny x02/x04シリーズ
    • 例: ATtiny202 (8ピン)、ATtiny402 (8ピン)、ATtiny1604 (14ピン)など。
    • ※ピン配列はチップによって異なるため、データシートなどでUPDIピンの位置を確認してください。8ピンモデルでは通常PA0がUPDIピンです。

2.2. USBシリアル変換モジュール

  • FTDI FT232R/RQ系、CH340系、FT-234系など
    • UPDI書き込みは、シリアル通信(UART)の信号を利用するため、PCと接続するためのUSBシリアル変換器が必要です。
    • 推奨: 書き込み速度の安定性や設定の容易さから、広く流通しているこれらのチップを搭載したモジュールであれば使用可能です。
    • 高速書き込み時の注意点(FT232系): 高速なボーレート(例:460800 baud)で安定して書き込みを行うには、FTDIチップの場合、PC側のCOMポート設定(デバイスマネージャーなど)で 「待機時間(Latency Timer)」を最短(例:1ms)に変更 すると安定性が向上することが報告されています。

2.3. UPDIインターフェース回路

USBシリアル変換器のTX/RXピンの信号をUPDIの双方向信号に変換するため、たった2つの受動部品が必要です。

部品名推奨値/代替品役割
ショットキーバリアダイオードBAT43、BAT54、1N5817などTX信号をUPDIピンに伝える際の電圧降下を防ぎ、双方向通信を可能にする。
抵抗470Ω(推奨値)信号線の保護と、シリアル通信の信号品質を調整する。

2.4. 配線図(ブレッドボードでの構成例)

配線は非常にシンプルです。

  1. GND: USBシリアル変換器のGNDとATtinyのGNDを接続。
  2. VCC: USBシリアル変換器のVCC (3.3Vまたは5V)とATtinyのVCCを接続。
    • 注: ATtinyの動作電圧に合わせる必要があります。新しいATtinyシリーズは3.3V動作を基本とする構成が多いです。
  3. UPDIラインの接続
    • USBシリアル変換器のTXピン
    • ↓(直列に)
    • 抵抗 (470Ω)
    • ↓(直列に)
    • UPDIライン (ATtinyのUPDIピンへ接続)
    • USBシリアル変換器のRXピン
    • ↓(カソード側をRXピンに)
    • ショットキーダイオード
    • ↓(アノード側をUPDIラインに)

このシンプルな回路図は、最小限の部品で双方向通信を行うための古典的な手法であり、USBシリアル変換器をプログラマとして機能させる鍵となります。

3. Arduino IDE環境の構築と最新版への対応

UPDI書き込みを行うには、Arduino IDEに 「megaTinyCore」 というサードパーティ製のボード定義をインストールする必要があります。

3.1. megaTinyCoreのインストール

  1. Arduino IDEを起動し、「ファイル」→「環境設定」を開きます。
  2. 「追加のボードマネージャのURL」欄に、megaTinyCoreのURLを追加します。
    • URL: http://drazzy.com/package_drazzy.com_index.json
  3. 「ツール」→「ボード」→「ボードマネージャ」を開きます。
  4. 検索ウィンドウに「megaTinyCore」と入力し、表示された項目を最新バージョンでインストールします。

3.2. Arduino IDEのバージョンと書き込み手順(重要アップデート!)

従来のブログ記事では、Arduino IDE 1.8.x系での動作が推奨されていました。これは、最新のArduino IDE 2.x系では、標準の書き込みボタン(右向き矢印のアイコン)がSerial UPDI書き込みでは機能しない、という問題があったためです。

【2025年版の対応策】

最新のArduino IDE 2.x系を使用する場合でも、以下の手順を踏めば問題なく書き込みが可能です。安定性を求めるなら1.8.19などのレガシー版を使用しても良いですが、最新機能を使いたい場合は2.x系を利用しましょう。

  1. ボードの選択:「ツール」→「ボード」→「megaTinyCore」から使用するMCUシリーズを選択します(例: ATtiny412/402/212/202)。
  2. チップの特定:「ツール」→「Chip or Board」から具体的なチップ名を選択します(例: ATtiny402)。
  3. クロック周波数:「ツール」→「Clock」から適切なクロック周波数を選択します(例: 16MHz内部オシレータ)。
  4. 書き込み装置の設定これが最重要です。
    • 「ツール」→「書き込み装置 (Programmer)」で、 「Serial – UPDI」 を選択します。
  5. シリアルポートの選択:「ツール」→「シリアルポート」で、接続したUSBシリアル変換器のCOMポートを選択します。

3.3. 書き込み実行の手順

【重要:IDE 2.x系での書き込み方法】

標準の「書き込みボタン」ではなく、以下のメニューから実行してください。

  • 「スケッチ」メニュー「書き込み装置を使って書き込む (Upload using Programmer)」

この操作を実行することで、Arduino IDEは「書き込み装置」として設定した「Serial – UPDI」を経由し、USBシリアル変換器を通じてATtinyへスケッチを直接書き込みます。

4. 実践:書き込み速度の比較とパフォーマンス

このUSBシリアル変換器によるSerial UPDI書き込みの最大の魅力の一つは、その速度です。

書き込み装置の設定で「Serial – UPDI」を選択すると、複数のボーレート(通信速度)のオプションが表示されます。

設定項目ボーレート書き込み速度(参考例: ATtiny402)
Serial – UPDI (SLOW)57600 baud約 0.18秒
Serial – UPDI (MED)230400 baud約 0.11秒
Serial – UPDI (FAST)460800 baud約 0.09秒

※書き込み速度は環境やスケッチサイズにより変動します。

ボーレートを最高速の460800 baudに設定することで、初期の低速設定(57600 baud)と比較して書き込み時間が半分以下に短縮されます。わずか0.1秒以下で書き込みが完了するため、スケッチの修正と動作確認のサイクルが劇的に短縮され、開発効率が飛躍的に向上します。

【高速書き込みのポイント】

  • 460800 baudを選択: 基本的に最速の設定で問題ありません。
  • ケーブル品質: 高速通信はノイズに弱いため、配線はできるだけ短く、質の良いUSBケーブルを使用することを推奨します。
  • FTDIチップの設定: 前述の通り、FTDI系チップを使用する場合は、PCのデバイスマネージャーからCOMポートの「待機時間(Latency Timer)」を1msに設定することで、通信の安定性が増します。

5. まとめと今後の展望

USBシリアル変換器を用いたATtiny x02/x04シリーズへのSerial UPDI書き込みは、

  1. 専用プログラマ不要
  2. ブートローダ書き込みの工程を省略
  3. 超高速な書き込み速度
  4. 最新のArduino IDE 2.x系にも対応可能

という、現在のATtiny開発における最も効率的でコストパフォーマンスに優れた手法です。

ATtinyは、その手軽さと低消費電力性から、電池駆動のセンサーノードや小型の電子工作に最適です。この高速な書き込み環境が整えば、「Lチカ」のような単純なテストから、I2CやSPI通信を駆使した複雑な制御、さらには超低消費電力化のためのファームウェア調整など、より踏み込んだ開発に時間と情熱を注ぐことができるでしょう。

ぜひ、この方法を試して、あなたの電子工作ライフをさらに快適なものにしてください。

タイトルとURLをコピーしました