変わりモノがいい!

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

今年のクリスマスプレゼントはコレ!

今年もクリスマスが来ました。

早いもので今年もクリスマスになりました。
クリスマスと言えばプレゼントです。

f:id:ken2017:20211224092158j:plain
ここ数年は、嫁の姪の子供たちに、変わったモノ、をプレゼントしています。
何年も続けていくとだんだんとネタ切れになってきます。
今年がまさにそれになりました。
プレゼントを始めたころは子供たちは小学校の低学年で、知育系の普通でないモノを選べばよく、それはアメリカには沢山あるのでアメリカのAmazonで買っていました。
そうやってみると日本の知育系のオモチャってもう少し増えてもいいのかなと思います。
これを数年続けた後は、男の子は、動く系、女の子は、かわいい系や楽器系、に移りました。
今年もこの系統で行くのですが、今年がこの系統で行く最後の年となると思います。
ということで今年は悩みました。
その結果がコレです。

男の子へのプレゼントはレゴ

レゴなんですよ。
レゴと言ってもバカにできないのです。
アメリカで見たレゴは凄くて、買うか買わないか散々悩んだのですが、日本でどこに置くかというサイズの問題から諦めたことがあります。
諦めたレゴというのがコレです。
なんと部品点数が7500です。
超巨大で価格も確か700ドルでした。

f:id:ken2017:20211224094000j:plain
これは高額すぎるので諦めて今回選んだのはコレ。
レゴ テクニックのバイクです。
この新品をメルカリで手に入れました。
Amazonで見ると2万3万するようなものですが破格の値段で手に入れました。
部品点数は467です。
来年中学になる子にどうかなとは思いましたが、動くものの仕組みを知ることは良いことなので敢えて選んだ次第です。

f:id:ken2017:20211224094422j:plain

女の子へのプレゼントはORBA

ちょっと値がはりましたが、ORBAにしました。f:id:ken2017:20211224094931j:plain
ORBAって何?という人が多いと思いますが、MIDI楽器です。
ORBAの紹介動画がコレ。


www.youtube.com


www.youtube.com

気に入ってもらえるでしょうか?
今日は今から広島へプレゼントを届けに行ってきます。
上手くいきますように。
今日はここまで。
では、また。

やっとZumo Robotがゲームパッドで動かせました。

今回も難航しました。

先週からずっとZumo Robotをゲームパッドで動かすことに注力してきましたが、やっと動かすことができました。
今回は、Arduinoの構文で戸惑いました。

f:id:ken2017:20211222140235p:plain
使ってみて思ったのは、pythonって素晴らしい、ということを再確認したことでした。
pythonで悩んだことが無いようなところでつまづいた次第です。
この記事では、Zumo Robotをワイヤレスのゲームパッドで動かすためのコードを中心に記載したいと思います。

コードの構成は?

コードは以下のものを参考にして作りました。

github.com

ここにあるUSBHIDJoystickを改造して作りました。
USBHIDJoystickはHIDタイプのゲームパッドの操作データを受信するためのコードです。
2つのジョイスティックと沢山のボタンのデータを受信します。
今回は、これに
1)ゲームパッドからのデータ受信コードの統合
2)Zumo Robotを動かすためのコードの追加
3)ゲームパッドジョイスティックのデータを元にZumo Robotの
  モーター速度を計算しZumo Robotに指示を出すコードの追加
を行いました。
では、順に説明していきましょう。

ゲームパッドからのデータ受信コードの統合

USBHIDJoystickでは、コードは下の3つのファイルに分かれています。
・USBHIDJoystick.ino
・hidjoystickrptparser.h
・hidjoystickrptparser.cpp
JoystickEventsクラスのインスタンスJoyEventsの関数が、ボタンの状態変化を検知して都度シリアルに書き出すというプログラムになっています。
これらはライブラリとして存在しているので、今回の作業で手を加えるのを避けるためにUSBHIDJoystickMotor.inoというファイルを新たに作り、これに変更を加えることとしました。
USBHIDJoystickMotor.inoは、USBHIDJoystick.inoにhidjoystickrptparser.hとhidjoystickrptparser.cppの必要なコードを抜粋して追加、書き換えをすることで作りました。
参考としたネットの記事を添付します。

qiita.com

この記事の記載内容に沿って進め、概ね問題なく作り上げることができました。
ゲームパッドからの受信成功です。

