いつかはマイコンを触ってみようと思っていたのだが、この5月の連休に一念発起しArduinoのお勉強を始めた。Arduino Uno R3を購入、Arduino本家のHPからArduino IDEをダウンロードしてPCにインストールした。PCとArduino UnoをUSBケーブルでつなげば開発環境ができあがる。PICを知らないので比較もできないが、Arduino IDEは私のような初心者にもとっつきやすいと感じた。便利なライブラリがネット上あちこちに公開されているのも大きな助けになる。
なにやらArduino IDEについているSDライブラリを使うと簡単にSDカードにデータ記録できるとのこと、これなら終日電源入れっぱなしでもPCと違って電気代を気にすることはなくなる。というわけで、まずはデータロガーを作ってみることにした。データロガーなのでタイムスタンプが欲しい。これにはRTC(Real Time Clock)を使えばいい。それと気温も測っておきたいので温度センサを加えることにした。SDカードへの書き込み、RTCの時刻設定・読込み、温度の読取りをそれぞれArduino Unoで動作確認した。RTCのコントロールには”何でも作っちゃう.かも.”さんのRTC8564ライブラリをつかわせていただいた。マイコンの動作状況はArduino IDE付属のシリアルモニタで確認できるが、スタンドアロンで動かしているときに状況をチェックできるキャラクタディスプレーがついていると便利だ。そこでI2C-LCD(16文字×2行)を入手した。ここでは”じゅんの何でもDIY”さんのakiI2Clcdライブラリが重宝する。
マイコンボードの構成
1枚のユニバーサル基板にマイコンチップ、RTC、温度センサ、そして簡単な電源回路を載せた。SDソケットはピンコネクタ接続とし、基板から離れた使い勝手のよい場所に取付けできるようにした。SDカードの動作電圧が3.3Vなのでマイコン:ATmega328P-PUの動作電圧もこれに合わせた。入手したI2C-LCDも3.3V駆動なので好都合である。クロック周波数は安全サイドに立って8MHzとした。
この基板に”Silicaino”という名前を付けた。Silicaは酸化シリコンの総称で単結晶体なら水晶、多結晶なら石英、ゲル状ならいわゆるシリカゲルである。LSIプロセスで酸化シリコンは必要不可欠な絶縁体である、などというウンチクを垂れるつもりは毛頭無く、単なる言葉遊びだ。間寛平氏に敬意を表しての”シリカイーノ”。かゆいところに手が届くような、と期待を込めた。
回路図はこんな感じ。
リチウムボタン電池でRTC8564をバックアップにしている。このときRTC8564基板内のプルアップ抵抗は使わずに別途、抵抗を外付けする。(内蔵のプルアップ抵抗を使うとバックアップ電流が1mA近く流れてしまう。) マイクロSDを買うと変換ソケットがついてくるのでその金メッキされた端子にリード線をはんだ付けして使うのが安上がり。
そしてユニバーサル基板に組んだものがこれ。
バックアップ電池の大きさがやたら目立つ。RTC8564のカタログを見ると非アクセス時消費電流は1μA以下なのでこんな大きな電池は要らない。CR1025(30mAh)かCR1220(35mAh)あたりで十分だ。ちなみにCR1220(2個入り)が百均に並んでいることにあとで気づいた。
SDカード、温度センサ、LCDを装着。テストプログラム実行時の消費電流はLCDバックライトOFF時 9.3nA、ONでは17.4mAであった。
使用部品を表にまとめてみた。この表には入れていないがI2C-LCDは\800と高価だ。最近8文字×2行の小型I2C・LCDが秋月で\320で売られているので次の機会にはそちらを使ってみようと思う。
さてさて、プログラム(Arduinoではスケッチとしゃれた呼び方をする)のほうはというと、先人が書いたコードの寄せ集め。それらがうまく連携するようにちょっとばかり手を加えるだけだ。自慢じゃないがC言語なんぞ習ったことはない。それでも不思議なもので他人様のプログラムとArduinoリファレンスを交互に眺めていると1,2週間経つころにはルールがなんとなく見えてくる。そしてプログラムの書込み。このため、まずブートローダーを生チップに書き込む。Arduino Unoを使った書込み法がネット上のあちらこちらに詳しく説明されている。おかげさまでこれも難なくクリアできた。この後、USB-Serial変換アダプタをつないでPC上のArduino IDEからスケッチを送ってやればいいわけだ。
スイッチサイエンスのUSB-Serial変換アダプタをつかっている。百均のUSBケーブル(片側mini-Aタイプ)も問題なく使用中。
ソースコードを書いてArduino IDEメニューから「マイコンボードに書き込む」をワンクリックすれば自動コンパイルされたコードがマイコンに書き込まれる。インタプリタのような感覚でプログラムをチェックできるのが有り難い。