# Tài liệu hướng dẫn chung # Nâng cấp từ SIM800 2G lên SIM7600/A76XX 4G 1. **Phần cứng** - Đối với dòng module SIM800L, việc nâng cấp lên module 4G sẽ tương thích phần cứng 100%. Đây là các module có sẵn tại linhkienthuduc - Lưu ý: Nếu ứng dụng có gọi cần chọn module có VoLTE
**2. Đăng ký với nhà mạng** - Đối với ứng dụng có gọi cần thực hiện đăng ký VoLTE, Xem trang hướng dẫn tại đây. [https://linhkienthuduc.com/faq-giai-dap-cac-thac-mac-ve-4g-esim-nbiot/](https://linhkienthuduc.com/faq-giai-dap-cac-thac-mac-ve-4g-esim-nbiot/) - Đối với các ứng dụng có 4G cần đăng ký gói cước 4G phù hợp và đổi sim 4G. - Đối với các ứng dụng sử dụng eSIM cần đăng ký trực tiếp với nhà mạng pháp nhân công ty. **3. Phần mềm**
Loại commandSIM800SIM7600/A76XXGhi chú
BaudrateMặc định 9600Mặc định 115200 Có thể set lại baudrate: AT+IPREX=<speed> **Ví dụ:** AT+IPREX=9600
Kiểm tra ATATATGiống
Kiểm tra tín hiệu mạngAT+CSQAT+CSQGiống
GọiATD<SDT>ATD<SDT>Giống
Nhận cuộc gọiATAATAGiống
SMS**Set text mode:** `AT+CMGF=1` **Set số điện thoại:** AT+CMGS=”xxxxxx” **Gửi:** Ctrl+Z **Đọc tin nhắn:** AT+CMGR=3 **Xóa tin nhắn:** AT+CMGD=3**Set text mode:** `AT+CMGF=1` **Set số điện thoại:** AT+CMGS=”xxxxxx” **Gửi:** Ctrl+Z **Đọc tin nhắn:** AT+CMGR=3 **Xóa tin nhắn:** AT+CMGD=3Giống
Kiểm tra kết nối mạngAT+CREG? AT+CGREG?AT+CREG?
Kiểm tra SIM (PIN)AT+CPIN?AT+CPIN?
Kết nối mạng**Kết nối GPRS:** AT+CGATT=1 và AT+CGATT? **Set APN:** AT+CSTT **Kết nối:** AT+CIICRKhông cần set APN (Tự động) Kết nối mạng: AT+NETOPEN
Kiểm tra IPAT+CIFSRAT+IPADDR
Kết nối TCP/UDPAT+CIPSTART = <mode>,<IP Address or domain>,<port> **Ví dụ**: AT+CIPSTART = “TCP”,”iotespresso.com”,80AT+CIPOPEN=<n>,<mode>,<IP Address or domain>,<port> **Ví dụ:** AT+CIPOPEN=1,”TCP”,”117.131.85.139″,5253
Kiểm tra kết nối TCP/UDPAT+CIPSTATUSKhông có
Gửi TCP/UDPAT+CIPSEND=<n> Ctrl+ZAT+CIPSEND=<n> Ctrl+Z
Ngắt kết nối TCP/UDPAT+CIPCLOSEAT+CIPCLOSE=<n>
Ngắt mạngAT+CIPSHUTAT+NETCLOSE
**4. Một số command thông dụng SIM7600/A76XX** **Lấy thông tin thiết bị** ```c++ AT+CGMI // Request manufacturer identification AT+CGMM // Request model identification AT+CGSN // Request product serial number identification AT+CSUB // Request the module version and chip AT+CPIN? // Request the state of the SIM card AT+CICCID // Read ICCID from SIM card AT+CNUM // Request the subscriber number AT+CNMP? // Preferred mode selection AT+COPS? // Check the current network operator AT+IPREX? // Check local baud rate AT+IPREX= // Set baudrate AT+CRESET // Reset the module HTTP: AT+HTTPINIT // Initialize and start the HTTP AT+HTTPPARA="URL","http://www.makerfabs.com" // Set the URL AT+HTTPACTION=0 // Connect the HTTP. (0-get, 1-post, 2-head) AT+HTTPHEAD // Read the response's header. AT+HTTPREAD=0,3 // Read the content (“3” means the number of the reading data) ``` # Tổng hợp các giải pháp Module SIM 4G thay thế SIM800 và SIM900 Như một số trang chính thống đã đưa tin, Bộ Thông tin – Truyền thông đã trình Thủ tướng Chính phủ xem xét phương án dừng công nghệ di động cũ 2G vào năm 2022. Vì vậy đối với những dự án phát triển từ nay trở về sau, anh em cần tìm cho mình module SIM phù hợp để tránh trường hợp phải thay đổi trong quá trình sản xuất cũng như sản phẩm. Xưa nay anh em quen sử dụng với các dòng module SIM đến từ SIM COM, như SIM900A, SIM800L,… với ưu điểm giá thành rẻ, phổ thông, cộng đồng lớn, tính ổn định,.. Tuy nhiên SIM900A, SIM800L,… chỉ hỗ trợ mạng 2G và GSM. Sau khi nhà mạng dừng công nghẹ 2G, thì những module này sẽ tương ứng với cục gạch – Tương tự với chiếc Nó Kìa huyền thoại 1202 hay 1280. Đây là những lý do khiến anh em phải đổi qua dòng module SIM mới. Bảng thống kê module ra chân V1 ( SIMCOM & Quectel) tương thích phần cứng với nhau
NSX module lõi4G Cat 1+ SMS, **No** VOLTE4G Cat 1+SMS+ VOLTE
SIMCOM Mã SP: [TDM2309](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c-tdm2309-giai-phap-thay-the-y-het-chan-cho-2g-sim800-sim800l/) Mã lõi: A7680C Mã SP: [SP000584](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c-thay-the-sim800-sim800l-co-volte/) (Bản CN)
SIMCOM Mã lõi: A7683E Mã SP: [TDM2413](https://linhkienthuduc.com/san-pham/module-sim-4g-volte-a7683e-ra-chan-tuong-thich-sim800l-tdm2413/) (Bản quốc tế)
Mã lõi: A7682S Mã SP: [TDM2430](https://linhkienthuduc.com/san-pham/module-4g-a7682s-volte-ra-chan-v1-tdm2430-thay-the-sim800-sim800l/) (Bản VN)
Bảng thống kê module ra chân TDM-4G-V2 tương thích phần cứng với nhau:
NSX module lõi4G+ SMS, **No** VOLTE4G+SMS+ VOLTE**4G+GPS**
SIMCOM Mã SP: [SP000765](https://linhkienthuduc.com/san-pham/module-4g-simcom-da-ra-chan-tdm-4g-v2-nv-no-volte-cai/) Mã lõi: A7680C-XXX NSX lõi: SIMCOM Mã SP: [SP000767](https://linhkienthuduc.com/san-pham/module-4g-simcom-da-ra-chan-tdm-4g-v2-sc-co-volte-cai/) Mã lõi: A7680C-XXX NSX lõi: SIMCOM Mã SP: [TDM2308](https://linhkienthuduc.com/san-pham/module-4g-gps-simcom-a7672s-ra-chan-tich-hop-nguon-va-khay-sim/) Mã lõi: A7672S-XXX NSX lõi: SIMCOM
SIMCOM Mã SP: [TDM2431](https://linhkienthuduc.com/san-pham/module-4g-a7682s-volte-ra-chan-v2-tdm2431/) Mã lõi: A7682S-XXX NSX lõi: SIMCOM
SIMCOM Mã SP: [SP25041673](https://linhkienthuduc.com/san-pham/module-4g-a7683e-ra-chan-v2/) Mã lõi: A7683E-XXX NSX lõi: SIMCOM
Quectel Mã SP: [SP001076](https://linhkienthuduc.com/san-pham/module-4g-quectel-ec800g-cn-da-ra-chan/) Mã lõi: EC800G-CN NSX lõi: Quectel**NO-VOLTE:** Mã SP: [TDM2404](https://linhkienthuduc.com/san-pham/module-4g-gps-quectel-eg800k-da-ra-chan-tdm2404/) Mã lõi: EG800K NSX lõi: Quectel **VOLTE:** Mã SP: [TDM2519](https://linhkienthuduc.com/san-pham/module-4g-quectel-ec800m-cn-ra-chan-ho-tro-4g-volte-va-gps/) Mã lõi: EC800M-CN NSX lõi: Quectel
Mobiletek Mã SP: [TDM2406](https://linhkienthuduc.com/san-pham/module-4g-gps-mobiletek-lynq-l511cn-da-ra-chan-tdm2406/) Mã lõi: LYNQ L511CN
Các kit phát triển 4G đi kèm:
4G CAT 1, SMS, VOLTE4G CAT 1, SMS, No VOLTE 3G 4G LTE CAT 4, SMS, VOLTE 3G,4G, GPS
Mã SP: [TDM2401](https://linhkienthuduc.com/san-pham/kit-phat-trien-4g-esp32-lte-cat-1-wifi-ble-tdm2402-volte/) Mã lõi: A7680C/A7683E/A7682S\*\* MCU: ESP32-WROOM-32E Mã SP: [TDM2402](https://linhkienthuduc.com/san-pham/kit-phat-trien-4g-esp32-lte-cat-1-wifi-ble-tdm2402/) Mã lõi: A7680C/A7683C\*\* MCU: ESP32-WROOM-32E Mã SP: [SP001060](https://linhkienthuduc.com/san-pham/kit-phat-trien-3g-4g-a7600c-esp32-dongle-lte-cat-4/) Mã lõi: A7600C Ngưng sản xuất Mã SP: [TDM2421](https://linhkienthuduc.com/san-pham/mach-phat-trien-4g-gps-esp32-c3-tdm2421/) Mã lõi: EG800K
Mã SP: [TDM2422](https://linhkienthuduc.com/san-pham/mach-phat-trien-4g-esp32-c3-volte-tdm2422/) Mã lõi: A7680C/A7683E/A7682S\*\* MCU: ESP32-C3FH4 Mã SP:[TDM2421](https://linhkienthuduc.com/san-pham/mach-phat-trien-4g-gps-esp32-c3-tdm2421/) **(bản có volte)** Mã lõi: EC800M-CN
Các sản phẩm 4G LTE CAT 4
4G+SMS+VOLTE 4G + GPS
Mã SP: [TDM2201](https://linhkienthuduc.com/san-pham/module-4g-3g-2g-simcom-a7600c-l1-lte-cat-4-ra-chan/) Mã lõi: A7600C NSX lõi: SIMCOM Mã SP: TDM2203 Mã lõi: Sim7600CE-M1S **ngưng sx**
Ngoài ra còn có các sản phẩm khác như: Module MINI PCIE 4G
Mã sản phẩm:[ SP004859](https://linhkienthuduc.com/san-pham/mach-mini-pcie-4g-lte-cat-1-module-tdm2409-sc/) Mã SP:[ TDM2403](https://linhkienthuduc.com/san-pham/mach-chuyen-doi-mini-pcie-4g-lte-cat-4-module-tdm2403/)
USB Dongle 4G
4G LTE CAT 1, No VOLTE4G LTE CAT 1 V2, No VOLTE(VOLTE), fit vỏ usb kèm vỏ usb LTE CAT 4, VOLTE
Mã SP: [TDM2310](https://linhkienthuduc.com/san-pham/usb-dongle-4g-lte-cat1/) Mã lõi: A7680CMã SP: [TDM2424](https://linhkienthuduc.com/san-pham/usb-4g-usb-dongle-lte-cat1-v2/) Mã lõi: A7680C(A7682S) Mã SP: [TDM2302](https://linhkienthuduc.com/san-pham/usb-dongle-4g-3g-2g-simcom-a7600c-l1-lte-cat-4/) Mã lõi: A7600C
Dưới đây là bảng tóm tắt các module 4G thay thế cho SIM800L, SIM900A và so sánh các thông số cơ bản
Link Module ra chânLoại hoàn thiệnbăng tần hỗ trợLoại 4GGPSVOLTE (gọi 4G)Nguồn cấpKhay simGiá bánLink mua module lõi
[**TDM-4G-V2-SC**](https://linhkienthuduc.com/san-pham/module-4g-simcom-da-ra-chan-tdm-4g-v2-sc-co-volte-cai/)Ra chân giống [A7670](https://linhkienthuduc.com/module-4g-simcom-a7670c-lass-da-ra-chan-thay-the-module-sim800l)4GLTE-CAT1 10Mbpskhông**có****5-16V**Push-pushthấp
[**TDM-4G-V2-NV**](https://linhkienthuduc.com/san-pham/module-4g-simcom-da-ra-chan-tdm-4g-v2-nv-no-volte-cai/)Ra chân giống [A7670](https://linhkienthuduc.com/module-4g-simcom-a7670c-lass-da-ra-chan-thay-the-module-sim800l)4GLTE-CAT1 10Mbpskhông**không****5-16V**Push-pushthấp
[**TDM2309-No-volte**](https://linhkienthuduc.com/module-4g-simcom-a7680c-tdm2309-giai-phap-thay-the-y-het-chan-cho-2g-sim800-sim800l)Ra chân (thay thế trực tiếp SIM800/SIM800L module)4GLTE-CAT1 10Mbpskhông**không****3.8-4.2V**Push-pushthấp nhất[A7680C](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c)
[**A7680C-VoLTE**](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c-thay-the-sim800-sim800l-co-volte)Ra chân ( thay thế trực tiếp SIM800/SIM800L module)4GLTE-CAT1 10Mbpskhông**có****3.8-4.2V**Push-pushthấp[A7680C ( ghi chú cho shop có volte)](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c)
[**A7670**](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7670c-lass-da-ra-chan-thay-the-module-sim800l)Ra chân (ngưng sx, Khuyến nghị đổi sang [**TDM-4G-V2)**](https://linhkienthuduc.com/san-pham/module-4g-simcom-da-ra-chan-tdm-4g-v2-nv-co-volte)4GLTE-CAT1 10Mbpskhông**có****5-16V**Push-pushthấp[A7670](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7670c-lass)
[**A7672S**](https://linhkienthuduc.com/san-pham/module-4g-gps-simcom-a7672s-ra-chan-tich-hop-nguon-va-khay-sim)Ra chân4G/GPSLTE-CAT1 10Mbps**Có****có****5-16V**Open-locktrung bình[A7672S](https://linhkienthuduc.com/san-pham/module-2g-4g-gps-simcom-a7672s)
**[A7600C](https://linhkienthuduc.com/san-pham/module-4g-3g-2g-simcom-a7600c-l1-lte-cat-4-ra-chan)**Ra chân2G/3G/4GLTE-CAT4 150Mbpskhông**có****5-16V**Push-pushcao[A7600C](https://linhkienthuduc.com/san-pham/module-sim-2g-3g-4g-a7600c-labe-lte-cat-4-simcom)
[**SIM7600CE**](https://linhkienthuduc.com/san-pham/module-4g-3g-2g-gps-simcom-sim7600ce-m1s-lte-cat-4-ra-chan)Ra chân2G/3G/4G+GPSLTE-CAT4 150Mbps**Có****có****5-16V**Push-pushcao nhất[SIM7600CE](https://linhkienthuduc.com/san-pham/sim7600ce-m1s-4g-lte-cat-4-gps-simcom-module)
**[SIM7020E](https://linhkienthuduc.com/san-pham/module-nb-iot-sim7020e-ra-chan)**Ra chânNB-IoTNB-IoTkhôngkhông**2.1-3.6V**Push-pushthấp[SIM7020E](https://linhkienthuduc.com/san-pham/module-mang-nb-iot-sim7020e)
[**A7680C USB Dongle**](https://linhkienthuduc.com/san-pham/usb-dongle-4g-lte-cat1)Cổng ra USB4GLTE-CAT1 10Mbpskhôngkhông**5V USB**Push-pullthấp[A7680C](https://linhkienthuduc.com/san-pham/module-4g-simcom-a7680c)
[**A7600C USB Dongle**](https://linhkienthuduc.com/san-pham/usb-dongle-4g-3g-2g-simcom-a7600c-l1-lte-cat-4)Cổng ra USB2G/3G/4GLTE-CAT4 150MbpsKhông**có****5V USB**Open-Lockcao[A7600C](https://linhkienthuduc.com/san-pham/module-sim-2g-3g-4g-a7600c-labe-lte-cat-4-simcom)
# AT Command Test cho các dòng Module SIM 1. **Giới thiệu phần mềm AT Command Test** Đây là ứng dụng do Linh Kiện Thủ Đức phát triển, dựa trên nhu cầu test và phát triển nhanh các ứng dụng dựa trên module SIM, IoT Trong quá trình phát triển ứng dụng dành cho các dòng module SIM, nếu có vấn đề gì các bạn có thể liên hệ trực tiếp tới Linh Kiện Thủ Đức, sẽ được hỗ trợ và update nhiệt tình Cập nhật: - Hỗ trợ MQTT qua AT command - Hỗ trợ MQTTS qua AT command, bao gồm mode: - Không verify server: Không có Server CA file - Verify server: Có server CA file - Verify client và server: Có server CA file + Client Cert + Client Key - Hỗ trợ lưu command - Hỗ trợ GPS, Location based service 2\. **Các tính năng cơ bản** – Hỗ trợ các command cơ bản – Hỗ trợ SMS – Hỗ trợ Call – Hỗ trợ MQTT trên nền TCP – Hỗ trợ MQTT AT command của SIMCOM – Hỗ trợ GPS (A7600CE) hoặc LBS (Location based service – A7670C, A7600C1)
[![](https://linhkienthuduc.com/wp-content/uploads/2024/03/08zblvh0.jpg)](https://linhkienthuduc.com/wp-content/uploads/2024/03/08zblvh0.jpg)
[![](https://linhkienthuduc.com/wp-content/uploads/2024/03/495v6ks7.jpg)](https://linhkienthuduc.com/wp-content/uploads/2024/03/495v6ks7.jpg)
[![](https://linhkienthuduc.com/wp-content/uploads/2024/03/gz8o6tx8.jpg)](https://linhkienthuduc.com/wp-content/uploads/2024/03/gz8o6tx8.jpg)
**3. Các tính năng sẽ phát triển** – HTTP(S) – Hỗ trợ Kết nối PPP (Point to Point) **4. Link Tải:** **[Link Tải](https://github.com/TDLOGY/SW_ATCommand_Test)** # Lập trình sử dụng module SIM để gửi tin nhắn và gọi điện ### **Chuẩn bị** 1. Mạch arduino, esp8266 hoặc esp32,… có hỗ trợ Arduino IDE 2. Module SIM A7680C, A7670C, A7600C, SIM7600CE 3. Mạch hạ áp LM2596 hoặc tương đương (Đối với A7680C không tích hợp mạch hạ áp) 4. Nguồn 6-15V 10W 5. Jack DC 6. Dây Bus và dây điện 7. SIM điện thoại di động có thể gọi và gửi tin nhắn 8. Phần mềm Arduino IDE Các module 4G thông dụng xem tại đây: **[Tổng hợp các loại module 4G 5G NB-IoT thông dụng](https://linhkienthuduc.com/tong-hop-cac-giai-phap-module-sim-4g-thay-the-sim800-va-sim900/)** ### **Kết nối** [![image.png](https://docs.tdlogy.com/uploads/images/gallery/2025-06/scaled-1680-/NcgCiVuY58QdJzny-image.png)](https://docs.tdlogy.com/uploads/images/gallery/2025-06/NcgCiVuY58QdJzny-image.png) - Đối với module [A7680C ](https://linhkienthuduc.com/module-4g-simcom-a7680c-thay-the-sim800-sim800l-co-volte)(Kết nối tương tự SIM800L) - Đối với các dòng SIM A7670C, A7600C, SIM7600CE không cần mạch LM2596 hạ áp và có thể kết nối trực tiếp nguồn vào với module SIM (module SIM đã tích hợp mạch hạ áp DCDC) Code mẫu(Đây là code mẫu giao tiếp với ESP32 bạn có thể điều chỉnh để phù hợp với Arduino): ```c++ #include #define simSerial Serial2 //Sửa cho phù hợp với module đang dùng #define MCU_SIM_BAUDRATE 115200 #define MCU_SIM_TX_PIN 17 //Sửa cho phù hợp với module đang dùng #define MCU_SIM_RX_PIN 16 //Sửa cho phù hợp với module đang dùng #define MCU_SIM_EN_PIN 15 //Sửa cho phù hợp với module đang dùng // Thay bằng thông tin WiFi của bạn const char* ssid = "..."; // Tên mạng WiFi const char* password = "..."; // Mật khẩu WiFi // Please update number before test #define PHONE_NUMBER "+8498*****" // Nhập SĐT của bạn void sim_at_wait() { delay(100); while (simSerial.available()) { Serial.write(simSerial.read()); } } bool sim_at_cmd(String cmd){ simSerial.println(cmd); sim_at_wait(); return true; } bool sim_at_send(char c){ simSerial.write(c); return true; } void sent_sms() { sim_at_cmd("AT+CMGF=1"); String temp = "AT+CMGS=\""; temp += (String)PHONE_NUMBER; temp += "\""; sim_at_cmd(temp); sim_at_cmd("ESP32-SIM7600X From linhkienthuduc.com"); // End charactor for SMS sim_at_send(0x1A); } void call() { String temp = "ATD"; temp += PHONE_NUMBER; temp += ";"; sim_at_cmd(temp); delay(20000); // Hang up sim_at_cmd("ATH"); } void setup() { /* Power enable */ pinMode(MCU_SIM_EN_PIN,OUTPUT); digitalWrite(MCU_SIM_EN_PIN,LOW); //Sửa cho phù hợp với module đang dùng delay(20); Serial.begin(115200); Serial.println("\n\n\n\n-----------------------\nSystem started!!!!"); // Delay for power on delay(12000); // Đặt ESP32 ở chế độ Station (kết nối với WiFi) WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to "); Serial.println(ssid); // Chờ kết nối WiFi while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Khi kết nối thành công Serial.println(""); Serial.println("WiFi connected!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Hiển thị địa chỉ IP Serial.print("RSSI: "); Serial.println(WiFi.RSSI()); // Hiển thị cường độ tín hiệu (dBm) Serial.print("MAC Address: "); Serial.println(WiFi.macAddress()); // Hiển thị địa chỉ MAC simSerial.begin(MCU_SIM_BAUDRATE, SERIAL_8N1, MCU_SIM_RX_PIN, MCU_SIM_TX_PIN); // Check AT Command Serial.println("Checking AT command..."); sim_at_cmd("AT"); // Product infor sim_at_cmd("ATI"); // Check SIM Slot sim_at_cmd("AT+CPIN?"); // Check Signal Quality sim_at_cmd("AT+CSQ"); sim_at_cmd("AT+CIMI"); if (WiFi.status() == WL_CONNECTED) { Serial.println("Still connected to WiFi"); Serial.print("RSSI: "); Serial.println(WiFi.RSSI()); } else { Serial.println("WiFi disconnected! Attempting to reconnect..."); WiFi.reconnect(); } sent_sms(); // Delay 5s delay(5000); call(); } void loop() { if (Serial.available()){ char c = Serial.read(); simSerial.write(c); } sim_at_wait(); call(); delay(10000); // Chuyển tiếp dữ liệu từ module SIM tới máy tính if (simSerial.available()) { char c = simSerial.read(); Serial.write(c); // Gửi dữ liệu từ module SIM về PC } } ``` # Code mẫu SMS-CALL cảnh báo lửa và khí gas

Code mẫu ở đây dùng sản phẩm [**Kit phát triển 4G ESP32 LTE CAT 1 WIFI BLE TDM2401** ](https://linhkienthuduc.com/san-pham/kit-phat-trien-4g-esp32-lte-cat-1-wifi-ble-tdm2401-volte/)**[Volte](https://linhkienthuduc.com/san-pham/kit-phat-trien-4g-esp32-lte-cat-1-wifi-ble-tdm2401-volte/).**

Bạn có thể nối mạch như sau:
![](https://lh7-us.googleusercontent.com/docsz/AD_4nXf3j0s026uadL0avqtrbQ8ah55x8tPZ8rL4EiwcyGoOODQES9VLogkyZZIo8Jn3RIb0lVD3_5zpByAAU5FFaq8FYPcldxZDS0b90dUmOmq_m6P8DKYYVpGdNlwD2cWJgtbl84cz96WtqMZ1JX3IzKjiV6nu?key=jK4EZvU7C1eN_UF9WhI07Q)
[![image.png](https://docs.tdlogy.com/uploads/images/gallery/2025-06/scaled-1680-/Kch5YDJjp9v23kAH-image.png)](https://docs.tdlogy.com/uploads/images/gallery/2025-06/Kch5YDJjp9v23kAH-image.png) **Lập trình:**

Phần cảnh báo có thể dùng chung cho các sản phẩm khác, bạn cần điều chỉnh **chân UART** cho hợp lệ.

Bạn có thể tham khảo video hướng dẫn cụ thể tại đây: [https://www.youtube.com/watch?v=JW7ia1GnZh8](https://www.youtube.com/watch?v=JW7ia1GnZh8)

```c++ #include #define simSerial Serial2 #define MCU_SIM_BAUDRATE 115200 #define MCU_SIM_TX_PIN 17 #define MCU_SIM_RX_PIN 16 #define MCU_SIM_EN_PIN 15 // Định nghĩa chân pin cảm biến lửa và MQ2 #define FLAME_PIN 18 #define MQ2_PIN 32 // Ngưỡng giá trị cho cảm biến MQ2 và cảm biến lửa #define MQ2_THRESHOLD 800 #define FLAME_THRESHOLD LOW // Giả sử khi chân pin cảm biến lửa xuất hiện mức LOW là phát hiện lửa #define PHONE_NUMBER "0..." //Điền số điện thoại của bạn void sim_at_wait() { delay(100); while (simSerial.available()) { Serial.write(simSerial.read()); } } bool sim_at_cmd(String cmd) { simSerial.println(cmd); sim_at_wait(); return true; } bool sim_at_send(char c){ simSerial.write(c); return true; } void sent_sms(String message) { sim_at_cmd("AT+CMGF=1"); // Chế độ văn bản String temp = "AT+CMGS=\""; temp += PHONE_NUMBER; temp += "\""; sim_at_cmd(temp); sim_at_cmd(message); // Nội dung tin nhắn // Kết thúc tin nhắn sim_at_send(0x1A); } void call() { String temp = "ATD"; temp += PHONE_NUMBER; temp += ";"; sim_at_cmd(temp); // Gọi đi delay(20000); // Đợi 20 giây sim_at_cmd("ATH"); // Cúp máy } void setup() { /* Bật nguồn mô-đun SIM */ pinMode(MCU_SIM_EN_PIN, OUTPUT); digitalWrite(MCU_SIM_EN_PIN, LOW); delay(20); Serial.begin(115200); Serial.println("\n\n\n\n-----------------------\nHệ thống bắt đầu!!!!"); // Đợi 8 giây để mô-đun SIM khởi động delay(8000); simSerial.begin(MCU_SIM_BAUDRATE, SERIAL_8N1, MCU_SIM_RX_PIN, MCU_SIM_TX_PIN); // Kiểm tra lệnh AT sim_at_cmd("AT"); // Thông tin sản phẩm sim_at_cmd("ATI"); // Kiểm tra khe SIM sim_at_cmd("AT+CPIN?"); // Kiểm tra chất lượng tín hiệu sim_at_cmd("AT+CSQ"); sim_at_cmd("AT+CIMI"); // Khai báo chân pin cảm biến lửa là đầu vào pinMode(FLAME_PIN, INPUT); // Khai báo chân pin cảm biến MQ2 là đầu vào pinMode(MQ2_PIN, INPUT); // Đợi 5 giây delay(5000); } void loop() { // Kiểm tra phát hiện lửa từ cảm biến lửa int flame_detected = digitalRead(FLAME_PIN); Serial.print("Trạng thái cảm biến lửa: "); Serial.println(flame_detected); delay (1000); if (flame_detected == FLAME_THRESHOLD) { Serial.println("Cảnh báo, Phát hiện lửa"); sent_sms("Fire Detected"); delay(5000); // Chờ đợi cho tin nhắn được gửi đi call(); // Thực hiện cuộc gọi } // Kiểm tra phát hiện khí gas từ cảm biến MQ2 int MQ2_value = analogRead(MQ2_PIN); Serial.print("Giá trị MQ2: "); Serial.println(MQ2_value); delay (1000); if (MQ2_value > MQ2_THRESHOLD) { Serial.println("Phát hiện rò rỉ khí gas"); sent_sms("Gas leak"); delay(5000); // Chờ đợi cho tin nhắn được gửi đi call(); // Thực hiện cuộc gọi } // Giao tiếp với mô-đun SIM qua cổng Serial if (Serial.available()){ char c = Serial.read(); simSerial.write(c); } sim_at_wait(); } ``` # Code mẫu MQTT gửi tọa độ GPS tới sever dùng 4G

Dưới đây là code mẫu dùng cho [**Mạch phát triển 4G GPS ESP32-C3 TDM2421**](https://linhkienthuduc.com/san-pham/mach-phat-trien-4g-gps-esp32-c3-tdm2421/), một số sản phẩm khác bạn cần tìm hiểu tập lệnh AT để chỉnh sửa cho phù hợp.

Sever ở đây mình dùng là Thingsboard, nếu dùng sever khác thì các bạn chỉnh **TOPIC, ACESSTOKEN cho phù hợp.**

Để sử dụng được MQTT cho module này, các lệnh AT cần thiết phải dùng là: 1. AT+QMTOPEN 2. AT+QMTCONN 3. AT+QMTPUBEX 4. AT+QMTDISC **Lập trình** ```c++ #include #define simSerial Serial0 // Sử dụng Serial0 cho module SIM #define MCU_SIM_BAUDRATE 115200 #define MCU_SIM_TX_PIN 21 #define MCU_SIM_RX_PIN 20 #define MCU_SIM_EN_PIN 2 #define BUF_SIZE 256 #define PAYLOAD_SIZE 128 #define MSG_SIZE 128 char data[BUF_SIZE]; char payload[PAYLOAD_SIZE]; char msg[MSG_SIZE]; float latDecimalGlobal = 0.0; float lonDecimalGlobal = 0.0; bool is_publishing = false; // Hàm chuyển đổi tọa độ sang dạng thập phân float convertToDecimal(char *coordinate, char direction) { float degrees, minutes, decimal; char degStr[4], minStr[10]; if (strlen(coordinate) > 9) { // Kinh độ (DDDMM.MMMM) strncpy(degStr, coordinate, 3); degStr[3] = '\0'; strcpy(minStr, coordinate + 3); } else { // Vĩ độ (DDMM.MMMM) strncpy(degStr, coordinate, 2); degStr[2] = '\0'; strcpy(minStr, coordinate + 2); } degrees = atof(degStr); minutes = atof(minStr); decimal = degrees + (minutes / 60.0); if (direction == 'S' || direction == 'W') { decimal = -decimal; } return decimal; } // Hàm phân tích chuỗi GPS void parseGPSData(char *gpsData) { char *token; char latitude[12], longitude[12]; char latDir, lonDir; float latDecimal, lonDecimal; // Kiểm tra lỗi GPS hoặc dữ liệu không hợp lệ if (strstr(gpsData, "+CME ERROR:") != NULL) { Serial.print("GPS error: "); Serial.println(gpsData); // Tạo payload mặc định snprintf(payload, sizeof(payload), "{\"latitude\": %.6f, \"longitude\": %.6f}", latDecimalGlobal, lonDecimalGlobal); Serial.print("Payload (default): "); Serial.println(payload); return; } if (strstr(gpsData, "+QGPSLOC:") == NULL) { Serial.println("No valid GPS data found"); // Tạo payload mặc định snprintf(payload, sizeof(payload), "{\"latitude\": %.6f, \"longitude\": %.6f}", latDecimalGlobal, lonDecimalGlobal); Serial.print("Payload (default): "); Serial.println(payload); return; } // Bỏ qua phần đầu "+QGPSLOC: " token = strtok(gpsData, " "); token = strtok(NULL, ","); // Bỏ qua thời gian token = strtok(NULL, ","); // Lấy vĩ độ strcpy(latitude, token); latDir = latitude[strlen(latitude) - 1]; latitude[strlen(latitude) - 1] = '\0'; // Lấy kinh độ token = strtok(NULL, ","); strcpy(longitude, token); lonDir = longitude[strlen(longitude) - 1]; longitude[strlen(longitude) - 1] = '\0'; // Chuyển đổi sang thập phân latDecimal = convertToDecimal(latitude, latDir); lonDecimal = convertToDecimal(longitude, lonDir); // Cập nhật biến toàn cục latDecimalGlobal = latDecimal; lonDecimalGlobal = lonDecimal; // In kết quả Serial.print("Vi do: "); Serial.println(latDecimal, 6); Serial.print("Kinh do: "); Serial.println(lonDecimal, 6); // Tạo payload JSON snprintf(payload, sizeof(payload), "{\"latitude\": %.6f, \"longitude\": %.6f}", latDecimalGlobal, lonDecimalGlobal); Serial.print("Payload: "); Serial.println(payload); } void sim_at_wait() { delay(1000); // Tăng delay để đảm bảo nhận đủ dữ liệu int len = 0; while (simSerial.available()) { char c = simSerial.read(); if (len < BUF_SIZE - 1) { data[len++] = c; } } if (len > 0) { data[len] = '\0'; // Null-terminate chuỗi Serial.print("===== SIM receive: "); Serial.println(data); // Kiểm tra lỗi MQTT if (strstr(data, "+QMTSTAT:") != NULL) { Serial.print("MQTT connection error: "); Serial.println(data); } // Phân tích GPS nếu nhận được và không đang publish if (strstr(data, "+QGPSLOC:") != NULL && !is_publishing) { parseGPSData(data); } else if (strstr(data, "+CME ERROR:") != NULL) { parseGPSData(data); // Xử lý lỗi GPS } } else { Serial.println("No data received from SIM module"); } } bool sim_at_cmd(String cmd) { Serial.print("Sending command: "); Serial.println(cmd); simSerial.println(cmd); sim_at_wait(); // Kiểm tra phản hồi OK hoặc ERROR if (strstr(data, "OK") != NULL) { return true; } else if (strstr(data, ">") != NULL) { return true; // Dấu > cho biết module chờ payload } else if (strstr(data, "ERROR") != NULL) { Serial.print("Command failed: "); Serial.println(cmd); return false; } return false; } bool sim_at_send(char c) { simSerial.write(c); return true; } void get_gps_data() { Serial.println("Requesting GPS data..."); sim_at_cmd("AT+QGPS?"); for (int i = 0; i < 5; i++) { // Thử 5 lần Serial.print("GPS attempt "); Serial.println(i + 1); sim_at_cmd("AT+QGPSLOC=0"); delay(5000); // Chờ 5 giây để GPS thử định vị if (strstr(data, "+QGPSLOC:") != NULL) { Serial.println("GPS data received!"); break; } } } bool check_network() { sim_at_cmd("AT+CSQ"); if (strstr(data, "+CSQ: 0,0") != NULL || strstr(data, "+CSQ: 99,99") != NULL) { Serial.println("No network signal!"); return false; } Serial.println("Network signal OK"); // Kiểm tra GPRS sim_at_cmd("AT+CGATT?"); if (strstr(data, "+CGATT: 1") == NULL) { Serial.println("GPRS not attached, attempting to attach..."); sim_at_cmd("AT+CGATT=1"); delay(2000); return strstr(data, "OK") != NULL; } return true; } bool send_mqtt_data() { // Khởi tạo payload mặc định nếu rỗng if (strlen(payload) == 0) { snprintf(payload, sizeof(payload), "{\"latitude\": %.6f, \"longitude\": %.6f}", latDecimalGlobal, lonDecimalGlobal); Serial.print("Payload initialized: "); Serial.println(payload); } Serial.print("Sending MQTT data with payload: "); Serial.println(payload); is_publishing = true; if (!check_network()) { Serial.println("Network signal weak, skipping MQTT send"); is_publishing = false; return false; } // Thử mở kết nối MQTT bool mqtt_opened = false; for (int i = 0; i < 3; i++) { if (sim_at_cmd("AT+QMTOPEN=0,\"demo.thingsboard.io\",1883")) { // CHỈNH SỬA CHO PHÙ HỢP VỚI SEVER ĐANG DÙNG if (strstr(data, "+QMTOPEN: 0,0") != NULL) { Serial.println("MQTT connection opened"); mqtt_opened = true; break; } } Serial.println("MQTT open failed, retrying..."); delay(3000); } if (!mqtt_opened) { Serial.println("Failed to open MQTT connection"); is_publishing = false; return false; } // Thử kết nối client bool mqtt_connected = false; for (int i = 0; i < 3; i++) { if (sim_at_cmd("AT+QMTCONN=0,\"clientExample\",\"StQb4lQec7VJK7BZsUl5\"")) { // CHỈNH ACCESTOKEN CHO PHÙ HỢP if (strstr(data, "+QMTCONN: 0,0,0") != NULL) { Serial.println("MQTT client connected"); mqtt_connected = true; break; } } Serial.println("MQTT connect failed, retrying..."); delay(3000); } if (!mqtt_connected) { Serial.println("Failed to connect MQTT client"); is_publishing = false; return false; } // Gửi payload bool mqtt_published = false; for (int i = 0; i < 3; i++) { uint32_t dodai = strlen(payload); snprintf(msg, sizeof(msg), "AT+QMTPUBEX=0,0,0,0,\"v1/devices/me/telemetry\",%lu", dodai); // CHỈNH TOPIC CHO PHÙ HỢP if (sim_at_cmd(msg)) { delay(1000); // Tăng delay để chờ dấu > if (strstr(data, ">") != NULL) { if (sim_at_cmd(payload)) { delay(1000); // Tăng delay để gửi payload sim_at_cmd(""); // Gửi \r\n delay(1000); // Chờ phản hồi if (strstr(data, "+QMTPUBEX: 0,0,0") != NULL) { Serial.println("MQTT publish successful"); mqtt_published = true; break; } } } } Serial.println("MQTT publish failed, retrying..."); delay(3000); } if (!mqtt_published) { Serial.println("Failed to publish MQTT data"); } // Ngắt kết nối sim_at_cmd("AT+QMTDISC=0"); delay(2000); is_publishing = false; return mqtt_published; } void setup() { pinMode(MCU_SIM_EN_PIN, OUTPUT); digitalWrite(MCU_SIM_EN_PIN, HIGH); // Thả PWRKEY lên cao delay(500); Serial.begin(115200); Serial.println("\n\n\n\n-----------------------\nSystem started!!!!"); delay(5000); simSerial.begin(MCU_SIM_BAUDRATE, SERIAL_8N1, MCU_SIM_RX_PIN, MCU_SIM_TX_PIN); Serial.println("SIM Serial initialized!"); Serial.println("Checking AT command..."); sim_at_cmd("AT"); Serial.println("Getting product info..."); sim_at_cmd("ATI"); Serial.println("Checking signal quality..."); sim_at_cmd("AT+CSQ"); Serial.println("Getting IMSI..."); sim_at_cmd("AT+CIMI"); Serial.println("Activating GPS..."); sim_at_cmd("AT+QGPSCFG=\"antenna\",1"); // Bật nguồn cho anten chủ động sim_at_cmd("AT+QGPS=1"); delay(15000); // Chờ 15 giây để GPS khởi động // Khởi tạo payload mặc định snprintf(payload, sizeof(payload), "{\"latitude\": %.6f, \"longitude\": %.6f}", latDecimalGlobal, lonDecimalGlobal); Serial.print("Initial payload: "); Serial.println(payload); get_gps_data(); } void loop() { if (Serial.available()) { char c = Serial.read(); sim_at_send(c); } if (!is_publishing) { get_gps_data(); // Đọc GPS trước khi gửi MQTT } send_mqtt_data(); delay(5000); } ``` ### Kết quả: Giao diện ThingsBoard sau khi nạp code. State “Active” đã hiển thị ở mục Device có Name là “MiHi” cho thấy module đã kết nối thành công tới ThingsBoard. [![image.png](https://docs.tdlogy.com/uploads/images/gallery/2025-06/scaled-1680-/Jw5SrMwGcCvyNyHE-image.png)](https://docs.tdlogy.com/uploads/images/gallery/2025-06/Jw5SrMwGcCvyNyHE-image.png) [![image.png](https://docs.tdlogy.com/uploads/images/gallery/2025-06/scaled-1680-/8DkW2sid2zqqCYwC-image.png)](https://docs.tdlogy.com/uploads/images/gallery/2025-06/8DkW2sid2zqqCYwC-image.png) # Hướng dẫn sử dụng module 4G với ESP32 – MQTT Trong bài viết này mình sẽ hướng dẫn các bạn kết nối ESP với module 4G sử dụng giao thức **[PPPoS](https://linhkienthuduc.com/giao-thuc-ppp-point-to-point-protocol-su-dung-ket-noi-module-sim-4g-gsm-la-gi)** Với việc sử dụng giao thức PPPoS, module SIM sẽ hoạt động như là 1 driver network giống như Wi-Fi, Ethernet. **1. Kết nối**
**ESP32****Module SIM**
5VVin
GNDGND
GPIO 17 (MCU-TX)RX
GPIO 16 (MCU-RX) TX
GPIO 15 (MCU-RX)PEN (Power Enable)
**2. Code mẫu** **ESP32 ESP-IDF:**
- Sử dụng thư viện ESP-IDF - Đã test trên các dòng SIM A7670C, A7600C1, SIM7600CE, Quectel EC600S-CN - Hỗ trợ kết nối MQTT(S) - Hỗ trợ lưu configuration vào bộ nhớ - [https://github.com/TDLOGY/esp32\_pppos](https://github.com/TDLOGY/esp32_pppos)
**ESP32 Arduino:**
- Sử dụng thư viện arduino - Đã test trên các dòng SIM A7670C, A7600C1, SIM7600CE, Quectel EC600S-CN - Hỗ trợ kết nối MQTT(S) - Hỗ trợ kết nối SSL - [https://github.com/TDLOGY/esp32\_pppos\_arrduino](https://github.com/TDLOGY/esp32_pppos_arrduino)
**3. Test** Mình sử dụng ESP-IDF để test kết nối tới mqtt server test.mosquitto.org:1883 **Hướng dẫn sử dụng:** **[Phần mềm AT Command Test](https://linhkienthuduc.com/at-command-test-cho-cac-dong-module-sim)** # Tổng hợp tài liệu/software/driver cho các module sim **Document** - Tài liệu AT command/Datasheet: [https://github.com/TDLOGY/simcom\_document](https://github.com/TDLOGY/simcom_document) - [Index of /public/](https://cdn.tdlogy.com/public/) **Driver** - SIMCOM USB Driver (Win7/Win8/Win10/Win11) cho các dòng module A76XX/SIM76XX: [https://github.com/TDLOGY/SIMCOM\_USB\_DRIVER](https://github.com/TDLOGY/SIMCOM_USB_DRIVER) **Tool AT Command** - AT Command Test (Win10/Win11): [https://github.com/TDLOGY/SW\_ATCommand\_Test](https://github.com/TDLOGY/SW_ATCommand_Test) **Hardware** - TDM2309 hardware: [https://github.com/TDLOGY/TDM2309-A7680C-4G-Replace-SIM800L](https://github.com/TDLOGY/TDM2309-A7680C-4G-Replace-SIM800L) - TDM SIM7600CE: [https://github.com/TDLOGY/HW\_TDM-SIM7600CE](https://github.com/TDLOGY/HW_TDM-SIM7600CE) - ESP32-SIM7600CE Dev Kit: [https://github.com/TDLOGY/HW\_TDM-SIM7600CE-ESP32-DEV-KIT](https://github.com/TDLOGY/HW_TDM-SIM7600CE-ESP32-DEV-KIT) - TDM2307 A7672S GPS: [https://github.com/TDLOGY/TDM2307-A7672S-GPS-4G](https://github.com/TDLOGY/TDM2307-A7672S-GPS-4G) - A76XX Dongle: [https://github.com/TDLOGY/TDM-2301\_TDM-2302-X7600CX-USB-Dongle](https://github.com/TDLOGY/TDM-2301_TDM-2302-X7600CX-USB-Dongle) ### Code mẫu **Arduino** - ESP32 SIMCOM Test (SMS/Call): [https://github.com/TDLOGY/esp32\_sim7600x\_arduino\_test](https://github.com/TDLOGY/esp32_sim7600x_arduino_test) - TinyGSM (SIM76XX/A76XX): [https://github.com/vshymanskyy/TinyGSM](https://github.com/vshymanskyy/TinyGSM) - ESP32 PPPOS Arduino (version esp32 in Arduino: 1.0.6): [https://github.com/TDLOGY/esp32\_pppos\_arrduino](https://github.com/TDLOGY/esp32_pppos_arrduino) **ESP32** (esp-idf) - ESP32 PPPOS LKTD (esp-idf v4.4): [https://github.com/TDLOGY/esp32\_pppos](https://github.com/TDLOGY/esp32_pppos) - ESP Modem \[Hỗ trợ AT Command/PPPOS/CMUX (Data mode + Command mode)\] - [https://github.com/espressif/esp-protocols/tree/master/components/esp\_modem](https://github.com/espressif/esp-protocols/tree/master/components/esp_modem) - [https://github.com/espressif/esp-protocols/tree/master/components/esp\_modem/examples/simple\_cmux\_client](https://github.com/espressif/esp-protocols/tree/master/components/esp_modem/examples/simple_cmux_client) - [https://github.com/espressif/esp-protocols/tree/master/components/esp\_modem/examples/pppos\_client](https://github.com/espressif/esp-protocols/tree/master/components/esp_modem/examples/pppos_client) **MCU (STM32/WCH32/TI/NXP/Nuvoton/…)** - GSM Lib (STM32): [https://github.com/nimaltd/gsm\_v5](https://github.com/nimaltd/gsm_v5) - ATC AT Command: [https://github.com/nimaltd/atc](https://github.com/nimaltd/atc) - LWCell: [https://github.com/MaJerle/lwcell](https://github.com/MaJerle/lwcell) # Hướng dẫn cài đặt driver module SIM 4G cho Linux/Windows ## 1. Các loại chế độ hoạt động của module 4G và cách chuyển chế độ hoạt động Các module 4G hỗ trợ các driver cơ bản như sau: - 4G LTE Cat 1: ECM,EEM, NCM, RNDIS (WWAN) - 4G LTE Cat 4: MBIM, NDIS, RNDIS(WWAN), QMI Tùy từng loại module mà có cách chuyển đổi khác nhau (tham khảo at command manual và Linux USB Application Note của từng hãng: Tham khảo tài liệu: [A76XX Series\_Linux\_USB\_Application Note\_V1.00.pdf](https://github.com/TDLOGY/simcom_document/blob/master/A76XX/A76XX%20Series_Linux_USB_Application%20Note_V1.00.pdf) [SIM7500\_SIM7600 Linux NDIS User Guide\_V2.01.pdf](https://github.com/TDLOGY/simcom_document/blob/master/SIM7600X/SIM7500_SIM7600%20Linux%20NDIS%20User%20Guide_V2.01.pdf) [https://www.waveshare.com/wiki/SIM7600G-H\_4G\_DONGLE](https://www.waveshare.com/wiki/SIM7600G-H_4G_DONGLE) **Ví dụ:** - A7672S/A7600/A7680C: (Có thể kết hợp thêm **AT+DIALMODE=1** để bật internet tự động) - RNDIS: **AT$MYCONFIG=”usbnetmode”,0** - ECM: **AT$MYCONFIG=”usbnetmode”,1** - Quectel (Tùy dùng dòng module) (Có thể kết hợp thêm **AT+QNETDEVCTL=3,1,1** để bật internet tự động) - AT+QCFG=”usbnet”,0 # set QMI or RMNET mode - AT+QCFG=”usbnet”,1 # set ECM mode - AT+QCFG=”usbnet”,2 # set MBIM mode - LTE Cat 1 **RNDIS** sẽ hỗ trợ trên cả Linux và Windows, ECM và EEM không hỗ trợ trên windows - LTE Cat 4 có thể dùng QMI hoặc MBIM để đạt tốc độ tối ưu. ## 1. Windows - Đối với windows chỉ cần cài đặt driver dưới đây là có thể kết nối internet và có port AT Command/GPS/Debug: [https://github.com/TDLOGY/SIMCOM\_USB\_DRIVER](https://github.com/TDLOGY/SIMCOM_USB_DRIVER) - Trên windows hỗ trợ driver: RNDIS,NDIS, MBIM,QMI không hỗ trợ ECM, EEM. Vì vậy tùy theo module mà cần chuyển về chế độ phù hợp - Có thể cần chuyển sang chế độ RNDIS để chạy được, và bật chế độ bật mạng tự động ## 2. Ubuntu/Raspberry pi - Đối với ubuntu (>20.04)/Raspberry pi thông thường đã hỗ trợ các driver cho module 4G - Các driver cơ bản như nhau: RNDIS,ECM,EEM,WWAN,QMI - Kiểm tra serial port: ls /dev/ttyUSB\* - Kiểm tra kết nối: ip a // kiểm tra xem có interface usb\* không ping 8.8.8.8 -Iusb0 - Lưu ý: - Nếu không có cổng serial, có thể cần build lại driver - Giao tiếp với cổng serial (/dev/ttyUSB\*) có thể dùng minicom hoặc microcom - minicom: sudo apt install minicom . Sau đó kết nối với port - microcom: busybox microcom - Một số dòng module sim có thể cần gửi command để active internet – Chỉ cần làm 1 lần: - Quectel: **AT+QNETDEVCTL=3,1,1** - SIMCOM: **AT+DIALMODE=1** ## 3. Orange pi/build root/yocto/Android/Openwrt - Tùy loại distro, hãng mà có hỗ trợ hay không, có thể xem phần build để build trực tiếp từ kernel (nếu có kernel source) # Hướng dẫn cài đặt driver USB DONGLE Link tải file cài đặt Driver USB cho windows nếu máy tính không tự cập nhật: **[GitHub – TDLOGY/SIMCOM\_USB\_DRIVER: This repo is USB Driver of A7670, A7672, A7600C, SIM7600](https://github.com/TDLOGY/SIMCOM_USB_DRIVER) Download file [A7600X-Windows-Driver.7z](https://github.com/TDLOGY/SIMCOM_USB_DRIVER/blob/main/A7600X-Windows-Driver.7z "A7600X-Windows-Driver.7z") và cài vào máy tính windows. Hướng dẫn cài đặt: [Hướng dẫn cài đặt driver module SIM 4G cho Linux/Windows](https://linhkienthuduc.com/2024/04/13/huong-dan-cai-dat-driver-module-sim-4g-cho-linux-windows/)** Windows (Win10/Win11) **A7670/A7672/A7600C-L1** - Please use A7600X-Windows-Driver.7z to install USB Driver - The driver will contain atleast 2 port UART and RNDIS Driver (Internet): - AT Command Port - Diagnostic Port - NMEA Port – GPS (Optinal) **SIM7600** - Please use SIM7600\_Windows10\_Driver.zip to install USB Driver - The driver will contain atleast 3 port UART and RNDIS Driver (Internet): - AT Command Port - Diagnostic Port - NMEA Port – GPS ## Linux (Ubuntu/Debian/…) - The driver have already install with driver: ECM/EEM/RNDIS/NDIS/QMI - To bring up the internet on linux: - Command to check usb interface: ``` ip a ``` And check the usb0 interface - Acquire IP (DHCP) – Optinal if IP is not auto detected: ``` sudo dhclient -v usb0 ```
- Acquire DNS – Optional ``` sudo route add -net 0.0.0.0 usb0 ``` Sau khi cài driver và set up như trên chúng ta sẽ dùng phần mềm **[AT command Test](https://github.com/TDLOGY/SW_ATCommand_Test/archive/refs/heads/main.zip)** của chúng tôi để cài đặt chế độ internet cũng như test các chức năng khác. [**Download tại đây**](https://github.com/TDLOGY/SW_ATCommand_Test/archive/refs/heads/main.zip) Nếu chưa tự động nhận internet, hãy gửi 2 lệnh sau bằng AT command *AT+DIALMODE=0* *AT$MYCONFIG=”usbnetmode”,0* Xem thêm: – **[Hướng dẫn sử dụng phần mềm AT Command Test](https://docs.tdlogy.com/books/4g-5g-nb-iot-gps-gnss/page/at-command-test-cho-cac-dong-module-sim)**