XBeeでタミヤの紐コンをラジコン化するテスト
(今日は似非リアルタイム更新で書きます)
昨日XBeeでのPWM出力を調べてましたが、ぜんぜん見つからない。で、今朝見つけました。そこにはPWM出力はXBeeのシリーズ1のみ。自分が持ってるシリーズ2では使えないとな。
PWMはロボットのモーターの速度変更に使いたいだけなので、固定速度での動作なら必要はない。でも、なんか負けた気がするのでマイコンをはさもうと思う。
- XBeeシリアルにコマンド文字列を送ってマイコンが解釈して制御するパターン
- XbeeのDIOを使って数パターンのPWMデューティー比を渡しマイコンが解釈して制御するパターン
1.だとXBeeのAPIフレームを解釈するのでメモリ大きめのマイコンが必要。ただ、今後の搭載センサによる自律行動のプログラミングは楽になる。
2. だと左右のモータの制御につかう4つのDIO以外を使って数ビットのPWM値パターンを決めておいての制御。2ビットか3ビットなら、ATtiny45/85系の8ピンAVRとかでもできるし。
今回は敢えて、2.の方法を試してみたい。自律行動をさせる為のセンサーの接続も14ピンのATtiny84にすれば良い。ちょうどうちには在庫があるし。
なんてことを書いたものの、プロトタイプ版はAVRはATmega328Pで、フレームワークもArduinoで。時間短縮の為です。あとでシュリンクしていけば良いのさ。
さて洗濯物干しが完了したので、Fritzingでブレッドボードでの実体配線図を書きます。
ロボット側XBeeのピン選択
モーター1-正 DIO1(XBee Pin19)
モーター1-逆 DIO2(XBee Pin18)
モーター2-正 DIO3(XBee Pin17)
モーター2-逆 DIO6(XBee Pin16)
PWM値ビット0 DIO4(XBee Pin11)
PWM値ビット1 DIO8(XBee Pin9)
PWM値ビット2 DIO11(XBee Pin7)
こんなかんじですかね。モータドライバTB6612のPWMは最初はデューティー比100%でテスト。デューティー比は3ビット表現の8値から選ぶ感じ。2つ使って現在値から上げる、下げるにする事もありですが、そんな細かい速度調整の操作は要らんからやめた。
X-CTUでピンの設定をしようとしたら、DIGITAL OUTにHighとLowの二種類ある。どういう意味だ?デフォルト値の設定なのか?調べ中。よくわからんのでとりあえずHigh。
さらに問題。DIOの8はX-CTUの設定項目に無いようで・・・。DIO12に変更しました。
ロボット側XBeeのピン選択
モーター1-正 DIO1(XBee Pin19)
モーター1-逆 DIO2(XBee Pin18)
モーター2-正 DIO3(XBee Pin17)
モーター2-逆 DIO6(XBee Pin16)
PWM値ビット0 DIO4(XBee Pin11)
PWM値ビット1 DIO12(XBee Pin4)
PWM値ビット2 DIO11(XBee Pin7)
こうですかね?PWMは短期的には次の目標なので、まぁこのままで置いておく。
さて、現実のブレッドボードでの配線をします。
どうやら、X-CTUのDigitalOUTの HIGH LOWは初期状態の設定のようです。モータドライバの入力の片方をLOW・片方をHIGHにしたら、モータが回りましたから。あと、モータドライバはスタンバイピンをONにする必要があったようで追加配線しました
次はリモート側からの制御テストです。
一旦休憩。
お古のXBeeの設定がうまく保存できなくて、ファーム焼き直してデフォルトから設定。
どうやらDIO6も使えなさそうなのでDIO10に移設するか、2bit4値にするか。
で、XBeeの設定ですったもんだ。設定したあとで読み直すと変わっているという状態が何度か。シリアルアダプタかUSBハブの問題か?どちらも電源容量かと。セルフパワーの7ポートUSBハブを2個使ってますので。
とりあえず、デバイス側のXBeeからモータードライバを介してつながってるモータの制御は成功しました。
なんかX-CTUも落ちるし、Windows8だから?自分の意識的には最新のOS最新のソフトを使ったほうがセキュリティ的には全然安心できると思うのですけどね。
では、タクトスイッチを使った似非リモコンを作ります。
続きは明日か、来週末か?