NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

ATmega328P/ATtiny85のArduino化ライター(使用編)

イメージ 1

図1:LED点滅

前回の記事で作製したマイコンArduino化ライターを使用して、実際にATtiny85にスケッチを書き込み、Lチカまでを行います。

 

        1.材料

表1:購入品一覧
部品名 必要数 購入先 単価 費用
ATtiny85 1個 秋月電子 160円/個 160円
FTDI Basic Breakout5V 1個 マルツ 2015円/個 2015円
USBケーブル(Aオス-ミニBオス) 1本 秋月電子 110円/本 110円
合計 2285円
※その他ArduinoIDEのインストールされたPCが必要です。

 

        2.準備

2.1 ArduinoIDEがインストールされたPCを用意
まずはArduinoIDEが無ければ始まりませんので必要に応じてダウンロードとインストールをします。

 

2.2 ATtinyライブラリの入手と組込
〇kosakalabさんのサイトArduino IDEでATtiny他の開発(Arduino-ISP編)
〇Jonkiさんのサイト【Arduino】ATtinyをArduinoで開発する
〇tadfmacさんのサイトArduino 1.6でATTiny85やATTiny44を開発できるようにしてみる
が大変参考になりました。助かりましたありがとうございました。

 

2.2.1 ライブラリ入手
ATmega/ATtiny記述ファイルアーカイブ hardware.zip(2015.03.19版)から一式ライブラリをダウンロードします。

 

kosakalabさんのサイトに詳しい記述が有ります。(2017年5月2日追記)

 

2.2.2 組込
インストールしたArduinoIDEのアイコンを右クリックして“ファイルの場所を開く”を選択すると、その中に有る”hardware”というフォルダ(なければ作ります)に各マイコン用のファイルを解凍して入れます。
これでArduino IDEで“ツール”→“ボード”の中でATtinyが出現し選択可能になりますが、そのままだとATtiny85書き込み時にエラーが山程出ますので、以下のエラー回避処置をしておきます。

 

2.2.3 ブートローダーエラー回避方法
3.2でATtiny85にブートローダーを書込みますが、そのままだとエラーが出ますので、エラーが出ないように以下の操作を行います。
〇\Arduino\hardware\attiny\avrフォルダ中にある「boards.txt」を開き、そのtxt中のATtiny85-8にATtiny85-16中の「bootload.tool」と「upload.tool」をコピーして「16」→「8」に書き換えて保存する。
〇\Arduino\hardware\attiny\avr\bootloaders\dummyフォルダ中にある「dummy.hex」ファイルを一つ上の「bootloaders」フォルダへ移動する。

 

2.2.4 スケッチ書き込みエラー回避方法
〇\Arduino\hardware\arduino\avrフォルダ中にある「platfrom.txt」をコピーし、\Arduino\hardware\attiny\avrフォルダに張り付ける。
以上の操作でエラー回避処置は終りです。

 

2.2.5 SoftwareSerialを使えるようにする
ATtiny85はピン数8本と少ないのでRxやTxと言ったシリアル通信用のピンが搭載されていません、がデジタルピンはSoftwareSerialライブラリでシリアル通信可能ですのでシリアル通信できると思ってました。しかしArduino IDE1.6.5にはなぜかSoftwareSerialライブラリが標準搭載されて無く、なんとかATtiny85でSerial通信をしたいので旧IDEからライブラリだけコピーすることに、方法は下記の通りです。
Arduino IDE1.0.5をDLし、librariesフォルダからSoftwareSerialのライブラリをコピーして1.6.5のlibrariesフォルダに張り付ける。

 

2.3 Arduinoを書込み装置にする
2.3.1 接続
図2の様にPC→USBケーブル→FTDI→Arduino pro mini→ライターの順に接続します。この時点でまだATtiny85は接続しません。
イメージ 2

図2:接続状態

