スクラッチで制御


H30.2.10

 モバイルバッテリーから2つのモーターとモータドライバ基板に電流を与えるようにコードを枝分かれさせた。これで、ラズパイに負担を与えなくてすむと思う。

 この工作で、下の部品が大活躍だ。百均で購入したUSBからマイクロUSBで充電するタイプのコネクタだ。何かの付属品だったかもしれない。データ線はない。プラスとマイナス2本のコードが通っているだけだが、工作に使う電源コードとしては最高! 百均に行ったら探して、このコードを購入しておこう。


H30.2.4

 タミヤのツインモーターギヤボックスを使った車が重すぎたので、やはりちっちゃなものクラブの小型モーターを使うことにして注文した。

 最初はGPIOピンから直接電流を取ればいいかなと思っていたけれど、実験してみたら1個当たり30mAほど流れていた。これはラズパイに負担がかかる。最大でもGPIOの1ピンあたり16mA、合計でも50mAということなので、危うい!

 試験運転だったので、下の写真では直接GPIOピンから電流を流しているが、上に載せているバッテリーから取ることにしようと思う。

 バッテリーから、ラズパイ本体とモーター&モーター制御基板とに振り分けるようにしようということ。USB-マイクロUSB&ピンコード2本の二股ケーブルを作成しなければならないな。

 全重量は143gになって、軽い動きをしてくれた。


H30.1.28

 ダイソーの300円モバイルバッテリーだが、RasPiZeroを動かすには十分なのだが、モーターは難しい。タミヤのギヤーボックスに付属しているモーター1個だけなら動かせるのだが、2個は動作しなかった。単3乾電池4個を使わねばいけないようだ。
 とりあえずこんな感じで試験走行させてみた。

 直接PasPiZeroのピンからモーター電源を取るときちんと両輪が動く。5V3AのACアダプターを使ってだけど。


 そこで、単三4個のホルダーを購入。コネクタ部分を加工して車に載せてみた。ここで見ることができる。

 車体の重さが300gほどになったので動きが遅い。1/3は電池の重量だ。ギヤボックスとモーターも重い。どうにか工夫ができるかな。

 動きが左に曲がりながら走っているが、これは生徒たちに修正方法を工夫させる課題になるかな。

 Scratchのスクリプトは下の通り。

 ScratchはScratchGPIOを使った。今の段階では、ScratchGPIO8になっている。この版はGPIOピンを変数と定義でき、ONやOFFを1と0と与えることができるので、生徒にもわかりやすいのではないかと思う。また、変数にしてしまうので、スクリプトを書く(組み立てる)ときに、一覧からいちいち引っ張らずに、右クリックで一覧から選ぶことができるので書きやすいと思う。


H30.1.26

 なのぼーどを使った車が動くようになったので、もう少し安価にできないかと考えた。タミヤのツインモーターギヤーボックスを使ってみる。このセットにはモーターもついている。モータドライバのTA7291Pを2枚使う。抵抗が各1必要なだけで、なのぼーどよりも安く上がりそうだ。

 ギヤボックスを組み立て、TA7291Pの基板を作った。前回の車製作で余ったプラ板を流用して組み立ててみた。

 あとは、車輪と1個残っているタミヤのキャスターを取り付け、モバイルバッテリーとモータ用の電源を2階に組み上げれば完了だ。

 試験的に1個のモーターだけを動かしたときにまたまた苦労した。この車もScratchで動かすのだが、Scratchがいろんな種類があって、スクリプトも様々なのだ。私のラズパイにも正規の1.4バージョンと、ナノボード用のScratch、ScratchGPIO7それから昨年出たオフライン用のScratch2.0。

 ネットで見ると、新しい変数を作る際に、GPIOピンの指定表記がマチマチ! (^^;)

 やってみなければ分からないということだ。きちんと統一して欲しいですね。そして、命令の一覧表が欲しい。生徒に指導するときも混乱しそう。


H30.1.17

 車の運動状態だが、画面に雷マークが出ないので、モーター2つとWIFI、ナノボードや本体などの電力を、百均で購入した300円のモバイルバッテリーは力を発揮しているということだ。ありがたい。

ここで動画が見れる。Scratchのプログラムは下図の通り。ただし、「1秒待つ」でなく、「0.5秒待つ」ほどにしたと思う。待ち時間の調整で真四角に動くことができるかもしれない。

 ただ、動かしてみて、車の車輪の固定に不安が残った。小さなビス1つでは気がかりだ。細くてもボルト止めが適切か。また、車体にモーターを取り付けている部分が、接着剤で取り付けたものなので弱そうだ。これも2本のボルトで留めてみたい。

 子どもが扱うとしたら、もう少し強度を上げる必要があるからね。

 モバイルバッテリーが使えるなら、次のステップとして、サーボモーターを2個使ってコントロールする車を計画してみようと思う。


