無線を使ったアプリケーションを作りたいなと思い、ESP-WROOM-02を使って、Lチカなどの動作テストをしました。今回はその事について書きます。
ESP-WROOM-02とESP8266
ネットの情報で、ESP-WROOM-02というモジュールを使うと、簡単にWiFiに接続するハードウェアの開発ができると聞いていたので、かなり前に秋月でESP-WROOM-02のDIP化キットを買ったのですが、忙しくて放置していました。この度、I2C接続4×4キーパッドの出荷がひと段落したので、ESP-WROOM-02を使ってみる事にしました。
ESP-WROOM-02を使う前に、ネットで情報を収集したのですが、”ESP-WROOM-02″と書いてあるサイトや”ESP8266″と書いてあるサイトがあって、私は「同じモジュールにESP-WROOM-02とESP8266の2つの名前があるの?」と混乱していしまいました。よくよく調べると、ESP-WROOM-02はモジュールの名前で、ESP8266はSoCのICの型番でした。
ESP8266は、WiFi接続機能を備えたSoCです。Tensilica L106というCPUに、WiFi接続用の回路、SPIやI2Cなどのインターフェース回路、SRAMなどを搭載しています。(ただし、プログラム用のフラッシュメモリは搭載していません) 32ピンのQFNパッケージで供給されているICです。
参考:SoCとはSystem on Chipの略で、ICチップ内部に、マイコンと、インタフェース回路、センサなど、多種の機能を搭載し、チップ単体でシステムを組める様にしたものです。
一方で、ESP-WROOM-02は、ESP8266にWiFi用のアンテナ、4MBのフラッシュメモリ、26MHzのクロック発振器を搭載し、日本の技適をはじめとした、各国の電波法の認証を取った、WiFiモジュールです。
なお、ESP8266を使ったWiFiモジュールは、ESP-WROOM-02以外にもいくつかあるのですが、少なくとも日本においては、ESP-WROOM-02が、一番手に入りやすいモジュールです。
Lチカの試験
そんな所から調べ始めたので、動かすまでにかなり時間がかかりましたが、ブレッドボード上にテスト回路を作り、無事に動作しました。
ESP-WROOM-02にArduinoのスケッチを書き込むにはUSBシリアル変換器が必要なのですが、今回は秋月電子のFT232RL USBシリアル変換モジュールを使いました。
また、ESP-WROOM-02は、電源投入時の突入電流が大きいのが有名で、ねむいさんのブログのESP-WROOM-02を使ってみる3 -そんな電源で大丈夫か-という記事によると、最大350mA流れるそうです。(平均消費電流は80mA) これでは、FT232RL内蔵の3.3VLDOでは、十分な電流を供給できません。
そこで、秋月電子で売っているTA48M033Fという3.3V出力、500mAのLDOを使って、USBの5V電源を3.3Vに安定化する事にしました。
参考:ESP-WROOM-02のデータシートには、3.3V電源に500mA以上の電源を用意する様に記述されています。
実際に動作させてみると、TA48M033Fで安定して動作しました。
Lチカのテストをするため、IO4 の端子にLEDを接続して、次のようなスケッチを書き込みました。
void setup() {
pinMode(4,OUTPUT);
}
void loop() {
digitalWrite(4,HIGH);
delay(500);
digitalWrite(4,LOW);
delay(500);
}
そうすると、無事LEDが1秒周期で点滅しました。
シリアル(UART)の試験
次は、スケッチを次の様に変えて、LEDの点滅に合わせて、シリアルに”HIGH”と”LOW”のメッセージを表示させるようにしました。
void setup() {
pinMode(4,OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(4,HIGH);
Serial.println("HIGH");
delay(500);
Serial.println("LOW");
digitalWrite(4,LOW);
delay(500);
}
すると、無事に、シリアルモニタに、”HIGH”と”LOW”のメッセージが交互に表示される様になりました。これで、シリアル通信は問題なく使える事が確認できました。
WiFiの試験
次に、ArduinoのESP8266の開発環境に付いている、NTPClientのスケッチを書き込みました。
このスケッチは、インターネット上のNTPサーバー(正確な時刻を配信しているサーバー)から時刻を取得し、シリアルにその時刻を10秒おきに送信する物です。
NTPClientスケッチは、そのままでは動作せず、以下に示すSSIDとパスワードの設定は、自宅のアクセスポイントの設定に合わせて書き換える必要があります。
char ssid[] = "*************"; // your network SSID (name)
char pass[] = "********"; // your network password
NTPClientスケッチを動作させると、見事にWiFi経由で時刻を取得できました。
表示されている時刻はUTC(協定世界時、簡単にいうとイギリスでの時刻)なので、日本標準時から9時間遅れいていますが、それはご愛敬です。スケッチを変更すれば、日本標準時も表示されますが、今回は通信の試験をしているので、このままにしておきます。
ともあれ、WiFiの接続も検証でき、ESP-WROOM-02の主要な機能の検証ができました。
終わりに
ブレッドボード上で簡単な回路を組むだけで、ESP-WROOM-02のGPIOやUART、WiFi機能の動作検証ができました。
今回は、忘備録的な意味で、簡単に報告したので、試作した回路の回路図すら載せていませんが、いずれしなぷすのハード製作記の記事で、詳しい解説をしようと思っています。