1NCE FreeRTOS BluePrint는 셀룰러 연결을 통해 CoAP, LwM2M 및 UDP를 포함한 다양한 IoT 프로토콜의 사용을 보여줍니다. 이 저장소는 (Wakaama LWM2M 라이브러리)를 사용하여 장치 인증 및 에너지 절약 기능과 같은 1NCE OS 도구를 활용하기 위해 1NCE SDK를 통합하는 예를 보여줍니다.
이 저장소는 다음 프로토콜의 예를 제공합니다.
각 데모에는 테스트를 위해 활성화할 수 있는 선택적 에너지 절약 기능이 포함되어 있습니다.
Binaries 폴더에는 UDP 및 CoAP 데모 애플리케이션을 위해 사전 구축된 바이너리가 포함되어 있습니다.
1NCE OS에서 에너지 절약 기능 구성
이 템플릿을 사용합니다.
P-L496G-CELL02 보드 연결
USB를 통해 연결하면 보드가 컴퓨터에 저장 드라이브로 나타나야 합니다.
바이너리 플래시
Binaries
폴더에서 원하는 바이너리 파일을 스토리지 드라이브로 끌어서 놓기만 하면 됩니다. 보드는 자동으로 바이너리를 플래시합니다.
참고: 플래싱에 실패하면 STM32CubeProgrammer를 사용한 플래싱을 참조하세요.
데모 로그 보기
데모 로그를 보려면 Visual Studio Code의 직렬 모니터를 사용하세요.
STLink 펌웨어 업그레이드가 필요합니다. STM32 VSCode 플러그인에는 이를 위한 버튼이 포함되어 있지만 작동하지 않는 경우 설치된 STM32 폴더( ST/STM32CubeCLTxx/STLinUpgrade.bat
에서 .bat
파일을 실행하여 업그레이드를 수동으로 시작할 수 있습니다.
BG96 모뎀에 최신 펌웨어 버전이 있는지 확인하십시오. (ST의 X-Cube Cellular 페이지)(v6.0.0 권장)에서 펌웨어 업데이트 패키지와 지침을 다운로드할 수 있습니다.
모뎀 플래싱의 경우 이제 공식 Quectel 웹사이트(QFlash 다운로드(V7.1))에서 QFlash 도구를 다운로드할 수 있습니다.
사용하려는 데모를 구성하려면 Application/Config/
에 있는 nce_demo_config.h
파일을 수정하세요. (기본적으로 CONFIG_COAP_DEMO_ENABLED
)
CONFIG_COAP_DEMO_ENABLED
CONFIG_UDP_DEMO_ENABLED
CONFIG_LwM2M_DEMO_ENABLED
1NCE FreeRTOS BluePrint를 사용하면 고객은 UDP를 통해 1NCE 엔드포인트와 통신하고 1NCE OS의 일부로 모든 기능을 사용할 수 있습니다.
Application/Config/nce_demo_config.h
파일에서 데모 실행기를 설정합니다. #define CONFIG_UDP_DEMO_ENABLED
#define CONFIG_UDP_DATA_UPLOAD_FREQUENCY_SECONDS 60
1NCE FreeRTOS BluePrint를 사용하면 고객은 CoAP를 통해 1NCE 엔드포인트와 통신하고 1NCE OS의 일부로 모든 기능을 사용할 수 있습니다.
COAP POST 요청: 이 섹션에서는 다음 단계가 실행됩니다.
네트워크에 등록하세요.
DNS 확인을 수행합니다.
소켓을 생성하고 서버에 연결
쿼리 옵션을 사용하여 확인 가능한 CoAP POST 생성
클라이언트 상호 작용 생성 및 응답(ACK) 분석
응답을 검증합니다.
Application/Config/nce_demo_config.h
파일에서 데모 실행기를 설정합니다.
#define CONFIG_COAP_DEMO_ENABLED
#define CONFIG_COAP_URI_QUERY "t=test"
#define CONFIG_COAP_DATA_UPLOAD_FREQUENCY_SECONDS 60
#define CONFIG_NCE_ENERGY_SAVER
DTLS 지원의 경우 기본 포트는 5684이며 ENABLE_DTLS
를 추가 정의로 자동 정의합니다.
CoAP DTLS는 1NCE IoT C SDK에서 3가지 주요 작업을 수행합니다.
LWM2M 지원은 Leshan LWM2M 서버와 통신하는 Eclipse Wakaama 라이브러리를 사용하여 제공됩니다. 이 모드를 사용하면 장치가 LwM2M 클라이언트 역할을 하여 장치 관리, 펌웨어 업데이트, 센서 데이터 수집과 같은 사용 사례를 위해 LwM2M 서버와의 통신을 촉진할 수 있습니다. 기본적으로 클라이언트는 1NCE LwM2M 서버에 등록되며 선택적 DTLS 지원을 통해 보안 통신이 보장됩니다.
#define CONFIG_LwM2M_DEMO_ENABLED
다음 매개변수는 Blueprint에서 LwM2M 클라이언트 모드를 활성화하고 사용자 지정하는 데 중요합니다.
#define LWM2M_ENDPOINT "lwm2m.os.1nce.com"
#define LWM2M_CLIENT_MODE
#define LWM2M_BOOTSTRAP
#define LWM2M_SUPPORT_SENML_JSON
#define LWM2M_SUPPORT_JSON
#define LWM2M_LITTLE_ENDIAN
#define LWM2M_SUPPORT_TLV
#define LWM2M_COAP_DEFAULT_BLOCK_SIZE 1024
#define LWM2M_SINGLE_SERVER_REGISTERATION
#define LWM2M_OBJECT_SEND "/3/0"
#define CONFIG_NCE_ICCID ""
#define CONFIG_LWM2M_BOOTSTRAP_PSK ""
에너지 절약 기능은 UDP 및 CoAP 데모 모두에서 사용할 수 있습니다. 이를 통해 사용자는 1NCE 엔드포인트와 통신할 때 장치 전력 소비를 최적화할 수 있습니다.
에너지 절약 기능을 활성화하려면 nce_demo_config.h
에 다음 플래그를 추가하세요.
#define CONFIG_NCE_ENERGY_SAVER
참고: UDP 및 CoAP 데모에 에너지 절약 기능을 사용하려면 1NCE OS에 올바른 변환 템플릿이 적용되어 있는지 확인하세요. 선택한 올바른 프로토콜과 사용된 템플릿.
장치 컨트롤러는 1NCE API에 통합된 장치와 상호 작용할 수 있는 API입니다. 이 API를 사용하여 장치에 요청을 보낼 수 있으며, 장치는 그에 따라 응답합니다. 자세한 내용을 보려면 DevHub를 방문하세요.
특정 장치에 요청을 보내려면 1NCE DevHub의 설명서를 참조하세요.
1NCE API에서 들어오는 요청을 처리하려면 특정 매개변수의 구성에 Application/Config/nce_demo_config.h
필요합니다.
/* C2D Parameters */
/* This port is used for both UDP and CoAP communication. */
#define NCE_RECV_PORT 3000
#define NCE_RECEIVE_BUFFER_SIZE_BYTES 200
NCE_RECV_PORT
: 장치가 들어오는 요청을 수신하는 포트 번호입니다. 요청에 사용된 포트 매개변수와 일치해야 합니다.NCE_RECEIVE_BUFFER_SIZE_BYTES
: 1NCE API로부터 들어오는 데이터를 수신하는데 사용되는 버퍼의 크기입니다.참고: C2D(Cloud to Device)는 UDP, CoAP 및 LwM2M의 세 가지 프로토콜 모두에서 지원됩니다. LwM2M 클라이언트는 C2D 요청과 긴밀하게 통합되어 있으며 UDP 및 CoAP의 경우 C2D 통신을 위한 백그라운드 포트도 열립니다.
장치가 2G 네트워크에만 연결되거나 일부 지역에서 연결할 수 없는 경우 Application/Config/nce_demo_config.h
에서 RAT(Radio Access Technology) 및 대역 설정을 조정해야 할 수 있습니다.
#define CELLULAR_CONFIG_DEFAULT_RAT 8 // Example for CAT M1
#define CELLULAR_CONFIG_DEFAULT_RAT_2 0 // Example for GSM
#define CELLULAR_CONFIG_DEFAULT_RAT_3 9 // Example for NBIOT
#define CUSTOM_BAND_BG96 "AT+QCFG="band",F,80004,80008" // Example for Germany CATM1
// Values
/**
* The GSM RATs network 0
* The CAT M1 RATs network 8
* The NBIOT RATs network 9
**/
대역 설정에 대한 자세한 내용은 BG96 AT Commands Manual을 참조하세요.
로그의 자세한 정도는 Core/Inc/iot_config.h
파일에서 LIBRARY_LOG_LEVEL
매크로를 정의하여 설정할 수 있습니다. 이 설정은 디버깅 및 문제 해결 목적으로 로깅 세부 정보 수준을 제어합니다.
LIBRARY_LOG_LEVEL
에 사용 가능한 로그 수준은 다음과 같습니다.
IOT_LOG_NONE
: 모든 로깅을 비활성화합니다. IOT_LOG_ERROR
: 오류 메시지만 활성화합니다. IOT_LOG_WARN
: 경고 및 오류를 활성화합니다. IOT_LOG_INFO
: 정보 메시지, 경고 및 오류를 활성화합니다. IOT_LOG_DEBUG
: 자세한 디버그 정보, 경고, 오류 및 정보 메시지를 활성화합니다.
iot_config.h
의 구성 예:
#define LIBRARY_LOG_LEVEL IOT_LOG_DEBUG
이 구성은 개발이나 문제 해결 중에 유용한 모든 디버그 정보를 출력합니다.
우리 팀과의 가장 효과적인 커뮤니케이션은 GitHub를 통한 것입니다. 새 이슈를 생성하고 버그 보고서, 기능 요청, 문서 문제 또는 일반 질문을 다루는 다양한 템플릿 중에서 선택하세요.