Edited at
ArduinoDay 5

Arduino と ATtinyを使って I2C Slaveデバイスを作ってみる (1) 準備編

More than 1 year has passed since last update.

top


めりーくりすまーす!

世の中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のインストール方法は、下記に記載があります。

https://github.com/SpenceKonde/ATTinyCore/blob/master/Installation.md

今回は BoardManager を使ったインストールを行ってみます。


1. Preferences の Additional Boards Manager URLshttp://drazzy.com/package_drazzy.com_index.json を入力

preference


2. Tools > Board > Board Manager から、ATTinyCore を選択してインストール

board Manager

これで、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のありか

ArduinoISPスケッチを開いたら、Arduino UNOへ書き込んでおきます。

これを押す

↑これを押すと書き込めます!

この瞬間にArduino UNOは書き込み機に変貌したわけです。


Step.3 : ISP書き込み回路をつくろう

一旦ここで、Arduino UNO と PCの間のUSBケーブルを抜いてArduino UNOの電源を落とします。

次は、Arduino UNOとブレッドボードを使って ATtinyに書き込むための配線を行います。

とりあえず、下図のように配線してみてください。

schematic-ISP


  • 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)を選んでおいてください。

Board設定

これで、Arduino UNOの書き込み機を使って ATtiny85に書き込む設定ができました。


2. スケッチを書き込む前に

スケッチを書き込む前に、1度だけBurn Bootloaderを実行します。


ATtiny85ではブートローダー(プログラムの書き込み等に使うプログラム)は利用しません。

では、なぜこのコマンドを実行するか? というと、Burn Bootloader の実行により、ATtinyへFuse Bitというものを設定しているからです。

ここではマイコンの動作クロックの設定などを行なっています。

参考:『始める電子回路』/ 始めるAVR / ヒューズ設定


これは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チカできたら成功です!

blink


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に対応したデバイスを作ってみます〜。お楽しみに!


次回はいつだろう?? ...