さて、車側ができたので、つぎはリモコン側の製作である。
車を制御するのに、どういう方法にするかは色々ある。
本格的な制御をするなら、本格的なゲームコントローラのようにしないといけないが、以下のような簡単な方法にした。
ボタンを5つならべ、
左回転、後退、停止、前進、右回転
とすることにした。
実は、『ラズパイマガジン1018年12月号』の「リモコン自走カー」の記事のリモコン制御ボタンの並びと同じである。
並んでいるのは安いトグルスイッチ(袋に10個まとめて入って売られていた)で、押し下げている間だけ導通する。
これをブレッドボード上に並べ、各ボタンとそれに対応させるGPIOポートを導線でつないでいる。
黒はアース(GND)である。
Raspberry Pi 側の対応ポートを全部入力に指定することで、ボタンの押し下げ状態かどうかを読み取っている。
押し下げると、GNDに繋がることでLOWになり、そうでないときHIGHになる。
プログラムはこんな感じ。
if GPIO.input(18) == GPIO.LOW:
# 押し下げられたボタンに対する処理
実際には、この前に、使用するポートが入力のポートになることを指定しておく必要がある。
5つのボタンの状態を読み終えたら、0.1秒sleepすることにしている。
そんなに反応の早い車ではないので、この程度で十分人間には瞬時に反応していると思えるハズ。
次に、Bluetoothの設定を行わないといけない。
とりあえず、普通にペアリングを手作業でやっておく。本当は、全部自動で行うようにするのが良いのだが、とりあえず実験なので省略。
このとき、自走側のRaspberry Pi のMACアドレスが必要になる。
あ、それ以前に、Bluetoothを使うときには、PythonのBluetooth関連のモジュールを両方のRaspberry Pi にインストールしないといけない。
このあたりは、どんどん変更され、統合され、インストールしないといけないモジュール数は減少しているようなので、詳細を書くのは省略する。
Bluetoothのやり方も、『ラズパイマガジン1018年12月号』の「リモコン自走カー」の記事とほぼ同じなので省略する。
各ボタンに対して、次のように、英大文字1文字を対応させた。
左回転:L、後退:B、停止:S、前進:F、右回転:R
そして、押し下げられているボタンがあると、対応する1文字をBluetoothで車に送信した。
すると、車側のRaspberryPi のBluetoothで、常時受信待ち状態にしておき、1文字届く度に、モータの制御を行っている。
L:左後進、右前進
B:左後進、右後進
S:左停止、右停止
F:左前進、右前進
R:左前進、右後進
に従って、モータの回転方向を決めている。
細かく速度調整することも可能なのだが、とりあえずのテストということで、細かいことは一切サボった。
ということで、実際に動かしてみた。
ボタンが横一列に並んでいるのは、やはり不便である。本当は十字形に並べるべきだったのだが、手っ取り早くブレッドボードで済ませようとしたので、配置に著しい制約があって、横一列で我慢することにした。
それよりも問題なのは、右、左の回転を行うと、ベルトが外れやすいということだ。
それも、床の状態によってかなり異なり、絨毯の場合がよろしくない。
ベルトがそもそも組み立て式なので、張りが強いとベルトが壊れないかという心配もあり、この点も頑張らないことにした。
頑張る場合には、もっとちゃんとしたマニア用のベルトを買った方が良いようだ。
ということで、リモコン車の実験は、とりあえず終了。