Edited at

ESP-WROOM-02 の Arduino 環境で I2C 制御

More than 3 years have passed since last update.

ESP-WROOM-02 は単体で Arduino として使用できます。

Arduino のWireライブラルを使用すると I2C 制御が簡単にできるので紹介します。


回路図

ESP-WROOM-02-I2C-schematic.png


必要なもの


  • ESP-WROOM-02

    私は926円で買いました。安い!

  • FT232RL USBシリアル変換モジュール AE-UM232R

    http://akizukidenshi.com/catalog/g/gK-01977/

    ESP-WROOM-02 と Arduino をシリアル通信するために使用します

  • I2C接続小型キャラクタLCDモジュール 8x2行 AE-AQM0802

    http://akizukidenshi.com/catalog/g/gP-06669/

    このデバイスを I2C で制御します

  • I2C接続小型LCDモジュール用ピッチ変換基板

    http://akizukidenshi.com/catalog/g/gP-06794/


  • 3.3V 3端子レギュレータ

    出力が 3.3V ならなんでもいいのですが uPC2933B を使いました。
    ちなみに AE-UM232R にも 3.3V の出力端子ありますが、最大定格が 50mA しかないのでこれで 3.3V を作ります。

  • 抵抗10kΩ x5

  • セラミックコンデンサ 0.1uF x2

  • アルミ電解コンデンサ 10uF

  • PC

    Arduino 環境をインストール済みのPC。
    わたしは Mac を使いましたが、Windows, Linux も環境あるようです。
    Arduino 環境のインストール方法は https://github.com/esp8266/Arduino の Installing with Boards Manager に書いてあります。

  • ブレッドボード

    長めなブレッドボードでないと入りきりません


スケッチ


esp-wroom-02-i2c.ino

#include <Wire.h>

#define ADDR 0x3e

void setup() {
Serial.begin(115200);
delay(10);
Serial.println("");
Serial.println("Started");
Wire.begin(4, 14);
delay(40);

uint8_t cmd_init[] = {0x38, 0x39, 0x14, 0x70, 0x56, 0x6c, 0x38, 0x0d, 0x01};
command(cmd_init, sizeof(cmd_init));
delayMicroseconds(1080); // 1.08ms

uint8_t cmd_str1[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f};
uint8_t cmd_cr[] = {0xc0};
uint8_t cmd_str2[] = {0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21};
write(cmd_str1, sizeof(cmd_str1));
command(cmd_cr, sizeof(cmd_cr));
write(cmd_str2, sizeof(cmd_str2));
}

void loop() {
}

void command(uint8_t *cmd, size_t len) {
size_t i;
for (i=0; i<len; i++) {
Wire.beginTransmission(ADDR);
Wire.write(0x00);
Wire.write(cmd[i]);
Wire.endTransmission();
delayMicroseconds(27); // 26.3us
}
}

void write(uint8_t *cmd, size_t len) {
size_t i;
for (i=0; i<len; i++) {
Wire.beginTransmission(ADDR);
Wire.write(0x40);
Wire.write(cmd[i]);
Wire.endTransmission();
delayMicroseconds(27); // 26.3us
}
}



ファームウェアの書き込み方


  1. sw1 を押しながら sw2 を押します。その後 sw1 を離します。

    sw2 を離すときに sw1 が押されていればOKです。

    IO1 を Low にしてリセットすることで、ファームウェア書き込みモードで起動しているのです。

  2. Arduino でスケッチを開きます

  3. マイコンに書き込むボタンを押すと書き込みが始まります

  4. 書き込みが完了すると通常モードで起動します。

    LCD ディスプレイに文字が表示されているはずです。

IMG_0874.JPG

回路図で ESP-WROOM-02 の EAGLE ライブラリ書いたので公開しておきます。

https://raw.githubusercontent.com/ikesato/eagle-libraries/master/lbr/esp-wroom-02.lbr

よかったらどうぞー。

ESP-WROOM-02 は WiFi モジュールとして使えますが、単体でここまで出来るとは素晴らしい!