ホームページの最初のページにします!
お気に入りに登録します!
ただ今の日時:
v(^_^v)♪ありがとございました~♪(v^_^)v 戻りまーす!

Title: Arduino 生CPUにブートローダ・プログラムを書き込み、オリジナル製品化!!

 2012年8月現在、Arudionoの完成基板に搭載されている主な部品構成は、電源回路、USB回路、CPU、LED、コネクタと言ったところでしょうか。これらで構成された基板が現在では以下の種類があるようです。(この他にもありますが・・・)

  1. Arduino Uno CPU=ATmega328
  2. Arduino Mega 2560 CPU=ATmega2560
  3. Arduino Mega ADK CPU=ATmega2560
  4. Arduino Ethernet CPU=ATmega328
  5. Arduino BT CPU=ATmega168
  6. Arduino LilyPad CPU=ATmega168 / ATmega328V
  7. Arduino Fio CPU=ATmega328P
  8. Arduino Pro CPU=ATmega168 / ATmega328
  9. Arduino Nano CPU=ATmega168
  10. Arduino Pro Mini CPU=ATmega328

 などがあります。

 そこでふと思ったのですが、電源回路は自分で作り、完成基板にはUSB 回路は要らないなぁ〜などと考えていると、CPU にブートローダーを書き込んでおけば、自分だけのオリジナル回路が出来るのでは・・・と思い、Webを調べたらすでに沢山の情報がありました。
 そこでこれまで製作してきた「お天気シールド」のシステムを小型化しようと考え、大枠のものが出来たので紹介致します。なお小型化のため今回、音声の発音は搭載しません。

 と、その前に何も入っていないCPU、ATmega328Pにどうやってブートローダーを作るのか調べたところ、Webには参考になるかなりの情報がありました。下記にいくつかのサイトを紹介致しますので、ここでは割愛します。

と、色々調べまくり、こんなもの「年日時、気温、湿度、気圧、照度」計測器を製作してみました。まずはそれなり物を見て頂きましょう!!

上記写真の右側が全体像、左側は液晶以外の部品の拡大です。右側の写真で基板が写っていますが、基板内の詳細は左から順番に

  • 液晶表示用の 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があります。