TAMIYAのロボット工作キットをラズパイで制御する!実践編
それでは、CAM-PROGRAM ROBOT を製作しましょう。
設計図に従って作成すれば、問題なく組みあがると思います。
ギヤケース、モーターの取り付けたの説明書です。
実際に出来上がったギヤケースがこれです。
CAM-PROGRAM ROBOT は、基本的にプログラムバーというものを使用して、ロボットの動きを制御します。
Aタイプ、Bタイプが選べますが、今回はラズパイで制御するので、タイプ選びは不要です。そのため、今回は、ステアリングレッグ(Aタイプで使用)という部品の取付けは中止しました。
キャタピラ(設計図には、履帯※の作成と書いてあります)を作成します。
キャタピラは、8コマ、10コマ、30コマの3本を組み合わせるんですが、止め方がちょっと面倒ですが、落ち着いて行えば問題ないと思います。
さらに、アーム、ルーフを取り付けて完成です。キャタピラーというのは、登録商標なんですね。
※装軌車両において、金属の板を帯状に連結して車輪に履かせた走行装置。 履帯のほか、無限軌道、キャタピラー、クローラー、トラックなどの呼び方がある。 一般によく用いられる「キャタピラー」は、アメリカのキャタピラー社の登録商標である 【ピクシブ百科事典】参照
ご覧のように完成しました。
モータ稼働のテスト
ラズパイを CAM-PROGRAM ROBOT に組み込む前に、モーターの稼働テストをしましょう。
CAM-PROGRAM ROBOT が動き出さないよう、逆さにして机に置きます。
次に、CAM-PROGRAM ROBOT のモーターからのジャンパ線を、前回使用したブレッドボードに接続します。
これで準備が整いました。
前回、使用したプログラムを実行してみます。
左右のキャタピラが同方向に動いた後、一旦止まって、先ほどとは逆方向に動くことが確認できました。
RaspberryPi zero WH を搭載
CAM-PROGRAM ROBOT にラズパイを搭載しましょう。
設計図に、ユニバーサルプレートの設定方法が書いてあります。
これに従い、ユニバーサルプレートを取り付けます。
まずは、ルーフを取り外します。
突起をユニバーサルプレートの穴に差し込みます。
水色の部品をロボットにセットすることで、ユニバーサルプレートをセットできます。
横から見るとこんな感じです。
取り付けたユニバーサルプレートに、ブレッドボードを置きます。
ブレッドボードの空いたところに、zero WH を両面テープで貼り付けます。
電池ボックスは、奥にセットします。
これで、RaspberryPi zero WH を搭載できました。
走行テスト
走行テスト用プログラム
前後に走らせるだけでは面白くないので、次の順に走行させてみます。
- 前進 ⇒ 右回転 ⇒ 後進 ⇒ 左回転
右回転、左回転は、キャタピラの動く方向を左右で逆にすれば実現できます。
プログラムソースを以下に示します。
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
time.sleep(3)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT) #ピン番号8を設定
GPIO.setup(10, GPIO.OUT) #ピン番号10を設定
GPIO.setup(12, GPIO.OUT) #ピン番号12を設定
GPIO.setup(16, GPIO.OUT) #ピン番号16を設定
GPIO.setup(18, GPIO.OUT) #ピン番号18を設定
GPIO.setup(32, GPIO.OUT) #ピン番号32を設定
pwmR = GPIO.PWM(12, 50)
pwmR.start(0)
pwmL = GPIO.PWM(32, 50)
pwmL.start(0)
#前進
pwmR.ChangeDutyCycle(0)
GPIO.output(8, 1)
GPIO.output(10, 0)
pwmL.ChangeDutyCycle(0)
GPIO.output(16, 1)
GPIO.output(18, 0)
pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(3) #前進の距離を調整
#ストップ
GPIO.output(8, 0)
GPIO.output(10, 0)
GPIO.output(16, 0)
GPIO.output(18, 0)
time.sleep(3)
#右回転
pwmR.ChangeDutyCycle(0)
GPIO.output(8, 1)
GPIO.output(10, 0)
pwmL.ChangeDutyCycle(0)
GPIO.output(16, 0)
GPIO.output(18, 1)
pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(2) #回転時間調整
#ストップ
GPIO.output(8, 0)
GPIO.output(10, 0)
GPIO.output(16, 0)
GPIO.output(18, 0)
time.sleep(3)
#後退
pwmR.ChangeDutyCycle(0)
GPIO.output(8, 0)
GPIO.output(10, 1)
pwmL.ChangeDutyCycle(0)
GPIO.output(16, 0)
GPIO.output(18, 1)
pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(3) #後退の距離を調整
#ストップ
GPIO.output(8, 0)
GPIO.output(10, 0)
GPIO.output(16, 0)
GPIO.output(18, 0)
time.sleep(3)
#左回転
pwmR.ChangeDutyCycle(0)
GPIO.output(8, 0)
GPIO.output(10, 1)
pwmL.ChangeDutyCycle(0)
GPIO.output(16, 1)
GPIO.output(18, 0)
pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(2) #回転時間調整
pwmR.stop()
pwmL.stop()
GPIO.cleanup()
time.sleep(1)
実行
それでは、このプログラムを実行してみます。
上記に示した通りに動きましたね。
モーター制御からリモコン操作に至る過程の記事です。他の記事もぜひ、ご覧ください。
- bluetooth 通信でリモコン操作 pi3 と zero WH で通信を行う
- ラズパイでリモコンタンク製作準備!モーター制御成功!
- 戦車を製作して、ラズパイでリモートコントロールしてみた!
- スマホから戦車を動かす!準備編/WobIOpiセットアップ
- ラズパイ戦車をスマホからコントロールする
- TAMIYAのロボット工作キットをラズパイで制御する!準備編
- TAMIYAのロボット工作キットをラズパイで制御する!実践編 本記事です
- ラズパイを使ってCAM-PROGRAM ROBOTをリモコン化した
- リモコンCAM-PROGRAM ROBOTにカメラを搭載しようとしたが・・!
- えれェ小さなモータードライバーを使ってモーターを制御してみた
ディスカッション
コメント一覧
まだ、コメントがありません