Make一覧

地磁気&加速度センサLSM303DLHCテスト

20130529_01

 ストロベリーリナックスの地磁気&加速度センサLSM303DLHCをテスト。
 簡単にArduinoUNOに液晶シールドを載っけたものに電源はエネループ。LSM303DLHCは電源2.16Vから3.6Vで、IOは1.71Vから電源+0.1V。5VのArduinoUNOのI2Cとは直結出来ないので、自宅に3つくらい在庫してある秋月電子のI2C専用レベルコンバータAE-PCA9306を介して接続。

 で、動かしてみるとなんかの影響を受けているのか、キャリブレーションしていない所為なのか値が偏る。地磁気による方位を表示させてても、グルっと回ると確かに360度分の数値が動いて戻ってくるのだけども、90度単位で動いても数値が90単位で変わるわけでもなく。原因を調べないと。ライブラリの問題なのか、キャリブレーションの問題なのか?ただ、決まった方向を向いてれば数値は同じなので地磁気はとれているはずだ。地磁気以外の磁気的要因だったりするとモータ使った機器に載せるのは無茶だろうか?


XBeeラジコンを基板で作成

 この週末はXBeeのシリーズ1を手に入れたので、こいつで先週作ったタミヤのインセクトのラジコンの本格化をしていた。

 シリーズ1なのでPWMでモータの速度調整も可能かと思っていたが、なんか使いづらい。PWMのタイマーは外しているのだが、微妙にほどける感じで。詳細は詰めていかないとわからん。

 こんな基板を作成して、
20130526_01

 こんなふうになりました。PWMはVCC直結とXBee出力を切り替えられるように3ピンでジャンパ。
20130526_02

 走行動画。撮影しているスマフォのmicroSDがぼろいのでカクカクするのは了承願います。

 キャタピラのこの子も待機中です。こいつはいろいろ載せられそうなので、マイコンと各種センサを投入して自律行動も可能にしたいですね。
20130526_04

 キャタピラに載せる、方位センサを試してました。3.3VのArduinoが死亡した様で5VのArduinoにて。地磁気センサ+加速度センサの本命モジュールは3.6Vまで5Vマシンとは繋げられないので待機中。3.3VのArduinoは自前で作れるのでそっちの方向かなと思いながら。いろいろ探してたら、SwitchScienceさん名義でAmazonでまだ売ってたので手に入れば楽と思って発注してみました。手に入ればラッキー。まぁ、ProMiniはI2Cのポートがピンに出てないので、引っ張る必要はあるものの小型で良いArudinoです。


XBeeラジコンテスト2

20130519_01

 昨日の続き。まずリモコンのコントローラを作成。左上赤が左モータ正転、左下黒が左モータ逆転、右上赤が右モータ正転、右下黒が右モータ逆転。黄色は砲弾発射では無く、未定義。
 スイッチのチャタリングがあるかと思ったけれども、特に対策無しでOKだった。

20130519_02

 XBeeのデジタル出力のテスト。モータつけると五月蝿いので、まずはLEDで確認。

20130519_03

 モータをつけたテスト。デジタル回路側の電源に単四電池2本を想定していたのだけども、単四2本の電池ボックスが手持ちになかった。手持ちの在庫からCR123Aの電池ボックスが見つかったのでこれで仮に代用した。

20130519_04

 タミヤのインセクトに載せてみた感じ。

 ブレッドボードだとAVRマイコンを載せる余裕が無いので、C基板かスイッチサイエンスさんの基板で作り変えます。動画は操作しながらの撮影が出来ないのでまたいつか。ツレに手伝ってもらうかな。

コントローラのボタン割り付けは今は、
 [パターンA]
 左上
  押しているあいだ DIO1をオン、離したらDIO1をオフ
 左下
  押しているあいだ DIO2をオン、離したらDIO2をオフ
 右上
  押しているあいだ DIO3をオン、離したらDIO3をオフ
 右下
  押しているあいだ DIO4をオン、離したらDIO4をオフ

なのだけど、
 [パターンB]
 左上
  押したら DIO1をオン、DIO2をオフ
 左下
  押したら DIO2をオン、DIO1をオフ
 右上
  押したら DIO3をオン、DIO4をオフ
 右下
  押したら DIO4をオン、DIO3をオフ
 黄色
  押したら DIO1,DIO2、DIO3、DIO4をオフ

 こっちのほうが押しっぱなしにしなくていいから楽かしらん?と思っている。

 あと、キャタピラの方のタミヤのキットも作成しなければ。


