Sensors Pack WS-9467

Sensors Pack は、次の13種類のセンサーが袋詰めになったお得なパック商品です。 センサー名称部分が各センサーの開発者用WiKiページにリンクされています。

センサー 説明 アプリケーション
MQ-5 Gas Sensor LPG、天然ガス、石炭ガスを感知する ガス漏れ探知機
Color Sensor _を検出する 色による並べ替えやマッチング
Flame Sensor 火災スペクトルを検出する 火災の検出、消防ロボット、火災警報
Hall Sensor 49Eホールセンサ モーター速度測定、オブジェクトの位置検出
Infrared Reflective Sensor 反射赤外線トランシーバ 経路追跡ロボット、障害物回避車、パイプラインカウンタ
Laser Sensor レーザーセンサ 障害検出、パイプラインカウンタ、スマートロボット
Moisture Sensor フォークのような形の土壌用湿度センサ 自動給水システム、植木鉢土壌水分検出
Rotation Sensor 時計回り/反時計回りの回転を検出 産業用制御装置における位置決め
Sound Sensor LM386車載オーディオパワーアンプ 周囲音検出、音量検出
Temperature-Humidity Sensor DHT11 温度&湿度センサ 周囲の温度&湿度検出
Tilt Sensor 振れ信号を検出 振動検出、ガードアラーム、スマートカー
UV Sensor 紫外線センサ 紫外線テスター、室外紫外線検出器、殺菌灯
Liquid Level Sensor 水位を検知する 水位警報

 

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 の内容を確認してください。

Arduinoのブートローダの修復方法

ArduinoがPCに認識されない!
Arduino LeonardoをUSBケーブルでPCにつなげたとき、COMポートとして認識された後、すぐに「不明なデバイス」となってしまう場合には、次の可能性が考えられます。
(1) ハードウェア的な問題が発生している[…]

ArduinoがPCに認識されない!

Arduino LeonardoをUSBケーブルでPCにつなげたとき、COMポートとして認識された後、すぐに「不明なデバイス」となってしまう場合には、次の可能性が考えられます。

(1) ハードウェア的な問題が発生している

(2) 書き込まれているブートローダ(ソフトウェア)が壊れている

(3) Arduinoがハードウェア的に壊れている

 

問題の切り分け

(1)のケースは、さらに2通りの可能性が考えられます。

 

1つは、Arduinoにつなげているシールドや部品の影響で電力消費が激しく、電源供給が不安定になっている可能性です。

これを調べるためには、Arduinoにつなげている全てのシールドやジャンパーケーブルを外し、USBだけを接続してPCにつなげてみてください。

 

改善しなければ、USBケーブルやPCのUSBコネクタの接触が悪くて、電源供給や通信が不安定というケースが考えられます。

この場合には、別のUSBケーブルを試したり、PCの別の場所のUSBコネクタに接続する、あるいは他のArduinoでは問題がないかを確認することで切り分けることができます。

 

いずれも該当しない場合には、(2)のケースと考え、ブートローダの修復を試みてください。

この方法は本稿の主題ですので、後半で詳しく説明します。

 

ブートローダを修復しても問題が解消しない場合や、修復ができない場合は、(3)のArduinoが壊れている可能性が高いです。この場合、残念ながら使えるように戻すことは不可能です。

 

そもそもArduino Leonardoのブートローダの役割は?

Arduinoは、PCとUSB接続するとCOMポートとして認識されます。COMポートを通じてPCと通信を行うことで、プログラムのダウンロード(Arduinoへのインストール)などを行うことができます。

これらの、

  • COMポートとして振舞う動作
  • PCからの指示によりプログラムのダウンロード等を行う動作

は、Arduino Leonardoではソフトウェアで実現されています。そのソフトウェアがArduino Leonardoに書き込まれているブートローダです。

もし書き込まれているブートローダが何らかの理由で壊れた場合、COMポートとして振る舞う動作がおかしくなるため、PCと接続できないという問題が発生するのです。

 

Arduinoのブートローダを修復しよう!

ブートローダもArduinoに書き込まれているソフトウェアですので、それが壊れた場合には書き直すことで修復可能です。

ただし、プログラムを書き込むために必要なブートローダが壊れているわけですから、通常の方法では書き直すことはできません。

ブートローダの修復方法を、順を追って説明します。

 

必要なもの

ブートローダを修復するには次のものが必要となります。

  • Arduinoボード(UNOなど)
  • ジャンパーワイヤー
  • 抵抗 (100~200Ω)

ブートローダはUSB経由では書き込みできませんので、PCから直接書き込むことはできず、別のArduinoを仲介役として使う必要があります。

