ATtiny85(1)ーArduino化 | virt_flyのブログ

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑ATtiny85は1円玉より小さいけれど低消費電力で動作電圧が2.7〜5.5Vと、扱いやすく低価格ですぐれたマイコンチップ

ATtiny85へUSBaspでブートローダー書き込み

 

Arduino Nano互換機にはブートローダーが書き込まれていないことが多いと知り、手持ちの互換機はどちらだろうかと悩んだものでした。

 

ブートローダーというと、OSとハードとの間を取り持つBIOSを読み込みOSを起動させるパソコンでのイメージが強く、プログラムから直接ハードを操作するマイコンのような場合とは自ずと違いのあることになかなか思い至らず、ArduinoではパソコンのUSBポートから送られてくるスケッチの情報を、シリアルインターフェースで取り込み、ブートローダーがフラッシュメモリにスケッチを転送してから実行するという意味がすぐには理解ができなかったのです。頭の悪いことです。

 

スケッチ(プログラム)が書き込めて実行できたということは、すなわち互換機にあらかじめブートローダーがインストール済だったとみなされます。

 

となれば、ブートローダーが書き込まれていなければどうなるかが知りたいところです。ブートローダーがなくてもスケッチが実行できるとも聞きますから。

 

そこで、ブートローダーの書き込みに挑戦することにしたのが、今回のテーマです。

 

 

 ATtiny85のArduino化

 

●低消費電力量で動作電圧が2.7〜5.5Vと広いのがうれしいATtiny85

 

使うのは、ATtiny85という8ビットのマイコンチップです。

Arduinoでも使われているAtmel社のAVRシリーズのマイコンチップ。ピンが8本しかない小さなものですが、スケッチを書き込んでArduinoとして動かせると知り、購入したものです。

 

スペックは、購入したATtiny85−20PUではFLASH 8KB、SRAM512B、EEPROM512B 、動作速度20MHzで、消費電力は300μAと少なく、動作電圧が2.7〜5.5Vと、扱いやすく低価格で優れています。

 

 

●Arduino IDEにATtinyボードパッケージのインストール

 

ATtiny85にスケッチを実行させるには、やはりArduino IDEを使ってスケッチを書き込むことになりますが、その前にArduino IDEにATtinyボードパッケージのインストールをしておく必要があります。

 

 

Arduino IDEを起動したら、画面上部のメニューにある[File]をクリック、開いたドロップダウンメニューの中から[Prefereces]を選択すると「Preferences」画面が表示されます。

 

 

その画面をスクロールアップすると下部に「Additional boards manager URLs:」と書かれたボックスが現れるので、これをクリック

 

 

あらためて「Additional boards manager URLs」の画面が開くので、今度はその中に「http://drazzy.com/package_drazzy.com_index.json」と入力します。[OK]をクリックし画面を閉じ、その下の画面の[OK]もクリックして閉じます。

※先の画面では言語の指定ができ、日本語を選択して[OK]するとArduino IDEは日本語表示となります。以降は日本語表記にもとづいた記述に改めます。

 

 

次に、今度は上部のメニューにある[ツール]をクリック、開いたドロップダウンメニューから[ボード]を選び、[ボードマネージャー]が表示させ、これをクリックします。

 

 

Arduino IDEのウインドウが左右分割されて、左側に「ボードマネージャー」の枠が現れます。[検索フィルタ]に「ATtiny」と入力して検索します。

 

 

表示された検索結果の中から、「ATTinyCore by Spence …」を探し[インストール]を実行します。これでボードパッケージのインストールは終了です。

 

なお、[ツール]から[ボード]をたどれば、インストールができたか確認ができます。先程にはなかった「ATtinyCore」という項目が付け加わっているはずです。

 

 

●USBaspを使ったブートローダーの書き込み

 

ATtinyシリーズのマイコンチップに、コンパイルしてスケッチを書き込めるようになりましたので、次はマイコンチップへのArduinoブートローダーの書き込みです。販売されているATtiny85は、まず殆どが生のチップでブートローダーは書き込まれていないとみてよいようです

 

Arduino IDEによりATtiny85にブートローダーを書き込むには、ライターやプログラマーと呼ばれる書き込み装置が必要となります。Arduinoを書き込み機として使うか専用の書き込み機を使うかの2つの方法があります。

 

残念ながら、今回はArduino Nanoの互換機を書き込み機としてブートローダーをインストールするのには成功しませんでしたので、ここでは専用の書き込み機であるUSBaspを使う例のメモとなります。

 

