変わりモノがいい!

変わりモノには価値がある・・・ハズ?

Bluetooth shield V2.0が動きました。

今回も悩みました。

どうして問題なく動くことがないのでしょうね。
今回も悩みました。
Arduino Unoに搭載することを前提としたshield同士の組み合わせの問題や表記の問題でどうやったら動くの?という状態になりました。
表記の問題は回路表現からすれば当然のことではあるが、回路を示さずにやると利用者は絶対に間違えるな、というようなものでした。
まるでだまし絵のような感じです。

f:id:ken2017:20211209103223j:plain
これからArduino Unoのshieldを使おうとしている人のために今回悩んだことを記事にしておきたいと思います。

最初の問題はshield同士の干渉です。

Arduino Unoは幾つものshieldを段重ねにして使えるようになっています。
今回問題になったのは、Zumo shield for ArduinoBluetooth shield V2.0の設定ピンの干渉です。
Zumo shield for Arduinoにおけるブザー信号の設定ピンとBluetooth shiled V2.0のRxD、TxD信号の設定ピンが干渉します。
今回、Bluetoothの送受信チェックをやり始めた時にタブレットのボタンを押してArduinoに信号を送りモータを動かそうとしたのですが、どのボタンを押してもブザーがブッといいモーターは動きませんでした。
おかしいなと調べていくとブザー信号の設定ピンがピン同士の干渉で短絡されていたようです。
下の左の写真の青い色のキャップがあるところのピンと右の写真の青い台座のところのピンが干渉します。

f:id:ken2017:20211209104337j:plain f:id:ken2017:20211209104424j:plain
本来、Zumo shield for Arduinoのブザー設定のピンは左上の写真のように青い短絡キャップをつかってピン間を短絡して使いますが、Bluetooth shield V2.0との干渉のため青い短絡キャップの使用を諦めました。
ブザーを使うのを諦めてテープで簡単に保護していましたがBluetooth shield V2.0のピントの干渉が大きくテープを破ってしまったようです。
このことと他の要因が重なりBluetoothの受信のたびにブザーがブッと鳴ってしまいました。
このこともあり、沢山あると思われていた信号の使用状況を調べてみました。
Arduinoがいいなと思う理由の一つに入出力の割り当てのフレキシブルさがあります。
信号ラインをデジタルにしたりアナログにしたり入力にしたり出力にしたり、比較的簡単に設定できます。
これを安易に考えていました。
幾つかのshieldを使う場合には簡単の信号の干渉が起きます。
今回も起きていました。
どうなっていたかというと、
Zumo shield for Arduinoは以下の信号を使っていました。
Motor Driver
   digital pin 7 : right motor direction
   digital pin 8 : left motor direction
   digital pin 9 : right motor speed
   digital pin 10 : left motor speed
LED
    digital pin : 13
Push button
    digital pin : 12
Buzzar
    digital pin : 3
Sensor array
    digital pin 4 , 5 , 11 : sensor signal
    analog pin A0 , A2 , A3 : sensor signal
    digital pin 2 : dynamic LED control
USB
    digital pin 0 : RxD
    digital pin 1 : TxD
沢山あるように思った信号は結構使っていて余裕は余りないということが判ります。
上の信号をすべて使った場合、空いているのはdigital pin 6だけになります。
これではBluetooth shield V2.0が使えないわけで上のどれかの使用を諦める必要があります。
とはいっても使わないといけないものが多く、使わないでも済むものはブザーとセンサアレイのダイナミックLED制御ぐらいです。
今回は、この2つの使用を見合わせることとしました。
参考にしたコードにも
SoftwareSerial Bluetooth(2, 3); // RX, TX
とあったのでdigital pin 2をRxD、digital pin 3をTxDにしました。

これがだまし絵でした。

ところがところが動きません。
Bluetoothが送受信できているかどうかも判らずネットで調べたところArduinoからパソコンへUSBのラインを使って信号を送り、それをArduino IDEのシリアルモニタを使えば送信データを表示できることが判り、それでデバッグを進めました。
結果、Bluetoothが送受信できていないことが判りました。
Arduino UnoとandroidタブレットBluetooth接続はできているのですが送受信ができていない。
これは参りました。
使うdigital pinを変えても動かない。
ネットで情報を探しているうちに変な記事を見つけました
それがコレ。

wiki.seeedstudio.com

変と言ってもSeeedはBluetooth sield V2.0の提供元なので提供されている情報は正しいと信じてよいと思うのですが、コードと写真が一致しないように見えたのです。
それがコレ。
写真では、ピン番号は上から順に0から7まで縦に並んでおり、TXは7番ピンが使われRXは6番ピンが使われています。
にもかかわらずコードには、RxDが7番ピンでTxDが6番ピンとなっています。
挙句の果てには写真にはピンの位置を間違えないようにね、なんて記載もあります。

f:id:ken2017:20211209113336j:plain f:id:ken2017:20211209113541j:plain

どういうこと?と思い、最初は無視していました。
何だか変なの、って感じです。
ところが色々なことをやっても動かず、ネットで下の図を見ることで、なあんだ、となりました。
この図は、ArduinoBluetooth用のHC-05の接続の仕方について書いたものですが、よく見るとArduinoのRXはHC-05のTxDに繋がりArduinoのTXはHC-05のRxDに繋がっています。

f:id:ken2017:20211209114050j:plain

当然と言えば当然で、回路があれば悩むこともない話です。
Seeedから提供されている資料には回路図が明確になく単にRxDとかTxDとあったのでコードで設定したRXとTXのピン番号と同じところの番号を繋いでいました。
すなわちコードで6番ピンをRXとしたらBluetooth shield V2.0の基板上のピンも6番をRXとして短絡していました。
これが間違いでした。
コードで6番ピンをRXと設定したら基板上では6番ピンをTXとして短絡しないといませんでした。
これは明らかにだまし絵だと思いますね。
これを治して動かした結果、上手く受信できました。
その結果がコレ。
Androidタブレットの下の図のようなアプリのボタンを使って、
上向きのボタンを押すと"w"が送られ
下向きのボタンでは"s"が送られ
左向きのボタンでは"a"が送られ
右向きのボタンでは"d"が送られるように設定しています。

f:id:ken2017:20211209120447j:plain
受信側のArduinoのコードはコレ。

f:id:ken2017:20211209120552p:plain
で、結果がコレ。

f:id:ken2017:20211209120620p:plain
ボタンを押すたびにデータが送られているのが判ります。
これでBluetoothが使えるようになりました。
これはこれでおいておいて、手持ちのBluetoothゲームパッドでの送受信をチェックし上手くいけばそれを使うようにし、ダメならばZumo RobotはRCコントローラで動かそうと思います。
今日はココまで。
では、また。

 

プライバシーポリシー お問い合わせ