Zumo Robotを動かすためのコードの追加

これも簡単で、以下のコードの追加でOKです。
実際に使うのは、ZumoMotor.hのみですが、今後のことを考えて他のコードも追加しておきました。
#include <QTRSensors.h>
#include <ZumoReflectanceSensorArray.h>
#include <ZumoMotors.h>
#include <ZumoBuzzer.h>
#include <Pushbutton.h

モーター速度を計算しZumo Robotに指示を出すコードの追加

問題はここでした。
今回は、ジョイスティックのデータの内、左側のジョイスティックの情報を使うこととしました。

f:id:ken2017:20211215175957j:plain
左側のジョイスティックの操作でZumo Robotの走行速度と姿勢をコントロールします。
ジョイスティックの情報は一般的には下の記事のようになっています。

developer.android.com

今回は、ジョイスティックのAXIS-XとAXIS-Yのデータを使います。
僕が今回使うゲームパッドは、AXIS-Xのデータの範囲は、0から255でジョイスティックを左に持って行ったときに値はゼロで中央の時に値が127、一番右が255となっていました。
また、AXIS-Yに関しては、一番下に持って行ったときに値が255で中央の時に値が128、一番上に持っていった時の値がゼロでした。
問題は、USBHIDJoystick.inoでゲームパッドからのデータをint形式で扱っており、intの範囲が-32768から32767であるはずなのに、8ビット以上の掛け算をした場合に計算結果がへんてこりんになってしまいました。
これは未だに原因が明確には判っていません。
Arduinoのコードに慣れていないのでやってはいけないことをやってしまっているのだとは思いますが、pythonでは味わったことのない悩みというか使い方というか、兎に角面倒でした。
結局は動くコードを探した、というのが本音です。
Zumo Robotは左右2つのモーターの速度差で操舵を行います。
各モーターへの指示は、-400から400までの値で行います。
ゲームパッドジョイスティックのデータAXIS-XとAXIS-Yを使って左右のモーターへの指示値を作ります。
試行錯誤の結果、各モーターへの速度指示の基本はAXIS-Yの値を使って計算し、その値をAXIS-Xの値を使って修正し、操舵を行う、というスタイルにしました。
要は、AXIS-XとAXIS-Yの符号の組み合わせで、前進、後進、右折、左折を判定してAXIS-Yを元に計算したモーター速度に対してAXIS-Xを元に計算した速度を引いたり足したりして最終的に左右のモーターの速度を計算しました。
このコードをZumo Robotにインストールして動作確認まで終わりました。

f:id:ken2017:20211222151013j:plain
いよいよ明日は、実際に走行させてみようと思います。
それにしてもArduinoのコードは悩ましい。
色々と触って癖を把握する必要がありそうです。

(記事後記)

Arduinoを触っているうちに物欲がわき、以下のものを買ってしまいました。
まずは、カメラESP32-CAM
f:id:ken2017:20211222151602j:plain
続いて、ESP32-DEVKIT-C

f:id:ken2017:20211222151537j:plain
どちらも1000円前後で買いやすい値段でした。
色々触ってみようと思います。

 

Arduino USBホストシールドに無線ゲームパッドが繋がりました。

今回も難航しました。

前の記事でArduino Unoに載せたUSBホストシールドに有線タイプのゲームパッドを繋げてデータをン受信できるようになったと書きました。
次なるステップは無線タイプのゲームパッドをUSBホストシールドに繋げてデータを受信できるようにすることです。
ゲームパッドには色々な種類があり、USBホストシールとのライブラリーには色々なタイプのBluetooth対応のゲームパッド用のコードが準備されています。
普通に考えればPS3PS4用のBluetoothゲームパッドを準備すれば何の問題もないところです。
でも僕はPS3PS4を持っていません。
唯一持っている無線タイプのゲームパッドは、以前、Jetracer Proを買ったときに付いていたもので、今回はそれを使おうと思います。

f:id:ken2017:20211215154819j:plain
でも、このゲームパッド、本体にメーカ名も無ければ型式も書いてありません。
唯一付いているシールは、Jetracer Proの発売元であるWaveshareの名前だけが書いてあるシールのみです。
Bluetoothでの接続だとは思うのですが、ゲームパッドの電源を入れてパソコンで見てもBluetoothの接続先候補として表示されません。
一体どうやって使えばいいんだろう、というところからスタートです。

