micro:bitで差動二輪ロボットのラジコンを作ってみた
差動二輪ロボットを作ってみたかったので、作ってみた。
目次 (クリックで展開)
結果
こんな感じ。
500mlペットボトル程度なら、カゴと一緒に載せて移動できた。
差動二輪ぐらい簡単、簡単と思っていたら、意外と失敗した。
最初に作ったロボットは車高が高めだったので、荷物を乗せるとキャスターがあっても急減速時にコケた。
キャスターの高さが微妙に低いとブレーキの役割になって、移動速度が落ちた。
キャスターの高さが微妙に高くて、減速時にガタついた。
モーターの軸が短いため、直接車輪をつけると軸への負担が大きくて車輪が取れやすかった。
なんか色々失敗してるけど、考えずに作って、失敗して、また組み直せるのもレゴのいいところ。
材料
本体側
- micro:bit
- Yahboom Super:bit(micro:bit拡張ボード)
- geek moter(geek servoと書かれたレゴに接続できる赤いモーター) 2つ
- レゴブロック
リモコン側
レゴの組み立てメモ
配線メモ
プログラム
ロボット側のMakeCode用プログラム(python)
Super:bitを扱うので、予め拡張機能 https://github.com/lzty634158/SuperBit の追加が必要。
プログラム (クリックで展開)
joy_ry = 0 joy_rx = 0 joy_ly = 0 joy_lx = 0 joy_a = 0 joy_b = 0 radio_ch = 9 radio.set_group(radio_ch) basic.show_string(str(radio_ch)) def on_received_value(name, value): global joy_lx, joy_ly, joy_rx, joy_ry, joy_a, joy_b if name == "LX": joy_lx = value if name == "LY": joy_ly = value if name == "RX": joy_rx = value if name == "RY": joy_ry = value if name == "A": joy_a = value if name == "B": joy_b = value update_servo_value() radio.on_received_value(on_received_value) def update_servo_value(): # left SuperBit.motor_run(SuperBit.enMotors.M1, joy_ly / 100.0 * 255) # right SuperBit.motor_run(SuperBit.enMotors.M3, joy_ry / 100.0 * 255) # おまけでM2, M4も制御 # left SuperBit.motor_run(SuperBit.enMotors.M2, joy_ly / 100.0 * 255) # right SuperBit.motor_run(SuperBit.enMotors.M4, joy_ry / 100.0 * 255)
リモコン側のMakeCode用プログラム(python)
コントローラー側プログラムはこちらと一緒。
コントローラーの操作方法
左右スティックの上下で、ロボットの左右タイヤを前後に動かす。手抜き。
参考リンク
追記:作成中に失敗したこと以外にも、様々な考慮するべき点について記載されているサイトがあったのでメモ。
タイヤにかかる荷重の計算
レスコン設計まとめ