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