PS3互換という所から入ってハマってしまいました。

ゲームパッドにはPS3互換機が多いので多分これもそうなんじゃないかなという所から入りました。
結構いい加減な入り方です。
USBホストシールドにゲームパッドに付いていた専用のドングルを付けて電源ON

f:id:ken2017:20211215164201j:plain
ゲームパッドの方は電源を入れると早速ペアリングできたようで下の写真のように赤いLEDが一つ付きました。
f:id:ken2017:20211215164620j:plain
ちなみにペアリングが出来ない状態では、全てのLEDが赤く点滅します。

f:id:ken2017:20211215165447j:plain
そして、Arduino UnoにUSB Host Shield Library2.0の中からPS3BT.inoをインストールして走らせました。
そうするとArduino IDEのシリアルモニタには
PS3 Bluetooth Library Started
と表示されました。
おお、やっぱりPS3で良かったんだと思ってゲームパッドを色々いじりましたが応答なし。
色々やってもダメで、困り果ててWindowsパソコンにゲームパッド専用ドングルを挿してUSBデバイスとして調べてみると以下のような画面になっており、やっぱりPS3でいいんじゃないかと更に困惑してしまいました。
   上の段の右から3つ目が専用ドングルです。
   PC/PS3/AndroidとなっておりPS3で使えるとなっています。

f:id:ken2017:20211215170541p:plain
このPS3で使えるということとPS3ゲームパッド互換は全く意味が違っていることに、この時は気づきませんでした。
ネットを調べまくるうちにゲームパッドの情報をオンラインで調べてくれるサイトを見つけ、そこで調べた結果、僕が持っているゲームパッドは、メーカがShanwanというところのものだということが判りました。
Vendor IDが2563でProduct IDが0575のShanwanPs3PcGamepadとなっていました。
ちなみにVendor IDとProduct IDのリストもありましたのでリンクを添付しておきます。

A list of vendor and product IDs for known USB and Bluetooth gamepad devices · GitHub

Vendor IDとProduct IDが判ったまではいいのですが、そこから前に進めません。
悩んで悩んでネットを調べていると下の記事を見つけました。

kato-h.cocolog-nifty.com

気になった記載がコレ。
USBホストシールドに専用のUSB無線レシーバーを使っているというものです。
これで使えたという記事です。

f:id:ken2017:20211215172357p:plain

光が見えてきました。
この記事には、専用レシーバーの情報を調べるためのツールも載っていました。
それがコレ。

infinitegra.co.jp早速ダウンロードして調べてみました。
その結果、僕のゲームパッドは上の記事にあるゲームパッドのF710と同じHIDデバイスとして定義されているものでした。
調べた結果がコレです。
ShanWan PC/PS3/Android _HIDという記載が見えます。

f:id:ken2017:20211215173025p:plain
より詳しく情報を見ていったものがコレです。

f:id:ken2017:20211215173227p:plain

f:id:ken2017:20211215173316p:plain

HIDとはヒューマンインタフェースデバイスのことで概要は以下の記事にありました。

docs.microsoft.com

そういえばUSB Host Shield Library2.0のライブラリー群の中にHIDフォルダーがありました。
記事によるとHIDフォルダーの中のUSBHIDJoystickが使えそうな感じでした。
DirectInputモードで使えば使えるようなことが書いてあります。
DirectInputモードってなんだ?と思って調べるとモードの切り替え方が書いてありました。

mashigure.hateblo.jp

でも、僕のゲームパッドではDirectInputモードのLED配置にはなりませんでした。
まあいいか、と思い、兎に角繋いでみようと、Arduino UnoにUSBHIDJoystick.inoをインストールして動かしてみました。
するとArduino IDEのシリアルモニタに
Start
の表示は出ましたが、ゲームパッドを動かしても何も変化せず。
これもダメか、とは思いましたが、ひょっとしてと思い、ゲームパッドのHOMEボタンを長押しして赤いLEDが2個つくようにしました。

f:id:ken2017:20211215175957j:plain
そしてゲームパッドを動かしてみると、なんとシリアルモニタにゲームパッドからの情報が表示され始めました。
それがコレ。

f:id:ken2017:20211215180434p:plain
やっと動きました。
いよいよ残りの作業は、Zumo Robotへの搭載です。
今日はココまで。
では、また。

