M5Stack ATOM – Wi-Fi ラジコンカー
この記事は「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改・ハードウェア編)」の改訂版でM5Stack ATOMを使用してラジコンカーを作ります。
全ての部品はブレッドボード上にジャンプワイヤーを使って接続することができます、ハンダ付が苦手な方にもお試しいただけます。
組立て写真
この記事は「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改・ハードウェア編)」の改訂版でM5Stack ATOMを使用してラジコンカーを作ります。
全ての部品はブレッドボード上にジャンプワイヤーを使って接続することができます、ハンダ付が苦手な方にもお試しいただけます。
組立て写真
Ambientは、簡便なシステム構成で環境データを送信、蓄積、可視化(グラフ化)を可能にするアンビエントデーター株式会社が提供するサービスです。
Ambientへデータ送信するためのハードウェア、ソフトウェアは、Obniz、IchigoJam、ESP-WROOM-02、ESP-WROOM-32などの様々な構成でのサンプルが用意されています。
ここでは、Arduino UNO+ESP-WROOM-02(ATコマンドモード)の(あまり一般的に選択しないであろう)構成での運用を構築します。 このハードウェア構成で運用するのに必要なスケッチを探したところ、1000円あったら電子工作 ThousanDIYの@tomorrow56氏がSpresenseボード向けに開発、販売されているWi-Fi add-on board for SPRESENSEボードがESP-WROOM-02をATコマンドモードで使用してAmbientへのデータ送出するサンプルコードを提供されているのを見つけました。
こちらのサンプルはSpresense+ESP-WROOM-02の構成用ですが、Arduino UNOで多少の修正は必要ながらコンパイルすることができました。
然しながら、Spresenseと比べてRAM容量が圧倒的に少ないために計測データをAmbientサーバーへの送出形式に変換するデータ領域が不足で、コンパイル時に警告が表示され、実際に動作が不安定(正しく動作しない)になります。
@tomorrow56氏のサンプルは、Ambientで提供されているライブラリとの親和性を主眼にSpresense向けに作成されてい(るものと思い)ますので、Arduino UNOのようなボードでの運用は難しそうです。
ということで、サンプルコードの借用は断念して、ESP-8266(ATコマンドモード)用に作られた「HttpClient_ESP8266_ATライブラリ」を使わせていただくことにしました。
qoosky / Arduino_HttpClient_ESP8266_AT
https://github.com/qoosky/Arduino_HttpClient_ESP8266_AT
旧記事「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改)」は、スマホのジャイロセンサーを使って操作するものでしたが、最新のブラウザからは操作できなくなっています(^-^;)
改修するのが難しそうなので、以前から考えていたジョイスチック風の操作画面に改変しました。
メインのスケッチは、ほぼそのままでスマホ上の操作画面だけを書き直しました。
旧記事と同様に iPhone または Android 端末から操作します。
ラジコンカー本体のハード構成は変更ありません。
操作アプリ画面
この記事は「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改)」のハードウェア編になります、市販のESP-WROOM-02またはESP-WROOM-32のボードや汎用の車体を使ってラジコンカーを組立てます。
ご注意:スマホの最新のブラウザではセンサー値取得が制限されているために使用できません、新しい記事「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改2)」を検討してください(*- -)(*_ _)ペコリ
旧記事「ESP-WROOM-02 Wi-Fiラジコンカー」は、投稿日が「2015/09/15」とかなり古いですが、このブログ中では2番目に来訪者の多い記事です。(1番は「Scratch Boardを作る」です(^-^;)
旧記事は今でもそのままで動作しますが、久々に更新することにしました。
モータードライバーは、当時と変わらず安価で入手可能ですのでそのままにして、ソフトウェアを改訂します。
元記事では、スマホアプリや自作のリモコンでUPD通信を使って操作する方式でしたが、今回はスマホのジャイロセンサーを使って操作することにしました、ラジコンカーがWebサーバーとして動作し、スマホのブラウザから接続することになります。
(スマホは iPhone または Android)
ご注意:新しいM5Stack by M5Stack バージョン 0.1.9(以降?)では使用できません(*- -)(*_ _)ペコリ
M5StackはESP32を使用して小型のケースに液晶LCDやSDソケットなどが組み込まれています。
センサーデバイスなどをケースの外周に露出されているコネクタに接続することで簡単にお試しができるようになります。
小型で綺麗な表示ができる液晶LCDですが、残念ながらそのままでは日本語フォントを表示することができません。
下記のような画面が表示できるようになります。
ESP-WROOM-02には32Mbit(4MByte)のFlashメモリーが搭載されています。このFlashメモリー内の最大3MByteをFlash File System(FFS)に割り当てることができます。(注あり)
音楽ファイルのような大きなファイルは格納できませんが、スケッチ実行時に使用するSSIDやパスワードなどのパラメータの保存に使うには十分な大きさです。
Flash File Systemについては、Referenceの「File system」に説明があります。
https://github.com/esp8266/arduino-esp8266fs-plugin
前記事の「Arduino+7Seg LED+RTCでデジタル時計」にESP-WROOM-02を接続して、NTP時刻同期します。
WROOMはWi-Fiアクセスポイント経由で60秒毎(正常動作が確認できたら間隔は長くする)にタイムサーバに接続し、標準時刻を受信します。受信した時刻情報はUART経由でArduino UNOに送出し時刻を同期させます。
Arduino UNO側のスケッチはそのままです。
Arduino+ESP-WROOM-02デジタルクロック全体写真