반응형
아두이노와 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()를 사용하여 데이터를 읽으면 수신 데이터가 잘 읽힙니다.^^
반응형
'Study > ESP8266(WIFI),ESP32(BLE,WIFI)' 카테고리의 다른 글
ESP32 PWM사용하기 (0) | 2019.12.11 |
---|---|
ESP8266 OTA(Over The Air) 사용하기 - 업데이트하기 (11) | 2019.03.18 |
ESP8266에서 I2C 사용하기 (2) | 2018.11.06 |
ARDUINO PHP POST로 통신하기2 (0) | 2018.06.21 |
ESP32 arduino에서 사용하기 (0) | 2018.02.28 |