M5でバランスロボット


R5.3.2 打ち止め

 再びパラメータをいじって、少々動くようになった。LEDも0x003300と節電して点灯(^^) しかし、プログラムに変化はないので、相変わらず安定した直立姿勢はできない。ここで撤退。

 こんな感じ


R5.3.2 小型化2

 さらにコンパクトさを求めて、秋月電子さんでDRV8835を購入(^^;) 中央黄色枠内がそれ。やっぱりもう少しの小型化を諦められなかった。Pololuさんのものより小型になってる。配線は同じにすればいいようだ。

 モーターをAtom本体に張り付けて、よりコンパクトになった(^^)

 さらに、リチウムイオンバッテリーからの電源供給をGroveポートからにして、マトリックスLEDを使わないようにすると、モーターの動きが良くなった。

 こんな感じ


R5.2.23 小型化へ

 前進がうまく行かないものの、ESP-NOWでなかなかコントロールできる!(^^) 基本的に倒立振子の原理を理解していないために、動きを安定させる方策に思い当たらない(^^;)

 で、小型化に走った。


R5.2.21 コントロール

 作った倒立振子をM5Stackのボタンでコントロールしようと考えた。BLEを使うかな?と思ったが、ESP-NOWというのがあるらしい。たなかまさゆきさんの「M5StickCでESP-NOW その1」にSlaveとControllerに共通のスケッチがあり、M5StackとM5Atomの機種依存する部分の書き換えで送受信できた。これは便利!

 こんな感じ


R5.2.17 その後の経過

 直立して多少動くようになったので、次への展開。たまたま高価なTB6612FNG搭載のsparkfunモータードライバが部品箱にあったので小型化。

 こんな感じで動く


R5.2.6 はじめに

 だいぶ前から気になっていたバランスロボット。倒立振子という複雑な仕組みで直立するロボットだ。自分には無理だな、ということでやらなかった。ところが、木楽らぼさんの実験ノート「M5Atomでバランスロボット」を見つけ、これならできるかも? ということで取り組んでみた。材料はすべて揃っているし。ただし、モータードライバが木楽らぼさんのはI2C版のDRV8830に対して、手持ちのものはPololuDRV8835だ。これで、少し悩んだ。

 DRV8835ドライバが基板に取り付けられていたので、はがすことから開始。すると、ダイオードがはがれた(^^;) 幸い事前に写真を撮っていて、辛うじてカソードマークの白いハチマキが見えたので、テープで仮止めして先細に削ったハンダで半田付け。テストスケッチで使えることが分かったのだ(^^)/ ヤレヤレ


R5.2.7 組み立て

 小さなDCモーターやプーリータイヤもあったので、組み立ては簡単にできました。木楽らぼさんのようにTailバッテリーには内蔵しませんでした。失敗したらまずいので。


R5.2.8 モーターテスト

 モータードライバのテストで左右のモーターが動くことを確認。体の姿勢をAtomのIMUで確認して、この動きでバランスをとればいいわけです。しかしそれが難題(^^;)

 動きはこんな感じ


R5.2.14 動いたかな?

 木楽らぼさんの「M5Atomでバランスロボット」でのスケッチを利用させていただいて、I2C_DRV8830の部分をPololuDRV8835で動作するように変えて、ようやく立ちました!

 I2C_DRV8830の場合は、M5Atomからの信号線は2本。モーターが1つでも2つでも2本で済みます。他にI2Cのセンサがあっても2本でいいんですね。スケッチの中では、I2Cアドレスを変えて2つのモーターやセンサに動きの指示を出しています。DRV8835の場合は、M5Atomから1つのモーターに対して、2本ずつの信号線が必要です。AIN1・AIN2とBIN1・BIN2です。これらからの信号を受けて、ドライバで処理してくれます。私の場合は理解が進まなかったので、無理矢理やりました。そのためか、動きはなかなかスムーズではないです(^^;)

 上のようにタオルを敷くと動きが安定します。タイヤがスリップするんでしょう。タイヤ(モータ)の回転速度が十分調整されていないからかもしれません。

 とりあえずは動きました。方向転換などもあるのですが、手は出したくないです(^^;)
 ただ、もう少し小型にしてもいいかな? と計画中です。