安価な2WDのロボットカーのキットを手に入れたので、マイコンと繋いでみる。(昨日の話の続きだ。)
micro:bitというマイコンボートとモータードライバ基板を繋いでみた。
micro:bitの電源として乾電池2本の電池ボックスを取り付けた。モーター用の電源とは別電源だ。
micro:bitの出力端子は0,1,2という大きい端子のところのスルーホール穴の部分にネジを通して、土台に固定するのと同時に配線も一緒にネジ止めしてGPIOのIO信号を引っ張り出している。
モーター2個を正転/逆転の動作をさせるために、できればIO信号を4本取り出したいのだが、ネジ止め方式だと3本までしか取り出せない。
仕方がないので、正転方向のみのOn/Offの制御のみの動作をさせるという形で割り切って、2本のIO信号をモータードライバ基板に接続した。
ラジコンカーのように遠隔操作で動作させてみる。
もう1台の別のmicro:bitのボードをリモコンの送信側にして、リモコン側のボタン2つを使ってロボットカー側の左右のモーターのOn/Offを遠隔操作するプログラムを作ってみた。
以前に、micro:bitの無線UARTを使うのを試しているので、その応用で簡単に作ることができた。
(参考)
・micro:bitでUARTと無線通信をブリッジし、シリアル通信を無線化するのを試してみた
ロボットカー側のmicro:bitのプログラムは、こんな感じだ。
import radio
from microbit import display, Image, button_a, button_b, pin1, pin2, sleep
display.show(Image.HAPPY)
radio.on()
pin1.write_digital(0)
pin2.write_digital(0)
pin1.write_analog(0) # 1 to 1023
pin2.write_analog(0)
while True:
incoming = radio.receive()
if incoming is not None:
if incoming == 'F':
display.show('F')
pin1.write_analog(512)
pin2.write_analog(512)
elif incoming == 'L':
display.show('L')
pin1.write_analog(512)
pin2.write_analog(0)
elif incoming == 'R':
display.show('R')
pin1.write_analog(0)
pin2.write_analog(512)
elif incoming == 'n':
display.show('n')
pin1.write_analog(0)
pin2.write_analog(0)
そして、リモコン側のプログラムは、こんな感じに書いた。
import radio
from microbit import display, Image, button_a, button_b, pin1, pin2, sleep
display.show(Image.HAPPY)
radio.on()
while True:
if button_a.is_pressed() and button_b.is_pressed():
radio.send('F')
display.show('F')
elif button_a.is_pressed():
radio.send('L')
display.show('L')
elif button_b.is_pressed():
radio.send('R')
display.show('R')
else:
radio.send('n')
display.show('n')
sleep(100)
動作としては、リモコン側のmicro:bitのボタンが押されると、Aボタンが押されたときには無線で”L”という文字を送信し、Bボタンが押されたときには無線で”R”という文字を送信するというものだ。あと、同時に押されたときには”F”という文字を送信し、ボタンがどちらも押されていない場合には”n”という文字を送信する。
左右のボタン同時押しで直進するというのがいまいち操作性として洗練してないのだが、micro:bitの基板上にボタンが2つしか無いので仕方ない。
ロボットカー側のmicro:bitでは、無線で受信した文字に従って、左右のモーターに繋がったGPIOピンにPWMの出力を行っている。
リモコン側からの無線でのデータに応じて、ロボットカー側でモーターが動くということになる。
実際に動作させてみた。ちゃんとリモコンでロボットカーを操作することができた。
—
ロボットカーと言っても、まだ全然ロボットとして自律して動く機能は無い。
maqueenのキットみたいにセンサーを搭載して動かすとか、カメラを搭載するとか、いろいろ可能性はあると思うのだが、とりあえずはここまで作ったところで中断している。
(参考)
・micro Maqueen micro bit スマートロボットカー クローラータイプ ロボット 教育プログラミングロボットプラットフォーム
・KEYESTUDIO 組み立て ロボット 車 スターターキット for BBC Micro:bit マイクロビット用 スマートカー
・microMaqueen Plus microbit Lab.【マイクロビット】