저는 Arduino, 압전 센서 및 ESP8266을 사용한 좌석 점유에 관한 프로젝트를 진행했습니다. 내 문제는 파이썬으로 작성된 UDP 서버가 실행중인 PC로 데이터를 보낼 수 없다는 것입니다.ESP8266을 통해 데이터를 전송할 수 없습니다.
내 진짜 문제는 Arduino IDE의 직렬 모니터를 사용할 때 데이터를 보낼 수 있다는 것입니다. 데이터를 완벽하게 보내고 받지만 코드가 실행되지 않고 실수를 지적 할 수 없습니다.
아두 이노 코드 :
const int seat_no = 2;
const char *ssid = "";
const char *passwd = "";
const char *ip = "192.168.43.250";
const int port = 55056;
const int threshold = 100;
String op;
int i, a, data_size;
void setup() {
Serial.begin(9600);
Serial1.begin(115200);
Serial.println("Starting ESP8266");
Serial1.write("AT+CWJAP=\"");
Serial1.write(ssid);
Serial1.write("\",\"");
Serial1.write(passwd);
Serial1.write("\"\r\n");
Serial1.write("AT+CWMODE=1\r\n");
Serial1.write("AT+CIPMUX=0\r\n");
Serial1.write("AT+CIPSTART=\"UDP\",\"");
Serial1.write(ip);
Serial1.write("\",");
Serial1.write(port);
Serial1.write("\r\n");
}
void loop() {
op = "{\"seat_status\":[";
for (i = 0; i < seat_no; i++) {
a = analogRead(i);
if (a > threshold) {
op += "\"0\"";
Serial.println("0");
}
else {
op += "\"1\"";
Serial.println("1");
}
if (i < seat_no - 1)
op += ",";
}
op += "]}";
data_size = op.length();
Serial1.write("AT+CIPSEND=");
Serial1.write(data_size+2);
Serial1.write("\r\n");
delay(1000);
for (i = 0; i < data_size; i++)
Serial.write(op[i]);
Serial.println();
for (i = 0; i < data_size; i++)
Serial1.write(op[i]);
Serial1.write("\r\n");
delay(5000);
}
은 내가 (안드로이드 응용 프로그램 UDP를 보낸 사람을 통해)뿐만 아니라 다른 소스로부터 데이터를 수신 그래서이 문제를 해결하는 데 도움이 수 있어요으로 내 파이썬 코드가 정확한지 생각합니다.
ESP의 RX가 메가의 TX가되도록 RX/TX 핀을 바꾸어보십시오. –
는 아무 일도 직렬 모니터에 오지 않았다. ESP8266의 Tx는 arduino의 Tx와 연결하고 Rx의 경우 동일합니다. –
모든 핀을 다른 핀으로 바꿔서 각 명령에 지연을 추가했으며 그 중 아무 것도 내 문제를 해결하지 못했습니다. –