(参考資料)
Jetracer Pro

f:id:ken2017:20211215160036j:plain

www.waveshare.com

 



Zumo Robotリモートコントロール 進捗状況報告

試行錯誤の結果、ちょっと進みました。

今回も悪戦苦闘中です。
前回の記事でBluetooth shieldが動いたと書きました。
従って最悪でもAndroidタブレットでZumo Robotを動かすことはできそうです。
でも目標はワイヤレスなゲームパッドでZumo Robotを動かすことです。
Bluetooth shieldを手持ちのゲームパッドで使えるようにしたかったのですが、どうも上手くいかないので追加でUSBホストシールドを買ってドングルをUSBに挿してゲームパッドを使えるようにしようと思いました。
今回の記事は、USBホストシールドを動かすまでの作業内容を備忘録として記載するものです。

f:id:ken2017:20211214101054j:plain

USBホストシールドってどんなもの?

USBホストシールドは、その名の通りUSBを使うためのshieldです。
USBホストシールドの使い方を含めた説明はコレ。

ht-deko.comハードウエアの説明はコレ。

chome.nerpa.tech

いつもお世話になっているGithubの記事はコレ。

github.com

USBホストシールドを使う上での注意事項は3点です。
一つ目は、使用電圧に応じて基板に対してハンダブリッジをやらないといけないということです。
例えば5Vで使う場合には下の写真の赤い四角で示した3か所にハンダブリッジを行う必要があります。

f:id:ken2017:20211214102709j:plain
二つ目は、使用している信号SSとINTに対するピンを割り当ててやる必要があります。
SSとINTはデフォルトでピン番号10番と9番に接続されています。
Zumo Robotではピン番号10番と9番はモータの速度信号として使用しているのでSSとINTのピン番号を変更する必要があります。
そのため、まずはSSとINTに繋がっている配線を切断する必要があります。
基板の上にSSとINT用のスルーホールがあるので、そのスルーホールとコネクタの10番ピン、9番ピンを繋いでいるパターンを切断します。
切断後の写真がコレ。
写真上の左にあるコネクタの下の所が削れていますが、これによりコネクタのピンとスルーホールへの配線を切断しました。

f:id:ken2017:20211214111240j:plain
新たにSS用にピン番号6番を、INT用にピン番号3番を割り当てました。
配線を行った写真がコチラ。
白い基板がUSBホストシールドですが、その基板の右上にあるSSとINTのスルーホールに配線をハンダ付けし、そのケーブルをArduino Unoのコネクタにあるピン番号3番と6番のスルーホールにハンダ付けしました。

f:id:ken2017:20211214103233j:plain
コードはコレ。
typedef MAX3421e<P6, P3> MAX3421E; 
三つめはライブラリのインストールです。
USBホストシールドに必要なライブラリは上に示したGithubの中に入っています。
これをフォルダーの所定の位置に入れてやれば概ねOKですが、幾つか注意が必要です。
注意は3つ。
一つ目は、上に書いたSSとINTのピン配置の指定で、これはファイル名UsbCore.hの中のコードを修正して行います。
二つ目は、Arduino Unoとパソコンを接続しているUSBラインの転送速度の修正です。
ライブラリに初期状態として入っている速度では速すぎて文字化けする場合があります。
これに対応するにはUSBホストシールドを使うアプリ(例えばゲームパッド用のアプリとか)の中にあるコードを以下のように修正します。
Serial.begin(9600);
三つ目は、ゲームパッドの種類に応じたアプリを入れてやる必要があるということです。
ライブラリを入れて最初はPS3用のアプリを使おうとしましたが動きませんでした。
あれ?と思ってゲームパッドを見てみると、それはLogicoolのF310でした。

f:id:ken2017:20211214114350j:plain
ネットでしらべてみるとF310用のアプリがあるようでそれを入れないといけませんでした。
それがコレ。

github.com

また、インストールしているUSB Host Shield Library2.0のバージョンによってはバグがあるようで上の記事にあるパッチを当てないといけないとのことでした。
これらのことを全て行ったうえで動かした結果がコチラ。
Arduino Unoがゲームパッドを認識し、ゲームパッドのボタンが押されたことやジョイスティックの位置情報がキチンと認識されています。

