İçindekiler:

Ya Bağlantınız Çökerse?: 5 Adım
Ya Bağlantınız Çökerse?: 5 Adım

Video: Ya Bağlantınız Çökerse?: 5 Adım

Video: Ya Bağlantınız Çökerse?: 5 Adım
Video: Bu Siteye Ulaşılamıyor Hatası Nasıl Çözülür? - Kesin Çözüm! | Windows 7, 8, 10, 11 2024, Kasım
Anonim
Image
Image
Ya Bağlantınız Çökerse?
Ya Bağlantınız Çökerse?

Bu videoda ESP32 ve SIM800 ile bir link düşme sensörü oluşturacağız. Yani bu proje ile internete olan bağlantıyı doğrulayabiliyoruz ve bir bağlantı arızası durumunda bir telefon numarasını arayarak şebekenin sorunlu olduğunu bildiriyoruz.

Bu, bu tür izlemeyi gerçekleştirmenin birçok yolundan biridir. Basit olmasına rağmen, CPD'nizde bulunabilecek çeşitli cihazları test etmenize olanak tanır. ESP32'yi kullanırken kontrol gücü çok daha fazla olur. Bu örnekte WiFi kullanmama rağmen, isterseniz kablolu internet kullanabilirsiniz.

Adım 1: Montaj

toplantı
toplantı

Adım 2: Montaj – Tablo

Montaj - Masa
Montaj - Masa

3. Adım: TFT_eSPI Kitaplığı

TFT_eSPI Kitaplığı
TFT_eSPI Kitaplığı
TFT_eSPI Kitaplığı
TFT_eSPI Kitaplığı

Arduino IDE'de Sketch-> Include'a gidin

Kütüphane-> Kütüphaneleri Yönet…

TFT_eSPI'yi yükleyin

Kitaplık klasörüne gidin ve User_Setup.h dosyasının satırlarını resimde gösterildiği gibi bırakacak şekilde değiştirin.

Adım 4: ESP32_Check_Internet_Connection.ino

İçerir ve tanımlar

#define TINY_GSM_MODEM_SIM800#include

#Dahil etmek

#Dahil etmek

#Dahil etmek

//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 dikkate como desconectado #define MAX_DISCONNECTED_TIME 10000 //10 seg //Tempo que deve para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 //30 dak //Usar seri 1 para o módulo gsm HardwareSerial SerialGSM(1); TinyGsm modemGSM(SerialGSM); //İnternet üzerinden tempo ve bağlantı uint32_t lastTimeConnected = 0; //Tempo em que fez a última ligação. Colocamos commo -MAX_CALL_TIME_INTERVAL para ligar imediatamente // ilk ve son uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; //User_Setup.h ve biblioteca makarna için Pinagem TFT_eSPI ekranı = TFT_eSPI();

Kurmak

geçersiz kurulum(){ Serial.begin(115200); setupDisplay(); //İnicializa e yapılandırma veya ekran setupGSM(); //GSM xTaskCreatePinnedToCore(checkWiFiConnection, //Função que será executada "checkWiFiConnection", //Tarefa 10000, //Tamanho da pilha NULL, //Parâmetro da tarefa (kaso não usPriamode yok) 2, da tarefa NULL, //Caso queria manter uma referência para a tarefa que vai ser criada (caso não precisamos yok) 0); //Çekirdek que er a 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 (caso não usamos yok) 2, //Öncelikli da tarefa NULL, //Caso queria manter uma referência para a tarefa que vai ser criada (caso não precisamos yok) 0); //Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }

KurulumEkran

geçersiz setupDisplay(){ display.init(); // Display.setRotation(1); //Rotaciona display.fillScreen(TFT_BLUE); //Limpa o ekran bir cor azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Coloca veya textocomo branco com fundo azul display.setTextWrap(false, false);//Desativa bir linha göstergesi.setTextSize(1); //Muda veya tamanho yapmak texto display.setCursor(0, 0, 2); //Posição x, y e fonte do texto }

KurulumGSM

void setupGSM(){ showDisplay("GSM Kurulumu"); //O Modül GSM está nos GPIOs 4 e 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); gecikme(1000); //Modulo if (!modemGSM.restart()) { ESP.restart(); dönüş; } //Espera pela celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("GSM Şebeke Hatası"); gecikme(3000); ESP.restart(); dönüş; } }

kontrolWiFiBağlantısı

void checkWiFiConnection(void* p){ while(true) { //Görünüşe göre bağımsız değişken if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } // 1 sn veri tarefa gecikmesi. Çok iyi tikler. Para yürütücü em millis bölünmeler pela sabiti portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(görev Gecikmesi); } }

bağlanWiFi

void connectWiFi(){ //WiFi.begin(SSID, PASSWORD); Serial.println("Bağlanıyor"); //Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); gecikme(500); } //Bağlantıları kontrol et Serial.println(); Serial.println("Bağlandı"); }

kontrol internet

void checkInternet(void* p){ // Gecikme de 5 segundos da tarefa. Çok iyi tikler. Para yürütücü em millis bölünmeler pela sabiti portTICK_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(); } //Uygulama o gecikme vTaskDelay(taskDelay); } }

internete sahip

bool hasInternet(){ WiFiClient istemcisi; //Endreço IP Google 172.217.3.110 IPAdresi adr = IPAdresi(172, 217, 3, 110); //Tempo limiti, istemci.setTimeout(5); //Tenta conectar bool bağlı = client.connect(adr, 80); //Bir conexão client.stop(); //Retorna true se, conectado ou false se, deconectado deconectado geri bağlandı; }

Döngü

void loop() { //Tempo mais desconectado por mais tempo tanimlamalar if(isDisconnectedForTooLong()) { //Çoğu ekran yok, desconectado showDisplay("Disconnected"); //Telefon tanımlı if(hasNotCalledPhoneInAWhile()) { //Telefon tanımlı bir çağrı Telefon(); } } else { //Mostra no display que está conectado showDisplay("Bağlandı"); } //Espera 1 segundo para a proxima iteração do loop delay(1000); }

Çok Uzun İçin Bağlantı Kesildi

bool isDisconnectedForTooLong(){ //Maior que o için bir última conexão desde gerçek se o tempo retorna millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile() { //Maior que o definido dönüşü millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

araTelefon

void callPhone(){ //Telefon tanımlı bir telefon numarası if(modemGSM.callNumber(USER_PHONE_NUMBER)) { //Sesli bir serial.println("callphone tamam"); //Atualiza o tempo em que foi feita a última ligação lastTimeCalledPhone = millis(); } else { //Senin en son hali, en uygun zamanda, bir ligação Serial.println("arama başarısız"); } //Modemin sonlandırılmasıGSM.callHangup(); }

gösterEkran

void showDisplay(String iletisi){ // Gösterilen çoğu zaman bir mensagem ve primeira linha do display, limpando os eventuais karakter ekstraları display.setCursor(0, 0); display.println(mesaj + " "); }

Adım 5: Dosyaları İndirin

PDF

BEN HAYIR

Önerilen: