ArduinoからATtiny85へ書き込んでLチカする

はじめに
ATtiny85というチップをご存知でしょうか?一円玉の大きさにも満たない超小型なICチップで、なんとArduino開発ができちゃうんです! ただし、そのためにはちょっと工夫がいるのですが、この記事ではATtiny85でLチカするまでの詳しい手順を解説しました。
ArduinoからATtiny85にスケッチを書き込むまでの作業手順
ArduinoからATtiny85にスケッチを書き込むまでの作業手順は、大きく次のとおりです。
- Arduinoをプログラマにする(ArduinoISP)
- ATtiny85にブートローダを書き込む
- ArduinoからATtiny85にスケッチを書き込む
① Arduinoをプログラマにする(ArduinoISP)
まずは、ArduinoをATtiny85のプログラマにするため、ArduinoにArduinoISPというプログラムを書き込みます。
ArduinoISPとは
ArduinoISPとは、ArduinoをAVRライタの互換機にするためのファームウェアです。ATtiny85は普通のArduinoとちがって、パソコンから直接ArduinoスケッチをATtiny85に書き込むことはできないため、プログラマというAVRライタが必要になります。ここではArduino UNOをAVRライタにするワケですね。 ちなみに、「USBasp」や「AVRISP」など、専用のAVRライタも販売されてます。
ArduinoISPを書き込む
以下、macOSから作業をおこないました。Arduino
IDEのメニューからFile
→Examples
→ArduinoISP
→ArduinoISP
を開きます。Arduino
UNOをパソコンにつないで、そのままスケッチをアップロードして書き込みます。
以上で、Arduino UNOをAVRライタにできました。簡単ですね♫
② ATtiny85にブートローダを書き込む
次に、ATtiny85にブートローダを書き込みます。
ブートローダとは
ブートローダとは、マイコンにあらかじめ書き込んでおく小さなプログラムです。これによって、Arduino言語のような簡単なプログラミングでマイコンを動かせるワケです。 ATtiny85をArduino言語で動かすために、あらかじめブートローダを書き込んであげる必要があります。ただし、書き込むのは一度だけでOKです。
ATtinyボードの追加
まず、ATtinyのボードを追加するために次の作業を行ってください。
ArduinoIDEのメニューからPreferences...
→Additional Board Manager URLs
の項目にある「ウィンドウのようなアイコン」をクリックします。
そこに次のURLを追加してください。
http://drazzy.com/package_drazzy.com_index.json

つぎに、ArduinoIDEのメニューからTools
→Board
→Board Manager...
をクリックし、「attiny」で検索して「ATTinyCore」をインストールします。
配線
ここで、Arduino UNOとATtiny85とを次の通り配線します。

ArduinoのGNDとRESETピンの間に、必ず100uFの電解コンデンサを挟んでください。電解コンデンサは極性があるので注意してください。コンデンサがないと書き込みエラーが発生します。
表であらわすと次のとおりです。
Arduino UNO | ATtiny85 |
---|---|
5V or 3.3V | 8ピン |
GND | 4ピン |
D10 | 1ピン |
D11 | 5ピン |
D12 | 6ピン |
D13 | 7ピン |
ATtiny85のピン配列
ATtiny85のピン番号は下図のとおりです。チップの凹んでいる部分を上にして、左上から反時計回りに1、2、3…です。間違いのないように配線してください。

ブートローダーの焼き付け
配線ができたらボード情報を次のように設定し、Burn Bootloader
を押してATtiny85にブートローダーを焼き付けます。
とくに緑枠で囲っている部分を間違えのないように選択してください。
エラーなくブートローダーを書き込めたでしょうか?ブートローダーの焼き付きができたら、いよいよATtiny85にArduinoスケッチをアップロードしましょう♫
ATtiny85の書き込みに失敗する?
次のようなエラーが出た場合は、ArduinoのRESETピンとGNDの間に、100uFの電解コンデンサが入っているか確認してください。電解コンデンサの容量が少なすぎてもダメです。私は最初、電解コンデンサを入れてなかったため、このエラーに小一時間ほど悩まされました。
avrdude: verification error, first mismatch at byte 0x1dc0
0xe0 != 0x01
avrdude: verification error; content mismatch
Error while burning bootloader.
③ ArduinoからATtiny85にスケッチを書き込む
それでは最後に、ArduinoからATtiny85にスケッチを書き込みます。ここでは簡単なLチカをやってみましょう。 先ほどの配線にLEDと1kΩの抵抗を図のように加えます。

LEDの極性、アノードとカソードの見分け方
LEDには極性があり、アノードをプラス極、カソードをマイナス極にしてつなぎます。通常、LED端子の長いほうがアノードになってます。もしも、端子の長さが同じで区別のつかない場合は、LEDの内部をのぞきましょう。受光素子のついている大きい台座がカソードになります。

ATtiny85のピン役割
もう一度、ATtiny85のピン役割を確認しておきましょう。LEDをつないだ3番ピンは、ATtiny85ではD4が割り当てられてます。
Lチカプログラム【動画あり】
よって、次のようなArduinoスケッチLEDを点滅させることができます。
void setup() {
(4, OUTPUT); // D4
pinMode}
void loop() {
(4, HIGH);
digitalWrite(1000);
delay(4, LOW);
digitalWrite(1000);
delay}
ここが大事なのですが、プログラムを書いたら、Arduini
IDEのメニューからSketch
→Upload Using Programmer
でスケッチをアップロードしてください。command
+ shift
+
U
のショートカットでもアップロードできます。書き込みに失敗する場合は、何度かリトライしてみてください。また、どうしても書き込めない場合は、ArduinoISPのセットアップからやり直しましょう。
動画のように、ATtiny85でLチカできました!ATtiny85ならボタン電池で動かせるのもの魅力的ですね!
関連記事
- Arduinoでコンデンサの静電容量測定
- Arduinoと可変抵抗でLEDの明るさ制御
- Arduino Unoで内蔵メモリEEPROMを使って状態を保存する方法
- ESP32でLチカするまでの設定
- ESP32へ書き込みエラー・MacBook 2022でconnectできない・自動書き込みに失敗したときの解決方法