본문 바로가기
Study/ESP8266(WIFI),ESP32(BLE,WIFI)

ESP8266-arduino Serial(UART) 통신시 유의점

by Answer Choi 2019. 2. 21.
반응형


아두이노와 ESP8266을 UART를 이용하여 서로 데이터를 주고받고 있습니다.



데이터를 보낼때 serial.write를 이용하여 byte array를 전송하고,


받을때는 serial.read() serial.readBytes()를 이용하여 받고있습니다.



그런데 아두이노 <- ESP8266 으로의 전송은 잘되는데


아두이노 -> ESP8266 으로의 전송시 ESP에서 데이터 수신시 데이터가 잘리는 현상이 발생합니다.




위 그림에서 표시된 부분을 보면 length가 15가 정상이고,


length가 15이면 정상수신이라 화면에 뿌려준 뒤 서버로 전송합니다.


하지만 뒤로 갈수로 데이터가 잘려 length가 이상하게 됩니다.


length는 패킷의 2번째 byte인데, 데이터가 끊기고 밀려서 저렇게 됩니다.



Arduino쪽이 메인 MCU라서 위 그림과 같이  Arduino에서 Timer를 1초마다 돌려서 


데이터를 ESP쪽으로 전송하였는데 문제가 발생하여서 바꿔 봤습니다.



위 그림같이 ESP쪽에서 Timer를 돌려 Arduino에 데이터를 요청하였습니다.





바꾼 이후로는 빠짐없이 잘 들어옵니다.^^


그리고 한가지 유의할 점!!!!


ESP에서는 serial.read()를 사용하여 바로 연속으로 수신 데이터를 읽으면 2번째는 안 읽힙니다.


이때는  serial.readBytes()를 사용하여 데이터를 읽으면 수신 데이터가 잘 읽힙니다.^^








반응형

인기글