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

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

ATtiny85というチップをご存知でしょうか?一円玉の大きさにも満たない超小型なICチップで、なんとArduino開発ができちゃうんです!

ただし、そのためにはちょっと工夫がいるのですが、この記事ではATtiny85でLチカするまでの詳しい手順を解説しましたので、ぜひご参考になさってみてください。

ArduinoからATtiny85にスケッチを書き込むまでの作業手順

ArduinoからATtiny85にスケッチを書き込むまでの作業手順は、大きく次のとおりです。

  1. Arduinoをプログラマにする(ArduinoISP)
  2. ATtiny85にブートローダを書き込む
  3. ArduinoからATtiny85にスケッチを書き込む

つかうもの

Arduino UNO

本記事ではArduino UNO Rev3を使用しました。

ほかのArduinoでもできるようですが、その場合は記事のピン番号を読み替える必要があるかもしれません。

もしもArduinoをお持ちでないようでしたらオススメArduinoどれを選べばいい?Arduinoで電子工作をはじめる方へをご参考になさってみてください。

ATtiny85

ATtiny85
ATtiny85

ATtiny85は秋月電子通商で入手できますが、Amazonでも安く入手できるようですのでご参考になさってみてください。

▼ すでにブートローダが書き込まれているATtiny85も売られていました。使ったことはありませんが、Arduino開発と同じようにArduinoIDEで直接プログラミングできるみたいです。

コンデンサ

ArduinoIDEをAVRライタにするため、100uFのコンデンサが必要になります。

その他

その他に、LEDと1kΩの抵抗を使用します。

ジャンプワイヤーやブレッドボードもそろえておきましょう。

① 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のメニューからFileExamplesArduinoISPArduinoISPを開きます。Arduino UNOをパソコンにつないで、そのままスケッチをアップロードして書き込みます。

スケッチ例からArduinoISPを開く
スケッチ例からArduinoISPを開く

以上で、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

ATtinyボードの追加
ATtinyボードの追加

つぎに、ArduinoIDEのメニューからToolsBoardBoard Manager...をクリックし、「attiny」で検索して「ATTinyCore」をインストールします。

ATTinyCoreのインストール
ATTinyCoreのインストール

配線

ここで、Arduino UNOとATtiny85とを次の通り配線します。

Arduino UNOとATtiny85の配線図
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...となっています。間違いのないように配線してください。

ATtiny85ピン役割
ATtiny85ピン役割

ブートローダーの焼き付け

配線ができたらボード情報を次のように設定し、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には極性があり、アノードをプラス極、カソードをマイナス極にしてつなぎます。通常、LED端子の長いほうがアノードになってます。もしも、端子の長さが同じで区別のつかない場合は、LEDの内部をのぞきましょう。受光素子のついている大きい台座がカソードになります。

LEDの極性 アノードとカソードの見分け方
LEDの極性 アノードとカソードの見分け方

ATtiny85のピン役割

もう一度、ATtiny85のピン役割を確認しておきましょう。LEDをつないだ3番ピンは、ATtiny85ではD4が割り当てられています。

ATtiny85ピン役割
ATtiny85ピン役割

Lチカプログラム【動画あり】

よって、次のようなArduinoスケッチLEDを点滅させることができます。

void setup() {
  pinMode(4, OUTPUT); // D4
}

void loop() {
  digitalWrite(4, HIGH);
  delay(1000);
  digitalWrite(4, LOW);
  delay(1000);
}

ここが大事なのですが、プログラムを書いたら、Arduini IDEのメニューからSketchUpload Using Programmerでスケッチをアップロードしてください。command + shift + Uのショートカットでもアップロードできます。書き込みに失敗する場合は、何度かリトライしてみてください。また、どうしても書き込めない場合は、ArduinoISPのセットアップからやり直しましょう。

動画のように、ATtiny85でLチカできました!ATtiny85ならボタン電池で動かせるのもの魅力的ですね!

YouTubeで モノ作りチャンネル料理チャンネルベースチャンネル 始めました!
記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事