Arduinoが2つ登場すると紛らわしいので、以降では、仲介役となるArduinoを「書き込み側のArduino」と呼び、ブートローダを書き込みたいArduinoを「ターゲットのArduino」と呼ぶことにします。

 

書き込み側のArduinoを設定する

書き込み側のArduinoに、そのためのソフト(ArduinoISP)をダウンロード(インストール)します。

Arduinoをプログラミングするときの要領で、PCとつなぎArduinoIDEを立ち上げてください。

IDEのメニューから、「ファイル」→「スケッチの例」とたどり、「ArduinoISP」を選択してください。ブートローダを書き込むためのスケッチが開きます。このスケッチをコンパイルし、書き込み側のArduinoにダウンロードすることで、ブートローダ書き込み機として動作するようになります。

 

図1

図1:ArduinoISPのスケッチを開く

 

書き込み側のArduinoとターゲットのArduinoとを接続する

Arduinoには、左右に並んでるピンソケットとは別に、「ICSP端子」と呼ばれている3×2のピンヘッダー端子が出ています。ブートローダの書き込みは、このICSP端子を使って行います。

図2のように、ジャンパーワイヤーを用いて、書き込み側のArduinoのD10~12および5VとGNDを、ターゲットのArduinoのICSP端子に接続して下さい。

また、書き込み側のArduinoのリセット端子と5Vとを抵抗でつなぎます。

図2

  書き込み側                                                           ターゲット

図2:Arduinoの接続

 

以上の接続をしたうえで、書き込み側のArduinoを、USBケーブルでPCとつなぎます。

 

ブートローダの書き込み

PC上でArduinoIDEを立ち上げてください。

ブートローダの書き込みは、開いているスケッチには依存しませんので、立ち上げたままのウィンドウで(任意のスケッチが開いている状態で)以降の操作を行います。

 

IDEのメニューから「ツール」→「ボードの設定」とたどり、ボードの種類の候補の中から、ターゲットのArduinoのものを選択します。PCと直接つながっている書き込み側のArduinoの種類を選択するのではないことに注意してください。(書き込み側のArduinoは、もはやArduinoではなく、書き込み機だと思ってください)

 

図3

図3:ターゲットのArduinoの種類を指定

 

また、「ツール」→「書込装置」とたどり、候補の中から ”Arduino as ISP” を選択します。これは、Arduinoを書き込み機として使っているということを指定しています。

選択肢の中には、”ArduinoISP”のような紛らわしいものがあります。間違えずに”as”の付いているものを選択して下さい。

 

図4

図4:書込装置の指定

 

準備ができたら、「ツール」→「ブートローダを書き込む」を実行します。

 

図5

図5:ブートローダを書き込む

 

ブートローダの書き込みには少し時間がかかります(数分程度)。図のように、「ブートローダの書き込みが完了しました」と表示されるまで待ってください。

 

図6

図6:ブートローダ書き込み完了

 

最後に動作確認

動作確認のため、ターゲットのArduinoを、USBケーブルでPCに接続してみてください。COMポートとして認識され、その状態が変わらなければ、うまく修復できたはずです。

念のため、Arduino IDEを立ち上げ、サンプルスケッチからblinkingを選んでダウンロードしてみてください。LEDが点滅するのが確認できれば、ブートローダの修復は完了です。

 

 

MATLABへのArduino環境の導入に関して=Arduino と MATLAB で制御系設計をはじめよう!=

MATLABへのArduino環境の導入に関して

MATLAB/SimulinkからArduinoを簡単に操作するための環境がMATHWORKS社
より提供されている。

TechShare出版書籍『Arduino と MATLAB で制御系設計をはじめよう!』にて説明されているMATLAB
/Simulinkへの環境の設定方法は書籍初版時の情報を元にArduinoIOの導入として記載されて
いるが、MATLABも年々アップデートを繰り返し操作仕様、画面等も旧版からは随分と変わっているのが現状
です。 この項では、MATLAB/Simulinkの動作環境とそのセットアップ方法をご紹介いたします。

【動作環境】

『Arduino と MATLAB で制御系設計をはじめよう!』(TechShare出版)で使用されているコードの実行可
能環境は以下の通りとなります。

MATLAB/Simulinkのバージョン  : R2012a ~ R2016bまで(R2017aでは実行不可)

ArduinoIDEのバージョン      : Version 1.8.1

 

【Arduino用ハードウェアサポートパッケージのインストール】

