Что делать, если ваша ссылка вылетает ?: 5 шагов
Что делать, если ваша ссылка вылетает ?: 5 шагов
Anonim
Image
Image
Что делать, если ваша ссылка вылетает?
Что делать, если ваша ссылка вылетает?

В этом видео мы создадим датчик потери связи с ESP32 и SIM800. Это означает, что с помощью этого проекта мы можем проверить подключение к Интернету, а в случае сбоя подключения позвонить по номеру телефона, чтобы уведомить о проблемах с сетью.

Это один из многих способов выполнения такого типа мониторинга. Хотя это просто, он позволяет вам тестировать различные устройства, которые могут существовать в вашем CPD. Его сила проверки становится намного больше при использовании ESP32. Хотя в этом примере я использую Wi-Fi, вы можете использовать проводной Интернет, если хотите.

Шаг 1: Сборка

сборка
сборка

Шаг 2: Сборка - стол

Сборка - Стол
Сборка - Стол

Шаг 3. Библиотека TFT_eSPI

Библиотека TFT_eSPI
Библиотека TFT_eSPI
Библиотека TFT_eSPI
Библиотека TFT_eSPI

В среде Arduino IDE перейдите в Sketch-> Include

Библиотека-> Управление библиотеками…

Установить TFT_eSPI

Перейдите в папку библиотеки и измените строки файла User_Setup.h так, чтобы он оставался таким, как показано на изображении.

Шаг 4: ESP32_Check_Internet_Connection.ino

Включает и определяет

#define TINY_GSM_MODEM_SIM800 # включить

#включают

#включают

#включают

// Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" // + 55 DDD Número do celular #define USER_PHONE_NUMBER "+5518912345678" // Tempo que deve esperar para рассмотрение como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 min // Последовательный порт использования 1 для модуля GSM HardwareSerial SerialGSM (1); TinyGsm модем GSM (SerialGSM); // Tempo em que conectou à internet pela última vez uint32_t lastTimeConnected = 0; // Tempo em que fez a última ligação. Colocamos como -MAX_CALL_TIME_INTERVAL para ligar imediatamente // da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Изображение пользователя User_Setup.h в библиотеке TFT_eSPI display = TFT_eSPI ();

Настраивать

void setup () {Serial.begin (115200); setupDisplay (); // Инициализация и настройка отображения setupGSM (); // Инициализация модуля GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Функция для выполнения "checkWiFiConnection", // Номинальное значение 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no Casade não Prior Usamidos) 2, // da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não Precisamos) 0); // Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será executada "checkInternet", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não Precisamos) 0); // Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

SetupDisplay

void setupDisplay () {display.init (); // Инициализация display display.setRotation (1); // Ротация display.fillScreen (TFT_BLUE); // Limpa o display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o texto como branco com fundo azul display.setTextWrap (false, false); // Desativa a quebra de linha display.setTextSize (1); // Muda o tamanho do texto display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

НастройкаGSM

void setupGSM () {showDisplay ("Настройка GSM"); // В модуле GSM есть GPIO 4 и 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); задержка (1000); // Перезапуск модуля if (! ModemGSM.restart ()) {ESP.restart (); возвращение; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Ошибка сети GSM"); задержка (3000); ESP.restart (); возвращение; }}

checkWiFiConnection

void checkWiFiConnection (void * p) {while (true) {// Мы не можем установить соединение с roteador if (WiFi.status ()! = WL_CONNECTED) {// Подключить соединение connectWiFi (); } // Задержка на 1 секунду после тарифа. É feita em ticks. Для выполнения в миллисекундах с постоянным портомTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

подключитьсяWiFi

void connectWiFi () {// Подключить к сети через WiFi.begin (SSID, PASSWORD); Serial.println («Подключение»); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); задержка (500); } // Если вы не знаете, что такое Serial.println (); Serial.println («Подключено»); }

checkInternet

void checkInternet (void * p) {// Задержка на 5 секунд после тарифа. É feita em ticks. Для выполнения в миллисекундах с постоянным портомTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Сетевой Интернет if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Применение задержки vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {Клиент WiFiClient; // Конечный IP-адрес для Google 172.217.3.110 IP-адрес adr = IPAddress (172, 217, 3, 110); // Ограничение времени для соединения client.setTimeout (5); // Tenta conectar bool connected = client.connect (adr, 80); // Fecha a conexão client.stop (); // Возвращает истину, если она установлена или ложь, если она отключена return connected; }

Петля

void loop () {// Устанавливается определенное значение темпа if (isDisconnectedForTooLong ()) {// Больше нет отображения, которое нужно удалить showDisplay ("Disconnected"); // Этот темп не определен для телефона if (hasNotCalledPhoneInAWhile ()) {// Используется для определения телефона callPhone (); }} else {// В большинстве случаев отображение не выполняется showDisplay ("Connected"); } // Первый шаг для предварительной итерации do loop delay (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Возвращает истинное значение в определенном темпе с максимальным значением для основной очереди return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Возвращает истинное значение в нужном темпе для максимального вызова для телефона для основного номера return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

телефонный звонок

void callPhone () {// Установить связь для определения телефона if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Теперь вы можете использовать связь с последовательным интерфейсом Serial.println ("callphone ok"); // Выполнение темпов для окончательной лигатуры lastTimeCalledPhone = millis (); } else {// Не удалось установить связь с последовательным интерфейсом Serial.println ("сбой вызова"); } // Завершение связи модемаGSM.callHangup (); }

showDisplay

void showDisplay (String message) {// Большинство сообщений, которые используются для отображения, не могут быть отображены в некоторых случаях display.setCursor (0, 0); display.println (сообщение + ""); }

Шаг 5: Загрузите файлы

PDF

Я НЕТ