ESP8266(Master)とArduino Nano(Slave)間をI2Cで通信します。

Arduino nanoとESP8266間の接続

Arduino nanoとESP8266間の接続ピンを次に示します。

nano(スレーブ)  ESP8266(マスター)
SCL A5 SCL
SDA A4 SDA
GND GND

Arduino nanoとESP8266間の接続画像を次に示します。

Arduino Nano(Slave)のプログラム作成

Arduino Nano上でスレーブとして動作するプログラムを次に示します。

i2c_nanoslave.ino

/**********************************************
  Arduino Nano I2C(Slave)
**********************************************/
#include <Wire.h>

byte b=0;

void setup() {
  Serial.begin(9600);
  Serial.println("/-----START Arduino Nano-----/");
  Serial.println("/----------I2C Slave---------/");

  Wire.begin(0x21);// Slave ID #21
  Wire.onRequest(requestEvent);
}

void loop() {
}

void requestEvent() {
  Wire.write(b++);
}

ESP8266(Master)のプログラム作成

ESP8266上でマスタとして動作するプログラムを次に示します。

i2c_espmaster.ino

/**********************************************
  ESP8266 I2C(master)
**********************************************/

#include <Wire.h>

void setup() {
  Serial.begin(9600);
  Serial.println("/-----START ESP8266-----/");
  Serial.println("/----------I2C Master---------/");

  Wire.begin();
}

void loop() {
  Wire.requestFrom(0x21, 1);// request 1 bytes from Slave ID #21

  while (Wire.available()) {
    byte b = Wire.read();
    Serial.println(b);
  }

  delay(500);
}

Arduino nanoとESP8266間通信

作成したプログラムを実行すると、ESP8266のシリアル端末に次の内容が表示され、ESP8266でデータが受信されていることが確認できます。

Hl艤lE懈腫2U働-----START ESP8266-----/
/----------I2C Master---------/
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18