Arduino向けのハードウェアサポートパッケージは幾つかの種類があります。今回のご紹介している『Arduino と
MATLAB で制御系設計をはじめよう!』で使用しているハードウェアサポートパッケージは次の物になります。

名   称: Legacy MATLAB and Simulink Support for Arduino

書籍の中では、2.5ArduinoIOのインストールで『MATLAB Support Package for Arduino (aka ArduinoIO
Package)』と紹介されています。これが、現在では上記のように名称が変更されております。

Arduino用ハードウェア サポート パッケージのインストールには2つの方法があります。

1.アドオンからのインストール

2.インストーラーからのインストール

順にご紹介します。

 

1.アドオンからのインストール

図1に示すMALTLAB R2016bの操作画面を示す。

この画面中の【ホーム】タブのメニューにある【アドオン】の【ハードウェア サポート パッケージの入手】

をクリックします。

2017_05_31_2

図1 MATLAB R2016b のメイン画面にてアドオンをクリックしたところ。

 

 

ハードウエア サポートパッケージの入手をクリックすると、アドオン エクスプローラ画面が

現れます。 この画面の右上部の検索窓に『Arduino』と入力し、画面左端にある

フィルターの選択欄にて『タイプでフィルター』の『ハードウェア サポート パッケージ』を選択すると

図2のようにArduinoに関する複数ののサポートパッケージが現れる。

2017_05_31_3

図2 アドオン エクスプローラーの画面。 検索窓中に ”arduino"を入力し、画面左のフィルターで
『タイプでフィルター』の『ハードウェア サポート パッケージ』選択した結果。

 

このなかより

  • Legacy MATLAB and Simulink Support for Arduino

を探しクリックすると、パッケージの詳細画面が表示されます。更に右上部にある『追加』(図3参照)を

クリックすると、ログイン画面が表示され、インストールへと進めます。

 

2017_05_31_5

図3.パッケージ詳細画面

 

詳細画面右上部にあるインストールをクリックするとダウンロードとインストールが始まります。

途中、ライセンスの承諾とインストールの確認画面が現れますが、確認し進めてください。

インストールが完了すると アドオン エクスプローラー上では図4の様にインストール済みと表示されます。

2017_05_31_7

図4. パッケージインストール済みの場合、各パッケージにインストール済みと表示されます

 

この例では検索で 『Arduino』『ハードウェア サポート パッケージ』フィルタリングしましたが、これ以外に
も条件検索は可能です。 必要に応じてパッケージを検索、インストールすることが出来ます。

 

インストーラーからのインストール

以下のページより サポートパッケージを直接ダウンロードしインストールする方法もあります。
次のリンク先のページに進み、『Download』をクリックし、『ArduinoIO.zip』のダウンロードし実行します。

 

紹介ページ: https://jp.mathworks.com/matlabcentral/fileexchange/32374-legacy-matlab-and-simulink-support-for-arduino?s_tid=srchtitleLegacy

MATLAB and Simulink Support for Arduino

2017_05_31_8

こちらの方法では、書籍で紹介しております 『2.5ArduinoIOのインストール』と同様に実行
し、MATLAB/Simulinkでのinstall_arduino.m ファイルの実行へと進みます。

 

環境導入に関しては、以上の通りです。

不明な点は、メール等でお問合せください。

【MATLAB/Simulinkのバージョンに関して】

MATLAB/Simulinkの最新バージョンは年2回行われ、前半に行われたバージョンアップが『a』、後半に行われた
ものが『b』と表記されます。最新バージョンを導入することによりバグの修正がなされたり、新しい機能が
付加され使いやすく、高機能になってまいります。 しかしながら今回のご案内のように当書籍でご紹介して
おりましたコードが、最新版のMATLAB/Simulinkではサポートパッケージに非対応という事で使用できません。

実際の業務上の開発でもそうですが、過去の資産を有効活用する為には古いバージョンを使い続ける必要性が
生じてまいります。 今回の書籍で使用しておりますコードは、実製品に使用するコードではなくMATLABを
使用し、制御系設計とはどの様なものかを『実際に制御実験装置を用意し、モデリングから制御系設計、そして
制御機器実装を行って実際に動かす』という体験し、制御理論の理解を深める事にあります。

ただし現実的に産業界では、過去に作成したコード資産を有効活用することを考慮しなければ、全てのコードを
書き換えるというとてつもなく大変な作業を行わねばならなくなります。

この為、MATLAB/Simulinkのライセンスは、1つのライセンスで複数のバージョンが使用可能となっています。保有
している資産に対して安定しているバージョンを長期にわたり使用し、その間に新しいバージョンへの対応を
検討するという事を行っているようです。