ผมไปลองดูมาหลาย forum ของ arduino forum แล้วครับ
เขาบอกว่าให้ลองใช้ level shifter ระหว่าง esp32 กับ arduino mega ผมลองแล้วก็ ไม่สามารถ ส่งค่าจาก esp32 ไปยัง mega ได้เลยครับ
พอมีข้อมูลอยู่บ้างครับ แต่เป็น ESP8266 นะครับ
/Arduino mega 2560 → ESP8266
12 (RX) → D7 (GPIO 13) (TX)
13 (TX) → D6 (GPIO 12) (RX)
GND → GND/
MEGA รับส่งข้อมูลไป ESP8266
#include <SoftwareSerial.h>
SoftwareSerial MEGA1(12, 13); // RX, TX
void setup() {
Serial.begin(57600); // Serial Monitor ที่ Port ต่อกับ Computer
MEGA1.begin(57600); // Serial Monitor ที่ สร้างขึ้นเพื่อ ติดต่อกับ Esp8266
}
//รับข้อมูลมาจาก NODE MCU ESP 8266 ผ่าน Serial Port
void(){
while (MEGA1.available() > 0) {
int valFromEsp8266 = MEGA1.parseFloat();
if (MEGA1.read() == '\n') {
//-----------------------------------------------------------------------------------
if (valFromEsp8266 == 110) {//on
Btn1 = 1;
}
if (valFromEsp8266 == 111) {//off
Btn1 = 0;
}
}
//ส่งข้อมูลไป ESP8266
MEGA1.print(10); //Print buttonState to Serial Port
MEGA1.print('\n');
}//End void loop
ESP8266 รับส่งข้อมูล ไป MEGA
#include <SoftwareSerial.h>
SoftwareSerial NodeSerial(D6, D7);
void setup() {
Serial.begin(115200);
NodeSerial.begin(57600);
}
void loop() {
//รับข้อมูล จาก ARDUINO MEGA
//ทำการอ่านค่าจาก ARDUINO MEGA เข้ามาผ่านทาง port serial
while (NodeSerial.available() > 0) {
int ValFromMega = NodeSerial.parseFloat();
//--------------------------------------------------
if (NodeSerial.read() == '\n') {
//Serial.println(ValFromMega);
//------------------------------------------------
//ถ้ารับค่า 11 เข้ามา จะให้ทำอะไร
if (ValFromMega == 10) { //ส่ง ON มา
Device_1_On();
}
//ถ้ารับค่า 10 เข้ามา จะให้ทำอะไร
if (ValFromMega == 11) {
Device_1_Off();
}
//------------------------------------------------
}//end while
//ส่ง ไปสั่งให้ MEGA ทำงาน
//------PB 1 -----------------//
if (Device_1sent == 11 ) {//on
NodeSerial.print(110);
NodeSerial.print('\n');
}
if (Device_1sent == 10 ) {//off
NodeSerial.print(111);
NodeSerial.print('\n');
}
}//end void loop
ใช่ครับ กับตัว ESP8266 ไม่มีปัญหาเลยครับ แต่ กับ บอร์ด mcu ที่ ไฟเลี้ยง เป็น 3.3v จะมีปัญหาครับ
ผมทดลองกับ ตัว RTL-8720DN และ ARDUINO MEGA 2560 ปัญหาเหมือนกันเลยครับ MEGA ส่งไปได้
แต่ RTL ส่งไปยัง MEGA ไม่ได้ครับ