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. 配線図(ブレッドボードでの構成例)
配線は非常にシンプルです。
- GND: USBシリアル変換器のGNDとATtinyのGNDを接続。
- VCC: USBシリアル変換器のVCC (3.3Vまたは5V)とATtinyのVCCを接続。
- 注: ATtinyの動作電圧に合わせる必要があります。新しいATtinyシリーズは3.3V動作を基本とする構成が多いです。
- UPDIラインの接続
- USBシリアル変換器のTXピン
- ↓(直列に)
- 抵抗 (470Ω)
- ↓(直列に)
- UPDIライン (ATtinyのUPDIピンへ接続)
- USBシリアル変換器のRXピン
- ↓(カソード側をRXピンに)
- ショットキーダイオード
- ↓(アノード側をUPDIラインに)
このシンプルな回路図は、最小限の部品で双方向通信を行うための古典的な手法であり、USBシリアル変換器をプログラマとして機能させる鍵となります。
3. Arduino IDE環境の構築と最新版への対応
UPDI書き込みを行うには、Arduino IDEに 「megaTinyCore」 というサードパーティ製のボード定義をインストールする必要があります。
3.1. megaTinyCoreのインストール
- Arduino IDEを起動し、「ファイル」→「環境設定」を開きます。
- 「追加のボードマネージャのURL」欄に、megaTinyCoreのURLを追加します。
- URL:
http://drazzy.com/package_drazzy.com_index.json
- URL:
- 「ツール」→「ボード」→「ボードマネージャ」を開きます。
- 検索ウィンドウに「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系を利用しましょう。
- ボードの選択:「ツール」→「ボード」→「megaTinyCore」から使用するMCUシリーズを選択します(例: ATtiny412/402/212/202)。
- チップの特定:「ツール」→「Chip or Board」から具体的なチップ名を選択します(例: ATtiny402)。
- クロック周波数:「ツール」→「Clock」から適切なクロック周波数を選択します(例: 16MHz内部オシレータ)。
- 書き込み装置の設定:これが最重要です。
- 「ツール」→「書き込み装置 (Programmer)」で、 「Serial – UPDI」 を選択します。
- シリアルポートの選択:「ツール」→「シリアルポート」で、接続した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書き込みは、
- 専用プログラマ不要
- ブートローダ書き込みの工程を省略
- 超高速な書き込み速度
- 最新のArduino IDE 2.x系にも対応可能
という、現在のATtiny開発における最も効率的でコストパフォーマンスに優れた手法です。
ATtinyは、その手軽さと低消費電力性から、電池駆動のセンサーノードや小型の電子工作に最適です。この高速な書き込み環境が整えば、「Lチカ」のような単純なテストから、I2CやSPI通信を駆使した複雑な制御、さらには超低消費電力化のためのファームウェア調整など、より踏み込んだ開発に時間と情熱を注ぐことができるでしょう。
ぜひ、この方法を試して、あなたの電子工作ライフをさらに快適なものにしてください。