ここ数年は自分が使用するマイコンが固定化されていて、
- プログラム and 配線がシンプルなもの → Seeeduino XIAO
- プログラム or 配線が複雑なもの → M5Stack系(ESP32系)
となっていました。ただ、平成二期ライダー以降定番となった収集アイテム(ガイアメモリやらガシャットやら)のちょっとした改造アイテムを作るときには、Seeeduino XIAOでもオーバースペックだったりします。特に困るのが、消費電力。上記玩具の中の基板は基本的にボタン電池 x 2 or 3個で動いているのですが、これではSeeeduino XIAOは動かせません。やりようによっては動くのかもしれませんが、多分自分の用途(←光らせまくったり音を鳴らしまくったり)だと厳しいんじゃないかなと。そのため、基本的には電源として単四電池 x 3本を用意しなくてはならなくなる、あるいは1〜2本を昇圧させる部品を組み込まないといけなくなるのですが、スペース的に厳しい場合が多く、そうなるとやむなしでリチウムイオンポリマー充電池を使わざるを得ない、となってしまいます。昔は後先考えずによく使っていましたが、発火リスクだったり、捨て方の難しさを考えて、最近は極力使用を避けるようにしています。
そのため、より低消費電力で扱えそうなATtiny1616を試すことにしました。ボタン電池で動く米粒マイコンとして有名なのは同系列のATtiny10だと思いますが、流石に使えるピン数が少な過ぎるので、こちらを選択しました。これで、単四電池2本で動けば御の字ですし、欲を言えばコイン電池やボタン電池で動かせることが確認できれば儲け物、というものです。
ということで、こちらを購入しました。
キット化されたバージョンでも320円と、上記2つのマイコンと比較しても大変お安いです。
パッと見た感じ、どうやらUPDIインタフェースとやらでの書き込みが必要そうなので、書き込み機として以下を購入。
頑張ればこういうのなしでも書き込みはできるのかもしれませんが、そこに時間と労力はかけたくないので、お金で解決します。。。が、ここでミスりました。これについては後ほど。
Arduino IDEで開発する場合は、ボードマネージャーで”megaTinyCore“をインストールする必要があります。以下、Macでの手順です。

“Arduino IDE”の”Preferences”へ。

“Additional boards manager URLs”の右端のボタンをクリック。

URLに、”https://raw.githubusercontent.com/SpenceKonde/ReleaseScripts/refs/heads/master/package_drazzy.com_index.json”を追加。これは、こちらのページに記載のあったURLです。
上記URLを追加後に”BOARDS MANAGER”で”megaTinyCore”を検索すると、ヒットしてインストールできます。

これでとりあえずArduino IDEの準備は完了。ということで、サンプルプログラムを作成。ボタンを押すたびにLEDの点灯/消灯が切り替わるだけのプログラムです。
#define PIN_SW 1
#define PIN_LED 2
#define ON LOW
#define OFF HIGH
uint8_t sw = OFF;
uint8_t prev_sw = OFF;
bool is_lighting = false;
void setup(){
Serial.begin(57600);
pinMode(PIN_SW, INPUT_PULLUP);
pinMode(PIN_LED, OUTPUT);
}
void loop(){
sw = digitalRead(PIN_SW);
if(prev_sw == OFF && sw == ON){
if(is_lighting){
digitalWrite(PIN_LED, 0);
}else{
digitalWrite(PIN_LED, 1);
}
is_lighting = !is_lighting;
}
prev_sw = sw;
delay(10);
}ATTINY1616 DIP化キットのピン配列ですが、色々調べたところだと、およそ以下のような感じになっていそうです。

本当はもっと色々ありそうですが、当面私が必要そうな情報に絞って記載しています。誤りありましたら申し訳ありません。0〜17が、Arduino IDEで開発する上でのピンの番号になります。
ということで、ブレッドボードに配線してみた状態がこちら。

VDD, GND, RSTは書き込み機に繋がっています。続いて、書き込みのための設定に入ります。

“Tools”で、”Board”に”●megaTinyCore”の”ATtiny/3226/3216/1626/1616…“を選択。似たような選択肢で末尾に”… w/Optiboot”というのが入っているものがありますが、こちらを選んでしまうと書き込みに失敗するので注意。

続いて”Chip”の選択。今回使用している”ATtiny1616″を選びます。

