NodeMCU ESP8266 สัปดาห์ที่ 7
NodeMCU ESP8266 เชื่อมต่อ ส่งข้อมูลกับ Arduino แบบ I2C หลายตัว
NodeMCU ESP8266 ส่งข้อมูลหา Arduino แบบ I2c โดยใช้สายส่งข้อมูล 2 เส้น การส่งข้อมูลแบบ I2c เป็นการส่งข้อมูลแบบขนาน อุปกรณ์หลายๆตัวจะต่อขนานกัน จะอ้างอิง address ตำแหน่งของอุปกรณ์ก่อนส่งข้อมูล ในบทความนี้ จะสั่งงานให้ NodeMCU ESP8266 ตัวที่1 ส่งค่าสั่งงานไปให้ Arduino ตัวที่ 2 เปิดปิดไฟ LED
และ ส่งค่าสั่งงานไปให้ NodeMCU ESP8266 ตัวที่ 3 เปิดปิดไฟ LED
Arduino UNO R3 ขา I2c จะอยู่ที่ A4 A5
NodeMCU ESP8266 ขา I2c จะอยู่ที่ D1=SCL , D2=SDA
และ ส่งค่าสั่งงานไปให้ NodeMCU ESP8266 ตัวที่ 3 เปิดปิดไฟ LED
Arduino UNO R3 ขา I2c จะอยู่ที่ A4 A5
NodeMCU ESP8266 ขา I2c จะอยู่ที่ D1=SCL , D2=SDA
โค๊ด1 กำหนดให้ NodeMCU ESP8266 ตัวที่ 1 เป็นตัวส่งข้อมูล
อัพโหลดโค้ดด้านล่างลง NodeMCU ESP8266 ตัวที่ 1// NodeMCU ตัวที่ 1 ใช้ส่งข้อมูลหา Arduino ตัวที่ 2 และ Arduino ตัวที่ | |
#include <Wire.h> | |
int Ledoff = 0; | |
int Ledon = 1; | |
int slaveAddress2 = 9; | |
int slaveAddress3 = 10; | |
void setup() | |
{ | |
Wire.begin(); // join i2c bus (address optional for master) | |
Serial.begin( 9600 ); // start serial for output | |
} | |
void loop() | |
{ | |
Serial.println("ส่งค่าให้ Arduino ตัวที่ 2"); | |
Wire.beginTransmission( slaveAddress2 ); //กดหนด Address เตรียมส่งข้อมูลให้ Arduino ตัวที่ 2 | |
Wire.write(Ledon); // ส่งค่าในตัวแปล Ledon ให้ Arduino ตัวที่ 2 ไฟ LED ดับ | |
delay(1000); | |
Wire.endTransmission(); // ปิดการส่งข้อมูลให้ Arduino ตัวที่ 2 | |
Wire.beginTransmission( slaveAddress2 ); //กดหนด Address เตรียมส่งข้อมูลให้ Arduino ตัวที่ 2 | |
Wire.write(Ledoff); // ส่งค่าในตัวแปล Ledoff ให้ Arduino ตัวที่ 2 ไฟ LED ดับ | |
delay(1000); | |
Wire.endTransmission(); // ปิดการส่งข้อมูลให้ Arduino ตัวที่ 2 | |
Serial.println("ส่งค่าให้ Arduino ตัวที่ 3"); | |
Wire.beginTransmission( slaveAddress3 ); //กดหนด Address เตรียมส่งข้อมูลให้ Arduino ตัวที่ 3 | |
Wire.write(Ledon); // ส่งค่าในตัวแปล Ledon ให้ Arduino ตัวที่ 3 ไฟ LED ติด | |
delay(1000); | |
Wire.endTransmission(); // ปิดการส่งข้อมูลให้ Arduino ตัวที่ 3 | |
Wire.beginTransmission( slaveAddress3 ); //กดหนด Address เตรียมส่งข้อมูลให้ Arduino ตัวที่ 3 | |
Wire.write(Ledoff); // ส่งค่าในตัวแปล Ledoff ให้ Arduino ตัวที่ 3 ไฟ LED ดับ | |
delay(1000); | |
Wire.endTransmission(); // ปิดการส่งข้อมูลให้ Arduino ตัวที่ 3 | |
delay(1000); | |
} |
โค๊ดที่2 กำหนดให้ Arduino ตัวที่ 2 เป็นตัวรับข้อมูล
อัพโหลดโค้ดด้านล่างลง Arduino ตัวที่ 2 กำหนดให้ Address คือ 9
อัพโหลดโค้ดด้านล่างลง Arduino ตัวที่ 2 กำหนดให้ Address คือ 9
// Arduino ตัวที่ 2 ใช้รับข้อมูล ที่ NodeMCU ตัวที่ 1 ส่งมา | |
#include <Wire.h> | |
int LED2 =13; | |
int x = 0; | |
void setup() { | |
Wire.begin(9); // ตั้งค่าให้ Arduino ตัวมี่ 2 มี Address เป็น 9 | |
Wire.onReceive(receiveEvent); // register event | |
Serial.begin(9600); // start serial for output | |
pinMode(LED2, OUTPUT); | |
digitalWrite(LED2, LOW); | |
} | |
void loop() { | |
delay(100); | |
} | |
void receiveEvent( int bytes ) | |
{ | |
x = Wire.read(); // นำค่าที่ NodeMCU ESP8266 ตัวที่ 1 ส่งมาเก็บในตัวแปร x | |
Serial.println(x); | |
if(x ==0){ | |
digitalWrite(LED2, LOW); | |
} | |
if(x ==1){ | |
digitalWrite(LED2, HIGH); | |
} | |
} |
โค๊ด3 กำหนดให้ Arduino UNO R3 ตัวที่ 3 เป็นตัวรับข้อมูล
อัพโหลดโค้ดด้านล่างลง Arduino UNO R3 ตัวที่ 3 กำหนดให้ Address คือ 10
อัพโหลดโค้ดด้านล่างลง Arduino UNO R3 ตัวที่ 3 กำหนดให้ Address คือ 10
// Arduino ตัวที่ 3 ใช้รับข้อมูล ที่ NodeMCU ตัวที่ 1 ส่งมา | |
#include <Wire.h> | |
int LED2 =13; | |
int x = 0; | |
void setup() { | |
Wire.begin(10); // ตั้งค่าให้ Arduino ตัวมี่ 3 มี Address เป็น 10 | |
Wire.onReceive(receiveEvent); // register event | |
Serial.begin(9600); // start serial for output | |
pinMode(LED2, OUTPUT); | |
digitalWrite(LED2, LOW); | |
} | |
void loop() { | |
delay(100); | |
} | |
void receiveEvent( int bytes ) | |
{ | |
x = Wire.read(); // นำค่าที่ NodeMCU ESP8266 ตัวที่ 1 ส่งมาเก็บในตัวแปร x | |
Serial.println(x); | |
if(x ==0){ | |
digitalWrite(LED2, LOW); | |
} | |
if(x ==1){ | |
digitalWrite(LED2, HIGH); | |
} | |
} |
ลิ้งhttps://www.myarduino.net/article/174/%E0%B8%AA%E0%B8%AD%E0%B8%99%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-nodemcu-esp8266-%E0%B9%80%E0%B8%8A%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%A1%E0%B8%95%E0%B9%88%E0%B8%AD-%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B8%81%E0%B8%B1%E0%B8%9A-arduino-%E0%B9%81%E0%B8%9A%E0%B8%9A-i2c-%E0%B8%AB%E0%B8%A5%E0%B8%B2%E0%B8%A2%E0%B8%95%E0%B8%B1%E0%B8%A7
ความคิดเห็น
แสดงความคิดเห็น