LoginSignup
13
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-04

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

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

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

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11