การออกแบบของเราจะพัฒนาให้มีการถามตอบ ให้มันคุยกันนั้นเอง เพื่อให้ได้ข้อมูลที่ถูกต้องครับ
- Nodemcu : ฉันถามเธอ (ตัวแปรที่ 1 คือค่าอะไรส่งค่ามาน่ะ) ถ้าเธอไม่ตอบฉันจะถามเธอซ้ำๆ จนกว่าเธอจะตอบ
- Arduino : ส่งตัวแปรให้ Nodemcu
พี่จะยกตัวอย่าง การส่งค่าแบบค่าตายตัว ให้น้องได้ไปพัฒนากันต่อน่ะครับ
ตัวอย่างการต่อวงจร
Arduino | Nodemcu Esp8266 |
Pin 10 | Pin D6 |
Pin 11 | Pin D5 |
หากต้องการสื่อสาร ระหว่าง uno กับ nodemcu ด้วย serial
การต่อ tx , rx จาก uno ไป node mcu ต้องต่อผ่าน Logic Level Converter ก่อนครับ
เพราะ tx , rx ของ uno ทำงานที่ 5v แต่ nocd MCU tx,rx ทำงานที่ 3.3v
UNO NodeMcu
Tx – Logic level convert –> rx
rx <— — tx
Code ตัวอย่างการส่งค่า ฝั่ง Arduino ส่งค่า ไปยัง Nodemcu
int a = 13;
int b = 25;
#include <SoftwareSerial.h>
SoftwareSerial chat(10, 11); // RX, TX
int i;
void setup() {
Serial.begin(9600);
chat.begin(4800);
}
void loop() {
if (chat.readString()){
// chat.print(1);
if(chat.readString()== “Question1”){ //มีการถามคำถาม Question1 ส่งข้อมูลตัวแปร a ออกไป
chat.print(a);
}
if(chat.readString()== “Question2”){ //มีการถามคำถาม Question2 ส่งข้อมูลตัวแปร b ออกไป
chat.print(b);
}
Serial.print(“Send = “);
Serial.println(i);
}
i++;
delay(1000);
}
Code ตัวอย่างการส่งค่า ฝั่ง Arduino ส่งค่า ไปยัง Nodemcu
#include <SoftwareSerial.h>
SoftwareSerial chat(D5, D6); // RX, TX
String a;
void setup() {
Serial.begin(9600);
chat.begin(4800);
delay(10);
}
void loop() {
Serial.println(“Please wait Serial..”);
while (a == “”) {
chat.print(“Question1”); // ส่งหัวข้อคำถาม ว่า Question1 ไปยัง Arduino
a = chat.readString(); // อ่าน Serial และนำไปเก็บในตัวแปร A
Serial.print(a);
delay(100);
Serial.print(“.”);
}
}
เท่านี้น้องก็จะได้รูปแบบการส่งข้อมูลระหว่าง Arduino และ Nodecmu esp8266 เพิ่มขึ้น สามารถนำไปพัฒนาต่อยอด ได้แล้วครับ ต่อไปอยากให้ Nodecmu รับ Sensor Analog ได้ 16 ตัวก็ไม่เป็นปัญหาอีกต่อไปแล้วครับ เราใช้ Arduino Mega 2560 ต่อ กับ Nodemcu ได้เลย