コンテンツにスキップ

12月27日(金)正午12時入金分まで年内出荷いたします。それを過ぎると1月6日(月)以降の出荷となりますのでご注意ください。
また年始は数日の間当日出荷ができない可能性がございます。詳細につきましてはこちらの記事をご確認ください。

12月27日(金)正午12時入金分まで年内出荷いたします。それを過ぎると1月6日(月)以降の出荷となりますのでご注意ください。また年始は数日の間当日出荷ができない可能性がございます。

詳細につきましてはこちらの記事をご確認ください。

ESP-WROOM-02を活用!Arduinoライクにインターネット接続を簡単に。

ESP-WROOM-02を活用!Arduinoライクにインターネット接続を簡単に。

以下のContaベースボードにはESP-WROOM-02が搭載されています。ESP-WROOM-02とマイコンはUARTで接続されており、ATコマンドでWi-Fi機能を制御できます。WiFiEspATライブラリを使うと、ATコマンドを意識せずにArduinoのような簡単なコードでネットワーク接続が可能です。

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機能を簡単に持たせるための使い切りの用途で、まだまだ現役で活躍できるはずです。そんな時ぜひこの記事を参考にしてください。

前の記事 Unlocking Global Positioning: Quadband GNSS RTK Breakout for Precise Location
次の記事 SparkFun Soft Power Switch Simplifies Power Control