XBeeラジコンテスト1

XBeeでタミヤの紐コンをラジコン化するテスト
(今日は似非リアルタイム更新で書きます)

 昨日XBeeでのPWM出力を調べてましたが、ぜんぜん見つからない。で、今朝見つけました。そこにはPWM出力はXBeeのシリーズ1のみ。自分が持ってるシリーズ2では使えないとな。

 PWMはロボットのモーターの速度変更に使いたいだけなので、固定速度での動作なら必要はない。でも、なんか負けた気がするのでマイコンをはさもうと思う。

  1. XBeeシリアルにコマンド文字列を送ってマイコンが解釈して制御するパターン
  2. 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つ使って現在値から上げる、下げるにする事もありですが、そんな細かい速度調整の操作は要らんからやめた。
20130518_01

 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)

20130518_02

 こうですかね?PWMは短期的には次の目標なので、まぁこのままで置いておく。

 さて、現実のブレッドボードでの配線をします。

 どうやら、X-CTUのDigitalOUTの HIGH LOWは初期状態の設定のようです。モータドライバの入力の片方をLOW・片方をHIGHにしたら、モータが回りましたから。あと、モータドライバはスタンバイピンをONにする必要があったようで追加配線しました
20130518_03
 次はリモート側からの制御テストです。

 一旦休憩。

 お古のXBeeの設定がうまく保存できなくて、ファーム焼き直してデフォルトから設定。
どうやらDIO6も使えなさそうなのでDIO10に移設するか、2bit4値にするか。

で、XBeeの設定ですったもんだ。設定したあとで読み直すと変わっているという状態が何度か。シリアルアダプタかUSBハブの問題か?どちらも電源容量かと。セルフパワーの7ポートUSBハブを2個使ってますので。
 とりあえず、デバイス側のXBeeからモータードライバを介してつながってるモータの制御は成功しました。
 なんかX-CTUも落ちるし、Windows8だから?自分の意識的には最新のOS最新のソフトを使ったほうがセキュリティ的には全然安心できると思うのですけどね。

 では、タクトスイッチを使った似非リモコンを作ります。

 20130518_11
 結局こんな感じかい(苦笑)

 続きは明日か、来週末か?


今週末の趣味工作の素材

20130517_03

 まな板の上の食材状態でブレッドボード上に並べてみた。

 XBeeでモーターをリモコン操作するのがこの週末の目標。最終目標は自律型行動とキネクトでのコントロールだけど。最終までやらないと思うw。
 とりあえず使っていないXBeeをパーツ棚から選別して、基地局側をXBee PRO S2B,デバイス側XBee S2のチップアンテナタイプ。このチップアンテナタイプってディスコンみたいでもう売ってない。うちには5,6個ある。で、X-CTUにてPAN IDを揃えてファームを入れ替える設定まではした。

 で、この2つのXBeeで通信ができるように、PCでの基地局コントロール側の環境を構築する。PCを変えてからProcessingを使っていないのでProcessing&XBeeな環境を構築予定。ただProcessingがjavaベースなので、環境とライブラリのバージョン違い関連でハマったら速攻でC++で書けるmbedのマイコン基地局作成に切り替える。

 通信ができたらPWMは使わない、ON/OFFでのモータ制御。正転、逆転、ストップ、ブレーキ。電流も目安的に測定。

 次はPWMを入れた回転速度調整ありの感じで実装。と思っていたけど、XBee単体でPWM出力はできないのかな?AVRをつなぐかね。


TB6612モータードライバテスト

20130516_01

 帰りがちと遅くなったので軽くテスト。

 まずSparkfunのTB6612FNGのブレイクアウトにピンヘッダを半田付。モーターなので太ピン。「TB6612」&「3V」で検索して引っかかったこのサイトのままでテスト。
 電源3.3vでFA130はOK。plasma DASH MOTORは動こうと頑張ってるけどダメだな。電流が足りない感じ。
 マイコンばかりいじってたので加減がよくわからん。

 あとで単三電池3本の4.5Vをつないだらプラズマダッシュモーターも動いてはいました。でも、pwmでon部分が少ない状態だと回り始めないですね。理屈はなんとかなくわかる。

 ともあれFA130なら3VでもTB6612で動かせるのがわかったので大収穫。