Arduinoを使っているとこんなことを思うことがあります。
「LED点灯だけにArduino使うのはオーバースペックだな。もっとピンの数少なくて小型のマイコンでも十分だな」と…
そんなArduinoよりピン数少なくて小型のマイコンの1つが、「ATtiny85」です。
そんなATtiny85で遊んでみようと思います!
今回は設定編ということで、ArduinoUNOを用いてATtiny85をArduino化して、Lチカスケッチを書き込むところまでやってみます!
ATtiny85
ATtiny85はAtmelの小型AVRマイコンです。
AtmelのマイコンはArduinoに搭載している「ATmega328」などが有名どころです。
ATtiny85は8ピン(GPIOは6ピン)でプログラムメモリは8kBとATmega328の約1/4の容量です。
またこんなに小さいのにI2CもSPI通信も可能なようで、Arduinoでやっていたことの小型化にはもってこいのマイコンかなと思います。
ATtiny85にブートローダを焼き付ける
ブートローダと呼ばれるマイコン起動時に実行されるプログラムのようなものを焼き付けていきます。これをしておくことで、ATtiny85をArduino環境で使いやすくできます。焼き付けるという表現が正しいかはわかりませんが、ここではスケッチ書き込みと区別するために使っています。
以下のような構成でATtiny85にブートローダの焼き付け、スケッチの書き込みを行っていきます。
Arduinoを書き込み装置化する
まずはArduinoを書き込み装置化してきます。
といっても、スケッチ例(Examples)にある「11.ArduinoISP」スケッチを書き込むだけです。
注意点
先に書き込み用の回路を組んだ状態で、Arduinoにスケッチ書き込みをすると書き込みエラーが出ました。
下記の書き込み回路図を見ていただければわかりますが「リセットピン」がつながっていて、うまく認識できなかったためだと思います。
そのため、先に回路を組むときはArduinoのRESETからジャンプワイヤーを抜いた状態でスケッチ書き込みをしてください。
書き込み用の回路を組む
No. | 部品 | 数量 |
---|---|---|
1 | ATtiny85 | 1 |
2 | ArduinoUNO | 1 |
3 | ブレッドボード | 1 |
4 | LED | 3 |
5 | 抵抗(470Ω_LED用) | 3 |
6 | 電解コンデンサ(10μF) | 1 |
7 | ジャンプワイヤー | 必要な数 |
8 | USBケーブル(A-B) | 1 |
電解コンデンサがなくても問題なかった事例もあれば、ないとエラーが出た事例がありましたので、リセットピンのところにコンデンサを挟んでみてます。
LEDについては状態確認用のものなので、なくても問題ないようですが、せっかくなのでつけてみました!
ATtinyボードを追加する
ArduinoIDEにATtinyのボードを追加します。
まずは「File」→「Preferences(環境設定)」から「Additional boards manager URLs」に次のURLを入力します。
http://drazzy.com/package_drazzy.com_index.json
次に「BOARDS MANAGER」で「ATtiny」と検索して、「ATTinyCore by Spence Konde」をインストールします。
ブートローダの焼き付け
「Tools」から以下のように設定を行い、1番下の「Burn Bootloader」を実行します。
下のツイートにある動画のように、緑LEDがチカチカしていれば焼き付け処理が進んでいるようです。
何かエラーがあると赤LEDが点灯します。
処理成功時も、一瞬赤LEDは点灯しますがこれは問題ないようでした。
ATtiny85にLチカスケッチ書き込み
ブートローダの焼き付けができたので、Lチカスケッチを書き込んでしっかり動くか確認していきます。
スケッチを書き込む際は、ブートローダを焼き付けた時と同じ回路で行います。
その後、ATtiny85を下画像のLチカ回路をに差し替えて、動作確認します。
Lチカ回路
LEDを1個だけチカチカさせるだけだと味気ないなと思い、2個チカチカさせる回路にしてみました。
No. | 部品 | 数量 |
---|---|---|
1 | ATtiny85 | 1 |
2 | コイン電池(CR2032) | 1 |
3 | コイン電池ホルダー | 1 |
4 | LED | 2 |
5 | 抵抗(330Ω:LEDが点灯できるもの) | 2 |
6 | ブレッドボード | 1 |
7 | ジャンプワイヤー | 必要な数 |
今回のスケッチ
ATtiny85に書き込むスケッチはLEDをチカチカさせたいだけなので、void loopの中身はけっこうテキトーです😅
//parts_1_DHT11
//
void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
//LEDをチカチカさせたいだけなのでテキトーです。
void loop() {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(1000);
}
スケッチを書き込む際は、ブートローダを焼き付けた時と同じ回路で書き込みます。
また、通常のスケッチ書き込みではなく、下画像の「Upload Using Programmer」で書き込み実行するようにします。
実践結果
無事にATtiny85でLチカさせることができました🎉
感想
ATtiny85をArduino環境で使えるようにするまでをやってみました。
情報収集しやすかったり、やりやすい方法がであるなどいろいろ環境が整っている中ではありますが、マイコン本体を扱ってみるとなんだか1段レベルアップできたような気がします😊
ちなみに今回組んでみた「書き込み回路」と「Lチカ回路」はArduinoシールド化してみました!
せっかくArduino環境で使えるようになったので、いろいろ遊んでみようと思います!
コメント