舌の根も乾かぬうちに最小を更新するかも
s51517765.hatenadiary.jp
先の記事では【令和最小】のArduino互換機を紹介しました。
こちらは必要部品がすべて載っていてすぐに動かせるのですが、使えないUSBコネクタが付いていたりして、少し不満でした。
そこで、ATtiny85を使った互換機を自分も作ればいいのでは?と思い立ちました。
まず、Digispark Kickstarter Attiny85と同じATtiny85を検討したのですが、意外と高い…。
akizukidenshi.com
チップ自体が秋月電子で200円します。
これに基板を設計したり、抵抗・LEDをつけたりすると原価で400円以上になりそうですが、Amazonでは互換品が428円で売っています(2024年7月時点)。
これではダメだな…と思っていたところ、互換品のATtiny202なら70円で入手できるのを見つけました。
akizukidenshi.com
DIP変換基板付のものもあります。
akizukidenshi.com
これなら勝負できるかもしれません、ということで動かしてみました。
開発環境の構築
基板を設計する前に、まずチップを動かしてみます。
開発環境はベーシックにArduino IDEを使う方法を試してみます。
部品自体はATtiny85と似ていますが、機能が違うので同じようにはいかないようです。
しかし、以下のページを参考にすると動かすことができました。
burariweb.info
この参考ページを見てうまくいかなかった部分としては、少し古いArduino IDE Ver. 1.8.13を使う必要がありました。
Arduino IDE の古いversionは以下のページにあります。
www.arduino.cc
「古いのを使ってね」ということは、ライブラリのmegaTinyCoreのページにも書かれています。
github.com
Arduino UNOを書き込み機として使う書き込み手順
①書き込み用ライブラリjtag2updiをダウンロード
github.com
リポジトリをzipでダウンロードして、中に一つだけある.ino
ファイルをArduino IDEで開きます。
②megaTinyCoreのボード情報を追加
ボードマネージャに以下を追加し、「[megaTinyCore」をインストールします。
http://drazzy.com/package_drazzy.com_index.json
③①をArduino UNOに書き込む
ここでは、書き込み先はArduino UNOです。
④ATtiny202とArduino UNOを接続する
D6とUPDIの間には4.7kΩの抵抗を入れます。
⑤生チップにブートローダーを書き込む(最初に1度だけ)
「ツール」メニューの一番下にある「ブートローダーを書き込む」を実行します。
(Errorっぽいメッセージが出ますが、問題ないようです)
⑥動かしたいソースコードを「書き込み装置を使って書き込む」からArduino IDE経由で書き込む
(通常のマイコンボードに書き込む[→]でもOKそうです。)
ここはいつもと違うところですね。
小さいArduino互換機でLチカ。ブレッドボード上の8ピンの小さいやつ。
— とりてん (@s51517765) 2024年7月11日
動画ではわかりにくいけど、Arduino UNOはプログラムの書き込みに使ったのと電源を供給しているだけ。 pic.twitter.com/nU99eYa4xh
USBシリアルで書き込む
ATtiny202はArduinoを用意しなくても、シリアルUSBでも書き込むことができます。
こちらの方法ではArduino IDEは現時点での最新版(Ver 1.8.19)でもOKでした。
ダイオードは電圧降下の小さいショットキーバリアダイオードが理想ですが、1N4148でもOKでした。
Arduino IDEの設定は、Arduino UNOを使うときに対して、以下のように変更します。
あとは「書き込み装置を使って書き込む」または「通常のマイコンボードに書き込む」で書き込みます。
シリアルプリントは使えるか
結論としては、PIN2/PIN3から使えます。
以下のような普通のSerial.print()を書きます。
ただし、USBポートがないのでPIN2/PIN3にシリアルUSBなどをつないで、Teratermなどで読み取ります。
void setup() { Serial.begin(9600); } void loop() { delay(1000); Serial.println("Serial"); }
まとめ
ATtiny202を試してみましたが、価格的にも安くてよさそうです。
RAMが小さいので、あまりライブラリを使うようなものには向かないようですが使い勝手も悪くないです。
digitalWrite()での5番ピン(物理ピンの6番ピン)がUPDIと共用になっているためか動かないですが、それでも0~4までの5本使えます。
analogWrite()でのPWMも0番と3番が使えるとなっていますが、0番は動きませんでした。
電源電圧が3.3Vでも5Vでも動くみたいで(1.8~5.5V)、基板を作るときにどちらで設計すべきか?電圧レギュレータを入れようか?が迷っているところです。