目次
これまでのあらすじ
半年前の出来事
ちょうど半年前のある日。パパは海外出張で居なかった。
長男(4才)に、「ママは不器用だから、プラレールコントローラーなんて直せないよね・・・」と言われてしまい、
「そんなこと無い。ママだってできるわよ!」
プラレールのコントローラーを自作すべく、母ちゃんは電子工作を始めたのであった。
部屋に落ちていたRaspberry Piを見付けて「これだ!ラズパイで実現させるんだ!」と誓った。
うまくいかない日もあった・・・
しかし、何度練習してもはんだ付けが不得意で、心が折れそうになりそうになった。
父ちゃんから「えええっ、それでも工学部出身なの?wwwww」と笑われた芋はんだ。
でも、息子と約束したんだ。プラレールのコントローラーを自作するって。
保育園落ちて白髪が生えた日もあった
認可保育園に落ちて、ショックの余り白髪が生えた私ですが、保活については認可外に入れることにしてようやく2月で落ち着きました。ちなみに、白髪は美容室でカラーするときにコッソリ染めてもらっていました。
ということで、3月に入ってようやく電子工作を再開でき今に至ります。
スポンサーリンク
みんな大好きシェルスクリプト
参考にした書籍
ラズパイマガジン2016年春号で、上田先生の記事「ラズパイマウスを自在に動かそう~シェルスクリプトで制御~」を読みました。
ラズパイマガジン 2016年春号 (日経BPパソコンベストムック)
- 発売日: 2016/01/18
- メディア: ムック
今回はシェル芸でモーターを制御するところまで紹介します。最終的にはプラレールをスマホでコントロールできるように作業を進めます。
用意するもの
- Raspberry Pi (今回使用するのはZero)
- ミニブレッドボード
- ジャンパーワイヤ (オス-オス)
- デュアル・モータードライバー TB6612FNG
- STS-Piのモーター部分
手順
今回は、シェル芸でモーター制御(前進、後進、ストップ)するところまで紹介します。
なお、ラズパイZeroのピンヘッダとモータードライバーのはんだ付け作業は完了しているものとします。
(1)配線
ラズパイZeroを写真のように配線します。(Zeroじゃなくてラズパイ2でも良いです)
※ 後日、配線図に差し替えます
(2)GPIO有効化
GPIO13,19,21,26を有効化します
$ echo 13 > /sys/class/gpio/export $ echo 19 > /sys/class/gpio/export $ echo 21 > /sys/class/gpio/export $ echo 26 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio13/direction $ echo out > /sys/class/gpio/gpio19/direction $ echo out > /sys/class/gpio/gpio21/direction $ echo out > /sys/class/gpio/gpio26/direction
(3)前進スクリプトを用意
$ nano forward.sh echo 1 > /sys/class/gpio/gpio19/value echo 0 > /sys/class/gpio/gpio26/value echo 1 > /sys/class/gpio/gpio13/value sleep 1
(4)後進スクリプトを用意
$ nano backward.sh echo 0 > /sys/class/gpio/gpio19/value echo 1 > /sys/class/gpio/gpio26/value echo 1 > /sys/class/gpio/gpio13/value sleep 1
(5)ストップ用のスクリプトを用意
$ nano stop.sh echo 0 > /sys/class/gpio/gpio13/value sleep 1
(6)テスト用のスクリプトを用意
$ nano init.sh echo 0 > /sys/class/gpio/gpio21/value sleep 1 echo 1 > /sys/class/gpio/gpio21/value sleep 1 $ nano test.sh echo INIT ./init.sh echo FORWARD ./forward.sh sleep 3 echo STOP ./stop.sh echo BACKWARD ./backward.sh sleep 3 echo STOP ./stop.sh
シェル芸を実行してみる
作成したスクリプトに実行権を付与した後、テスト用のスクリプト(test.sh)を実行します。
$ ./test.sh
INIT
FORWARD
STOP
BACKWARD
STOP