文書の過去の版を表示しています。
Arduino Writer
ArduinoはAVRマイコンからなる汎用IOボードになります.つまり例えば Arduino Unoでは,AVRマイコンは328Pという種類で,これは外部クロック(16MHz)で動作し,シリアル通信用チップも ボード上に組み込まれています.おおよそArduino一台で3,000円程度となります.普段のプロトタイピングにおいて, このような汎用IOボードを利用するのは,お手軽でよいのですが,実際に量産とまでいかなくとも50,100個といった具合に 設計した回路を作る場合,毎回Arduino汎用ボードを利用していては,回路やスペースを無駄にするだけでなく,金額も 大きく異なってきます.例えばArduinoを利用して100個のプロトタイプを作るとします.その一つ一つにArduinoを利用すると 単純計算でも100×3,000=30万円ですが,これをATMEGA328P(250円)と外部クロック(40円)で動作させると100×290=29,000円と 約10分の一まで価格を下げることができます.もちろん電源回路やちょっとゴマふったりと,もう少しお金がかかる部分がある かもしれませんが,価格が大きく下がるのはわかると思います.
ATMEGA328P以外にもATINY85等を利用すれば,もっと小型で価格を抑えてプロトタイプを作成できます. が,メモリ領域が少なかったり,ピン本数が足りなかったりしがちなので,こういった作業に慣れてから,別のAVRマイコンを 試してみることをお薦めします.このページではATMEGA328とAtiny85を利用して書き込みを行います. 非常に小さなプロトタイピングを考えている場合はATINY85を,少しスペースに余裕がある場合は ATMEGA328を使いましょう.
このページでは,Arduino Duemilanove/Nanoを利用して,AVRマイコンATMEGA328PをArduinoボード上でなく,ブレッド上で 単独動作させるやり方をまとめておきます.Arduino Unoを利用することもできますが,一度ブートローダーを書き換える必要 があるため,Duemilanoveを利用したほうが間違いないです.
内蔵クロック(8MHz)で書き込む(Arduino Duemilanove/UNO編)
Arduino Uno等の汎用IOボードは実行時の信頼性を考慮し,外部クロックを利用しています. しかし,一般的なPICやAVRといったマイコンは大概内部クロックを持っており,それを利用 することで,外部発信装置を利用せずに,最小構成でプロトタイプをつくることができます. まずは下記を用意してください.
- AVRマイコンATMEGA328P-PU(Arduinoから取り外して使用してはダメです.新品は秋月で買えます.)
- Arduino Duemilanove
- ブレッドボード,ジャンパー線
- 110-124オームの抵抗(今回は120Ωの抵抗にします)
手順
1. Arduino DuemilanoveにArduino As ISPのプログラムを書き込む
まずはArduinoとPCを接続し,Arduinoメニューの「ファイル」→「スケッチブックの例」からArduinoISPを選択し,それをArduino Duemilanoveに書き込みます
2. ブレッドボード上に下記回路図を作成する.(抵抗:120Ω,LEDに抵抗付けたい人はどうぞ)
3. Arduinoメニューの「ツール」→「マイコンボード」から「ATMEGA328P/Int.8MHz」を選択,「ツール」→「書込装置」から 「Arduino as ISP」を選択
初期設定状態だと,上記の「ATMEGA328/Int.8MHz」がマイコンボード一覧にはありません. そこで From Arduino to a Microcontroller on a Breadboard を参照して,BreadBoard.zipの中身をダウンロードし,マイコンボード一覧に追加します.追加後は Arduinoを再起動して下さい.追加の仕方はそのサイトを参照してください.
Arduinoで新規ファイルを作成し,下記プログラムをペーストする Arduinoメニューの「ツール」→「マイコンボード」から「ATMEGA328P/Int.8MHz」を選択,「ツール」→「書込装置」から 「Arduino as ISP」を選択を再度確認してください.
int led = 0; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }
4. Arduinoメニューの「ファイル」→「書込装置を使って書込み」を選択し,ATMEGA328Pにプログラムを書き込む
LEDが8秒間隔くらいで点滅したらうまく動作しています.プログラムでは1秒間隔のはずですが, このようになるのは,ここまでの状態でATMEGA328が1MHzで動作しているためです.そこで次の手順で 8MHzで動作するようにします.
5. Arduinoメニュー→「ツール」→「ブートローダーを書き込む」を実行し,書込み終わったあと,再度同様の 点滅プログラムを「書込み装置を使って書込み」から実行する
1秒間隔で実行されればOKです.お疲れ様でした.
6. 最後に書き込み終わった328Pをブレッドボードから取り出し,電源とLEDの回路だけで動作するかも 確認してみましょう
なお,3.3V以下でマイコンを動作させる場合,ピン上のすべてのVCC, GNDピンに電源とグランドをつなげるようにしてください.ATMEGA328だと一箇所のVCC供給では動かないことがありました