GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。
GR-LYCHEEに搭載されたESP32について、まだ製品に搭載するかも決まっておらず、使用方法も確立しているわけではありませんが、基本的な使い始めについてここに記載していきたいと思います。
こちらのスレッドで議論させていただきましたが、AkagawaさんのおかげでESP32をUSB0経由で制御やリプログラミングができるようになりました。本当にありがとうございました。
ESP32はデフォルトの状態ではESP8266と違ってATコマンド用プログラムが書き込まれておらず、Wi-Fi通信に限らず、BLE通信もできません。Wi-Fiは一部の機能をSSCコマンドでお試しできますが、例えばサーバーやクライアントとして機能するには不十分です。このため、ESP32にプログラムを書き込む必要があります。
書き込みを行うために、まずはESP32と通信できる状態にします。Webコンパイラ、あるいはe2studioのプロジェクトテンプレート V0.05には通信するためのプログラムが記述されていますが、以下のプログラムをGR-LYCHEEに書き込んでください。
#include "mbed.h"#include "USBSerial.h"USBSerial pc(0x1f00, 0x2012, 0x0001, false, 17000); // connect_blocking = false, buf_size = 17000RawSerial esp32(P3_15, P0_2);InterruptIn button0(USER_BUTTON0);InterruptIn button1(USER_BUTTON1);DigitalOut esp32_en(P5_3);DigitalOut esp32_io0(P3_14);static uint8_t usb_send_buff[64];static void settings_change(int baud, int bits, int parity, int stop) { esp32.baud(baud); esp32.format(bits, (SerialBase::Parity)parity, (stop == 0) ? 1 : stop);}static void button0_fall(void) { esp32_en = 0;}static void button0_rise(void) { esp32_en = 1;}static void button1_fall(void) { esp32_io0 = 0;}static void button1_rise(void) { esp32_io0 = 1;}int main() { pc.attach(&settings_change); // check ESP_IO0 if (button1 == 0) { esp32_io0 = 0; } else { esp32_io0 = 1; } // button setting button0.fall(&button0_fall); button0.rise(&button0_rise); button1.fall(&button1_fall); button1.rise(&button1_rise); // reset esp32_en = 0; Thread::wait(100); esp32_en = 1; while (1) { if (esp32.readable()) { int idx = 0; usb_send_buff[idx++] = esp32.getc(); while (esp32.readable() && (idx < 64)) { usb_send_buff[idx++] = esp32.getc(); } pc.writeBlock(usb_send_buff, idx); } if (pc.readable()) { esp32.putc(pc._getc()); } }}
プログラムを書き込んだ後、USB0(bin書き込み用と逆側のUSB)をPCにつなげます。USBドライバはWindows 10, Mac以外の場合に必要になります。こちらを参考にドライバを適用してください。
ESP32のENとIO0をユーザースイッチで操作できます。押すとLOW、離すとHIGHです。
シリアルモニターを開いてボーレートを115,200に設定し、ENボタンを押すとブートプログラムが起動してメッセージが表示されます。
次にESP32のプログラムを書き換えるために、ダウンロードモードにしてみます。
IO0とENを一緒に押して、ENを先に離します。その後IO0を離します。そうするとESP32がダウンロードモードになります。シリアルモニターで表示すると、以下のようなメッセージが表示されます。
この状態で、ESP IDFやArduino IDEでのプログラムが可能になります。やり方は他のブログなどに掲載されているため、省きたいと思います。その内要点だけ記載したいと思います。
ESP32でWi-Fi & BLE接続にチャレンジしようと思っています。
初歩的な質問で申し訳ないのですが、
上記にて公開頂いている(元を辿ればESP32をなんとかしたいのスレッドですが)の
ATコマンド用FWでは、Wi-Fi接続のみ可能なのでしょうか?
BLEとWi-Fiを使うには、IDFかArduino IDEでATコマンド用FWを拡張するなり
新規にプログラムを作ってやって、LYCHEEとESP32間は今のAT用FWと同じく
UARTで通信する…という考えなのですが、イメージ合ってますでしょうか?
ESP32のライブラリ(GR-LYCHEE側)をアップデートしました。https://github.com/d-kato/mbed-gr-libs
以下の変更が含まれます。
・接続性の向上・socket_bind()、socket_listen()、socket_accept()の実装
これにより、GR-LYCHEEをWebサーバとして使用できるようになります。また、Webサーバ機能を試すためのサンプルとして以下を公開しました。
GR-LYCHEE Webカメラサンプルhttps://github.com/d-kato/GR-Boards_WebCamera
これは、下記GR-PEACH WebカメラサンプルのGR-LYCHEE版となります。https://developer.mbed.org/teams/Renesas/code/GR-PEACH_WebCamera/
直ぐに試したい方はbinファイルをご用意しましたので、こちらでお試しください。
ESP32 ATコマンド用ファームウェア (書き込み方は上記GR-Boards_WebCameraを参照)https://github.com/d-kato/GR-Boards_WebCamera/raw/master/docs/esp32-at_bin.zip
GR-LYCHEE Webカメラサンプル .binファイル