f:id:ken2017:20211214113312p:plain
有線でゲームパッドを使えるところまできました。
残りは無線でゲームパッドを使えるようにすることです。

思わぬ落とし穴が待っていました。

有線でゲームパッドが使えるようになったのでUSBホストシールドをZumo Robotに繋いでZumo Robotを動かそうとしました。
そこで問題発生です。
USBホストシールドのUSBコネクタとZumo Robotのコンデンサが干渉して実装できない問題があり、そのために両者の間に拡張基板を入れて干渉を防ぐ予定でした。
   この写真の左中央上にあるコンデンサと右中央上にあるUSBコネクタが干渉

f:id:ken2017:20211214113937j:plain
購入した拡張基板がコレ。
パッと見は使えそうです、が・・・

f:id:ken2017:20211214114201j:plain
あれ?コネクタとピンの位置がズレている。

f:id:ken2017:20211214114313j:plain
これでは中継基板になりません。
元々が下のような使い方なので中継基板ではなく一番上に載せる基板として作られているようです。

f:id:ken2017:20211214114540j:plain
ということで急遽ピンソケットを追加で手配しました。
それがコレ。
6ピン用1個、8ピン用2個、10ピン用1個手配しました。


f:id:ken2017:20211214114802j:plain

akizukidenshi.com

最初からこれを買えば良かったんですけどね。
ということで紆余曲折の最中にいます。
今日はココまで。
では、また。

 

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コントローラで動かそうと思います。
今日はココまで。
では、また。

 

Zumo Robotをどうやって動かすかで試行錯誤しています。

Zumo Robotは久しぶりに可能性を感じさせてくれるオモチャです。

以前の記事でZumoRobotによるライントレースのことを書きました。
ライントレースができたことはそれなりに楽しかったのですが、Githubにあるコードをそのまま入れれば問題なく動いたわけで満足度という意味ではチョット、という感じでした。
Zumo Robotはshieldという拡張基板を付けれるわけで色々な機能を追加すれば結構楽しめると思って買ったわけでして、いよいよ行動開始です。

f:id:ken2017:20211206175503j:plain

ところがこれが大変なくせ者でした。
先週は1週間、悩みに悩まされ、使えない部品を買ってしまう羽目になりました。
今日は先週のことを反省してZumo Robotに関する情報を頭に入れなおすところから始めました。
すると少し光が見え始めましたので先週起きたことと今後の展開について書いていきたいと思います。

先週の顛末

調子がイマイチの時はこんなもんかと思うくらいハズレまくりました。
まずやろうとしたことは、ゲームパッドで動かすことでした。
ゲームパッドBluetoothで動くと思い込んでBluetooth shield for arduino unoをメルカリで買いました。
姿はこんなものです。

f:id:ken2017:20211206181832j:plain
これをZumo shieldの上にコネクタで接続します。
段重ねですね。
知識不足だったというか、この基板に使っているBlutooth用のデバイスはHC-05でこれに対応する相手でないと通信できません。
このあたりのことを何も考えずに買ってしまいました。
結果、手持ちのゲームパッドでは動かない、となりました。
まず一つ目の失敗です。
ちなみにBluetooth shieldのデータはコレです。

f:id:ken2017:20211207101728j:plain

wiki.seeedstudio.com

色々調べるとAndroidタブレットとかにアプリを入れれば使えそうな感じです。
でも僕はタブレットではなくゲームパッドを使いたいなと思っていたので一旦ここで追及するのをやめました。
次に考えたのが、USBにゲームパッドのドングルを挿して使おう、ということです。
ということで買ったのがUSBホストシールドです。
これもメルカリで買いました。
モノはコレです。

www.amazon.co.jp

ネットでの記事も調べArduino Unoで動くことを確認したり使うドングルとの相性があることも調べて相性の良いとされているドングルも買いました。

www.planex.co.jp

ところがですね、USBホストシールドをZumo Robotに実装して電源を入れた途端にZumo Robotの片側の車輪が勝手に動き始めました。
???なんで???
となり、何度かやり直しましたが結果は同じ。
だめじゃない、となりました。
多分、Zumo shield for arduinoで使っている信号とのバッティングがあるのだと思います。
これが2つ目の失敗です。
ここまでで大散財です。
そういえばZumo Robotの発売元のPololuではshieldを売っていなくて、マニュアルを読むとリモート操作に関してはRCコントローラーが出ていました。
さてどうしようと思い悩み、初心に帰ってZumo Robotのマニュアルをキチンと読むことにしました。

