Digispark?
ふた昔前くらいに流行った親指サイズのArduinoのクローン
基板の上に見える部品はレギュレータとマイコン本体のみ
マイコンの書き込みに一般的に必要とされるシリアル変換チップを載せていない
代わりにソフト(ブートローダ micronucleus)でUSBの機能を実装している
本家はもうすでに販売しておらず現在出回っているのは主にクローンらしい
ATTinyさえあれば作れそう
Micronucleus?
USB接続の部分を実装するブートローダ
V-USBというプロジェクトをベースに開発されているらしい
これが電源投入時(設定で変えられる)に走る
専用ic無しでのUSB接続を可能にする
メリット: 部品点数の削減やそれに用小型化
デメリット: 書き込み時に都度さしなおす必要が生じる
作る
大まかな流れは
- 組み立て
- ブートローダ書き込み
- 完成
部品
Arduino UNO x1
出落ちで申し訳ない
これは部品というより道具として必要
ISP書き込み機の代わりにArduino UNOが使える
UNOを名指しした理由については後述
ATTiny85 x1
ATTinyであれば大体OKっぽい
メモリとサイズと値段と実績の関係で85を選んだ
47Ω x2
USBのデータ線に挟む抵抗
最初は電流制限だと思っていた
ダンピング抵抗というものらしくて波形のオーバーシュートを抑制するもの
ネットを漁った限り68Ω周辺が多かった
あまり重要ではなさそうだった(中途半端な値を新規で買いたくなかった)ので47Ωにした
1.5kΩ x1
USBのD-をプルアップする抵抗
ネットを漁った限りどれも1.5kΩで全くブレがなかったので怖くなって買ってきた
小信号用ダイオード
目的は整流ではなく電圧降下を使った降圧
V-USBのホームページに載っていた
えぇ… pic.twitter.com/cij5Ente7u
— エリンギ/tokotokonatu (@McbeEringi) September 1, 2022
あまりの荒業で驚いた
1N4148を2本使った
順電圧が1Vなので大体3.6Vくらいで落ち着くかなという思考
4.7uF x1
電源の平滑化とノイズの吸収?
本家基盤には並列に0.1uFもついていたがV-USBの回路図には4.7uFだけだったので信用した
コンデンサはチップだと安い(1/7くらい!)のでお勧め
基板とかUSBとかソケットとか
プリント基板は敬遠している
プリント基板にUSBごとプリントしたかった気持ちはある
ESP32用シリアル変換の時と同じ基板取り付けのUSBオスとFサイズ基盤(8x6穴)を買ってきた
マイコン部分は外せるようにソケットにした
縦型タクトスイッチ
やはりスイッチがあると便利なのでつけた
スペースの制約で縦型にした
押す力は後ろのソケットに受け止めてもらう
通電確認のLEDとビルトインLEDとそれらの電流制限抵抗
気分でつけた
赤と緑のチップLEDと10kΩの抵抗を使った
回路図
頑張って組み上げる
薄線はUEWで緑色部分はチップ部品
— エリンギ/tokotokonatu (@McbeEringi) October 8, 2022
完成したのがこれ
実は3機目である
できた
— エリンギ/tokotokonatu (@McbeEringi) September 22, 2022
スイッチとLEDが増えた
緑が想像以上に暗かった pic.twitter.com/sL57OIenkm
ブートローダ―書き込み
の記事を参考に進めさせていただいた
必要な箇所のみ以下に並べる
Arduino UNOのISP化
ATTinyにブートローダを書き込むには専用の装置が必要
Arduino UNOを持っていれば代用可
手持ちのArduino Nano everyやESP32でも試したが上手くいかなかった
おとなしくArduino UNOを使うべし
Arduino IDEを開いて
ファイル>スケッチ例>ArduinoISP>ArduinoISP
を選択してそのままUNOに書き込む
配線
下表の通り繋ぐ
UNO | ATTiny85 |
---|---|
10 | PB5 |
11 | PB0 |
12 | PB1 |
13 | PB2 |
5V | VCC |
GND | GND |
なおATTiny85の番号は物理的なピン番号ではなく内部的な番号なので注意
PB5 | U | VCC | ||
PB3 | PB2 | |||
PB4 | PB1 | |||
GND | PB0 |
Arduino IDEにATTiny85を追加
環境設定>追加のボードマネージャーのURL
に
http://drazzy.com/package_drazzy.com_index.json
を追加
ツール>ボード>ボードマネージャ
で ATTinyCoreを検索してインストール
場合によってはエラーを吐かれるが無視
試しに書き込む
環境設定>より詳細な情報を表示する>書き込み
にチェックを入れて
ツール>ボード>ATTiny85(no bootloader)
ツール>Clock>1MHz(internal)
ツール>書込装置>Arduino as ISP
を選んで
ファイル>スケッチ例>Basic>Blink
を書き込む(別にこれである必要はないが)
Arduino IDE 2.0.0の場合
スケッチ>書き込み装置を使って書き込む
でないと上手くいかないので注意
適当にLEDをぶっさして動くことを確認する
3行目のパスから始まる長い長い一行をコピーする
(avrdude本体とそのcfgファイルのパスを含むコマンド)
ブートローダ書き込む
これをダウンロードしたら
先ほどコピーした長いコマンドを書き換える
最初の方はそのままに
~~~ -b 19200 -U flash:w:path\to\t85_default.hex:i -U lfuse:w:0xf1:m -U hfuse:w:0xdf:m -U efuse:w:0xfe:m
path\to\t85_default.hexは適宜書き換えること
クロックと自己プログラムに関するヒューズを書き換えている
micronucleus公式はLOW:e1 HIGH:dd EXT:fe
を勧めているがEEPROMを使わない限りLOW:f1 HIGH:df EXT:fe
の方が省電力で良いはず
ドライバのインストール(Windows)
の手順に従ってドライバをインストールする
完成
以後プログラムを書き込む際は
ツール>ボード>ATTiny85(micronucreus digispark)
を選択して
digisparkは差さずに普通の書き込みボタンを押下
差してねって言われたら差すと書き込まれる
— エリンギ/tokotokonatu (@McbeEringi) September 4, 2022
起動時に5秒ブランクがあるのは仕様だそうで pic.twitter.com/Rty72ebjzf
— エリンギ/tokotokonatu (@McbeEringi) September 4, 2022
これでポケットにArduino互換機を常備できますね
めでたしめでたし