Raspberrypi On Zumo Python TkInterによる操縦・超音波センサによる停止

Raspberrypi On ZumoをPCなどのVNC画面からリモコンで操作します。取り付けた超音波センサーにより、障害物があると停止するようにします。USensorZumo

  1. 超音波モジュールの製作
  2. Arduino Leonardoのプログラム
  3. RaspberryPi のリモコンプログラム

超音波モジュールの取り付け

汎用基板を12×24ピッチの大きさに切り、図のように超音波センサー、ピンヘッダー2×12を取り付けます。

UsensorBoard2ZumoPinAssignment

ボードの裏面の配線は下のようにします。

Board_Plus_Sensor

超音波センサー基板をZumo前面の下部に取り付けます。

UsensorZumo2

 

Arduino Leonardoに超音波処理のプログラム・RaspberryPiのPythonプログラムをアップロードする

前もってやっておかなければならないこと:本サイト RaspberryPi On ZumoのWi-Fiコントロールシステム(WebIOPI)構築の手引き

を参照して、次の2点を行ってください。

  • RaspbianにArduino開発環境をダウンロードします(下記リンク 4.参照)
  • ZumoMotorLibraryをダウンロードします(下記リンク5.参照)

その上で、次のArduinoプログラムをLeonardoにアップロードします。
Arduinoプログラムは次のとおり
USensor

ダウンロードリンク
UsensorCode

次のプログラムをRaspberryPiデスクトップ上でPython2.7を使って走らせる。(このコードも上のダウンロードファイル
UsensorCodeに含まれます)
TkControl-py
このプログラムをRaspberrypi上で走らせるとTkInterを利用してボタンでコントロールできるようになります。
ただし、RaspberrypiOnZumoを走らせるときはVNCを利用してリモートコントロールで動かします。

動作は:10cm以内の障害物に接近すると、Zumoはストップします。それ以外は下のTkInterのボタンで前進・後退・左旋回・右旋回をコントロールできます。終了はMotor controllerのボタンウィンドウを閉じます。
TKControl
<終わり>

RaspberryPi On ZumoのWi-Fiコントロールシステム(WebIOPI)構築の手引き

RaspberryPiOnZumoのWi-Fiコントロール(WebIOPi)システム構築の手引き

PiOnZumo

スマホやパソコンのブラウザから構内のWi-Fiステーション経由でRaspberryPiOnZumoを
操縦するシステムを構築します。WebサーバーにはWebIOPiを使用します。

コードを入手する→codes

RaspberryPiOnZumoについてのFAQ

1.Arduino LeonardoにアップロードしたCommandReceiver.inoのプログラムの意味がよくわからないのですが。

・Arduinoのプログラムは最初に1回だけ実行されるsetup()関数と,その後繰り返し実行されるloop()関数からできていて,
プログラムはその中身を書くことになります。

・setup()関数内でUSBシリアル通信の初期化をSerial.speed(9600)命令で通信速度9600baudに設定します。

・次にloop()関数内で,Serial.available()関数により通信データがあるか調べ,あれば一文字(コマンド)を変数cに読み取り,
その文字の種類によって,モーターを制御しています。

・arduinoのシリアル通信命令についてはArduino.ccのserial以下をご覧ください。

https://www.arduino.cc/reference/en/language/functions/communication/serial/

 

2.Arduinoにモーターコントロールプログラムを書き込むとエラーが出てうまく書き込めません。

・ZumoMotorLibraryの場所が違っている可能性があります。    /home/pi/sketchbook/library/Zumo-shield/ZumoMotors
というディレクトリ構造になっているか確認してください。

・ArduinoIDEから ツール>シリアルポート を確認してください。    /dev/ACMA0となっているか、たとえば/dev/ACMA1などに
なっていたら、 RaspberryPiとArduinoがUSBケーブルで接続された状態で、RaspberryPiを再起動してください。
( $ sudo reboot now )その後、/dev/ACMA0になっていることを確認してください。

 

3.WebIOPiを起動するとデモページが立ち上がってしまう。

・/etc/webiopi/configファイルが書き換えられていません。11.の項目をもう一度よくチェックして下さい。
デスクトップ環境から直接configファイルをleafPad(エディタ)で開くと、書き込みができません。
lxterminalを立ち上げ、その中で sudo leafpad /etc/webiopi/configとして編集し、保存する必要があります。
これは /etc/rc.localの編集、書き込みについても同じです。

 

4.ブラウザからRasPiのアドレスにアクセスしてもボタンのついたページが表示されない。

・ index.htmlファイルが文法的に正しくない。10.のリストと比べて字句が正しいかチェックして下さい。

 

5.プッシュボタンを押してもRasPiが終了しない。

・プッシュボタンが26, 27ピンに間違いなく差してあるか確認する。
・shutdown.pyのリストをもう一度確認してください。
・shutdown.pyの場所を確認してください。
・/etc/rc.local の内容を確認してください。