TAMIYAのロボット工作キットをラズパイで制御する!準備編

2020年1月7日

モータードライバNJM2070D2(ラズパイでリモコンタンク製作準備!モーター制御成功!)を使用したリモコン戦車が無事稼働しました。

そこで、調子に乗った60爺いは、今度は、TAMIYAの cam-program-robot をラズパイで制御してみようと試みました。

TAMIYAの cam-program-robotの画像

それだけでは戦車本体が変わっただけで何も面白くないので、モータドライバを新たな TA7291P にして挑戦しましょう。

そうすれば、配線を変えるとともにプログラム変更も発生しますよね。

今回の記事も、ご一緒に見ていってくださいませ~。

スポンサーリンク

新ドライバ使用の回路を作る

さて、それでは、新ドライバ使用の回路を作りましょう。例によって、3段階で作成します。

  1. ロボット工作キット制御の準備
  2. モーターへのジャンパワイヤ接続
  3. 実際の配線

3つの作業を順に解説します。

ロボット工作キット制御の準備

回路は前回と同様ブレッドボード上に展開します。

今回も前回と同様に、ロボを組み立てる前に、ラズパイでモータドライバを使用したプログラムを作成し、モーターが正常に動くことを確認するところから始めました。

前の記事で使用したモータードライバ(NJM2070D2)は、ひとつの IC で2個のモータ制御をすることが出来ました。

しかし、今回使うモータードライバ(TA7291P)は、ひとつで1個のモーターしか制御できません。ですから、2つのモータードライバを使うことになります。

但し、テストでは、ひとつ使用して動くことを確かめれば十分です。

配線はデータシートに従って実施します。

データシートの画像

モーターへのジャンパワイヤ接続

使用するモーターは、上記タミヤ CAM-PROGRAM ROBOT に付属のモーターです。モーターが2つ同梱されています。

モーターにはリード線がはんだ付けされています。このままでは、ブレッドボード上で使用しにくいため、ジャンパ線を追加ではんだ付けしました。

モーターにジャンパ線を追加した画像

これで、ブレッドボードにセットするのに問題はなくなりました。

実際の配線

ラズパイはリモコン戦車でも使用した raspberrypi zero WH を使用します。このラズパイは小さいので、戦車やロボに搭載するのに重宝します。

pi zero WHの画像

まずは、モーター稼働試験のため、一つのモータードライバで配線を行います。

上述の通り、ブレッドボードを用いて作り上げます。ジャンパーワイヤのオス-メスとオス-オスを使用します。

実際の配線はこんな風になりました。

今回、配線してモーターの起動をしたんですが、最初は全くモーターが動かず焦りました。

原因は単なる配線ミスで、上記データシートに従って配線を見直すことで無事モーターが動きました。


プログラムの準備

今回のプログラムですが、上記データシートにありますが、利用するピン番号8,10,12番を使用します。PWM制御用のピンは12番です。

以下にモーターの稼働の順序を示します。

  • GPIOを指定(プログラムはピン番号指定になっています)
  • ピン番号を指定
  • PWMの設定
  • モーターを5秒間動作
  • モーターを停止
  • モーターを先ほどの逆に5秒間動作
  • モーターを停止

プログラムは次のようになります。

# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
pin_1 = 8
pin_2 = 10
pin_3 = 12
time.sleep(3)
print "start"
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD) #ピン番号指定
GPIO.setup(pin_1, GPIO.OUT) #ピン番号8(GPIO14)を設定
GPIO.setup(pin_2, GPIO.OUT) #ピン番号10(GPIO15)を設定
GPIO.setup(pin_3, GPIO.OUT) #ピン番号12(GPIO18)を設定
pwmR = GPIO.PWM(pin_3, 50)
pwmR.start(0)
print "回転"
pwmR.ChangeDutyCycle(0) #回転させる
GPIO.output(pin_1, 1)
GPIO.output(pin_2, 0)
pwmR.ChangeDutyCycle(30)
time.sleep(5) #
print "stop"
GPIO.output(pin_1, 0) #ストップ
GPIO.output(pin_2, 0)
time.sleep(3)
print "逆回転"
pwmR.ChangeDutyCycle(0) #逆回転させる
GPIO.output(pin_1, 0)
GPIO.output(pin_2, 1)
pwmR.ChangeDutyCycle(30)
time.sleep(5) #
print "stop"
GPIO.output(pin_1, 0) #ストップ
GPIO.output(pin_2, 0)
time.sleep(3)
pwmR.stop()
GPIO.cleanup()
time.sleep(1)

プログラム実行

さて、それでは動かしてみましょう。

pi@raspberrypi:~/motor $ python motor_t.py

実行すると、埋め込んだ print 文が出力されます。

start
回転
stop
逆回転
stop

上記「回転」でモーターが右に回り、「逆回転」でモーターが左向きに回るのが確認できます。

動画を見てください。

これで、CAM-PROGRAM ROBOT を動かす準備は整いました。

最後に

1回、スマホで戦車のコントロールが出来たことで、60爺は調子に乗りました。

続けて、TAMIYAのロボット工作キットをラズパイで制御することを思いつきました。

早速、同梱されていたモーターにジャンパ線を追加し、新たなドライバを用意して配線を行い、稼働実験を開始したんです。

既に、一度行っている作業でもあり、すんなりと終わりました。さあ、新たな挑戦です。

■思えば「リモコンタンク」の記事も増えてきました。

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

60爺

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