Make一覧

Arduinoカメラ関係

SPI SRAMテスト

 カメラからの画像データの一時保存先としてmicroSDからSPI SRAMに変更しました。結構いいねぇ、SPI SRAM。5V-3.3Vのレベルシフタは秋月のFXMA108基板を使用(こないだ買った手ハンダ表面実装初体験用のチップはまだ使わないw)。8ポート分あるからSPI SRAMの4系統の他にカメラの通信も扱えるし。XBeeの通信も収容可能。

カメラはこんな感じに

 AdaFruitsから買った防水カメラは、こんな感じにデッカイ洗濯ばさみにボルトでくっつけて見ました。これでプランターの端っこを挟む予定。
 このカメラ、防犯用のコンポーネントの流用だと思うのだけど、CDSと赤外線LEDがついていて、暗いと赤外線LED投射になります。夜のスナップエンドウも撮れるかな。出来れば、10分おきくらいに撮影して、それをまとめて成長の早回し動画にしたいですね。
 Arduinoのカメラ側はほぼコレでハードは固定なので、ブレッドボードから基板に回路を移します。MakeTokyoMeetingで買ったアルシオーノを使おうかな。使うにはまず組み立てねば。
 あと、mbed側もSPI SRAMをつけてそこに一時保存して(無線区間で直接受け取ったデータをhttpに横流ししたく無いので、確定させる為に保存。)、http uploadのコードを移植しないとね。水やり関連は3月まで手が出ない感じだ。


ArduinoのRAM

1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890
123456789012345678

2Kbyteなのでこんくらいですかね。ArduinoっていうよりAVRマイコンチップであるATmega328のSRAMという表現が正しいが。Arduino1.0以前はコードにF()表記が使えないので文字列リテラルもSRAMを食います。そして、正体不明のリセットになるわけだ。標準でウォッチドッグ入ってるのかな?
プログラム自体は32Kbyteのフラッシュメモリに書かれて動くのでこれでもなんとかなるわけですね。


JPEGシリアルカメラからXBeeを通して保存

JPEGシリアルカメラ <--> Arduino <--XBee--> mbed での撮影テストしました。
mbedからは写真撮れ、ファイルのサイズ教えろ、データ送れの3つのインターフェイスを実装して。エラー時の再送とかはコードに盛り込むべきか、運用的にその回の撮影は無かったことにするかは今後の気分しだいだな(笑)。

本日の結線

 配線がくねくねですけど、プロトタイピングなので許せ。実稼動時は整理するさ。

デバッグはこんなprintfデバッグ

 (waitがwaiteになってるのはtypoとして)
 シリアル出力を送り側のArduinoと受け取り側のmbedでひっぱらかって(mbedは仮想なのでUSB1本ですが)、デバッグメッセージを見る。Arduinoは前に書いたようにソフトシリアルを2系統使ってます。Arduino1.0さまさまです。

机から天井方面の画像

 こんな天井方向の画像が得られました。LCDの上にまたがってるのはクマのぬいぐるみ。も少しエラー時の対策を入れれば使えそうだな。

 次はmbedでのhttp uploadです。Arduinoのコードがあるのと仕組みを理解したのでmbedなら結構いけるかなと。そして土日はカメラの設置工作を予定。ホームセンターで金物探しだ。


XBeeでのカメラ映像送信は面倒

 特にカメラに限ったことじゃないですが。XBeeでの大きなデータのやり取りはchunkにして何回か送らないと行けません。今は320×240の10Kbyte程の画像ファイルを送ろうとしてます。ペイロードサイズ32byteで300回ちょいに分割。
 昨晩試してましたが、ハンドシェイクをサボったらやはり厳しい様です。ちゃんとやろうw。あと謎のリセットがかかるのだが、コレはメモリリークが怪しいな、2Kbyteしかないからなぁメモリ。とりあえずArduino=>Arduinoでテスト中。安定したら受信側はmbedに移植します。

 ・・・と思ってたけど、受信側はは最初からmbedに切り替えよっと。3.3VなのでXBee直結できるし、USB仮想シリアルあるし。現物シリアルも3つあるし。フラッシュメモリもある。
 なんせArduinoでのXBeeのテストだと、XBee用に1つ・コンソール用に1つと最低2つのシリアルが必要で。カメラ側にいたっては、カメラ用にもう1つシリアル。送信側もmbedにしたい所ですが、テスト機がなくなってしまうズラ。Arduino系はたくさん転がってるののです。MTM07で頒布してもらったアルシオーノでもいいがな、まだ組み立てて無いけど。


XBee透過モードでもう少し悪あがき

 シリアルJPEGカメラのライブラリを読んでいてハタと気づいて再チャレンジ。XBeeはAT透過モードで。タイムアウトまでをカウントする回数変数がuint8_tだったので、もちっと長くしてみて。それでも1,2回は通しでシーケンスが完了したものの、画像データに抜けがあって画像としては見られなかった。うーん、やっぱ当初の予定どおりAPIモードでやり取りしよっと。XBeeのATモードは無かったものと思おうw。PICでフローコントロールしてる人は見かけたけど、まだハードの技術がないのです、自分。


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

 昨日、シリアル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月中を目処に実験していきたいと思っています。