リモコン操作用Web画面のレイアウトを変更した。横にボタンがある方がスマホなどで操作しやすい。ボタンの大きさも調整した。
前回までは回路部の動作確認のため、ssh接続でターミナルからコマンドを打ち、ラジコン操作をしていた。回路的にはこのままで行けそうなので、Web画面からのリモコン操作にチャレンジする。ストリームはmjpg_streamerのhttpサーバ、GPIO制御はpyhtonのhttpサーバを使用している。
GPIO制御ライブラリは既に入っているので、インストールの必要はなかった。
「server_motor.py」と「index.html」をCQ出版サポートサイトからダウンロードして使う。
参考文献:インターフェースSPECIAL「ラズベリー・パイでI/O」
モータ制御プログラムの修正。
pi@raspberrypi ~ $ vi /usr/local/www/server_motor.py
# -*- coding:utf-8 -*-
import cgi
import RPi.GPIO as GPIO
from http.server import HTTPServer ← pythonのバージョンの違いにより修正。
from http.server import SimpleHTTPRequestHandler ← 同上
以下、GPIOポート番号以外記事と同じ。httpポートは8081
「index.html」を修正するのだが、htmlのコードはここへは載せられないので。。項目だけ。
pi@raspberrypi ~ $ vi /usr/local/www/index.html
(略)
(1)img src="http://192.168.11.23:8080/?action=stream" ← IPアドレスを修正。
(2)その他、好みでボタンレイアウトを変更。
rc.localへモータ制御プログラムを追加する
pi@raspberrypi ~ $ vi /etc/rc.local
(略)
if [ -c /dev/video0 ]; then
export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer -i "input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www -p 8080" &
####今回追加####
cd /usr/local/www
python3 /usr/local/www/server_motor.py &
####ここまで####
#前回のシェルは削除#
fi
回路部分の動作確認ができた。TA7291へのリファレンス電圧は、左右別々に供給しないと回転速度が合わない。
回路図(手書きだけと)
rc.localへGPIOの初期設定を追加した。
pi@raspberrypi ~ $ less /etc/rc.local
・
・
if [ -c /dev/video0 ]; then
export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer -i "input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www -p 8080" &
#GPIO 使用開始
echo 4 > /sys/class/gpio/export
echo 17 > /sys/class/gpio/export
echo 27 > /sys/class/gpio/export
echo 22 > /sys/class/gpio/export
#GPIO 出力ポート指定
echo out > /sys/class/gpio/gpio4/direction
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio27/direction
echo out > /sys/class/gpio/gpio22/direction
fi
exit 0
各動作は別々のシェルにまとめて、「~/bin」へ格納している。
pi@raspberrypi ~ $ ls ~/bin/
mbackward.sh mforward.sh mleft.sh mright.sh mstop.sh
pi@raspberrypi ~ $
pi@raspberrypi ~ $ less ~/bin/mforward.sh
#robot 前進
echo 0 > /sys/class/gpio/gpio4/value
echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio27/value
echo 1 > /sys/class/gpio/gpio22/value
pi@raspberrypi ~ $ less ~/bin/mbackward.sh
#robot 後退
echo 1 > /sys/class/gpio/gpio4/value
echo 0 > /sys/class/gpio/gpio17/value
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio22/value
pi@raspberrypi ~ $ less ~/bin/mright.sh
#robot 右旋回
echo 0 > /sys/class/gpio/gpio4/value
echo 0 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio27/value
echo 1 > /sys/class/gpio/gpio22/value
pi@raspberrypi ~ $ less ~/bin/mleft.sh
# robot 左旋回
echo 0 > /sys/class/gpio/gpio4/value
echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio22/value
ブレッドボードにモータ制御回路を組んだ。配線だらけになってしまった。まだ、動作確認はしていない。
いきなりモータ制御は難しいのでLEDの点灯をしてみる。
isih@isih-desktop:~$ ssh -X pi@192.168.11.23
pi@192.168.11.23's password:
pi@raspberrypi ~ $ echo 4 > /sys/class/gpio/export ←GPIO4の使用開始
pi@raspberrypi ~ $ ls /sys/class/gpio/
export gpio4 gpiochip0 unexport ←gpio4と言うディレクトリができている
pi@raspberrypi ~ $ echo out > /sys/class/gpio/gpio4/direction ←GPIO4を出力に設定
pi@raspberrypi ~ $ echo 1 > /sys/class/gpio/gpio4/value ←GPIO4へ「1」を出力(LED点灯)
pi@raspberrypi ~ $ ls /sys/class/gpio/gpio4
active_low device direction edge subsystem uevent value
分かりにくいが、微かに赤く点灯している。ICは今のところ意味なし。
pi@raspberrypi ~ $ echo 0 > /sys/class/gpio/gpio4/value ←GPIO4へ「0」を出力(LED消灯)
pi@raspberrypi ~ $ echo 4 > /sys/class/gpio/unexport ←GPIO4の使用終了
pi@raspberrypi ~ $