mbed一覧

カメラの画像を無線で飛ばす検証

 昨日、シリアルJPEGカメラのコントロールを有線ではなく、無線でやるテストをしていた。XBeeのシリーズ2(うちにあるのは全部シリーズ2だし、使用中も含めて全部で10個あるw。)で、透過モードにて。
どうも、フロー制御無しでは厳しそう。XBeeの無線区間は半二重になるのでだろうか。なので、

運用想定図

 こんな感じでの運用の為に実験検証中です。カメラと直結のArduino or SeeeduinoStalkerはベランダ置き。多分Stalkerを使うと思う。こいつ、microSDやXBeeのコネクタどころかRTCやらI2Cドライバまで付いているし、電源も太陽電池とバッテリーで運用出来るように充放電制御チップが載っている。クロックは8MHzだけど。コレには、土壌温度・土壌水分チェックと水やりもやってもらう予定。
 カメラの画像は一旦microSDに保存しておいて、XBeeでたらたらとフロー制御しながら送信しようかと。XBeeは垂れ流し透過モードにするか、APIモードにするかは要検討。受信側をmbedにまとめるのならAPIモードかな。10Kbyteの画像だと何回やり取りが必要だろうか?XBee自体、大きいデータをやり取りするのには向いてないからなぁ。
まぁ、2月中を目処に実験していきたいと思っています。


JPEGシリアルカメラテスト

 仕事を終えて家に帰ってきたら、ツレが腰痛で寝込んでいた。ベランダのバラの鉢を移動していたらグキッと。冷たい風の中をご所望の湿布薬とコーラを買い出しに行って、晩御飯は出前にした。そんな、寒い夜。

まぁ、つなげただけ。

 LinkSpriteのJPEGシリアルカメラを試しました。mbedにて。転送はやはり時間がかかります。640×480だと38400bpsで30秒くらいか。
ケーブルはseeedstudioで買っておいたGroveの4線コネクタケーブルがピタっと色までバッチグーでハマったので利用しました。5ピン目はビデオ出力なので4線コネクタケーブルでOK。※追記。Groveのケーブルじゃない気がしてきた。あの1セット以外に手持ちが見当たらない。

お試し撮影画像 640x480

 撮影サイズは320x240でもいいかなと思ってます。それくらいならメモリに載るかもしれんし、転送も速い。メモリと言えば1Mbit(=128Kbyteくらいか)のi2c接続のEEPROMを秋月で買っておくべきだったか。mbed内蔵の2Mbyteのflashを使ってもいいですけど、書き換え回数がw。実稼動では☆ボードオレンジに付いているmicroSD使うのが御の字ですね。
 次の実験ははtcpのソケット通信。なんとなくわかってきたので、Content-Lengthの計算さえ間違えなきゃ行けるような気がしている。


マイコン水槽カメラ計画

 年末に発注していた「シリアルjpegカメラ」が届いたので、ハード作る前にソフトを検証。カメラとの通信はすでに先人が作ったのがあるので後回し。
 で、問題が。mbedでRFC1867をやるコードが見つからん。仕方ないので、自前でソケット叩く様なコードを書く方向で。もう少し探してみるけど。画像ファイル受け取り側のサーバサイドのテストコードはphpでさくっと1分で書いて動作確認済み。
 もともとマイコンはメモリが少ない(mbedで32Kbyte,ArduinoのATmega328は2Kbyte、128は1Kbyte。ま、コードはフラッシュメモリ部分で直に動くので変数領域だけど。)ので、画像のアップロードとかはあまり先例がないのかしらん?まさか本当に無いとは思ってなかったので正月連休中に事前に作成する事もしてない。
 最初はローカルファイルを上げてみて、上手く行ったらカメラと通信しながら上げる感じです。それで大丈夫そうならmbedではなくArduinoでやっても良いかな。実はEthernet付きのArduino ProであるEthernet Proが届く予定ではあります。


水槽温度センサー設置準備

 水槽の水温計(GEXのチャームで安売りしてた奴)はつけてるけど、時系列のデータが取れるものでは無いので別途センサーを設置することにした。

