ラズベリーパイ(Raspberry Pi Zero WH)で、Scratch(スクラッチ)のプログラミングをして、ロボットを動かしてみたいと思います。
\ 学会発行誌の謝辞に掲載いただきました! /
このページのURLを「電子情報通信学会」発行誌 の「Raspberry PiとSCRATCHでロボットを動かそう」
の謝辞に掲載していただきました!!

すごーい!



ありがとうございます!
Scratchの基本的な使い方は、前回のラズベリーパイ(Raspberry Pi Zero WH)でScratch Lチカ(LED点滅)してみよう!で紹介しています。



Scratch? ぼくにも
できるかなぁ?



Scratchは、子ども向け
だから大丈夫だよ



やったー! はやくロボット
動かしたい!!
準備するもの
1 | ラズベリーパイ(Raspberry pi zero WH) 詳しくは、こちらです。 初期設定・環境設定が済んだものを使用します。 | ![]() ![]() |
2 | microSDカード 8~32GB 詳しくは、こちらです。 | ![]() ![]() |
3 | microUSB電源ケーブル スマホの充電ケーブルでOKです。 詳しくは、こちらです。 | ![]() ![]() |
4 | パソコン microSDに書き込めるもの。 詳しくは、こちらです。 | ![]() ![]() |
5 | ブレッドボード 詳しくは、こちらです。 | ![]() ![]() |
6 | ジャンパーワイヤー 詳しくは、こちらです。 | ![]() ![]() |
7 | 抵抗 詳しくは、こちらです。 | ![]() ![]() |
8 | モータードライバー TA7291P 詳しくは、こちらです。 | ![]() ![]() |
9 | モバイルバッテリー 出力が2ポートあるもの 詳しくはこちらです。 | ![]() ![]() |
10 | カットしたUSBケーブル 詳しくはこちらです。 | ![]() ![]() |
11 | チェーンプログラムロボット 詳しくはこちらです。 | ![]() ![]() |
12 | ユニバーサルプレート 穴の開いた透明のプレートです。ラズベリーパイやモバイルバッテリーを固定しています。 |
カットしたUSBケーブル
モバイルバッテリーからモータードライバーに電源をとるためのケーブルです。
本当は、電源用マイクロUSBコネクタDIP化キット(要はんだ付け 130円)を使って、 モバイルバッテリー → ブレッドボード の接続をしたかったのですが、手元にありません。
130円の部品を買うのに送料500円かかってしまうのも困るので、次回購入したいと思います。秋月電子通商の隣に住みたいです。
近所のダイソーでUSBケーブルを購入してきました。


ニッパーとカッターでUSBケーブルをカットして外側の黒いゴムの被覆をとりました。
モバイルバッテリーでArduinoとモーターを動かすと導通チェックというサイトを参考にさせていただきました。ありがとうございます。


USBコネクタのGNDが黒、VSSが赤い方の電線に繋がっていることを、導通チェックで確認しました。


チェック方法はこちら!
テスターをこの写真のように接続して電源をONします。


- まずは、赤と黒の端子の先をくっつけてピーっと鳴ることを確認
- USBコネクタのGNDと被覆をとったケーブルの黒い方の電線をテスターの端子にくっつけて、ピーっと鳴ることを確認
- USBコネクタのVSSと被覆をとったケーブルの赤い方の電線をテスターの端子にくっつけて、ピーっと鳴ることを確認
被覆をとった電線部分をねじってまっすぐにして、そのままブレッドボードに挿します。
チェーンプログラムロボット
こちらは、自分で組み立てるロボットです。腕を振りながら動きます。
付属のチェーンの組み合わせを変えることで、「前進」、「右カーブ」、「左カーブ」といった動きをプログラミングすることができます。
作るのはもちろんとっても楽しいのですが、さらに簡単に改造できるところがすばらしいです。
このロボットを少し改造して、ラズベリーパイ(Raspberry Pi Zero WH)で動かします。
変更した箇所はこちら。
- 真ん中にユニバーサルプレートをつけて、ブレッドボードとモバイルバッテリーを設置
- 頭のうしろのスイッチをとって、ラズベリーパイ(Raspberry Pi Zero WH)を設置
- 右側の車輪を止めているパーツ(組立説明図のB8)を逆向きにする
*もともとは、右側の車輪の軸はチェーンを読み込むために後ろ向きに回転し、車輪自体は空回りするように止めます。
この車輪を止めているパーツを逆にして、空回りしないように変更します。