2.3.2 ArduinoIDEの設定
”ツール”→”ボード”→”Arduino pro mini”に、”ツール”→”プロセッサ”→”ATmega328 5V 16MHz”に、”ツール”→”ポート”→Arduinoと接続しているCOM番号に設定しスケッチを書き込める状態にします。

 

2.3.3 ArduinoISPの書き込み
“ファイル”→“スケッチの例”→“ArduinoISP”を選択し開く→“マイコンボードに書き込む”を押しArduinoISPを書き込みます。
以上で”Arduino pro mini”は書込み装置”Arduino as ISP”として機能します。

 

        3.とりあえずLチカしてみる

3.1 書込装置の変更
ArduinoIDEでは“AVR ISP mkⅡ”と言う書込装置を使用して、通常の各Arduinoにスケッチの書き込みをしています。これを2.3で作った”Arduino as ISP”に変更します。やり方は“ツール”→“書込装置”→“Arduino as ISP”と変更するだけです。
Arduino pro miniを書込装置から元に戻すには、上記逆手順で”Arduino as ISP”から“AVR ISP mkⅡ”に変更するだけで、従来通り普通にArduino pro miniとしてスケッチが書き込めます。

 

3.2 ATtiny85へブートローダーの書込み
そのままでもスケッチは書き込めますが、内部クロックが1MHzと遅く、delay(1000)はdelay(125)と同じ1/8の速度で動き、なんかスケッチが書き難いので8MHzにした方が後々楽です。
と言う事で、Arduino IDEのメニュー→“ツール”→“ボード”→“ATtiny85(8MHz)”と設定した後、“ツール”→“ブートローダを書込む”と選択してブートローダーを書込んでおきます。これで8MHzで動く様になりました。

 

※2016.05.05追記:ATtiny85(16MHz)やATmega328P(16MHz)にしてブートローダを書き込むと動かなくなるので注意が必要です!(ATmega328Pが2個動かなくなりました)

 

3.3 ATtiny85へスケッチの書込み
とりあえずLチカする為、以下のスケッチをArduinoIDEにコピペし“マイコンボードへ書き込む”を押します。書き込み1回目エラーが出てドキッとしましたが、何事も無かったと装い再トライしたら正常に書き込めました。(セーフ!)
void setup( ) {
   pinMode(3, OUTPUT);
}
 
void loop( ) {
   digitalWrite(3, HIGH);
   delay(1000);
   digitalWrite(3, LOW);
   delay(1000);
}

 

上手く上のスケッチが書込めればATtiny85のD3ピンがHIGH・LOWになり、作製したライター基盤上にあるLEDが1秒周期で点滅します。今回試しに使用した、ATtiny85を接続した8ピンICソケット以外の20ピンや28ピンICソケットについても、マイコンD3ピンの位置に動作確認用のLEDが接続されていますので、他のマイコンについても上記スケッチをそのまま使用して動作確認できます。

 

イメージ 1

図2:LED点灯

イメージ 3

図3:LED消灯

 

参考に秋月電子で購入可能なマイコンのスペック一覧です。
表2:マイコン性能一覧
マイコン FLASH EEPROM SRAM 価格
ATmega328P(28ピン) 32KB 1KB 2KB 250円
ATmega168P(28ピン) 16KB 512B 1KB 200円
ATmega88(28ピン) 8KB 512B 1KB 170円
ATmega8(28ピン) 8KB 512B 1KB 180円
ATtiny2313(20ピン) 2KB 128B 128B 230円
ATtiny85(8ピン) 8KB 512B 512B 160円
ATtiny13A(8ピン) 1KB 64B 64B 50円

        4.まとめ

性能低下が少なく、小さくて安いと言う事は電子工作にとって良いことです!さらにユニバーサル基盤に使えると言う事は、Arduinoの幅がグッと広がりました。小型化が必要な物には積極的に使っていきたいと思います!上手くいってよかった。
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【NOBのArduino日記!】目次に戻る