■ドアロックセンサのコア部分が完成。モーションセンサ、LCD、アナログ温度センサを追加した。モーションセンサは扉の内側に人が近づきたことを検出するためのもの。玄関での検知はロックが動く時だけ機能すればいいので、ATmegaは通常はアイドル状態にしておき、ロックが開いた時かモーションセンサに感があった時に復帰する。
LCDを使ったのは久しぶりで、昔PICでなんとなく苦労したことを思い出した。初期化時のタイミングがシビアでなかなかうまく動かなかったことを覚えている。LCDはポピュラーなHD44780コンパチで、データバスを4bit/8bitを切り替えられる。8bitバスの方がプログラムは楽だけど、今回は入出力デバイスがだいぶあり、ピン数が足りないので4bitバスで使う。8bit/4bitの切り替え操作もデータバスを経由して行うため、起動直後は4bit/8bitバスが不定の状態になる。そのため初期化操作が複雑になっている。
基本的には最初8bitデータバスで初期化したあと、4bitデータバスに切り替え、LCD表示機能のセットアップをするのだけど、付属の説明書には不備があって、表示されない。
説明書だと、4bitバスに切り替えた後、いろいろプロパティを設定して、「ディスプレイ・オフ」「ディスプレイ・オン」となっているのだけど、「ディスプレイ・オン」のコマンドは実際には「ディスプレイ・クリア」なので、ディスプレイはオフのまま。
この初期化シーケンスの誤謬は昔秋月で買ったLCD付属のデータシートも同じで、たぶん、たぶん訂正されることもなくシーケンス説明の部分が使いまわされているのだろう。そんな状況が続いているのは、LCD初期化の正しいシーケンスはデータシートに寄らずともわかるようになっているからだろう。あんまり感心はしないけど。
HD44780は古いデバイスであることと、LCDの反応速度がMCUに比べると遅いので、クロック(Enable/Disableサイクル)速度を十分に遅くしてやらないといけない。早すぎると初期化に失敗したまま動いてしまうので文字化けする。でも、面白い。キャラクタ表示だから、表示できるのはASCIIコードに半角カナくらいだけど、目に見えて動くのがわかるのは単純に面白い。
それにしても半角カナが使えるのは英語圏から通販で入手したデバイスでも同じだったりするのだけど、あちらではカナ文字のグラフィックをどういう思いで眺めているのだろう。一応、ウムラウト文字も収録されてはいるけれど。
残りはうちのXBeeネットワークに乗せるためのIDデバイスと、XBeeによるUART機能だけど、このデバイスとしてはおまけに近い。イベントを記録するためと、施錠忘れの時にメールを飛ばすトリガを起こすためにXBeeを使う。