めりーくりすまーす!
世の中IoTとかAIとか騒がしいですね!
ArduinoとATtinyでI2Cデバイスとか作れば、たぶんIoTで使えるよね?使おうね?(強引)という記事です。
ちょっと長くなりそうなので、今回は準備編として環境構築からLチカまで。
次回、LチカからI2Cへの対応、という感じで2回に分けて書こうと思います!
今回の内容
- ATtinyとは?
- 用意するもの(Lチカまで)
- Step.1 : Arduino IDEに ATTinyCore をインストール
- Step.2 : Arduino UNO へ ArduinoISP スケッチを書き込む
- Step.3 : ISP書き込み回路をつくろう
- Step.4 : ATtinyにLチカするスケッチを書き込もう
ATtinyとは?
ATtinyとは、ATMEL社 (現在はMicrochip社に吸収) が開発しているマイクロプロセッサシリーズの名称です。AVRシリーズの中でピン数やROM/SRAM容量などが少なく消費電力の小さなシリーズで、様々な品種があります。
少し前の記事ですが、『ArduinoユーザーのためのATTiny入門』 で、いくつかATtinyの紹介をしましたので、参考にしてください。
新し目のATtinyは注意
『ArduinoユーザーのためのATTiny入門』 で紹介した ATtiny85や ATtiny44などは今も使いやすくておすすめです。
一方で、下記新し目のATtinyは 今のところArduinoで使えない(使うには相当な苦労が必要...) なので、あまりオススメできません。
AVRFreaks に集う方々であれば止めませんがwなかでもATtiny417のシリーズは従来のAVRと比べて凄い機能が搭載されています。早く対応したCoreが出ると良いのですが、いろいろ変わりすぎていて簡単にはいかなそうな気がします。
数あるATtinyの中から今回は ATtiny85-20PU を使いたいと思います。
8ピンDIPという少ピンでありながらクリスタルレスで16.5Mhz動作もできるのが特徴です。
秋月電子やaitendoでも買え、非常に作例も多いので応用もしやすいでしょう。
用意するもの(Lチカまで)
- PCとArduino IDE (私は Macと ちょっと古い IDE v1.6.13 を使いました。IDEは最新の1.8系でも良いはずです) とインターネット環境 (この記事が読めているなら十分!)
- Arduino UNO R3 あるいは互換機(こういうのでも)とUSBケーブル x 1
- ATtiny85-20PU x 1
- ブレッドボード x 1
- ジャンパーケーブル少々
- 10uFコンデンサ x 1
- LED x 1
- 100Ω〜1kΩくらいの抵抗 (ようするにLEDの電流制限用) x 1
Step.1 : Arduino IDEに ATTinyCore をインストール
まずはじめにArduino IDEにATtinyに対応した拡張機能をインストールします。
今回は2017年の今でも活発に開発が進められている SpenceKonde/ATTinyCore を使うことにします。
ATTinyCoreのインストール方法は、下記に記載があります。
今回は BoardManager を使ったインストールを行ってみます。
1. Preferences の Additional Boards Manager URLs
に http://drazzy.com/package_drazzy.com_index.json
を入力
2. Tools > Board > Board Manager から、ATTinyCore を選択してインストール
これで、Arduino IDEから ATtiny85 などの開発が行えるようになりました!
Step.2 : Arduino UNO へ ArduinoISP スケッチを書き込む
次に Arduino UNOを書き込み機として利用するために、Arduino IDEのexampleに用意されている「ArduinoISP」というスケッチをArduino UNOに書き込みます。
1. Arduino UNOのポートを選ぶ
Arduino UNOをUSBケーブルでPCに繋いで、Arduino IDEを起動してから、Tools > Port
から、(Arduino/Genuino UNO)
と書かれたデバイスを選択してください。
これで、スケッチの書き込み先に Arduino UNO が選択されました。
続いてTools > Board
でも、Arduino/Genuino UNO
を選びます。
これで、書き込むスケッチが、Arduino/Genuino UNO
用にビルドされるようになりました。
2. スケッチ「ArduinoISP」を開いてArduino UNOへ書き込み
次に、ArduinoISPを開きます。これは、File > Examples > 11.ArduinoISP
の中にあります。
ArduinoISPスケッチを開いたら、Arduino UNOへ書き込んでおきます。
この瞬間にArduino UNOは書き込み機に変貌したわけです。
Step.3 : ISP書き込み回路をつくろう
一旦ここで、Arduino UNO と PCの間のUSBケーブルを抜いてArduino UNOの電源を落とします。
次は、Arduino UNOとブレッドボードを使って ATtinyに書き込むための配線を行います。
とりあえず、下図のように配線してみてください。
- Arduino UNO D10 → ATtiny85 1番PIN
- Arduino UNO D11 → ATtiny85 5番PIN
- Arduino UNO D12 → ATtiny85 6番PIN
- Arduino UNO D13 → ATtiny85 7番PIN
- Arduino UNO Reset → コンデンサ(10uF)の +側 (-側を GND)
- Arduino UNO 5V → ATtiny85 8番PIN
- Arduino UNO GND → ATtiny85 4番PIN
この回路は、Arduino UNOと ATtiny85を SPIで繋いで ISP(In System Programming) を行う回路です。加えて、動作確認用のLEDもついています。
Step.4 : ATtinyにLチカするスケッチを書き込もう
回路ができたら、Arduino UNOのUSBケーブルをPCと接続してください。
再度、Arduino IDEを起動しましょう。
1. Arduino UNOのポートを選ぶ
先ほど同様にポートはArduino UNOを選びます。
次に、ボードの設定ですが、先ほどと違って今度は ATtiny85を選びます。
まず、Tools > Board
からATtiny25/45/85
を選びます。
次に、マイコンの種類とClockを選びます。マイコンはATtiny85
、クロックは8 Mhz (internal)
を選んでおいてください。
これで、Arduino UNOの書き込み機を使って ATtiny85に書き込む設定ができました。
2. スケッチを書き込む前に
スケッチを書き込む前に、1度だけBurn Bootloader
を実行します。
ATtiny85ではブートローダー(プログラムの書き込み等に使うプログラム)は利用しません。
では、なぜこのコマンドを実行するか? というと、Burn Bootloader
の実行により、ATtinyへFuse Bit
というものを設定しているからです。ここではマイコンの動作クロックの設定などを行なっています。
これは1度だけ実行すればOKです。
3. いよいよスケッチを書き込もう!
さて、いよいよ本番、本編の最終章 LチカのプログラムをATtiny85に書き込んでみましょう。
Arduino IDEで下記スケッチを適当な名前で保存しておきます。
#define LED_PIN 3
void setup() {
pinMode(LED_PIN,OUTPUT);
}
void loop() {
digitalWrite(LED_PIN,HIGH);
delay(1000);
digitalWrite(LED_PIN,LOW);
delay(1000);
}
続けて、このスケッチを、ATtinyに書き込みます。
通常のArduino IDEでの書き込み同様、→ ボタンを押すだけ。
こんな感じでLチカできたら成功です!
ATtiny85のピン番号について
ATtiny85は、Arduino UNOに使われている ATmega328Pより見るからにピンが少ないです。
ですので、例えば Arduino UNOでLチカといえば、D13 が定番だったりしますが、今回はATtiny85用にD3に変更しています。
ATtiny85で利用可能なピン番号(ATtinyCoreの場合)は下記を参照してください。
https://camo.githubusercontent.com/081b569122da2244ff7de8bae15eb56947d05cc8/687474703a2f2f6472617a7a792e636f6d2f652f696d672f50696e6f7574543835612e6a7067
まとめ
今回は、Arduino UNOを使ってATtiny85へのプログラミングを書き込んでLチカするところまでやってみました!
Arduinoを使って、ATtinyなど小さなマイコンの開発ができるようになると、小さなデバイスも作り放題です!
次回は、いよいよ、I2Cに対応したデバイスを作ってみます〜。お楽しみに!
次回はいつだろう?? ...