ラズパイを使ってCAM-PROGRAM ROBOTをリモコン化した
さて、CAM-PROGRAM ROBOT を TA7291P で、ラズパイで制御することはできました。
そこで、以前、戦車をリモコン化(ラズパイ戦車をスマホからコントロールする)したように、CAM-PROGRAM ROBOT もリモコン化してみます。
今回は、プログラム作成の手間を極力減らしたいので、前回使用したプログラムをそのまま利用したいと思います。
また、コントロール画面も、戦車で作成したものをそのまま利用します。
配線の変更
前回使用したプログラムをそのまま利用するには、ラズパイ制御したプログラムから、少し配線を変更しなければなりません。
即ち、ピン12及び32を使用しないようにします。その代わりに、ラズパイの3.3Vをつなぎ変えます。
TA7291P のデータシートを示します。
配線図も示します。
これによるプログラムも載せます。
ちなみに、このソースは、「ラズパイ戦車をスマホからコントロールする」で使用したプログラムと全く同じものです。異なるのはピン番号だけです。
import webiopi
# Debug
webiopi.setDebug()
GPIO = webiopi.GPIO
# GPIO 18,23が左モータ、GPIO 24,25が右モータ
MOTOR_L1 = 23
MOTOR_L2 = 24
MOTOR_R1 = 14
MOTOR_R2 = 15
duty=50
# WebIOPi起動時CALL
def setup():
webiopi.debug("Script with macros - Setup")
# GPIOのセットアップ
GPIO.setFunction(MOTOR_L1, GPIO.PWM)
GPIO.setFunction(MOTOR_L2, GPIO.PWM)
GPIO.setFunction(MOTOR_R1, GPIO.PWM)
GPIO.setFunction(MOTOR_R2, GPIO.PWM)
# 静止状態
GPIO.pwmWrite(MOTOR_L1, 0)
GPIO.pwmWrite(MOTOR_L2, 0)
GPIO.pwmWrite(MOTOR_R1, 0)
GPIO.pwmWrite(MOTOR_R2, 0)
#
def loop():
webiopi.sleep(5)
# WebIOPi終了時
def destroy():
webiopi.debug("Script with macros - Destroy")
# GPIO関数のリセット(入力にセットすることで行う)
GPIO.setFunction(MOTOR_L1, GPIO.IN)
GPIO.setFunction(MOTOR_L2, GPIO.IN)
GPIO.setFunction(MOTOR_R1, GPIO.IN)
GPIO.setFunction(MOTOR_R2, GPIO.IN)
#defult function
@webiopi.macro
def forward():
GPIO.pwmWrite(MOTOR_L1, duty)
GPIO.pwmWrite(MOTOR_L2, 0)
GPIO.pwmWrite(MOTOR_R1, duty)
GPIO.pwmWrite(MOTOR_R2, 0)
webiopi.debug("foward")
@webiopi.macro
def left():
GPIO.pwmWrite(MOTOR_L1, 0)
GPIO.pwmWrite(MOTOR_L2, duty)
GPIO.pwmWrite(MOTOR_R1, duty)
GPIO.pwmWrite(MOTOR_R2, 0)
webiopi.debug("left")
@webiopi.macro
def stop():
GPIO.pwmWrite(MOTOR_L1, 0)
GPIO.pwmWrite(MOTOR_L2, 0)
GPIO.pwmWrite(MOTOR_R1, 0)
GPIO.pwmWrite(MOTOR_R2, 0)
webiopi.debug("stop")
@webiopi.macro
def right():
GPIO.pwmWrite(MOTOR_L1, duty)
GPIO.pwmWrite(MOTOR_L2, 0)
GPIO.pwmWrite(MOTOR_R1, 0)
GPIO.pwmWrite(MOTOR_R2, duty)
webiopi.debug("right")
@webiopi.macro
def back():
GPIO.pwmWrite(MOTOR_L1, 0)
GPIO.pwmWrite(MOTOR_L2, duty)
GPIO.pwmWrite(MOTOR_R1, 0)
GPIO.pwmWrite(MOTOR_R2, duty)
webiopi.debug("back")
コントロール画面の HTML も同様のものを使用します。こちらは全く同じなので、コードは載せません。「ラズパイ戦車をスマホからコントロールする」を参照してください。
WebIOPi サービスの設定の変更(sudo vi /etc/webiopi/config)も忘れずに実施してくださいね。
稼働実験
前回も実施したように、稼働実験をします。
起動前に、webiopiを起動することを忘れずに実施しましょう。パスワードは raspberry ですね。
CAM-PROGRAM ROBOT を逆さにおいて、スマホから操作を行い、正しく稼働するか試します。
正常に稼働しました。
リモコン始動
それでは、再び、ラズパイ、電池ボックス、モバイルバッテリを CAM-PROGRAM ROBOT に積載して、リモコンから動かしてみます。
おー、動きますね。
しかし、よく見ると、右回り、左回りの際、右のキャタピラが動いていません!フム・・・。
本体を持ち上げると、キャタピラは問題なく動くので、モーター起動用の電池の出力が足りないのかもしれませんね。
電源をアップしてやってみる価値はありそうです!
電源を入れ替えて実施
電源として、積層乾電池(006P型 9V)を採用します。
ネットでもいろいろと調べたのですが、お値段とかを考えて、最終的に100均のものになりました。
これを使用するには、バッテリスナップというものが必要になります。こちらは、ネットで調達しました。
そして、こちらの電源を差し替えました。
そしてリモコンスタートです。
見事に動きましたね。大成功です。
モーター制御からリモコン操作に至る過程の記事です。他の記事もぜひ、ご覧ください。
- bluetooth 通信でリモコン操作 pi3 と zero WH で通信を行う
- ラズパイでリモコンタンク製作準備!モーター制御成功!
- 戦車を製作して、ラズパイでリモートコントロールしてみた!
- スマホから戦車を動かす!準備編/WobIOpiセットアップ
- ラズパイ戦車をスマホからコントロールする
- TAMIYAのロボット工作キットをラズパイで制御する!準備編
- TAMIYAのロボット工作キットをラズパイで制御する!実践編
- ラズパイを使ってCAM-PROGRAM ROBOTをリモコン化した 本記事です
- リモコンCAM-PROGRAM ROBOTにカメラを搭載しようとしたが・・!
- えれェ小さなモータードライバーを使ってモーターを制御してみた
ディスカッション
コメント一覧
まだ、コメントがありません