LM61での温度測定のテスト

 先週、事前に上記画像の様に実験して、XBeeのADCで行ける事は確認しておいた「LM61温度センサーによる水槽の水温測定」。LM61を選んだのは、LM35は電源に4V以上必要なので却下(XBeeは3.3Vなのです)。出力信号がLM60は6.25mV/℃でLM61は10mv/℃。ADCにかけるから1℃あたりの電圧幅がデカイ方が細かい温度が測定できるのでLM61を選択って事です。XBeeシリーズ2のADCは1.2V MAXの10ビット(vrefが効くかと思ったけど3.3Vで試して効かなかったし。どうもシリーズ2で使われてるマイコンの仕様らしい。)なので1ビットあたり0.001171875V(=1.171875mV)の分解能。つまり温度を0.1171875℃単位で測れると。実際はLM61のセンサーのリニアリティとか誤差とかありますけどね。LM61にはVCCとGND間に0.1μFのパスコンを設置。シグナルとGND間は処置せず放置した。

 んで、本日、水槽に付けるための防水用にシリコンシーラントを買い出して来た。コニシの「バスボンドQ」とセメダインの「バスコークNクリア 水槽鏡まわり」とあったけど、後者を購入してきた。で、半分に割った太めのストローをガイドに以下のように包埋。
 

LM61 シリコン漬け

固まるまで時間がかかるので放置しつつ、mbedのプログラムを修正。pachubeのID 4に入れ込み。今までID 4を使っていたmbed付近のI2C温度センサーはID 9へ移動。このmbedの☆ボードオレンジにつけてるI2C温度計。場所が悪くてPCやLCDモニターの排熱の上昇気流をあびて高めの温度となってる。ま、さておき、今回作成したLM61のセンサーはかわききるまでは室温センサーとなってます(苦笑)。


mbedのセンサーネットワークコーディネーターほぼ固定

センサーコーディネーターのmbed

 ちとプログラムをいじってLCDにpachube等のデータ更新時刻を表示させてみた。
基本的にこのXBeeコーディネータがつながってるmbedマイコンはこのまま。
表示部を「松本メーター」にするのは別のXbeeクライアント機なので。
XBeeのワイヤアンテナの向きが気になるので基板への配置関連は変えることはあるかな。
 ちなみにLCDの表示はV:ベランダ気象台、T:Tweet、W:家庭内電力消費、G:ガイガーカウンタです。
Vは240秒、Gは120秒、Tは毎1時間、Wは毎10分。それぞれ厳密にやって無くて、前回の時間からそんだけ以上間があったら動くって感じのループです。それくらいゆるい感じがOK。タイマー割り込みでぴったり毎正時とかやりませんて。

 あらこんなところにmbedが。

実験用mbed


 mbed初号機が実運用に入っているので実験用mbedです。mbedは簡単にLAN接続できますが、arduinoでLAN接続しようとするとシールドとかのコストがねぇ。今季の新arduinoでLANつきも出たけどUSB端子がなくなってるしお値段もあがってるし。Arduino系は仕組みがわかってきたので生のATmega328p&セラロックとかでセンサーデバイスは作っていこうと思う次第。

 次の獲物のメイン素材は↓。

128x64 GLCD


脱OSってことで

現在自宅のセンサーネットワークはこんな形になってます。

2011/11/25現在

 インターネット(pachubeなど)への送信はubuntu機でやっていたのをarm3マイコンのmbedに入れ替えました。
ubuntuでの難点はセキュリティアップデート対応と、OS自体のアップデート。そしてこんなマイコンユーザの事は考えていないので使いにくくなるばかり。
で、今回マイコンにしたので、セキュリティ的に危ないものが入ることのできる隙間がないし(受け取るインターフェイスがないから無理)、隙間から入れられる(入れられる方法が無いのだがw)プログラムが実行されないのと、そもそもOSが無いのでアップデートは自分のプログラム改修次第。ってところですか。

 とりあえず以下の形に拡張予定です。