本日昼から作成して、動くようになったと思ったら雨。
でもUVインデックスは、現状のセンサの値とそれほど違わないから現状でも良いのかもしれない。ベランダの壁にあるから直射日光が当たるわけでもなく低いのかね。
「マイコン」一覧
Arduino無線書き込みテスト
Arduinoの無線でのスケッチアップロードのテスト。
対象はArduino Pro mini 3.3V。
Adafruit LadyAdaさんのここ参考。各所の通信bpsを合わせたら無事に書き込み完了。
Pro miniのリセット回路を使わず、自前の回路でのテストもOK。ただ、書き込みが終わって書き込んだアプリも無事に起動してるのに、IDE側で書き込み終了タイムアウトになることもある。
んで、これをボードに落とします。
実際はこんな感じですかね。
結局マイコンの種類によって通信速度を変更する必要もあるから、もうマイコン決め打ちで使うしか無いですかね。なが~いUSBケーブルを準備するほうが簡単で早いかもしれない。
あとXBeeのシリーズ2とか、BluetoothのSPPとかも試しましたが、シリアル通信自体は結構簡単にできるのです。しかし、Arduinoの特徴であるスケッチアップロード前のブートローダを起動する為のリセットを実現する方法がなかなか見つからない。
ベランダセンサー入れ替え作業
予定通り、ベランダセンサーを作り替えました。
今回、Luxの照度センサーは外しました。基板サイズ的に余裕が無かったので。詰めれば入るんですが、他のセンサ入れたくなるかもしれないので、照度センサーはNJL7502Lもついてますので。結果的には左下隅に1センサーいれられるかどうかの空きです。XBeeがはみ出してるので3階増設も難しいです。
ケースは死蔵していたArduinoUno&Mega系の純正クロージャー。ちょっと削った上に、Xbeeのお陰で蓋はしまらないので無しで。どのみちペットボトル容器を再利用したガワの中に設置だから問題なし。
今回基板が狭いこともあり、XBeeはアダプタの片側だけの配線。シリアルのみなのでコレでOKです。
XBeeのピンピッチ変換アダプタはスイッチサイエンスさんのもの。コレLEDが付けられるんですが、電源とAssociateなのですよね。XBeeの6番ピンにリード線を引いてRSSI表示用に変更してます(本当は抵抗の片方の脚を使えば良かった)。
電子工作の方はほぼ一発完成。1つだけ、右下のリセットボタンのGNDへの配線を忘れた事くらい。
最後に秋月の気圧センサの通電表示の青LEDがうざかったのでニッパで破壊しました。なんで余計なもの付けるかな。せめて使用の切り替えが出来るハンダジャンパとかがあれば良いのに。一応ショートする方向には壊していない模様。
ソフトもシリアルまわりの変更と、Luxセンサーを辞めたので、そこを外すくらい。wath dogタイマーも無しにして。
ArduinoMega系になってシリアルが増えたので、書き込み用のSerialも専用で使えますので、フル機能を生かしたままでSerial.printデバッグも出来ます。
さて、今度はためてるデータの表示方法を検討使用かねと。MRTGとかCactiみたいな感じに。
あ、cactiってRRDtoolのラッパーか。懐かしい。
そして・・・。
風センサーのキャリブレーションをするのだが、本日風が強くて。夜になって若干和らいでたので試してみたら良いタイミングで風がw。3回試してなんとか完了。旨くいった時にEEPROMに書き込んでしまえばいいのだけども、そのトリガーはどうするべ。いまのリセット用のリードスイッチと別にもう1つ反対側にリードスイッチを付けるかねぇ。
ベランダセンサーのソフト修正
ベランダのセンサー類のデータが早朝3:40からとれなくなっていた。ので、ベランダセンサのソフトウエアを変更してみた。
モニタリングが出来ないので、原因は想像で。風センサのデータ受信&送信部分でStringオブジェクトを使用したのだけどメモリ的に怪しいので変更。普通のcharの配列での対応に置き換えた。char *とか久々に使ったす。*hoge++ = moji;とか。
一応バッファオーバーランの対応も入れてましたが、マイコンなのでメモリ壊してもプログラム自体は書き換わらないですけどねw。プログラムはRAM上で動いてるわけでなくフラッシュメモリで動いてます。
あとは、風センサの吊り下げ位置を変更。手持ち在庫の「ライターで炙ってくっつけるフック」を取り付けてそちらに移動しました。
やはりベランダセンサーボードも動作状況をモニタリングできるように変更しようかなぁ。本当は、無線でのプログラム書き込みまで出来ると良いのですが。XBeeのシリーズ2だとあまり例が見つからない。とりあえず、無線モニタリングするには、スイッチを増設してこのスイッチの状態でXBeeの動作モードを変えれば良いだろうと。
普段は家の中のmbedとはAPIモードで通信をしている。付け足した増設スイッチを切り替えた時はATモードのシリアル垂れ流しモードに変更すれば良いだろう。
現状 #ifdef DEBUGMODE でコンパイル時に切り替えているシリアル出力のコードを if (debugmode) {} に書き換えて、普段からも有効にすればよいでしょう。
XBeeのシリーズ2だと難しそうとも書きましたが、こんな記事があったので試してますかね。APIモードからATモード、ATモードからAPIモードのプログラムからの変更方法も調べないと。今、APIモードで使ってるので。多分ATコマンドをプログラムから入れるだけだと思うけど。
上記の件。よくよく考えてみたら、うちにあるXBeeシリーズ1の1組を使ってUSB無線シリアルケーブルを作成すればよいかと。もともとUSB-シリアルで書き込み&モニタするようにUARTのピンのコネクタは付けてあるし、それのTX/RXとXBeeのDI/DOUTを接続切換するディップスイッチも付いているので。とりあえずArduinoPro miniを無線で書き込むテストをしてみます。