鎌倉ヤマガラ日記

鳥の話はあれども野鳥観察日記ではない似て非なるもの

窓辺の実験室(3)

何と呼ぼうか少し迷ったが、「実験パネル」ということにした。

「実験箱」とすると閉鎖した箱のイメージになり、窓の透明パネル一枚を隔てて外と内になっている、そういう「界面」interfaceにしたかったので「箱」では望むイメージにはそぐわないし、Communication Panelと呼ぶにはまだまだだから、このくらいがいいかと。

 

 

上の記事からも徐々に構成が変化してきており、また、今後もまだあれこれ変わるだろうし変えようと目論んでいるのだが、概略だけでも書いておかないと動画やアングルの不自由な写真だけでは伝えきれないところもあるかと思って、ざっと図を描いてみた。

 

f:id:daymonthtraveler:20170314125955p:plain

 野鳥実験パネルの構成概略図

 

1)Feeder

まず最初が可動式の蓋のついた餌箱(餌皿)で上から見た図としてfeederとして示したものだ。
透明な樹脂製の直方体の箱(自作)にスライドする透明樹脂製の蓋が被っていて、その蓋をラックとピニオン経由でパルス・モータ(ステッピング・モータ)で前後に(図では左右に)動かし、鳥の側が数センチ開くようになっていて、そこから鳥は餌を採ることができる。
この開閉動作(開閉時間や開口幅など)はArduino Mega(以下、Mega)のプログラムで制御しており、モーターの作動音はそれほど大きくなく耳障りではない。

2)Key 

その餌箱の開口部に重なる形で、左右に(図では上下に)2つの、やはり透明樹脂製のキー、Key1とKey2がある(マイクロスイッチに物理的に連結)。
これは鳥がそれほど力を使わずにON/OFFできるようにしてあるが、マイクロスイッチのチャターと鳥のキーつつき持続時間(かなり高速で一回一回は短時間)を考慮して、時間解像度は20ms程度に抑えている。

3)LED

鳥がキーをつつくときに視野に入ると思われる位置、左右に3色の発光ダイオード(LED)の組があり、それぞれがMegaのプログラムかON/OFFでき、目下のところ視覚的な刺激としてプログラムから制御できるのはこれだけだ(餌箱の蓋が動くのも視覚的刺激だが、今はそういう詳細は置く)。

4)スピーカとMusic Shield

パネル左右に内蔵アンプ付きスピーカがあり、これは、Arduino Uno(以下、Uno) + Music Shieldからの音響刺激を提示できるようにしてある。
現在のところ、このUnoはMusic Shield制御専用になっており、microSDカードに記録してある複数の音響刺激ファイル(mp3)をMegaからの信号に従って選び再生できるようにしてある。
お望みならヤマガラやシジュウカラにショパンを聞かせることもできる(笑)。

5)シリアル・ライン

Megaのシリアル出力は、モバイルPCにつながっており、リアルタイムでキー押し頻度やその他の実験パネル動作を記録のために出力している。
Arduinoはお手軽でスマートなマイクロコンピュータ(あるいは、マイクロコントローラ)システムだが、それ自体には多量のデータを保持するだけの内部メモリーも外部ストレージもないので、現時点ではデータは実験のリアウタイム性を損ねない範囲でシリアルラインに垂れ流している。

6)赤外線リモコン

図には示していないが、実験制御プログラムの動作は外部からもある程度は制御できないと困ることがあるので、赤外線リモコンで適宜実験パラメータを変えることができるようにしてあり、変更できるパラメータはプログラムで適宜更新していけるようになっている。

7)WiFi

しかし、これでは、実験者は赤外線リモコンの送受信距離範囲内にいないと制御できず、窓際実験室から離れた私の仕事部屋(書斎兼寝室兼工房兼・・・)からは制御できない。

そんな制御の必要があるのかと言えば、あるのである。
(a)設置したネットカムの映像で実験パネルをモニターしているのだが、臨時に餌箱を開閉したり、LEDをプログラムで設定したこととは違う形でON/OFFしたいときなどがあり、また、
(b)開放的空間であるから、鳥が喜んで訪れる場所はまた『泥棒(あるいは強盗)』タイワンリスのやってくる場所でもあり、この「実験」を始めてしばらくしたころにタイワンリスに装置の一部を食いちぎられたことがあったため、その対策をしてあって、その対策はMegaの実験制御プログラムにも組み込んであり、遠隔操作できるようにしてあって、さらに、
(c)鳥たちの反応の様子はネットカムでモニターできるが彼らの動きはかなり高速なので目で見て(時間解像度の低いネットカムであるし)把握しきれないところもあるので、リアルタイムにデータを外観したいということもあって、
MegaをWiFi経由で無線LANにつなぎ仕事部屋のデスクトップからMegaのプログラムの動作を変更したり、データをリアルタイムでモニターできるようにした(WiFi Shiedを使っている)。


プロトコルはhttp(80)だが、現時点では、受け側はnetcat(nc)にしており、デスクトップだけでなく、スマートホンや、他のモバイルPCからも操作・モニタリングできるようになっている。
接続の際のハンドシェイク・タイミングはやや微妙で若干苦労させられた(我が家の無線LAN環境とも関係することだが)。

 

さて、「実験制御」とは大袈裟な言い方だと思われるかもしれないが、なにしろ相手は生き物であって、生き物とのお付き合いはけっこうこれが複雑になってしまうものである。
Megaの制御プログラムは、1ms時間解像度にし、10個ほどのスレッド(SETと呼んでいる)が並列して走行している。
各SETは複数の状態(state)が状況に応じて遷移するstate notation方式になっている。

それらのSETは例えば、Key1やKey2のON/OFFをチェックし、Feederを開閉し、LEDをON/OFFし、あるいは、左右どちらの側が餌に結びつくかを乱数回で交替させたり、一定時間ごとに鳥の動作に関わらずFeederを開閉したり、キー押しの時間間隔を計測したりするだけでなく、鳥とお付き合いする上であれこれ制御しておかなければならない細かな設定をも扱っている。
後者としては例えば、鳥の場合に強い傾向なのかもしれないが、左右のキーを交互に高速でつつくことが多く、こうした傾向は今後やりたいことにとって邪魔になる可能性があるので、左右のキーを交互につつく傾向を抑制するような制御が必要だったりする。


こうした詳細は今はこの程度にしておき、いずれ必要になるか意味がありそうになったら書くことにしようと思う。

 

Arduinoというマイクロコンピュータ(あるいは、マイクロコントローラ)はこれらの制御のために十分な処理速度を持っているし、プログラムはC(ないしC++)もどきで書けるので、安定的に、また、変更しやすいと感じている。
それだけでなく、「お遊びマイコン」らしく、その周辺部品のキット、ソフトウェア・ライブラリ(多くは無料)なども豊富に製造販売されているので、MegaやUnoと相性のよい周辺装置類に事欠かないというのも、(コンピュータで遊ぶ趣味のある者にとっては)嬉しい点だと思う。

 


Arduino関連書籍は多いが、この一冊あたりが基本だろうか

 

 

というところで 、今日はここまで。

 

(2017/03/14) さて今日は何時頃に確定申告を税務署に持って行くかな・・・歩いていけるところなので何時でもいいのだけれど