phần mềm giữa arduino uno và Esp8266


7

Tôi có một mô-đun Arduino UNO và HUZZAH ESP8266. Tôi cần gửi dữ liệu giữa Arduino UNO và mô-đun ESP thông qua Phần mềm nối tiếp. Ngay bây giờ tôi có mô-đun ghi dữ liệu ESP và dữ liệu hiển thị Arduino UNO, nhưng không hoạt động. Khi tôi chạy Arduino UNO và mở Trình giám sát nối tiếp của nó, không có gì được in bằng mã nguồn bên dưới.

  1. PIN PIN ESP8266 được kết nối với Arduino UNO PIN 2.
  2. PIN ESP8266 TX được kết nối với Arduino UNO PIN 3.
  3. Sử dụng cáp FTDI đi kèm với HUZZAH ESP8266 để cấp nguồn cho mô-đun này. Tôi chỉ kết nối riêng các chân RX và TX với mã PIN 2 và 3 của ARDUINO như đã đề cập ở trên.

Bất cứ ý tưởng tại sao không làm việc? Dưới đây là mã cho cả hai mô-đun. Cảm ơn,

Arduino UNO

#include <SoftwareSerial.h>

SoftwareSerial ESPserial(2, 3); // RX | TX

void setup(void){
  //Start hardware Serial communication
  Serial.begin(115200);

  //Start the software serial for communication with the ESP8266 component
  ESPserial.begin(57600);  

}


void loop(void){



if (ESPserial.available()){
  Serial.println("ESP available!!!");
  Serial.println(ESPserial.read());
}


}

HUZZAH ESP8266

#include <ESP8266WiFi.h>

#include <SoftwareSerial.h>

SoftwareSerial ESPserial(2, 3); // RX | TX

void setup(void){
  //Start the software serial for communication with the Arduino UNO component
  ESPserial.begin(57600);

  //TODO: setup Wifi
}


void loop(void){
   ESPserial.write("This message generated by ESP module.");
   delay(500);
}

Arduino Pin 2 là gì?

RX trên Arduino nên được kết nối với TX trên đặc biệt và ngược lại, có vẻ như bạn đã kết nối với RX ...

Arduino pin 2 là kỹ thuật số.

@Marquinio có nhưng là TX hay RX?

Câu trả lời:


4

Đảm bảo rằng:

  1. Chân RX trên Arduino UNO được kết nối với chân TX trên ESP8266.
  2. Chân TX trên Arduino UNO được kết nối với chân RX trên ESP8266.
  3. Tốc độ Baud nên được đặt thành cùng một giá trị từ cả Arduino và ESP8266.

Tôi không biết về arduino của bạn nhưng nhìn vào sơ đồ này, RX và TX của bạn sẽ được hoán đổi.

nhập mô tả hình ảnh ở đây


Đây là một lỗi rất phổ biến mà lúc đầu có vẻ không rõ ràng.

3
Có điều này đã khắc phục vấn đề của tôi. Hiện tại, ESP nhận được dữ liệu dường như bằng byte. Tôi sẽ cố gắng tìm ra cách gửi / đọc các chuỗi có thể đọc được, nhưng đó là một câu chuyện khác. Kiến thức điện tử của tôi rất hạn chế, cảm ơn.

2

Thêm vào câu trả lời trên. TX của UNO ở mức 5V, trong khi RX của ESP8266 ở mức 3,3V, vì đây là mô-đun 3,3V. Vì vậy, tốt hơn là sử dụng bộ chia điện trở để đưa TX của UNO lên 3,3V và sau đó cung cấp cho RX của ESP, thay vì kết nối trực tiếp với nhau.


1
Và ngược lại, chân 3,3V TX của ESP8266 thường đủ để lái pin 5V RX của Uno.
linhartr22

0

// TRÒ CHƠI

#include "SoftwareSerial.h"

SoftwareSerial ArduinoUno(D2,D3); //Rx, Tx

void setup() {

Serial.begin(9600);

ArduinoUno.begin(4800);

pinMode(D2, INPUT);

pinMode(D3, OUTPUT);

}

void loop() {

}

/******************************************************************************/

// UNO

#include "SoftwareSerial.h"

SoftwareSerial ArduinoUno(3,2); //Rx, Tx

void setup() {

Serial.begin(9600);

ArduinoUno.begin(4800);

}

void loop() {

  if(ArduinoUno.available() > 0){

    //float val = ArduinoUno.parseFloat();

    Serial.println(ArduinoUno.read());

  }

  delay(30);

}

định dạng mã của bạn đúng cách (CTRL + K)
MichaelT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.