最初からチャンと読まないとダメですね。

Zumo Robotのマニュアルはコチラ。

www.pololu.com

このなかに、Zumo Robotにはどういう機能があって、その機能のために信号のどれを使っていて、別の機能を搭載するときに当該機能を無効にするにはどうすれば良いかということが書かれています。
回路図もあるので判りやすいです。
マニュアルを見ながら思うようにいかなかった原因を調べようと思います。
今の姿での修正案としては、
1)Bluetooth ShieldをAndroidで使ってみる。
  まずこれが一番ですね。
  Androidタブレットとの接続確認はできました。
  あとはアプリが動くようにすればOKと思います。
  ネットで調査は必要ですが大丈夫かなと思います。
  でも、これは暫定であってあくまでもコントローラでの操作を目指したいと
  思います。
2)USBホストシールドの問題点を見つけ対応する。
  信号のバッティングであれば解決可能とは思います。
  1)が終わってからやって妙と思います。
3)BluetoothのデバイスとしてHC-05ではなくNRF24L01を使うように追加の
  ハードを載せる。
  これはNRF24L01を使ったジョイスティック付きコントローラをクモ型ロボット
  用に持っているのでその活用を図るものです。
       NRF24L01のモジュールはこれなので実装には結構な手間がかかりそうです。
  今回の件で、Arduinoのshieldについて色々と調べました。
  Zumo Robotにおける最大の問題はArduinoを裏返しで搭載することで、その結果、
  全てのShieldも裏返しで搭載します。
  これが不便極まりないのです。
  LCDを載せているshieldはLCDが見えない、外からの配線を持ってこようにも
  接続のコネクタがつけられない、本当にやりにくいです。
  ということで本件をやるためには、何らかの工夫が必要で時間をかけて考えて
  みようと思います。
  先々も悩みそうなので。
    f:id:ken2017:20211207104005j:plain

4)RCコントローラを使えるようにする。
  Zumo Robotのマニュアルの中にRCコントローラが出ていたこともあり、今は
  Zumo RobotをRCコントローラ(プロポ)で動かそうかな、と思っています。
  下の記事がその説明です。

www.pololu.com

  Zumo RobotにRC受信機を搭載することになります。
  ちなみにこんな感じになります。

   f:id:ken2017:20211207110237j:plain
   また接続はコレです。
   スロットルとステアリング用の信号を割り当てています。
   これも要注意で、ラインセンサ用の信号とバッティングしている可能性が
   ありますので場合によっては信号配置を変えます。
   f:id:ken2017:20211207110331p:plain
  また出費か?という面はありますが、今までに購入した部品は別で活用すれば
  OKなので何の問題もありません。
  1)で動くようにしながら、並行してRCコントローラの調達に入ります。
  高いものは買えないので安いので我慢です。
  今の候補はコレです。

ということでZumo Robotを動かすことに注力します。
今日はここまで。
では、また。

(参考動画)
RCコントローラの使用例です。

www.youtube.com

 

ラズパイオーディオが気に入りました。

Volumio結構いいです!

Volumioの使い方が判らない時は、ウェブラジオしか聴けないのかなと思っていましたが、家中のCDを探したら数枚のCDを見つけることができました。
早速、Volumioのフォルダーに入れm4aファイルとして楽曲を楽しみ始めました。

f:id:ken2017:20211206104137p:plain
予想以上にいいかも。
音楽的センスがあるわけではないのであくまでも個人的な感想ですが音が澄んでいて綺麗です。
心地よい音を楽しめています。
今回Volumioに入れたCDはコチラ。
古いものばかりですが懐かしいものばかりです。
特に拘りのジャンルがあるわけではないのでバラバラです。

ENDLESS VIOLIN

ENDLESS VIOLIN

Amazon
Viajando

Viajando

Amazon
Ancora (Chi)

Ancora (Chi)

Amazon
THE BEATLES 1

THE BEATLES 1

Amazon
No Night Land(DVD付)

No Night Land(DVD付)

  • アーティスト:moumoon
  • エイベックストラックス
Amazon

当分の間、Volumioで遊べそうです。
皆さんも如何?

今日はここまで。
では、また。

 

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