M5Stack ATOM – Wi-Fi ラジコンカー
この記事は「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改・ハードウェア編)」の改訂版でM5Stack ATOMを使用してラジコンカーを作ります。
全ての部品はブレッドボード上にジャンプワイヤーを使って接続することができます、ハンダ付が苦手な方にもお試しいただけます。
組立て写真
この記事は「ESP-WROOM-02/32 Wi-Fi ラジコンカー(改・ハードウェア編)」の改訂版でM5Stack ATOMを使用してラジコンカーを作ります。
全ての部品はブレッドボード上にジャンプワイヤーを使って接続することができます、ハンダ付が苦手な方にもお試しいただけます。
組立て写真
液晶表示のオシロスコープ (初代)
今回、その後にM5Stackに移植した版を話題のWio Terminalに移植しました。
M5StackやWio TerminalのADCはあまり高速ではないために「オシロスコープ」と名乗るのはおこがましい性能ですが、ボタンでのメニュー操作のお試しとして移植しています。
ソース公開前にベータ版をここに置いておきます、お試しいただければ幸いです。
M5Stack、Wio terminal、W2B(ESP32+480×320のタッチパネル液晶)での動作風景
信号名 | ポート |
CH1入力 | GPIO35(A7) |
CH2入力 | GPIO36(A0) |
テスト信号1出力 | GPIO2 |
テスト信号2出力 | GPIO26(DAC2) |
信号名 | ポート |
CH1入力 | A0 |
CH2入力 | A1 |
テスト信号1出力 | BCM2 |
テスト信号2出力 | DAC0 |
M5Stack、Wio terminal、W2Bでの主クリーンショット
・M5Stack用実行モジュール(LovyanLauncher対応)・・SScope095.bin
・Wio Terminal用実行モジュール(ExtFlashLoader対応)・・ apps
Wio Terminalについては、SeeedStudio「Wio Terminal」で詳しく書かれています。
スマートハレタの「24×24マトリクスLED」に表示するドライバを書きました。
今流行の「荒ぶるパロット」
GIFファイルから連続画像に変換して、PPIFFSにファイルとして保存し、繰り返し表示することで、動画表示しています。
このドライバでは、2値のビットマップデータを対応する位置のLEDに書き込むことしかしていませんので、円や四角形などの描画は自前で用意する必要があります。
・マトリクスドライバの初期化
・マトリクスのクリア
・バッファ上の指定ビットのオン/オフ
・ビットイメージの書き込み
・バッファからマトリクスLEDアレイへの書き出し
プログラム本体はスマートハレタだけではなく、ESP32が搭載されていて、「LovyanGFX」や「TFT_eSPI」で使用可能な色々なLCDに対応できます。
これを使って、簡単に動画再生みたいなことができるようになります。
#define 一覧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// ------------------------------------------------ //#define USE_TPC //#define USE_SD //#define USE_MMC #define USE_FFS //#define USE_LOVYAN //#define USE_TFT_eSPI #define USE_SHARETA //#define USE_ST7789 //#define USE_ILI9341 //#define USE_ILI9486 //#define USE_ILI9488 #define USE_24 // for 24 x 24 / 24 x 18 //#define USE_240 // for 240 x 180 //#define USE_320 // for 320 x 240 //#define LINE_BUFF //#define LINE_BUFFS //#define FRAME_BUFF #define FRAME_BUFFS 1100 #if defined(USE_LOVYAN) & defined(USE_MMC) & !defined(USE_TPC) //#define USE_DMA #endif // ------------------------------------------------ |
ダウンロードはこちらから:
ESP32_FFMovie3
スマートハレタとは・・
「スマートハレタ」の特長
「スマートハレタ」は、『トップ ハレタ』の本体ボトルに装着して使用するIoTデバイスです。ご家庭のWi-Fiを通して自宅エリアのリアルタイムの天気予報と連動します。お洗濯の時に、ボトルを持ち上げると、「外干し」、「部屋干し(降水確率10%以上)」を即座に判断し、アイコン、光、音声でお知らせします。さらに、季節に応じた洗濯の豆知識を専用アプリにお届けします。ライオン株式会社のプレスリリースより
ネットで「スマートハレタ HACKS (その1) ハード構成の調査と表示制御をやってみる」を見つけて、キャンペーンではなく(キャンペーンは既に終わっていました)、ネットオークションで入手しました。
スマートハレタ(以下、ハレタ)は、CPUにESP32を採用しており、Bluetooth、Wi-Fiでの通信ができ、LEDマトリクスやフルカラーLED、MP3デコーダなど色々と遊べるデバイスが沢山搭載されています。
主なデバイス:
・ESP32-WROOM-32
・MP3(VS1053B) (MP3デコーダ)
・2MByteFlash(Winbond25Q16) (案内音声が格納されている)
・8×8 LEDx9+16K33x5 (24×24の白色LEDマトリクス表示板)
・WS2812Bx17 (フルカラーシリアルLED)
・ロードセル(SC616C-750g)+ADC(HX711) (750gまでの重量測定)
・RTC(DS1307)+1F/5.5V (RTC+スーパーキャパシタバックアップ)
・TXS0108E (レベルシフタ)
・LM386+スピーカー (音声案内)
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 端末から操作します。
ラジコンカー本体のハード構成は変更ありません。
操作アプリ画面
暫定版として3Dデータ(.stl)を下記に公開します。
ottoDIY2ObnizTOPBOT4.zip
本体サイズ比較
(W) | (D) | (H) | |
---|---|---|---|
オリジナル | 69 | 69 | 70 |
obniz版 | 75 | 75 | 76 |
オリジナルデータ: Otto DIY build your own robot https://www.thingiverse.com/thing:1568652
この記事は「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に移植しました。
2チャンネルで最大40k/sサンプリングできますので4kHz程度の波形は見ることができます(^-^;
*なんとなく波形らしいのが見えればいいや・・程度のものです、「使い物にならない!」などのクレームはご容赦ください(*- -)(*_ _)ペコリ
立上がり、立下りエッジでのトリガ機能もあり、最後の観測画面をM5Stack内蔵のSDカードに保存(表示画面のスナップショットをBMP形式で保存)したり、観測値をUARTにCSV形式で出力することもできます。
M5Stackのアナログ入力を使って波形読取りを行っていますので、入力できる電圧は最大で3.3Vです、通常使われると思われる5Vを観測するためには下記のような抵抗での分圧回路が必要になります。
デフォルトでは、下記の抵抗分圧で接続されていることを想定していますので、最大観測電圧を5V以外としたい場合は抵抗値を変更する必要があります。
*負電圧を入力したり、3.3Vを超える電圧を入力するとM5Stackの内部にダメージを与える可能性があります、ご注意ください。
【続きを読む】