В этой статье мы узнаем как использовать GSM GPS 4G LTE модуль SIM7600 с Arduino и как использовать AT-команды для совершения звонков, отправки и получения SMS или подключения к Интернету.
Ранее мы использовали 2G GSM-модуль, такой как SIM800/900, а также A9G GSM GPS-модуль. Как мы знаем, 2G GSM/GPRS находится на стадии закрытия в большинстве стран или регионов, таких как Австралия и Канада. Но действительно есть некоторые проекты, которым требуется удаленная беспроводная связь GSM, где WiFi недоступен. В таких регионах проекту требуется доступ к Интернету , например, удаленный мониторинг окружающей среды. Учитывая инвестиции/риск, для большинства случаев LTE 4G все еще является правильным решением на данный момент.
Одним из самых популярных GSM GPS 4G LTE модулей является SIM7600. Серия SIM7600 — это LTE модуль, который поддерживает беспроводные режимы связи LTE. Он также объединяет несколько спутниковых высокоточных систем позиционирования GNSS с несколькими встроенными сетевыми протоколами.
Одна из готовых плат разработки SIM7600 и Arduino разработана компанией Makerfabs. Этот модуль Maduino Zero 4G LTE использует модуль SIMCOM7600(E/A)CAT4 , чтобы помочь Makers легко достичь 4G-соединения. Кроме того, этот модуль может быть полноценным 4G-доступом к вашему компьютеру или Raspberry Pi, а также для звонков или SMS.
GSM GPS 4G LTE модуль SIM7600
Серия SIM7600 представляет собой многодиапазонный модуль LTE-TDD/LTE-FDD/HSPA+/TD-SCDMA и двухдиапазонный GSM/GPRS/EDGE в корпусе SMT, поддерживающем LTE CAT4 со скоростью передачи данных до 150 Мбит/с.
Он имеет мощные возможности расширения с богатыми интерфейсами, включая UART, USB2.0, SPI, I2C, GPIO и т. д. Благодаря обширным возможностям приложений, таким как TCP/UDP/FTP/FTPS/HTTP/HTTPS/SMTP/POP3 и MMS, модуль обеспечивает большую гибкость и простоту интеграции для приложений клиентов. Чтобы узнать больше о SIM7600, см. техническое описание SIM7600.
Общие характеристики модуля
- Четырехдиапазонный TDD-LTE B38/B39/B40/B41.
- Трехдиапазонный FDD-LTE B1/B3/B8.
- Двухдиапазонный TD-SCDMA B34/B39.
- Двухдиапазонный WCDMA/HSDPA/HSPA+ B1/B8.
- GSM/GPRS/EDGE 900/1800 МГц.
- Управление с помощью AT-команд.
- GNSS gpsOne Gen 8B; Автономный; Вспомогательный, XTRA.
- Передача данных: LTE CAT4 со скоростью восходящего соединения до 50 Мбит/с и нисходящего соединения до 150 Мбит/с.
- Интерфейсы: USB2.0, UART, SIM-карта, SPI, I2C, GPIO, АЦП, PCM, SDIO.
Плата Maduino Zero 4G LTE (SIM7600X)
Maduino Zero 4G LTE интегрировал два типа модуля 4G LTE CAT4 SIM7600A-H или SIM7600E-H. SIM7600A-H/SIM7600E-H — это полное многодиапазонное решение модуля LTE-FDD/LTE-TDD/HSPA+/UMTS/EDGE/GPRS/GSM в типе LCC. Он поддерживает LTE CAT4 до 150 Мбит/с для нисходящей линии связи и 50 Мбит/с для восходящей линии связи, что намного быстрее и популярнее чем 2G/3G.
Эту плату вы можете приобрести у Maduino Zero 4G LTE(SIM7600X), так как она произведена компанией Makerfabs, но и на Aliexpress ее можно часто найти.
Интерфейс
Модуль Makerfabs Maduino Zero 4G LTE основан на микроконтроллере ATSAMD21G18A, который совместим с Arduino. Поэтому вы можете использовать Arduino IDE для управления и программирования модуля SIM7600. Передняя и задняя стороны платы выглядят примерно так.
На передней стороне платы вы можете подключить литий-ионную батарею 3,7 В к разъему батареи. Переключатель может использоваться для включения/выключения модуля. Есть два порта USB TypeC, один для микроконтроллера, а другой для LTE. Есть две кнопки, используемые для сброса MCU и LTE. Светодиодный индикатор состояния показывает состояние сетевого подключения. Вы можете подключить к плате 3 антенны: основную антенну, вспомогательную антенну и антенну GPS. Разъем 3,5 мм можно использовать для подключения микрофона или наушников, а аудиоразъем можно использовать для подключения динамиков.
На задней стороне есть слот для микро-сим для вставки 4G SIM-карты. Есть пара слотов для SD-карт, один для микроконтроллера, другой для SIM7600.
Не подключайте и не отключайте антенну, SIM-карты, SD-карту, когда устройство включено. Это может привести к короткому замыканию, которое может сжечь микросхему.
Функции
- Поддерживает коммутируемое соединение, телефон, SMS, TCP, UDP, DTMF, HTTP, FTP и т. д.
- Двойной порт USB Type C.
- Управление с помощью AT-команд.
- Диапазон напряжения питания USB-платы: 4,8~5,5 В, типичное значение 5,0 В.
- Диапазон напряжения питания аккумуляторной батареи: 3,4~4,2 В, типичное значение 3,7 В.
- 3GPP E-UTRA Выпуск 11.
- Встроенное зарядное устройство, ток заряда до 1А.
- Защита от перезаряда (OCP), 4,3 В.
- Защита от переразряда (ODP), 2,5 В.
- Power Manager, плата может питаться от USB или аккумулятора.
- Антенна IPEX, основная антенна GSM/UMTS/LTE. Вспомогательная антенна UMTS/LTE. Антенна GNSS.
- SMS поддержка.
- Аудио поддержка.
- Контроллер на борту: ATSAMD21G18A.
- Аудиокодек: NAU8810.
- Преобразователь уровня: TXS0108E.
- Поддержка Windows и Raspberry Pi.
- Чипсет Qualcomm MDM9x07.
Использование GSM GPS 4G LTE модуля SIM7600 с Arduino
Теперь давайте посмотрим, как можно использовать GSM GPS 4G LTE модуль SIM7600 с платой Arduino для применения AT-команд для функций вызовов и SMS.
- Вставьте SIM-карту в плату.
- Подключите антенну GPS к интерфейсу.
- Подключите две антенны 4G-GSM к основному и вспомогательному антенному интерфейсу.
- Подключите наушники с микрофоном.
- Вставьте SD-карту в слот для SD-карты SIM7600.При подаче питания на плату и работе модуля SIM7600 загорится встроенный светодиод STA (синий).
Настройка Arduino IDE
Плата ATSAMD21G18A не предустановлена в Arduino IDE. Поэтому нам нужно установить «Arduino Zero Board» из Board Manager (менеджера плат).
Откройте Boards Manager. В верхнем меню Arduino IDE выберите Tools-> Board-> Boards Manager …, чтобы открыть диалоговое окно Boards Manager. Затем установите платы Arduino SAMD (32-бит ARM Cortex-M0+).
После завершения установки вы можете выбрать плату Arduino Zero, как показано на рисунке ниже. Для программирования этой платы вам необходимо подключить кабель USB TypeC Data.
Исходный код программы
Теперь откройте Arduino IDE и вставьте следующий скетч. Проверьте его работу.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#include <stdio.h> #include <string.h> #define DEBUG true #define MODE_1A #define DTR_PIN 9 #define RI_PIN 8 #define LTE_PWRKEY_PIN 5 #define LTE_RESET_PIN 6 #define LTE_FLIGHT_PIN 7 String from_usb = ""; void setup() { SerialUSB.begin(115200); //while (!SerialUSB) { ; // wait for Arduino serial Monitor port to connect } delay(100); Serial1.begin(115200); //Serial1.begin(UART_BAUD, SERIAL_8N1, MODEM_RXD, MODEM_TXD); pinMode(LTE_RESET_PIN, OUTPUT); digitalWrite(LTE_RESET_PIN, LOW); pinMode(LTE_PWRKEY_PIN, OUTPUT); digitalWrite(LTE_RESET_PIN, LOW); delay(100); digitalWrite(LTE_PWRKEY_PIN, HIGH); delay(2000); digitalWrite(LTE_PWRKEY_PIN, LOW); pinMode(LTE_FLIGHT_PIN, OUTPUT); digitalWrite(LTE_FLIGHT_PIN, LOW); //Normal Mode // digitalWrite(LTE_FLIGHT_PIN, HIGH);//Flight Mode SerialUSB.println("Maduino Zero 4G Test Start!"); sendData("AT+CGMM", 3000, DEBUG); } void loop() { while (Serial1.available() > 0) { SerialUSB.write(Serial1.read()); yield(); } while (SerialUSB.available() > 0) { #ifdef MODE_1A int c = -1; c = SerialUSB.read(); if (c != '\n' && c != '\r') { from_usb += (char)c; } else { if (!from_usb.equals("")) { sendData(from_usb, 0, DEBUG); from_usb = ""; } } #else Serial1.write(SerialUSB.read()); yield(); #endif } } bool moduleStateCheck() { int i = 0; bool moduleState = false; for (i = 0; i < 5; i++) { String msg = String(""); msg = sendData("AT", 1000, DEBUG); if (msg.indexOf("OK") >= 0) { SerialUSB.println("SIM7600 Module had turned on."); moduleState = true; return moduleState; } delay(1000); } return moduleState; } String sendData(String command, const int timeout, boolean debug) { String response = ""; if (command.equals("1A") || command.equals("1a")) { SerialUSB.println(); SerialUSB.println("Get a 1A, input a 0x1A"); //Serial1.write(0x1A); Serial1.write(26); Serial1.println(); return ""; } else { Serial1.println(command); } long int time = millis(); while ((time + timeout) > millis()) { while (Serial1.available()) { char c = Serial1.read(); response += c; } } if (debug) { SerialUSB.print(response); } return response; } |
После загрузки кода откройте последовательный монитор. Теперь вы можете отправить AT-команду на плату, и она распечатает ответ модуля. Есть несколько демонстраций, которые показывают, как использовать AT-команды.
Тест AT-команд SIM7600
Вот некоторые основные функции для проверки AT-команд.
1 2 3 4 |
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 |
1 2 3 4 5 |
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 |
1 2 |
AT+IPREX? // Check local baud rate AT+CRESET // Reset the module |
Получить местоположение GNSS
Чтобы получить местоположение GNSS от SIM7600, используйте следующие AT-команды.
1 2 3 |
AT+CGPS=1 // Start GPS session AT+CGPSINFO // Get GPS fixed position information AT+CGPS=0 // Stop GPS session |
Отправка и получение SMS
Мы можем отправлять SMS с помощью SIM7600 и Arduino. Рекомендуется использовать другие последовательные мониторы, а не Arduino IDE, чтобы отправлять AT-команды для этой демонстрации.
1 2 3 |
AT+CSCA="XXXXXX" // Set the SMS service centre address AT+CMGF=1 // Select SMS message format AT+CMGS="xxxxxx" // Send message to "xxxxxx"(the receiver number). |
После отправки вышеуказанных AT-команд будет показано ">", и тогда вы сможете отправить свое сообщение. Когда вы закончите свое сообщение, вам нужно отправить "1A" с шестнадцатеричным числом для подтверждения или отправить "1B" с шестнадцатеричным числом для отмены. Вот почему рекомендуется использовать другой последовательный монитор.
1 2 |
AT+CMGR=3 // Read message AT+CMGD=3 // Delete message |
Совершение звонка
Вы можете совершать и принимать вызовы с помощью SIM7600, используя следующие AT-команды.
1 2 3 |
AT+CSDVC // Switch voice channel device AT+CSDVC=1 // 1-Handset, 3-Speaker phone AT+CLVL=2 // Set loudspeaker volume level to 2, the level range is 0 to 5 |
1 2 3 4 |
ATDxxxxx; // Call to xxxxx AT+CHUP // Hang up the call AT+CLIP=1 // Calling line identification presentation ATA // Call answer |
HTTP-запросы
Вы можете протестировать HTTP-запрос SIM7600 LTE с помощью следующих команд.
1 2 3 4 5 |
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) |
Проверка SD-карты на SIM7600
При подключении SD-карты к слоту для SD-карт SIM7600 вы можете использовать следующие команды для ее проверки.
1 2 3 4 |
AT+FSCD=D: // Select SD card directory as current directory AT+FSLS // List directories/files in current directory AT+CFTRANRX="D: TEST.txt",10 // Transfer a file to EFS AT+CFTRANTX="D: TEST.txt" // Transfer a file from EFS to host |
Интернет-серфинг с помощью SIM7600
Модем SIM7600 Arduino может быть беспроводным сетевым устройством для поддержки ПК или Raspberry PI для серфинга в Интернете. Используйте кабель USB Type-C для подключения платы (USB-LTE) и ПК.
Для серфинга в интернете вам необходимо установить драйвер SIM7600 на ПК. Драйвер можно скачать по следующей ссылке.
Откройте Диспетчер устройств -> Другое оборудование -> «SimTech,Incorporated» -> Обновите драйвер -> Выполнить поиск файлов драйверов на моем компьютере -> Выберите путь для сохранения файла драйвера в зависимости от системы -> Установка завершена.
Установите все драйверы, отмеченные желтыми восклицательными знаками.
Если ПК не подключается к Интернету через это устройство, откройте последовательный монитор и отправьте AT-команду для запуска сетевого подключения.
1 |
AT$QCRMCALL=1,1 |
После этого значок сети будет иметь вид сотовой сети.
Если вы все еще не можете подключиться к Интернету, пожалуйста, используйте способ подключения PPP dial-up для начала работы в сети. Более подробную информацию вы можете получить на GitHub.