-
아두이노에서 TCP소켓 실시간 수신제어 방법Socket 통신 2025. 1. 26. 00:01
Arduino Library (https://github.com/codezoo-ltd/TYPE1SC)에서 제공하는 socketRecv API의 경우
socketSend로 데이터를 서버에 전송 후 서버의 응답(Ack)을 받기 위한 목적으로 만들었습니다.
Arduino는 디바이스를 설정하는 setup과 디바이스를 동작시키는 loop로 구성되어 있는데,
실시간 수신에는 적합하지 않습니다.
송신의 경우 데이터를 언제 보내는지 개발자가 알 수 있지만, 수신의 경우 언제 데이터가 들어올지 알지 못해서
항상 데이터가 들어오는지 감시해야 하는 loop가 존재해야 합니다.
RTOS를 사용한 경우 여러개의 loop를 개발자의 목적에 따라 사용할 수 있어서 이러한 작업을 할당할 수 있습니다.
ESP32 아두이노의 경우는 ESP32 아두이노 아래 동작하는 freertos RTOS 덕분에 수신 Callback을 지정해 놓으면
내부에 따로 동작하는 loop(freertos의 Task)가 데이터 수신을 체크해서 원하는 데이터의 결과를 메인 loop에서 확인할 수 있도록 지원하고 있습니다.
LTE CATM1 embedded 모뎀에서는 아두이노에서 실시간 수신을 구현해 놓은 아래 프로젝트가 있습니다.
Arduino를 사용하실 경우,
ESP32와 모뎀으로 구성 합니다. 아래와 같은 ESP32 연결 액세서리를 스마트스토어에서 따로 판매하고 있습니다.
아래 예제를 설치해서 사용합니다.
자세한 설치방법은 https://codezoo.tistory.com/28 를 참고하세요.
example 중 type1sc_simple_pppos_with_tcp를 사용합니다.
사용하는 고정IP 서버주소와 포트번호로 변경합니다.
확인하는 코드인데, 아래와 같이 서버에 데이터를 전송하는 관련 코드(ppposClient.println(msg);를 모두 주석처리
후 서버와 접속 후 서버에서 데이터를 보내 봅니다.
이 경우 서버와 연결되어 있으면 언제든지 데이터를 잘 수신해서 처리되는 것을 확인할 수 있습니다.
서버와 연결이 해제된 경우에 자동으로 재접속하는 것도 확인할 수 있습니다.
이유는 ppposClient 내부에서 실시간으로 네트워크 패킷을 처리할 수 있는 loop(freertos의 Task)가 동작하고
있기 때문입니다. Arduino loop에서는 ppposClient.available()의 상태를 확인해서 새로 들어온 값이 있으면 터미널과 LCD에 출력하도록 구현 했습니다.
자세한 동작은 아래 영상을 참고하시기 바랍니다.
전체화면으로 시청 부탁 드립니다.
LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr'Socket 통신' 카테고리의 다른 글
echo.mbedcloudtesting.com 서비스가 종료 되었습니다. (0) 2025.01.19 Voice AI 모듈과 LTE CATM1을 이용한 작업 데모 (0) 2024.02.22 언제든지 데이터를 수신 받아서 처리하고 싶어요. (0) 2022.11.21 짧은 질문, 긴 답변 (with socket통신) (0) 2022.02.24 Cellular Library 개발 그리고 포팅 두번째 이야기 (0) 2021.09.25