ラズパイを使ってCAM-PROGRAM ROBOTをリモコン化した

2020年3月3日

さて、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均のものになりました。

これを使用するには、バッテリスナップというものが必要になります。こちらは、ネットで調達しました。

そして、こちらの電源を差し替えました。

そしてリモコンスタートです。

見事に動きましたね。大成功です。

モーター制御からリモコン操作に至る過程の記事です。他の記事もぜひ、ご覧ください。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら