Arduino UnoでATtiny85を効率的にプログラミング:低コストマルチセンサーソリューション
部品と用品
| Arduino UNO | ×1 |
| Microchip Technology ATtiny85 | ×1 |
| 電解コンデンサ 10μF/25V(デカップリング用) | ×1 |
| ジャンパーワイヤー オス-オス | ×1 |
このプロジェクトについて
異なる場所で複数のセンサーデータを読み取るプロジェクトに取り組んでいます。これらはわずかなPWMピンしか必要としないため、複数のArduino Unoを使うと高価で不要です。そこで、Arduino Uno開発ボードの代わりにATtiny85マイクロコントローラーを使用することにしました。ATtiny85は、多くのPWMピンを必要としない場合の安価で強力な代替手段です。ATtiny85は単なるマイクロコントローラーなので、プログラミングにはArduino Unoが必要です。このプロジェクトではその方法を説明します。以下はATtiny85のピン配置で、データシートはこちら https://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf。

Arduino UnoをISP(インシステムプログラミング)として設定
ATtiny85をプログラミングするには、まずArduino UnoをISPモードに設定する必要があります。Arduino UnoをPCに接続し、Arduino IDEでArduinoISPの例ファイル(ファイル → 例 → ArduinoISP)を開いてアップロードします。
Arduino IDEにATtiny85サポートを追加
デフォルトではArduino IDEはATtiny85をサポートしていないため、ATtinyボードを追加する必要があります。ファイル → 環境設定を開き、追加のボードマネージャのURLにこのURLを入力:https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

完了後、ツール → ボード → ボードマネージャを開きます。

リストをスクロールして「attiny by Davis A. Mellis」を見つけ、クリックしてインストールします。

インストール後、ボードメニューに新しいエントリが表示されます。

ATtiny85とArduino Unoの接続
上記の準備が整ったら、ATtiny85のプログラミングを開始します。ブレッドボードを使って以下のように接続します。
Arduino Uno – ATtiny85
- 5V – Vcc
- Gnd – Gnd
- Pin 13 – Pin 2
- Pin 12 – Pin 1
- Pin 11 – Pin 0
- Pin 10 – Reset


ArduinoのRESETとGNDの間に10μFコンデンサを追加します。これは、ATtiny85にプログラムをアップロードする際にArduinoが自動リセットされるのを防ぐためです。電解コンデンサを使用する場合、アノードがUnoのGND側になるようにしてください。
ATtiny85へのプログラムアップロード
Arduino IDEに戻ります。ツール → ボードでATtinyを選択。ツール → プロセッサーでATtiny85を選択。ツール → クロックで8 MHz(内部)を選択。


ツール → 書き込み装置で「Arduino as ISP」が選択されていることを確認。

デフォルトではATtiny85は1MHzで動作します。8MHzで動作させるには、ツール → ブートローダーを書き込みを選択します。


ブートローダーの書き込みが成功すると上記のメッセージが表示されます。
Arduinoの例からBlinkスケッチを開き、ピン番号を13から0に変更してアップロードします。


上記のメッセージが表示されれば成功です。これでBlinkプログラムがATtiny85にアップロードされました。テストしてみましょう。
ATtiny85 Blinkのテスト
テストの時間です。Arduinoから全ての接続を外し、電源を用意します。ここではボタン電池でATtiny85を駆動します。

これで、ボタン電池だけで動作するATtiny85上でBlinkプログラムが実行されています。低コスト、低消費電力、小スペースで多くのプロジェクトが可能です。想像力とPWMピンの数だけが限界です。
シールド化
上記の回路をArduino Uno互換のシールドにしました。





(注:ソフトウェア開発者としてこれは私の初めての電子工作プロジェクトです。更なる改善のためにご提案をお願いします。)
コード
Blinkプログラム C/C++
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at https://arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(0, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(0, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
回路図
製造プロセス
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- Arduino UNOで1.17インチTFT LCDに画像を表示する方法
- Arduino UNOとATtiny85で作る携帯型POV(残像)ディスプレイ
- Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド
- Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- Arduino Unoで25kHz 4ピンPWMファンを制御 – 製作・コード・テスト
- Python C拡張プログラミング:高速ネイティブモジュールの構築