Вот пример кода для работы с модулем SIM800 через сокеты с сервером по TCP на ESP32 с использованием языка C++.
#include <WiFi.h> #include <HardwareSerial.h> HardwareSerial SIM800(1); const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* serverIP = "SERVER_IP_ADDRESS"; // Укажите IP сервера const int serverPort = 80; // Укажите порт сервера void setup() { Serial.begin(115200); SIM800.begin(9600, SERIAL_8N1, 16, 17); // RX, TX для SIM800 // Подключение к Wi-Fi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); // Инициализация SIM800 sendCommand("AT"); sendCommand("AT+CREG?"); // Проверка регистрации в сети sendCommand("AT+CGATT=1"); // Привязка к сети } void loop() { // Подключение к серверу if (connectToServer()) { sendData("Hello Server!"); receiveData(); disconnect(); } delay(10000); // Пауза между подключениями } void sendCommand(const char* cmd) { SIM800.println(cmd); delay(2000); while (SIM800.available()) { Serial.write(SIM800.read()); } } bool connectToServer() { sendCommand("AT+CIPSTART=\"TCP\",\"" + String(serverIP) + "\"," + String(serverPort)); if (SIM800.find("CONNECT")) { Serial.println("Connected to server"); return true; } else { Serial.println("Connection failed"); return false; } } void sendData(const char* data) { sendCommand("AT+CIPSEND"); delay(1000); // Подождать перед отправкой данных SIM800.print(data); SIM800.write(26); // Ctrl+Z Serial.println("Data sent"); } void receiveData() { while (SIM800.available()) { Serial.write(SIM800.read()); } } void disconnect() { sendCommand("AT+CIPCLOSE"); Serial.println("Disconnected from server"); }
Объяснение кода:
- Инициализация: Подключение к Wi-Fi и настройка последовательного порта для SIM800.
- Рассылка команд: Функция sendCommand() используется для отправки AT-команд модему и отображения ответа.
- Подключение к серверу: Функция connectToServer() управляет подключением к TCP-серверу.
- Отправка данных: Данные отправляются через sendData() после успешного соединения.
- Получение данных: Функция receiveData() читает данные с сервера.
- Отключение: disconnect() закрывает соединение с сервером.
Примечание:
- Замените YOUR_SSID, YOUR_PASSWORD, и SERVER_IP_ADDRESS на реальные значения.
- Убедитесь, что у вас правильно подключены пины RX и TX для SIM800.
Этот код является базовым примером и может быть расширен или модифицирован в зависимости от требований вашего проекта.
Поиск информации по сайту мониторинга транспорта TREKBERRY
© TREKBERRY 2017-2024, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой.
Часть текстов написано нейросетью, может содержать не точности. На сайте может быть реклама и иметь рекламные вставки.