タイマー用にDS3231を使ったRTCモジュールを使った。特に理由は無いが、2チャンネルのアラームを持っていることと、訳あって間違って数個購入してしまったためでもある(^_^;
以前にも他のRTCを使ってみたことがあるので、期待はしていなかったが、実際にテストしてみたらかなり時刻は正確なようだ。時刻の調整が嫌で、電源同期クロックの実験をしたりしたのだが、このICはそのままで実用になりそうな精度を出してくれた。
CPUは、ArduinoPro/Mini(3.3V/8MHz)だ。
最初はAtTiny85の積もりだったが、表示にOLDを使ったため、8MBには収まらなくなってしまったためだ。
さて、照明用のタイマーなので、朝にONして夜にOFFする。そのため最低2つのアラームが必要だった。アラームはArduinoで受けて、リレーをON/OFFする。今回はアラーム#1を"ON"用に、#2を"OFF"用に使った。
12V→3.3VのレギュレータICは高効率のNJM2845-33をパターン側に置いて、放熱板にしている。
RTCは電池の交換を考えてこちら側に付けた。
その他の抵抗・コンデンサー・ダイオードなどは全てSMDにしたので、パターンはコンパクト。
動作中の基板正面
カウント中は、「時刻」「日付」「アラーム設定」を3行で表示する。
OLEDは128x64のフルドットなので、表示はフレキシブル。
メモリは大食らいだが、"U8glib"はとても便利だった。余裕があれば、フォントスタイルも色々選べる。
キーはいつものアナログ1bitキーボード。今回はメイン基板に組み込んである。
左から、「モード」「選択」「UP/DOWN」「ENT」と割り付けた。
工場の全景
メタルラックの棚の裏側に照明があり、植物はプラスチックのコップの中で育つ。
水の代わりに液体肥料を時々与えている。
今までは朝起きて照明を点け、夜寝る前に照明を消していたが、このタイマーを設置したので、それも要らなくなった。
芽が出て間引いたら、スポンジが乾かないよう液体肥料を時々注ぐだけ。
タイマーユニットには照明用のLEDの電源を内蔵した。
と、言うより
「電源にタイマーがオマケで付いている。」と、言った感じだろうか。
照明は昨年から始めているので12Vの電源で駆動する。
このタイマーのデバイス達は3.3Vなので、リレーはトランジスタを経由して12Vで動作する物を選んだ。
全体の回路構成は、回路図を見ていただけば分かる通り、シンプルだ。I/OもA2〜A5までしか使っていない。Pro/Miniはちょっと贅沢なのだが、手持ちのCPU達の中では、他に選択肢が無かった。
消費電力を少なくするため、表示にはI2C接続のOLEDを使用した。
最初の試作はFSTNの液晶で、CPUはAtTiny85でやってみた。しかし、AtTinyの場合、ピン数を減らしてI2Cにするためには、"TinyWireM.h"を使う必要がある。RTCもそれに合わせてドライバを書いてみたのだが、8MBギリギリになってしまった。
Arduinoなら、"Wire.h"と"DS3231.h"を使っても余裕だ。
タイマーの場合、設定機能などがあるので、表示器も色々表示できる様にしたい。
省電力で見やすい表示器となると有機LED(OLED)が最適だ。ただしこれはキャラジェネを内蔵していないので、またメモリーが沢山必要になる。
あれやこれやで結局3.3Vで動作する点も考えてCPUはArduino Pro/Mini(3.3V/8MHz)、表示はOLDに落ち着いたのだ。