Title: Arduino 生CPUにブートローダ・プログラムを書き込み、オリジナル製品化!!
2012年8月現在、Arudionoの完成基板に搭載されている主な部品構成は、電源回路、USB回路、CPU、LED、コネクタと言ったところでしょうか。これらで構成された基板が現在では以下の種類があるようです。(この他にもありますが・・・)
- Arduino Uno CPU=ATmega328
- Arduino Mega 2560 CPU=ATmega2560
- Arduino Mega ADK CPU=ATmega2560
- Arduino Ethernet CPU=ATmega328
- Arduino BT CPU=ATmega168
- Arduino LilyPad CPU=ATmega168 / ATmega328V
- Arduino Fio CPU=ATmega328P
- Arduino Pro CPU=ATmega168 / ATmega328
- Arduino Nano CPU=ATmega168
- Arduino Pro Mini CPU=ATmega328
などがあります。
そこでふと思ったのですが、電源回路は自分で作り、完成基板にはUSB 回路は要らないなぁ〜などと考えていると、CPU にブートローダーを書き込んでおけば、自分だけのオリジナル回路が出来るのでは・・・と思い、Webを調べたらすでに沢山の情報がありました。
そこでこれまで製作してきた「お天気シールド」のシステムを小型化しようと考え、大枠のものが出来たので紹介致します。なお小型化のため今回、音声の発音は搭載しません。
と、その前に何も入っていないCPU、ATmega328Pにどうやってブートローダーを作るのか調べたところ、Webには参考になるかなりの情報がありました。下記にいくつかのサイトを紹介致しますので、ここでは割愛します。
- http://www.geocities.co.jp/arduino_diecimila/bootloader/
- https://sites.google.com/site/hananekosugan/electro/arduino_burn_memo
- http://airvariable.asablo.jp/blog/2012/03/21/6383898
- http://arms22.blog91.fc2.com/blog-entry-219.html
- http://arduino.sugakoubou.com/%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC
- http://d.hatena.ne.jp/nisuseteuryalus2/20110404/1301845587
- http://d.hatena.ne.jp/LaclefYoshi/20110108/1294475337
- http://blog-yama.a-quest.com/?eid=970124
と、色々調べまくり、こんなもの「年日時、気温、湿度、気圧、照度」計測器を製作してみました。まずはそれなり物を見て頂きましょう!!
上記写真の右側が全体像、左側は液晶以外の部品の拡大です。右側の写真で基板が写っていますが、基板内の詳細は左から順番に
- 液晶表示用の CPU=ATtiny2313-20PU
このCPUは後に出てくる別のCPU、ATmega328P-PUと「I2C」で接続され制御されています。
- その右となりが、DC-CDコンバーター基板です。
入力3.7V(リチウム電池想定)で内部で3.3Vと5Vを作り出しています。この両電源をDIP16Pinの大きさで製作しています。
電源基板の真上には2Pinのコネクタ(リチウム電池入力)と6Pin(プログラムとデバッグ用)のコネクタがあります。
- その右となりが、メイン制御用の CPU=ATmega328P-PU
- その右となりが、温度湿度センサーSHT-11 と照度センサーS9648(手持ち利用)です。
- その右となりが、上側:RTC(RTC-8564NB)基板、下側;気圧センサーのBMP085(I2C接続)基板です。
- その右となりが、上側:RTCバックアップ用リチウム電池、下側:microSDカードリーダ基板
- その右となりが、XBee基板で真下には3.3V変換用IC(TC4050FB)が搭載されています。
搭載部品からある程度の仕様を下記に示します。
- 入力電圧:DC3.7V リチウム電池利用(但し、容量は2000mAh以上を利用の事)
- 内部動作電圧は、SDカードとXBeeは3.3V、それ以外は5Vです。それぞれDC-DCコンバータで生成されてる。全ての機能を動作させると消費電力は大きくなります。特にXBeeの送信とSDカードの書き込みは電力を食います。
- 液晶は40文字×2行で、メインCPU(ATmega328P)とはI2Cで制御される
- サンプリング間隔は今のところ3秒に固定しています。1サイクルシーケンスは、「センサーよりデータサンプリング」→「演算」→「液晶表示」→「XBee発振」→「SDカードデータ書き込み」となっている
- 日時合わせは Arduino IDE シリアルモニター画面で日付コマンドと時刻コマンドで簡単に設定可能。RTCはバックアップ電池搭載
- 年、月、日、曜日、時、分、秒、気圧、温度、湿度、照度のデータを液晶に表示し、SDカードに書き込み、さらにXBeeでシリアル送信をしています。
なお日付と時刻合わせは、DC-DC基板とATmega328Pの間に2Pinのジャンパーピンがあり、ショートして電源を立ち上げると、日時設定モードになり、Arduino IDEのシリアルモニター画面を利用し、
日付コマンドと時刻コマンドを転送して設定を行います。あとはジャンパーを抜いて再び電源をOFF→ONすれば合わせた日時が表示されます。
なお使った液晶は情報量が多いため、40文字×2行と言うキャラクタ液晶を利用しましたが当時、入手が出来ず、何気に秋葉をうろついていていると、「距髀、」にオプトレックス社の40文字×2行の液晶がありました。
型番は「C-51850NFJ-SLW-ADN」です。価格は2,600円、バックライト付きです。安易に「HD44780」互換と思いこみ、購入しましたが搭載されているコントローラICは何と、NT3881系だった。
ものは試しに「HD44780」互換のプログラムを走らせたところ、あっさり動いてしまいました。
今回使用したリチウム電池を紹介します。今時ですと「イオンポリマー」が流行りの様で、簡単に入手できるものとして多いのは、薄いタイプのものがあります。秋葉原界わいですと「叶逅ホ電商」さんや「且瘴シ通商」、「マルツパーツ館」などでも売られています。 私は、下記の様なものをとあるジャンクショップで見つけました。
左の写真の物は4本でなんと、500円です。メーカーはたぶん Panasonic だと思います。パソコンなどで使用されるもので、本来であれば単品売りはしていないと思います。仕様は、公称電圧:3.6V、容量:2,350mAh、サイズ:直径18.6×長さ65.2 mm、重さ:45g とデータシートに記載されていました。 この電池はとあるパソコンの電池で、ケースに入っていて、その中には充放電コントロール基板といくつかの温度センサーが取り付いていました。それらを抜き取って売られていました。ただ見ての通り、スポット溶接された薄いバーが取り付いていて、 2並列2直列の接続がされています。これをはぎ取るのはちょっとしたコツが要りますが、ショートさせると大変危険です。買って来たばかりのこの電池でも残留電圧が約3V近くありました。1本の容量が大きいため結構な用途に使えます。
1本取り外した電池を今度はケースに入れます。右の写真は百円均一で売られていた「1円玉コインケース」です。ケースの中には4か所の仕切り板がありましたが、ルーターなどで3か所取り外しました。
すると電池のサイズにピッタリではないですか!あとは厚み 0.3mm の銅板を使い、「+」極と「−」極の電極板を適度な大きさにカットし、上記の様にリード線を出してやれば、簡易的なケースが出来ます。きちっと蓋もできますので重宝します。
真似をされる方は自己責任で、くれぐれもショートさせない様に細心の注意を払って作業して下さい。
基板にスタット取り付け、液晶の後ろに配置したのが上の写真です。ネジ止については後で考える事にします。
右は電源ON直後の表示です。左は運転中の表示です。点灯LEDは、白がサンプリング中、赤がSDデータ書き込み中、XBee基板にもLEDがあります。