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

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