Съдържание:
- Стъпка 1: Монтаж
- Стъпка 2: Сглобяване - Таблица
- Стъпка 3: Библиотека TFT_eSPI
- Стъпка 4: ESP32_Check_Internet_Connection.ino
- Стъпка 5: Изтеглете файловете
Видео: Какво става, ако връзката ви се срине?: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В това видео ще създадем сензор за прекъсване на връзката с ESP32 и SIM800. Това означава, че с този проект можем да проверим връзката с интернет и в случай на неуспешно свързване да се обадим на телефонен номер, за да уведомим, че мрежата е в беда.
Това е един от многото начини, по които можете да извършвате този тип мониторинг. Въпреки че е прост, той ви позволява да тествате различни устройства, които може да съществуват във вашия CPD. Силата му на проверка става много по -голяма при използване на ESP32. Въпреки че в този пример използвам WiFi, можете да използвате кабелен интернет, ако предпочитате.
Стъпка 1: Монтаж
Стъпка 2: Сглобяване - Таблица
Стъпка 3: Библиотека TFT_eSPI
В IDE на Arduino отидете на Sketch-> Include
Библиотека-> Управление на библиотеки …
Инсталирайте TFT_eSPI
Отидете в папката на библиотеката и променете редовете на файла User_Setup.h, за да го оставите, както е показано на изображението.
Стъпка 4: ESP32_Check_Internet_Connection.ino
Включва и дефинира
#define TINY_GSM_MODEM_SIM800#include
#включва
#включва
#включва
// Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" //+55 DDD Numero do celllar #define USER_PHONE_NUMBER "+5518912345678" // Tempo que deve esperar para obzir como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 мин. 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; // Pinagem em User_Setup.h на паста за библиотека TFT_eSPI display = TFT_eSPI ();
Настройвам
void setup () {Serial.begin (115200); setupDisplay (); // Начална конфигурация или настройка на дисплея GSM (); // Инициализация на модула за GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executada "checkWiFiConnection", // Име на tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (без caso não преди da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (няма caso não precisamos) 0); // Numero 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", // Име на tarefa 10000, // Tamanho да pilha NULL, // Parâmetro da tarefa (без caso não usamos) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (без caso não precisamos) 0); // Numero 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.setRotation (1); // Rotaciona 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); // Дезактивира quebra de linha display.setTextSize (1); // Изтегляне на текстови съобщения display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}
Настройка GSM
void setupGSM () {showDisplay ("Настройка на GSM"); // O Módulo GSM está nos GPIOs 4 e 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) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Закъснение от 1s до tarefa. É feita em кърлежи. За изпълнението им е разделено на постоянен порт TICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}
connectWiFi
void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Свързване"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); забавяне (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Свързан"); }
checkInternet
void checkInternet (void* p) {// Забавяне на 5 секунди до тарефа. É feita em кърлежи. За изпълнението им е разделено на постоянен порт TICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Прилагане или забавяне vTaskDelay (taskDelay); }}
hasInternet
bool hasInternet () {WiFiClient клиент; // Endreço IP до Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite para conexão client.setTimeout (5); // Tenta conectar bool connected = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return вързано; }
Цикъл
void loop () {// Това е десконектирано по отношение на темпото, което е определено, ако (isDisconnectedForTooLong ()) {// Не се показва que está desconectado showDisplay ("Disconnected"); // Se faz tempo que não liga за телефонен дефинитор if (hasNotCalledPhoneInAWhile ()) {// Лига за телефонен дефиниционен callPhone (); }} else {// Мостра без дисплей que está conectado showDisplay ("Свързан"); } // Espera 1 segundo para a próxima iteração do loop delay (1000); }
isDisconnectedForTooLong
bool isDisconnectedForTooLong () {// Retorna true se o tempo desde a última conexão for maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna true se o tempo desde a ultima ligacão para or telefon for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }
callPhone
void callPhone () {// Faz a ligação para or phone definition if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se entrou aqui é porque conseguiu realizar a ligação Serial.println ("callphone ok"); // Atualiza o tempo em que foi feita и última ligação lastTimeCalledPhone = millis (); } else {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } // Крайна връзка с модем GSM.callHangup (); }
showDisplay
void showDisplay (низово съобщение) {// Преглед на менюто на първо място за показване на дисплея, ограничаване на събитията с допълнителни екстри display.setCursor (0, 0); display.println (съобщение + ""); }
Стъпка 5: Изтеглете файловете
АЗ НЕ
Препоръчано:
Рутерът става видеорекордер за IP камери: 3 стъпки
Рутерът се превръща в видеорекордер за IP камери: Някои рутери имат мощен процесор и USB порт на дъска и могат да се използват като видеорекордер в допълнение към функциите за маршрутизиране, за да събират и разпространяват видео и звук от IP камери, които предават само потоци H264/265 RTSP (като най -модерния евтин здравей
Arduino става Говорещ Том: 6 стъпки
Arduino става Talking Tom: Един от най -старите ми спомени от използването на смартфон беше играта на играта „Talking Tom“. Играта беше доста проста. Има котка на име Том, която може да говори нещо. В играта Том щеше да слуша всеки вход през микрофона на телефона и след това да повтори
Какво е процесор, какво прави и как да го отстраним: 5 стъпки
Какво е процесор, какво прави и как да го отстранявате: Всеки ден тук посочвате термините " процесор " или " Процесор " ще бъда хвърлен наоколо, но наистина ли знаете какво означава? Ще разгледам какво е процесор и какво прави, след това ще разгледам често срещаните проблеми с процесора и как евентуално да ги поправя
Какво да направите, ако зарядното устройство не вижда 18650 литиево-йонна батерия: 9 стъпки
Какво да направите, ако зарядното устройство не вижда 18650 литиево-йонна батерия: Какво да направите, ако батерията не се зареди, зарядното устройство не вижда батерията по 2 причини: ниско напрежение върху него или задействана термична защита
Какво да направите, ако сте тормозени по инструкции: 7 стъпки
Какво да направите, ако сте тормозени от инструктируеми: Instructables е семейство DIYers с членове по целия свят. Забележете акцента върху семейството. Понякога (за щастие не много често) няколко лоши ябълки се промъкват и нарушават семейството ни. Справянето с този тип ситуации е предмет на този Инструкция