配線方法
回路図
回路図はこちらです。右と左のタイヤのモーター2つ分、同じ回路です。


配線図
配線図はこちらです。


配線の写真
写真で見るとこんなかんじです。透明のユニバーサルプレートにミニブレッドボードと、モバイルバッテリーを載せています。
輪ゴムやら、ビニタイやらを駆使してなんとか固定しています。


前に積んでいるカメラは、Scratch1.4で使えませんでした。他の方法で使えるようにがんばります。
上から見た写真です。頭の後ろにラズベリーパイ(Raspberry Pi Zero WH)があります。


右側と左側からの写真です。ちょっと後ろに長くなってしまいました。




Scratchでプログラミング
操作画面の作成
まずは、Scratchで操作画面を作ります。
「コスチューム」タブの「ペイント」ボタンをクリックします。


表示されたペイントエディタで絵を描きます。


「すとっぷ」「まえ」「うしろ」「ひだり」「みぎ」という5つのスプライトを作成しました。


前に進む
次にスクリプトを作成します。
「まえ」スプライトを選択した状態で「スクリプト」タブをクリックします。
ここに「まえ」スプライトをクリックするか、上向き矢印キーを押すと前進するプログラムを作成します。


スクリプトのアップです。左右のタイヤが前に進むようにgpio2とgpio17をonします。


「config2outを送る」などの出力設定がなくても動いたので、今回は省略しています。
右に曲がる
次は「みぎ」スプライトを選択した状態で「スクリプト」タブをクリックします。
「みぎ」スプライトをクリックするか、右向き矢印キーを押すと右に曲がるプログラムを作成します。
左のタイヤだけ前に進ませるようにgpio2をonします。


左に曲がる
「ひだり」スプライトをクリックするか、左向き矢印キーを押すと左に曲がるプログラムを作成します。
右のタイヤだけ前に進ませるようにgpio17をonします。


バックする
「うしろ」スプライトをクリックするか、下向き矢印キーを押すと後ろに下がるプログラムを作成します。
左右のタイヤが後ろに進むようにgpio3とgpio27をonします。


ストップする
「すとっぷ」スプライトをクリックするか、スペースキーを押すと止まるプログラムを作成します。
全ての信号をoffにします。


Scratchでプログラム実行
まずは、GPIOサーバーを開始します。
メニューバーから[編集]-[GPIOサーバーを開始]をクリックします。
操作画面の水色の三角をクリックするか、矢印キーを押すと、前後左右に動きます。
真ん中の黄色い丸をクリックするか、スペースキーをクリックすると、ストップします。


VNCを使うと、スマホからも操作することができます。
でも、ちょっと操作しにくいので、パソコンからキー操作するのがおすすめです。
動作確認
前進している動画です。
右にいったり、左にいったり。なかなか操作が難しいです。
うまくトンネルをくぐれるかな?
まとめ
小学生のまあちゃんとうさたんもオリジナルのコマンドを作ったりして、楽しくScratchでプログラミングができました。



S字に動くプログラムを作ったよ
ロボットが動くと、わぁっと歓声があがってとっても盛り上がります。
スラロームを通ったり、障害物競争をしたり、タイムを測ったり、いろんなコースで遊んでみました。
Scratchは簡単なことから始められて、思い通りに動くまで試行錯誤するのもおもしろいので、とってもおすすめです。
ちなみに、こちらではPythonでロボットを動かしています。よかったら、合わせてみてください。

