Wi-Fiラジコンカー(2)2015/10/13加速度センサ(ADXL345)を使ったWi-Fiラジコン・コントローラ加速度センサ(ADXL345)を使ったWi-Fiラジコンカーのコントローラを作りました。スマホを使えない幼児向けのコントローラになります。ESP-WROOM-02にI2Cで3軸加速度センサ(ADXL345)を接続します。AP(SoftAP)モードのラジコンカーに接続し、UDPパケットで左右のモータの速度制御データを送信します。UDPパケットをiOSCの形式に合わせることでラジコンカー側の変更を不要にします。このコントローラをおもちゃの「魔法の杖」とか「おきあがりこぼし」などに組込めば面白いかと・・・(^-^;操作の方法これを使って操作してみました。:Trackbacks:1コメント:10初めまして、何時も楽しく拝見させて頂いてます。70歳を過ぎた工作好きの爺さんParadiseと申します。私は以前より、スマホを使わずにESP8266のUDP通信にてROBOTSを制御したいと考えてましたが、何せプログラムが超初心者で自分でスケッチを書く事が出来ません。受信回路の方はアンドロイドスマホから上手く制御出来てますが、送信回路の方が上手く働きません。ADXL345は働いてるようですが、DATAを送信できてないようで、原因の特定が出来ていません。お忙しいと思いますが、時間の有る時で結構ですのでご教示をお願いします。以下にシリアルモニターのデータの一部を添付しましたので宜しくお願いします。64また、この送信機が上手く完成したら、加速度センサーを任天堂Wiiヌンチャクのジョイスティック(I2C信号出力)に替えて操作出来れば使い易いと考えてます。(構想だけですが!)長くなりましたが、宜しくお願い致します。64===提示されたログ内容には異常な点はありません。「stat=0」から「stat=1」までは、コントローラが水平状態になるのを待っているログです。「stat=1」が表示された以降、コントローラーの傾斜度に応じた左右のモーターの回転指示を送出します。64」では、傾きが少ないために回転指示は「64=静止」です。0=最大逆方向回転、64=静止、127=最大正方向回転としています。64」以降のログをご確認ください。「stat=0」から「stat=1」までの間は、ラジコンカー側のLED(ヘッドライトのつもり(^-^;)が速い点滅をします。この点滅は、UDPパケットで「ON」と「OFF」を交互に送出しています、この点滅が始まることでラジコンカーとコントローラーのWi-Fi通信が確立されてUDPパケットが送出されていることが確認できます。解決しない場合は、再度ご連絡ください。gojiさま、早々のご返事有難うございます。今朝から再度テストを行いました。64」以降は角度に応じた数値の変化を確認出来ていましたが、書くのを怠りお申し訳ありません。「stat=0」から「stat=1」までの間のラジコンカー側のヘッドライトの点滅がしないので、この辺り(UDP送信)に何か問題があるようです。スケッチコ-ドのコピーですが、前にADXL345のソースコードを、後にmainのソースコードを配置しましたが、手順に問題ないでしょうか?。お忙しところを申し訳ありませんが、アドバイスをお願い致します。投稿したソースコードで再実験しましたが、問題は見つけられませんでした。受信側にデバッグコードを書いて、受信できていないのか、受信した内容が期待している形式と異なっていないかをチェックするしかないかと思います。問題ないと思いますが、私は下の画像のようにしています。gojiさま、お手数をお掛けして申し訳ありません。作り替えてテストしましたが、結果は同じでした。UDPまではOKのようですが、データーの受信が出来ません。gojiさまのアドバイスのように受信側にデバッグコードを書いて、受信できていないのか、受信形式等をチェックするしかないようですが、情けないことにソフトウェアが素人なのでデバッグコードが書けず、本日はここで止まってしまいました。何か良い方法が有ればアドバイスをお願い致します。ご無理を言って申し訳ありません。Wi-Fiラジコンカー」にある受信側のソースコード「ESP8966CAr.ino」にデバッグコードを書き加えてみてください。gojiさま、ご親切なアドバイス有難うございます。このプリント文はアンドロイド版受信コードに入ってたので使ってました。スマホから受信するとシリアルモニターにDATAが表示されるのですが、送信機からの信号が入りませんでした。私はESP8266のソース書き込みに自作のNodeMcuを使ってるので、次の方法を試してみました。LevelをWiFiに設定して受信側ソースコードの書き込みを実行すると、シリアルモニターにWiFiの受信状況が表示されました。その結果、スマホからの受信モニターは次の通りです。C=0,L=110,R=109とDATAがシリアルモニターに表示されます。7とモニターされ、先にLeaveが出るのでjoinしてもタイミングの遅れにより受信できないのではと考えます。受信機側でjoinを確認後、受信動作をスタートするようにすれば受信できるのではと考えますが、Loopの最初にそのコードを記述する方法が判りません。試行錯誤してみたいと思います。余談ですが、先に教えて頂いたArduinoIDEのマルチタブはVer1.6.7のバグでScopeエラーが出て使えなかったのですが、3日前にリリースされたVer.1.6.8でバグが解消されて使えるようになりました。長文になりましたが、初心者の私にお付き合い頂きまして感謝いたします。有難うございました、今後ともよろしくお願い致します。gojiさま、先に送りました文章に一部誤りがありました。