Lwip PPP 모뎀

CZ-ME310G1 Modem으로 esp-modem 사용하기

룬휘 2025. 8. 20. 21:46

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