LCD表示でのプログラムもほぼ完成したので、最後のハードウエア、プリンタを接続します。
プリンタはArduinoとは9600bpsのシリアル接続で、シールド形式(Arduinoピンコネクタに差して重ねていく形式)になってますのでArduinoの上から差し込むだけで接続が出来るようになっています。問題はセンサーインターフェースを接続していたArduinoのコネクタがプリンタシールドに占領されて接続できなくなります。そこでプリンタシールドとArduinoの間にArduinoの接続を引き出すシールド基板を作ってサンドイッチすることにします。
39
Arduino用ユニバーサル基板にインターフェース接続用のピンソケットと
プリンタ用のピンソケットを2重に取り付けて
Arduinoのピンをインターフェース用に分岐。
ドキュメント1
※Arduino Unoのピンソケットの一部はICピッチ(2.54mm)で半ピッチずれてますので普通のユニバーサル基板では合いません。Arduino用のユニバーサル基板が必要です。半ピッチズレている理由は恐らくシールドなどを間違ったピンに差し込めないようにしているのだと思います。
33
 プリンタをその上に刺すと完成。
 17
プリンタの位置が決まったのでペーパーホルダーの位置を決めて固定。
17
プリンタが印刷されたプリンタ用紙を巻き込む可能性があるので
巻き込み防止用のカバーを作りました。巻き込むといろいろと厄介です。
05
巻き込み防止カバーは差し込み式でペーパー交換も容易です。 
これでハードウエアが最終完成。

31
 センサーとの接続はキャノンコネクタにしました。
えっカバー?手元になかった。(笑)
03
1階のケージはプラスチックボックスですが透明度が低いので中の様子を見るためにバンコクの10Bショップで買ったUSB接続のLEDライトを取り付けています。これを通過センサーと連動してON,OFFしようと考えてその仕組を付けました。(最終的にArduinoの入出力ピンが1本余ったのでそれを利用)
50
単にリレーでUSB電源をON,OFFするだけです。
パーツはリレーとUSB-B、USB-Aのコネクタのみ。
リレー駆動のトランジスタ、サージ保護ダイオードは本体基板に付けてあります。
 
ハムスターが通過センサを通ると自動で照明が点く様子です。
午後10時から午前8時までは自動で消灯します。 
 52
 そのリレーを動作させる基板も追加してインターフェース基板は最終こんなになりました。出来れば入力部にチャタリング対策にNE555使ってワンショットマルチ組んで基板を作り直したいがもう気力がない。(笑)
14
プリンタRS-289R2のシリアル通信はArduinoとPCのUSB通信と同じピンを使うので、プログラムを変更して書き込む際はプリンタを外さないといけないのが面倒です。またプリンタは2A以上電流を食うのでArduino、周辺と合わせて5V4AのACアダプタに接続しています。プリンタ基板にジャンパをすればプリンタからArduinoへ電源供給ができるようになっています。

一応完成しました。バグ取りとか機能追加は今後もやっていきますが以下が現状の機能です。
LCD表示は3画面あってスイッチで切り替え表示します。
28
 LCD表示1(基本画面)
 現在年月日時刻
回し車の回転数、換算走行距離、累計走行時間
リアルタイムの回し車の換算速度、最高速度、
最終の通過センサーと通過時刻、累計のパイプ内移動距離

ケージが3つあってそれぞれに小屋があるので、今ハムスターがどこにいるのか分からないことがよくありましたが、4行目を見ると現在地がすぐに分かるようになりました。この例だと最終移動は通過センサー1から3に移動してるので3の先(寝床)にいることを表しています。
34
LCD表示2( 回し車運動の詳細)
回し車を回し始めた時刻、最後に回し車を降りた時刻
回転数、換算走行距離、累計運動時間
最高速度、平均速度 
 35
LCD表示3(通過センサーの通過回数)
 08
プリンタでデータをアクティビティサマリーとして印字します。
任意のタイミングでスイッチを押して印刷することが出来ます。また毎朝7:30には自動で印刷して24時間分のデータをクリアするようになっています。

このレポートでは回し車を回し始めたのが23:13で最後に回し車を降りたのが03:40、総回転数は8002回転、換算走行距離は4321m、回し車を回していた累計時間は6102秒、最高速度は3.6km/h、平均速度は2.5km/h。
通過センサーの通過回数は約280回、パイプ内の移動総距離は337mとなっています。
08
 Arduinoのメモリーの関係(変数に使えるSRAMは2Kしかない)でパイプの通過センサーの情報を蓄えて一気に印字すことは出来なかったので、通過センサーの情報(通過センサー番号と通過時刻)はセンサーの通過の都度印字するようにしてます。そのため一晩でかなり長いプリンタ用紙を吐き出すのですが、巻き込み防止してるので安心です。
 
作って分かったハムスターの運動量凄すぎてワロタ。
私が寝てる夜中に1時間40分で回し車を8000回転も回して、4kmも走り、パイプ内を200回以上300mも移動してたなんて。

データを取り続けたら運動量がどう変化するのか興味深いです。健康状態に異常があればすぐに気付けそうです。

追記:
時々通過センサー読み取りにミスが出るので、1/8に大阪で部品買って1/9にインターフェース基板を作り直しました。手直しではなくて入力部にLMC555(NE555のCMOS版)を使ってハード的にチャタリング対策したものに一から作り直しました。
35
 丸一日かかりましたが満足の行く仕上がり。
30
 ケースに組み付けてテストしましたが結果は上々。
ソフトのほうでチャタリング対策しなくていいのでソフトもすっきりしました。
48
基板の裏は汚い(笑)
23
 ついでにキャノンコネクタにもカバーも買ったので取付けました。

「Arduinoでハムスター行動解析器を作る」は今日でおしまいです。
結局オシロも注文してしまって800円のハムスターの夜間行動をモニターするのに、パーツ代も合わせると6万円以上かかってしまった気がします。多分気のせいだと思うけど。(笑)
でも久しぶりに電子工作とArduinoのプログラムで1ヶ月ちょっと楽しく遊べて、私にとって価値あるデータを取得することが出来るようになってとっても満足しています。

Arduinoでハムスター行動解析器を作る。その1
Arduinoでハムスター行動解析器を作る。その2
Arduinoでハムスター行動解析器を作る。その3