aitendoさんで買ったST7565の128x64pxのグラフィック液晶。これをシリアルモードで動かそうと半日すったもんだしてたけど、時間切れ。
で、手持ちの128x64pxパラレル接続のLCDであるTG12864Bを使うことに変更。それに伴って電力計のマイコンも3.3Vベースのmbedから、5V16MHzで焼いてあるATmega1284Pのsanguinoを使うことにした。1284Pなのでメモリも16Kbyteもあるし、Progmemも128Mbyteもあって、フォントデータも置けます。RTCが無いので手持ちのseeedstudioのRTCモジュールを使うかなという感じです。
「マイコン」一覧
雨センサ作り直し中
です。
バッテリーがどうもへたっていたので、新たなバッテリーを入手したのですが、コネクタがJSTの2mmピッチじゃん。今までは2.54mmピッチ。まぁ、ケーブルを切ってヘタったバッテリーの2.54mmのコネクタを付け替えても良いんですが・・・。
ちょっと、センサの回路部分の作り変えもしたいので、一旦センシングおやすみです。
早ければ今週末、遅くとも来週末くらいにはなんとか復帰したいです。
クロウラーのXBeeを取り替え(トランスペアレントモードへ)
クロウラーの自律モード時の動作確認が簡単にできるように、
手持ちで開いているXBeeS2(B)を1セット設定した。水槽のろ過器のモニターを止めたのでXBee1つ空いたし。設定はZIGBEEのATモードで、通信速度は57600bps。
要はPCとクロウラーのマイコン間のシリアルケーブルがXBee通信に置き換わります。フロー制御してないけど。フロー制御も含めてうまくやれば、リモートプログラミングもできるでしょう。が、XBeeがシリーズ2だと面倒だかも。インセクト用に買ったシリーズ1のXBeeが1ペアあるのでそっちも試してみようかな?Lady Adaのページにネタはある。
なんて、XBeeのシリーズ2じゃ面倒かな?と思ってましたが、フロー制御に陥る様な電波不良状況じゃなきゃいけるんでない?とまず試してみた。もちろんXBeeはシリーズ2のまま。要はマイコン側でプログラムローダが適切なタイミングで動くようにリセットボタンを押せば良いわけです。無事に成功しました。まぁ、まだタイミングが把握できてないので失敗もしますけど、IDE側が「書き込んでいます」になったら速攻リセットくらいで良い感じ。(なんかPIC系のUSBプログラミングの様だ)
今回リモートのプログラムされる側(クロウラー側)も手元における環境だけども、シリアルラインの配線をつなぎ替えるのがめんどくさい状況なので、この成功はテスト効率のアップになります。問題点は、プログラム転送も無線なのでリモート側の電池を消耗することですかね。
さて次なる課題は、
課題1・まっすぐ走るには。
課題2・壁に近づいた時の挙動。
ですね。
課題1は結構微調整ありですね。ライントレーサみたいなジグザグ走行なら簡単なのですが。PWMでのモータコントロールが肝。
距離センサーのテスト
超音波による距離センサが届いたのでテスト。HC-SR04という、パララックス社の「PING))) Ultrasonic Distance Sensor」のパチもん?みたいな奴。ググろと1個150円で手に入れた人もいますが、自分はAmazonで790円。これでも半値。
まず5VのArduino UNOにLCDシールドを載せたものでテスト。サクッと動作確認完了。
つづいて、ブレッドボード上に3.3V動作のArduinoProMiniを使ってのテスト。5V電源のセンサへの供給は3.3VをHT7750で昇圧して供給。
まずは、シャープの赤外線距離センサGP2Y0A21YKにてテスト。事前にそれほど出力シグナルの電圧は5Vフルとかは出なさそうなことを検索して得ていたので強行。3.3VArduinoのADCのぎりぎりのとこまでしか出ない様だ。直結でも使えそう。
センサからの出力側は分圧抵抗で下げておいて、センサへの入力は5Vレベルのロジックでも3.3Vの信号はHIGHと認識するであろうという期待から直結。で、動作確認できました。どちらも消費電力が同じようなのでどっちを採用しても良いですね。HC-SR04はオシロで出力の最大値を見ておいたほうがいいかな。
リモコンのソフトウエア面は、小改造。黄色いボタンに機能を割り当てました。自律モードへの導入および解除。
クロウラー側はまだいろいろ検討ちゅうなので、とりあえず自律モードにはいったら2秒間時計と逆回り、自律モードからぬけたら2秒間時計回りをするようにしてみた。
今後は、距離センサをつかった障害物避け。あと、方位センサで方位を意識した動作(特定角度を維持しつつ床を塗りつぶす的な)を検討。
そして、リモコン側は使いやすさを考慮してゲームコントローラに切り替えます。
ただし脳みそ部分は、
- Arduino&USBホストシールド
- PCでProcessingにてjavaのgame API
- PCでC# & DirectInputで
のどれにしようかね?あえて三番目?
というか、方位センサと距離センサで部屋の地図作れるかも。塗りつぶし方式ですけど。それをProcessingでリアルタイムに可視化すると。だと二番目にしておこうかな。そもそもC#にする必要性は全くないし。職場もjava系になりそうであるのでリハビリとして。どんな言語でもライブラリとかフレームワークとか決まってるのならそれで作るだけですし。フレームワークや言語の好き嫌いはありますが。