最後に”Programmer”。”SerialUPDI – SLOW 57600 baud”にしておきます。
これで設定としてはOK…なのですが、実はここにくるまでに一つトラブルがありました。
今回用意した書き込み機が、少なくとも私のMac (←M1チップ, Sequoia 15.7.4)では認識してくれませんでした。改めて商品ページを見てみると、使用しているUSBシリアル変換ICが”CH340K”というもので、これがどうやら、Macとの相性が良くないようです。さらに色々調べてみると、頑張れば使えるケースもある?ようなのですが、結構ややこしいことになりそうです。
ということで、これは完全に、私の事前調査不足によるミスです。仕方がないので、この書き込み機の使用は諦めて(←別途Windows用に使う予定)、別のやり方で対応します。
そもそも書き込み機を新たに用意しようとしたのは、このATtiny1616の書き込み方式がよくわからないUPDIというものだったからなのですが、以下のページを見てみると、どうやらArduino Pro Miniの書き込みとかに使う一般的な(?)USBシリアル変換ツールでも、一工夫すればUPDI方式で書き込めるようになるようです。
- Arduino IDEからATtiny202などにUSBシリアル変換経由のUPDIで書込んでみた
- 【電子工作 / PCB】CH340Eを使ったSerial UPDI(シリアルUPDI)書き込みボードの製作!
ということで、手持ちの以下のUSBシリアル変換ツールを使って、UPDI方式で書き込めるようにしていきます。
私が持っているのはこれの旧版ですが、内容としてはおそらく同じで、少なくとも私のMacでは動作確認済みです。
で、上記サイトを参考に、見様見真似で以下のように配線してみました。

RXとTXの間をダイオードで繋いだ後、RXとATtiny1616の間に470Ωを挟んでいます。理屈は知りません。動けばいいんだ動けば。ダイオードは、普段全然使っていない部品なのでどうしようかなと思いましたが、昔に「使うかも」と思って買っていた部品を試しに挟んでみたら、動いてくれました。理屈は知りません。動けば良いんだ動けば。
ということで、これで本当に準備完了なので、いよいよ書き込んでいきます。書き込みは”Sketch”の”Upload Using Programmer”からも行えますが、普通に「→」ボタンでも書き込めます。

書き込みがうまくいけば、”Output”に以下のように表示されると思います。
Sketch uses 1904 bytes (11%) of program storage space. Maximum is 16384 bytes.
Global variables use 158 bytes (7%) of dynamic memory, leaving 1890 bytes for local variables. Maximum is 2048 bytes.
SerialUPDI
UPDI programming for Arduino using a serial adapter
Based on pymcuprog, with significant modifications
By Quentin Bolsee and Spence Konde
Version 1.3.1 - Aug 2025
Using serial port /dev/cu.usbserial-A603BU3J at 57600 baud.
Target: attiny1616
Set fuses: ['0:0b00000000', '2:0x02', '6:0x04', '7:0x00', '8:0x00']
Action: write
File: /Users/xxxxxx/Library/Caches/arduino/sketches/1A659099E84DDAB0037E1AE18CB27B01/ATtiny1616Sample.ino.hex
Pinging device...
Ping response: 1E9421
Setting fuse 0x0=0x0
Writing literal values...
Verifying literal values...
Action took 0.19s
Setting fuse 0x2=0x2
Writing literal values...
Verifying literal values...
Action took 0.19s
Setting fuse 0x6=0x4
Writing literal values...
Verifying literal values...
Action took 0.19s
Setting fuse 0x7=0x0
Writing literal values...
Verifying literal values...
Action took 0.19s
Setting fuse 0x8=0x0
Writing literal values...
Verifying literal values...
Action took 0.19s
Finished writing fuses.
Chip/Bulk erase,
Memory type eeprom is conditionally erased (depending upon EESAVE fuse setting)
Memory type flash is always erased
Memory type lockbits is always erased
...
Erased.
Action took 0.06s
Writing from hex file...
Writing flash...
[ ]
[= ] 1/30
[=== ] 2/30
[===== ] 3/30
[====== ] 4/30
[======== ] 5/30
[========== ] 6/30
[=========== ] 7/30
[============= ] 8/30
[=============== ] 9/30
[================ ] 10/30
[================== ] 11/30
[==================== ] 12/30
[===================== ] 13/30
[======================= ] 14/30
[========================= ] 15/30
[========================== ] 16/30
[============================ ] 17/30
[============================== ] 18/30
[=============================== ] 19/30
[================================= ] 20/30
[=================================== ] 21/30
[==================================== ] 22/30
[====================================== ] 23/30
[======================================== ] 24/30
[========================================= ] 25/30
[=========================================== ] 26/30
[============================================= ] 27/30
[============================================== ] 28/30
[================================================ ] 29/30
[==================================================] 30/30
Action took 2.41s
Verifying...
[ ]
[============ ] 1/4
[========================= ] 2/4
[===================================== ] 3/4
[==================================================] 4/4
Verify successful. Data in flash matches data in specified hex-file
Action took 0.52sで、実際にLチカさせてみた結果がコチラ。
ということで、途中ちょっとハマってしまいましたが、とりあえずATtiny1616を(Macで)使える状態にはなりました。消費電力とかが気になるところですが、長くなってしまったので、今回は環境構築編ということで一旦区切りたいと思います。

コメント
コメント一覧 (1件)
[…] 前回でATtiny1616が使えるようにはなりましたので、今回は消費電力周りをチェックしていきたいと思います。 […]