ESP32 + CZ-ME310G1모뎀
Espressif에서 ESP-IDF SDK에서 사용할 수 있도록 공식 배포한 ESP-Modem Protocol을 CZ-ME310G1에서 사용하는 방법을 정리 했습니다.
ESP-Modem Protocol에서 제공하는 example 중 하나인 APtoPPPOS를 이용 했습니다.
아래 블로그 내용대로 진행 했고 변경되는 코드만 따라하시면 됩니다.
https://codezoo.tistory.com/79
ESP32, LTE CATM1 모뎀으로 nano iot gateway 제작
ESP-Protocols 오픈소스 프로젝트 중 ESP_Modem 프로젝트가 있습니다. ESP32 시리즈 (ESP32, ESP32-C3, ESP32-S2, ESP32-S3, etc)의 MCU와 다양한 셀룰러 통신모듈을 연결해서 데이터 통신 모뎀으로 동작시킬 수 있도
codezoo.tistory.com
ESP Modem은 아래 회로와 같은 ESP32 IoT보드 기반으로 포팅되어 있습니다.
CZ-Type1SC모뎀을 동작시키도록 코드가 구성되어 있어서 이 코드를 CZ-ME310G1모뎀에서 동작할 수 있도록 수정해야 합니다.
ESP32 IoT 보드 회로도 (https://github.com/codezoo-ltd/TYPE1SC/blob/main/schematics_dimension/ESP32_IoT_Board_sch.pdf)
변경해야 하는 부분은 크게 3군데 입니다.
1. app_main() 함수에서 호출하는 Modem GPIO 초기화 코드
esp-protocols-master\esp-protocols-master\components\esp_modem\examples\ap_to_pppos\main\ap_to_pppos.c
static void config_gpio(void)
{
gpio_config_t io_conf = {}; //zero-initialize the config structure.
io_conf.intr_type = GPIO_INTR_DISABLE; //disable interrupt
io_conf.mode = GPIO_MODE_OUTPUT; //set as output mode
/* CZ-ME310G1 Modem GPIO PIN Bit Mask */
io_conf.pin_bit_mask = (GPIO_OUTPUT_RESET_PIN_SEL | GPIO_OUTPUT_PWRKEY_PIN_SEL);
io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; //disable pull-down mode
io_conf.pull_up_en = GPIO_PULLUP_DISABLE; //disable pull-up mode
gpio_config(&io_conf); //configure GPIO with the given settings
}
static void gpio_modem(void)
{
/* CZ-ME310G1 Power on the modem */
ESP_LOGI(TAG, "Power on the modem");
gpio_set_level(GPIO_OUTPUT_PWRKEY, 0);
vTaskDelay(pdMS_TO_TICKS(100));
gpio_set_level(GPIO_OUTPUT_PWRKEY, 1);
gpio_set_level(GPIO_OUTPUT_RESET, 1);
vTaskDelay(pdMS_TO_TICKS(5000));
gpio_set_level(GPIO_OUTPUT_RESET, 0);
vTaskDelay(pdMS_TO_TICKS(100));
}
2. PPP모드 변환 AT커맨드 변경
esp-protocols-master\esp-protocols-master\components\esp_modem\src\esp_modem_command_library.cpp
command_result set_data_mode(CommandableIf *t)
{
ESP_LOGV(TAG, "%s", __func__ );
/* CZ-ME310G1 PPP Mode Change AT-CMD */
return generic_command(t, "ATD*99***1#\r", "CONNECT", "ERROR", 5000);
}
3. 모뎀과 연결하는 UART 핀이 다를 경우 설정(ESP32 IoT 보드를 사용할 경우 변경할 필요 없음)
esp-protocols-master\esp-protocols-master\components\esp_modem\include\esp_modem_config.h
/**
* @brief ESP Modem DTE Default Configuration
*
*/
#define ESP_MODEM_DTE_DEFAULT_CONFIG() \
{ \
.dte_buffer_size = 512, \
.task_stack_size = 4096, \
.task_priority = 5, \
.uart_config = { \
.port_num = UART_NUM_2, \
.data_bits = UART_DATA_8_BITS, \
.stop_bits = UART_STOP_BITS_1, \
.parity = UART_PARITY_DISABLE, \
.flow_control = ESP_MODEM_FLOW_CONTROL_NONE,\
.source_clk = ESP_MODEM_DEFAULT_UART_CLK, \
.baud_rate = 115200, \
.tx_io_num = 17, \
.rx_io_num = 16, \
.rts_io_num = GPIO_NUM_NC, \
.cts_io_num = GPIO_NUM_NC, \
.rx_buffer_size = 4096, \
.tx_buffer_size = 512, \
.event_queue_size = 30, \
}, \
}
변경 후 빌드해서 동작시키면 아래와 같이 PPP모드로 접속 후 미니 WIFI 공유기로 바뀌는 것을 확인할 수 있습니다.
스마트폰으로 검색해 보면 아래와 같이 nano_iot_gateway를 확인할 수 있습니다.
LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의, vodafone IoT유심 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr
LTE CATM1 ESP32 IoT 보드 : codezoo
[codezoo] IoT Global SIM, IoT Connectivity, IoT Device
smartstore.naver.com