なお、USBaspのドライバーの関係で、Windowsのケースとなります。

 

【USBaspの接続】

 

↑AVRプログラマーUSBaspとブレッドボード上はATtiny85

 

ブートローダー書き込み機のUSBaspとパソコン、ATtiny85マイコンチップとの接続は以下のとおりです。

 

USBaspのUSBコネクタをパソコンに挿入、もう片方のコネクタにはフラットケーブルをつなぎます。フラットケーブルのもう一方の端には10ピン↔6ピン変換コネクタを装着し、これとATtiny85をジャンパー線でつなぎます。ピン同士の接続は下の表に示します。

 

USBasp ATtiny85 同  左
ピン番号
RESET RESET
GND GND
MOSI MOSI
MISO MISO
SCK SCK
VCC VCC

 

 

 

 

 

 

 

 

 

 

ATtiny85のピン番号は、チップの切欠きのある方の横、〇印のついたピンが1番ピンで、反時計回りに2,3,4、…、と8番ピンまで。

 

なお、USBasp上にはジャンパー接続端子が3箇所あります。購入したUSBaspには、JP1とJP2、JP3と表記されていて、JP1とJP2にはすでにピンがハンダ付けされていました。JP2の3本のピンは電圧の設定ピンとなっていて5Vと3.3Vのどちらかに設定するようになっています。

 

今回の例では、5V側を短絡させています。ジャンパーピンがなかったのでジャンパー線(写真では茶色)で代用しています。

 

【USBaspのドライバー】

 

Windows10以降では、このUSBaspを接続しただけでは使えないそうです。デバイスマネージャーを開いてみるとUSBaspとありますがcautionマークがついていて、ドライバーのインストールの必要を示しています。

 

Zadigを使い汎用USBドライバーをインストールすれば、パソコンに正しく認識されるようになるそうなので、これに倣うことにします。

 

 

Zadigは、https://zadig.akeo.ie/からダウンロードし、インストールすることなく直ちに起動できます。

 

 

Zadigを開いたら、対象デバイスが「USBasp」であることを確認し、ドライバーは[winUSB]または[libusbK]を選択して[Install Driver]をクリックしてインストールします。

 

「winUSB」、「libusbK」のどちらでも、Windowsに正しく認識されました(デバイスマネージャーでも確認)。

 

 

【ブートローダーの書き込みの実際】

 

USBapsの準備が整いましたので、いよいよブートローダーの書き込みです。もちろん最初の1回だけ。

 

 

Arduino IDEのウインドウ画面上部のメニューにある[ツールを]クリック、開いたドロップダウンメニューのなかの[ボード]を選択すると、ボードパッケージのリストに[ATTinyCore]が追加されていることが確認できます。

 

 

[ATTinyCore]をクリックすると、ATtinyシリーズのマイコンチップ名のリストが表示されますので、その中から[ATtiny45/85(Optiboot)]を選択します。

 

 

次に、[ツール]を開きます。

 

 

略しますが、[ポート:]を指定し、[書き込み装置:]に「USBasp(ATTinyCore)」を選びます。クロック他はデフォルトのままにしました。クロックは、外部発振器を付けていないので「8MHz(internal)」。

 

ボードの設定がOKなら、あとは[ブートローダーを書き込む]をクリックするだけ。

 

 

書き込みに成功すれば、「ブートローダーの書き込みが完了しました」と表示が出ます。

 

ATtiny85のArduino化が完成したのなら、実際にスケッチの書き込み、実行ができるのかを確かめなければなりません。

今回はもう結構長々と書いてきましたので、この件は次回とします。

 

 

《参考サイトについて》

 

Arduinoについては情報が豊富ででありがたい一方、的確な情報を見つけ出すのは少々大変です。場合によっては必要となる情報が含まれていなかったり、あまりに詳しすぎてついていけなくても困ります。言っている本人が、メモなどと言ってかなり不十分なものを書いている反省が必要ですが。

 

あちこちのサイトを訪問して、多々有益な情報をいただきましたが、多すぎてどこのサイトで得た情報だったかを特定するのは少々困難になっています。

 

そうした中でも、ATtiny85へのArduinoブートローダーの書き込み、USBaspについて、もっぱら参考にさせていただいたのが、「ぶらり@web走り書き!」の東京バードさんの次の2つの記事でした。