H30.1.14

 とりあえず車体はできた。1mm厚7cm×10cmのポリスチレン板にナノボードとPiZERO_Wをネジで固定する。最初は3階建てにしようと思ったが、充電池本体が長いし、あえてZEROを2階に持っていく必要はなかったので、1階部分に固定した。固定するためのボルトは、以前から持っていたプラスチィック3mmネジを一部使ってみた。初めは鉄のねじを使っていたのだが、その時と比べるとはるかに軽くなったのが、手で持った感じからも分かった。

 このふたつを接続するのがミニUSBとマイクロUSBのケーブルだが、ネットでは見つからなかったし、無理につないでも長くなりすぎるのと嵩張るのでやめた。フレットなケーブルで不要なミニUSBケーブルとマイクロUSBケーブルがあったため、ほどほどの長さになるように作った。4本の線があったので、どれとどれを結ぶのか配線に不安があったものの、ZEROとナノボード双方は支障なく動いている。

 充電池とZEROをつなぐケーブルは多少短いものがあるので無理に作らない。

 モーターとナノボードをつなぐメス・メスのピンコードは付属してきたものを使うが、少々短くした。

 とりあえず車体ができたので試験を行ってみることにした。

 繋いだところで、ZERO_Wを動かそうと思ったら、1つしかないUSBポートがナノボードに占有されているではないか。ふと、BlueToothを持っているのでは?と確認したら、確かにあったので手持ちのマウスとキーボードをつないでみた。これで身が軽くなった。

 Scratchで動かしてみると、確かにモーターは回るのだが、太いHDMIケーブルに支配されているためスリップするだけだった(^^;)

 あとは、ネットワーク上にあるタブレットからZERO_Wを操作できるようにすればいいのだ。ZERO_Wに電源を入れて起動するときに、ディスプレイを接続しなくて済むようにするための一連のスクリプトファイルを作って、autostartディレクトリに入れておく。

 ZERO_WはWIFIを自前で持っているので、ネットワーク関係を悩むことがないので便利だ。

 そして、タブレット上でZEROのScratchを操作してプログラミングし、実行すれば無線化したZERO車がプログラム通りに動くということだ。

 ナノボードに光や超音波センサーなどをつないで自動走行させるということもできるかな。

 今回の為にいろいろ調べていたら、サーボモーターを使えば、もっと簡単に動くロボットができるようだ。RaspberryPi3は2台までのサーボモーターをコントロールできるらしい。2台だと前後と右回転・左回転で動かせるね。サーボモーターは、一般的には5Vくらいから動作させるけれど、3.3Vでも大丈夫なものもあるらしいし、パルスを作るだけだから電流もさほど使わないだろうから、電源をRaspberry本体から取ることができるかもしれない。そうなると小型化できそう。もうちょっと調査の必要ありだ。


H30.1.4

 RasberryPiをメインに、ナノボードとモーター2個を使った車を製作し、Scratchで動きをプログラミングしようという計画。モーターとそれに直結する車輪のセットはちっちゃいものクラブで販売されているものを使う。かなり小さいモーターで減速ギヤもセットされているので車輪に直結できるようだ。

 Scratchでナノボードを使うためには、専用のScratchを使う。専用のScratchはモーター1個を使用できる。モーター2個使うには、ナノボードのモードを変える必要があるとのことで、ナノボード上のタクトスイッチを押しながらUSBに接続することで変更できるようだが、どうもうまくいかなかった。
 そこで、さらに検索したところ、「ちっちゃいものくらぶ」の「なのぼ〜どAG V1.4にアップデートしました。」に記述があった。阿部さんが2個モーター用のScratchを用意してくれたとのこと。
 さっそくダウンロードしてhome/piに転送し、解凍するとNanoBoardAGWithMotorRasとPiNanoBoardAGWithMotorsRasPiのショートカットがデスクトップにできあがる。このがある方のショートカットをダブルクリックすると、下のように2つのモーターをScratchでコントロールすることができる。

 以上の件については、試行錯誤した結果できるようになったので、実際にはもう少しいろんなソフトやドライバをインストールする必要があるかもしれない。

 RaspberryPiZEROでも同じように動かすことができた。Pi3では大きく重いのでZEROの方が動き易いかと思うので。

 今後は車の作成。モータードライブする2輪と先頭につけるボールキャスターでの3輪とする。モータードライブの2輪の回転を制御することによって前後左右の動きが実現できる…はず。これを車体板Aの下部に取り付ける。車体板Aの上部にはナノボードとZEROをセットする。2階建てとして車体板Aの上に車体板Bをセットする。その上に充電バッテリーを取り付ける。これで、RaspberryPiZEROを載せた車は無線で独立する。

 RaspberryPiZEROは、同じネットワーク上のタブレットでコントロールするというシステムだ。タブレット上で、RaspberryPiZEROのScratchでプログラムを組み、車の動きを制御するという仕組みだ。ただ、ZEROはネットもScratchの立ち上がりもかなり遅いので大丈夫だろうか?!

 Pi3では、モーターについては、回転する時間(秒)とパワー(0〜100)を制御することができる。私のセットの場合には、負荷が無い時で、パワー100、0.4秒でほぼ1回転する。0.4秒でパワー50にすると、半回転した。車にしたてた場合には負荷がかかって異なる結果になるだろうから、試行錯誤で検討するしかないだろう。子供たちのプログラミング活動としてはいい課題になりそうだ。

 ただのモーターでなく、ステッピングモーターにすればアバウトさがなくなってプログラミングできるのだろうが、コストがかかって適切でなくなりそうだ。