とりあえず模型のタンクを動かしてみた


GPIOでLチカさせるのがこの世界の「Hello World.」らしいので、やってみた。

ただし、パーツ箱を探したら、LEDは見つけたものの、抵抗が見つからない。

なので小信号用Siダイオードで代用した。

LEDとSiダイオードを直列につないで、GPIOのピンとグラウンドの間に挿入、GPIOコマンドでONにしたらLEDが点灯した。

Lチカは基本‥‥とは言え、すぐに飽きるので、これまた“定番”の模型のタンクを動かすことにした。

検索してみると「タミヤ 楽しい工作シリーズ No.108 タンク工作基本セット」が見つかったが、1モーターなので直進・後進しかできない。ならば、バラバラに以下のキットを購入することにした:

  • タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ
  • タミヤ 楽しい工作シリーズ No.100 トラック&ホイールセット
  • タミヤ 楽しい工作シリーズ No.157 ユニバーサルプレート 2枚セット

また、2つのモーターのドライバとして、秋月電子で「TB6612使用 DUAL DCモータードライブキット」を購入した。

今回は、単に直進・後進・左折・右折などができればよいと考え、速度制御は敢えて考えないことにした。


TB6612の真理値表を見ると、左右のモーターそれぞれが CWまたは CCWとなるよう IN1、IN2をセットし、PWM、STBYは常に Hのままとすれば正転、逆転する(手抜きですみません)。

念のため、接続図を載せておく。

 

基盤図、回路図の AO1-AO2、BO1-BO2にDCモーターがそれぞれ接続される。

GPIO pin #01(+3.3V)から引けるか調べると、最大500mAらしいが、ラズパイにあまり負荷をかけたくなかったので、VMには単3電池×2本=3Vを供給した。

さぁ、いよいよラズパイのGPIOとTB6612を接続し動作チェック。

最初はラズパイに「gpio readall」コマンドを与えて、現時点のGPIO設定やステータスをチェックする。

BCMはGPIO番号、wPiはWiringPiと呼ばれるC言語のライブラリ用、真ん中のPhysicalが基板上のピン番号を表すそうだ。

今回は、GPIO.BCMで #17、#27、#23、#24 をそれぞれ TB6612の AIN1、AIN2、BIN1、BIN2 に接続した。

ターミナル(LXTerminal)から、例えば

「gpio -g mode 17 out」は、GPIO #17ポートを出力用に設定

「gpio -g write 17 1」は、GPIO #17ポートの値を 1 (HIGH)に設定

という具合にそれぞれのポートについて設定していき、DCモーターが設定どおりに動作すればOK。


基本的な動作チェックができたところで、当面の目標「Scratchでコントロール」を実行する。

PythonなどGPIOを制御する方法は他にもあるが、子供たちが取り組みやすい「Scratch」をまず取り上げる。

予め組み込まれている「Scratch」と「Scratch 2」のうち、「Scratch」には GPIOサーバとの間でコマンド送信やデータ取得などが行える「Scratch GPIO」が含まれている。

メニューから[プログラム]-[Scratch]を選択すると、Scratch 1.4 (NuScratch)が起動する。

まず[編集]-[GPIOサーバーを開始]をクリック、その後、作成したいプログラムに応じて Scratch“部品”を組み合わせていく。

基本的には、「制御」にある「~を送る」という部品を編集して、例えば「config17out」というように設定する。

これは上述の「GPIO #17ポートを出力用に設定」と同じ意味になる。

また「gpio17off」は「GPIO #17ポートの値を 0 (LOW)に設定」という意味である。