ESP-WROOM-02を活用!Arduinoライクにインターネット接続を簡単に。
以下のContaベースボードにはESP-WROOM-02が搭載されています。ESP-WROOM-02とマイコンはUARTで接続されており、ATコマンドでWi-Fi機能を制御できます。WiFiEspATライブラリを使うと、ATコマンドを意識せずにArduinoのような簡単なコードでネットワーク接続が可能です。
- Picossci 2 Conta™ Base(ESP-WROOM-02/RP2350A搭載)
- Picossci Conta™ Base Board(ESP-WROOM-02/RP2040搭載)
- Raspberry Pi Pico用 Conta™ベースボード(ESP-WROOM-02搭載)
- SPRESENSE用 Conta™ベースボード(ESP-WROOM-02搭載)
WiFiEspATライブラリを使用したコード
例えば、以下のようなコードで、Arduino IDEのようにWi-Fi接続を行うことができます。シリアルモニタを開くとArduinoのアスキーアートが表示されます。
WiFiEspATライブラリはArduino IDEのライブラリマネージャからインストールできます。
#include <WiFiEspAT.h>
// Picossci 2 Conta™ Base(ESP-WROOM-02/RP2350A搭載)
// #define RX_PIN 9
// #define TX_PIN 8
// Picossci Conta™ Base Board(ESP-WROOM-02/RP2040搭載)
// #define RX_PIN 9
// #define TX_PIN 8
// Raspberry Pi Pico用 Conta™ベースボード(ESP-WROOM-02搭載)
#define RX_PIN 17
#define TX_PIN 16
#define AT_BAUD_RATE 115200
const char* server = "arduino.tips";
const char *ssid = "";
const char *password = "";
WiFiClient client;
void setup() {
Serial.begin(115200);
while (!Serial)
;
Serial1.setRX(RX_PIN);
Serial1.setTX(TX_PIN);
Serial1.begin(AT_BAUD_RATE);
WiFi.init(Serial1);
WiFi.begin(ssid, password);
if (WiFi.status() == WL_NO_MODULE) {
Serial.println();
Serial.println("Communication with WiFi module failed!");
// don't continue
while (true)
;
}
// waiting for connection to Wifi network set with the SetupWiFiConnection sketch
Serial.println("Waiting for connection to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print('.');
}
Serial.println();
Serial.println("Connected to WiFi network.");
Serial.println("Starting connection to server...");
if (client.connect(server, 80)) {
Serial.println("connected to server");
client.println("GET /asciilogo.txt HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.flush();
}
}
void loop() {
// if there are incoming bytes available
// from the server, read them and print them
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// if the server's disconnected, stop the client
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting from server.");
client.stop();
// do nothing forevermore
while (true)
;
}
}
ATファームウェアのアップデート
このライブラリはATファームウェアの1.7以降をターゲットにしています。ATファームウェアのバージョンが古い場合、先にATファームウェアのアップデートが必要になります。ATファームウェアのアップデートはATコマンドを使って行います。Contaベースボードを使っている場合は次のシリアルパススルーをマイコンに書き込んでESP-WROOM-02と直接通信できるようにしましょう。
// Picossci 2 Conta™ Base(ESP-WROOM-02/RP2350A搭載)
// #define RX_PIN 9
// #define TX_PIN 8
// Picossci Conta™ Base Board(ESP-WROOM-02/RP2040搭載)
// #define RX_PIN 9
// #define TX_PIN 8
// Raspberry Pi Pico用 Conta™ベースボード(ESP-WROOM-02搭載)
#define RX_PIN 17
#define TX_PIN 16
void setup() {
Serial.begin(115200);
Serial1.setRX(RX_PIN);
Serial1.setTX(TX_PIN);
Serial1.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
while (Serial.available()) {
Serial1.write(Serial.read());
}
while (Serial1.available()) {
Serial.write(Serial1.read());
}
delay(1);
}
シリアルモニタを開いて次のようにATコマンドを入力するとATファームウェアのアップデートがWiFiを経由して行われます。AT
で始まる行がATコマンドです。
# バージョン情報取得
AT+GMR
AT version:1.6.2.0(Apr 13 2018 11:10:59)
SDK version:2.2.1(6ab97e9)
compile time:Jun 7 2018 19:34:26
Bin version(Wroom 02):1.6.2
OK
# ステーションモードに設定
AT+CWMODE=1
# 近くのアクセスポイントの一覧を表示
AT+CWLAP
# 接続先のSSIDとパスワードを設定
AT+CWJAP="ssid","password"
# IP情報表示
AT+CIFSR
# アップデート開始
AT+CIUPDATE
# アップデートには数分かかるので電源を切らないで待機しておく
...
# アップデートが終わったら自動的に再起動する
AT
OK
# アップデート後バージョンを確認。1.7以降になっていればOK。
AT+GMR
AT version:1.7.6.0(Jan 24 2022 08:56:02)
SDK version:3.0.6-dev(072755c)
compile time:Jun 17 2024 07:37:49
Bin version(Wroom 02):1.7.6
OK
まとめ
ESP-WROOM-02は、ESP8266ベースのWi-Fiモジュールとして、シンプルなインターネット接続機能を提供することで、多くのIoTエンジニアや開発者に愛用されてきました。スイッチサイエンスも多くの製品に採用してきました。しかし、後継機のESP32シリーズが登場し、さらに最近ではRISC-VベースのESP32-C3-WROOM-02が登場したことで、ESP-WROOM-02の役割も終わりに近づいています。
とはいえ、まだ多くの小売店にはESP-WROOM-02の在庫が豊富にあります(スイッチサイエンスも!)。新しいプロジェクトをスタートするには少し慎重になるかもしれませんが、コストを抑えたいプロジェクトや、小型のデバイスにWi-Fi機能を簡単に持たせるための使い切りの用途で、まだまだ現役で活躍できるはずです。そんな時ぜひこの記事を参考にしてください。