Spisu treści:
- Krok 1: Montaż
- Krok 2: Montaż – Stół
- Krok 3: Biblioteka TFT_eSPI
- Krok 4: ESP32_Check_Internet_Connection.ino
- Krok 5: Pobierz pliki
Wideo: Co się stanie, jeśli Twój link ulegnie awarii?: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W tym filmie stworzymy czujnik upadku łącza z ESP32 i SIM800. Oznacza to, że dzięki temu projektowi możemy zweryfikować połączenie z internetem, a w przypadku awarii połączenia zadzwonić pod numer telefonu, aby powiadomić, że sieć ma kłopoty.
Jest to jeden z wielu sposobów prowadzenia tego typu monitoringu. Chociaż jest to proste, umożliwia testowanie różnych urządzeń, które mogą istnieć w ramach Twojego CPD. Jego moc sprawdzania staje się znacznie większa podczas korzystania z ESP32. Chociaż w tym przykładzie używam Wi-Fi, możesz skorzystać z Internetu przewodowego, jeśli wolisz.
Krok 1: Montaż
Krok 2: Montaż – Stół
Krok 3: Biblioteka TFT_eSPI
W Arduino IDE przejdź do Szkic-> Dołącz
Biblioteka-> Zarządzaj bibliotekami…
Zainstaluj TFT_eSPI
Przejdź do folderu biblioteki i zmień wiersze pliku User_Setup.h, aby pozostawić go tak, jak pokazano na obrazku.
Krok 4: ESP32_Check_Internet_Connection.ino
Zawiera i definiuje
#zdefiniuj TINY_GSM_MODEM_SIM800#zawieraj
#włączać
#włączać
#włączać
//Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" //+55 DDD Numer do celular #define USER_PHONE_NUMBER "+5518912345678" //Tempo que deve esperar for dealar teraz nie działa #Define MAX_DISCONNECTED_TIME 10000 //10 seg //Tempo, w którym należy rozwiązywać problemy #Define MAX_CALL_TIME_INTERVAL 1800000 //30 min //Użyj serialu 1 dla modułu GSM HardwareSerial SerialGSM(1); Modem TinyGsmGSM(SerialGSM); //Czas połączenia z Internetem w ostatnim czasie, gdy uint32_t lastTimeConnected = 0; //Tempo em que fez a ultima ligação. Colocamos colo -MAX_CALL_TIME_INTERVAL dla natychmiastowej linijki //na początku czasu, kiedy uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; //Pinagem em User_Setup.h na makaron z biblioteki TFT_eSPI display = TFT_eSPI();
Ustawiać
void setup(){ Serial.begin(115200); konfiguracjaWyświetlacz(); //Rozpoczęcie konfiguracji i konfiguracji wyświetlaniaGSM(); //Inicializa o módulo GSM xTaskCreatePinnedToCore(checkWiFiConnection, //Função que será executada "checkWiFiConnection", //Nome da tarefa 10000, //Tamanho da pilha NULL, //Parametro da tarefa (bez przypadku 2, //Primosor) 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) }
Ekran konfiguracji
void setupDisplay(){ display.init(); //Rozpoczęcie wyświetlania display.setRotation(1); //Obrót display.fillScreen(TFT_BLUE); //Limpa o display com a azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Koloka lub tekst w języku angielskim z podstawowymi elementami display.setTextWrap(false, false);//Desativa a quebra display.setTextSize(1); //Muda o tammanho zrobić texto display.setCursor(0, 0, 2); //Posição x, y e fonte do texto }
KonfiguracjaGSM
void setupGSM(){ showDisplay("Ustaw GSM"); //O Moduł GSM to GPIO 4 i 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); opóźnienie (1000); //Uruchom ponownie o módulo if (!modemGSM.restart()) { ESP.restart(); powrót; } //Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("Błąd sieci GSM"); opóźnienie(3000); ESP.restart(); powrót; } }
checkWiFiPołączenie
void checkWiFiConnection(void* p){ while(true) { //S não estiver conectado or roteador if(WiFi.status() != WL_CONNECTED) { //Połącz połączenie connectWiFi(); } //Opóźnienie o 1s z tarefa. É feita em kleszcze. Na executar em millis dividimos przez stałe portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vOpóźnienieZadania(OpóźnienieZadania); } }
PołączWiFi
void connectWiFi(){ // Manda połącz się z rotacją z nazwą i poprawą WiFi.begin (SSID, HASŁO); Serial.println("Łączenie"); //Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); opóźnienie (500); } //Sprawdź to połączenie Serial.println(); Serial.println("Połączony"); }
sprawdźInternet
void checkInternet(void* p){ //Opóźnienie 5 sekund z tarefa. É feita em kleszcze. W celu wykonania na stałe w ciągu kilku dni portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) { //Ustaw internet if(hasInternet()) { //Aktualizuj tempo działania w połączeniu z lastTimeConnected = millis(); } //Aplikacja o opóźnienie vTaskDelay(taskDelay); } }
ma internet
bool hasInternet(){ klient WiFiClient; //Endreço IP do Google 172.217.3.110 IPAddress adres = IPAddress(172, 217, 3, 110); //Ograniczenie czasu dla conexão client.setTimeout(5); //Tenta conectar bool podłączony = client.connect(adr, 80); //Pobierz conexão client.stop(); //Retorna true se está conectado ou false se está desconectado return connected; }
Pętla
void loop() { //Sprawdź, co zostało usunięte w określonym czasie if(isDisconnectedForTooLong()) { //Nie ma wyświetlania, które zostało usunięte showDisplay("Rozłączony"); //Następuje faza que não liga dla określonego telefonu if(hasNotCalledPhoneInAWhile()) { //Liga dla określonego telefonu callPhone(); } } else { //Mostra no display que está conectado showDisplay("Połączony"); } //Espera 1 segundo para a proxima iteração do loop delay(1000); }
jest rozłączony zbyt długo
bool isDisconnectedForTooLong(){ //Retorna prawidłowa zmiana tempa w ostatecznym połączeniu dla głównych lub ostatecznych zwrotów millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile() { //Retorna prawidłowa zmiana czasu na ostatnią ligę telefonu dla głównych lub ostatecznych zwrotów millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }
zadzwońTelefon
void callPhone(){ //Uruchomienie definitywnego połączenia telefonu if(modemGSM.callNumber(USER_PHONE_NUMBER)) { //Sprawdź, czy chcesz wykonać połączenie Serial.println("callphone ok"); //Aktualizacja tempa em que foi feita a ultima ligação lastTimeCalledPhone = millis(); } else { //Se entrou aqui é porque não conseguiu fazer a ligação Serial.println("połączenie nie powiodło się"); } //Zakończ połączenie modemGSM.callHangup(); }
pokażWyświetlacz
void showDisplay(String message){ //Pokaż komunikat o pierwszym uruchomieniu wyświetlania, nieograniczona liczba zdarzeń, dodatkowe dodatki display.setCursor(0, 0); display.println(komunikat + " "); }
Krok 5: Pobierz pliki
JA NIE
Zalecana:
Alarm awarii zasilania zamrażarki: 6 kroków (ze zdjęciami)
Alarm awarii zasilania dla zamrażarki: Z zamrażarką w piwnicy i ryzykiem zepsutego mięsa z powodu przepalonego bezpiecznika, gdy nas nie ma, zaprojektowałem ten prosty obwód alarmowy, aby nasi sąsiedzi zostali powiadomieni o naprawie bezpiecznika. Jak widać na zdjęciu dzwonek do drzwi dzwoni od
Ram Instruct w stanie: 5 kroków
Ram Instruct Able: pamięć RAM jest używana przez jednostkę centralną (CPU), gdy komputer jest uruchomiony do przechowywania informacji, które muszą być używane bardzo szybko, ale nie przechowuje żadnych informacji na stałe
Jak uzyskać muzykę z PRAWIE KAŻDEJ (Haha) strony internetowej (tak długo, jak ją słyszysz, możesz ją dostać OK Jeśli jest osadzona we Flashu, możesz nie być w stanie) EDYTOWANO !!!!! Dodane informacje: 4 kroki
Jak uzyskać muzykę z PRAWIE KAŻDEJ (Haha) strony internetowej (tak długo, jak ją słyszysz, możesz ją uzyskać … OK Jeśli jest osadzona we Flashu, możesz nie być w stanie) EDYTOWANE !!!!! Dodatkowe informacje: jeśli kiedykolwiek wejdziesz na stronę internetową i odtworzysz piosenkę, którą lubisz i chcesz, oto instrukcja dla ciebie, nie moja wina, jeśli coś zepsujesz (jedynym sposobem, aby to się stało, jest to, że zaczniesz usuwać rzeczy bez powodu ) udało mi się uzyskać muzykę dla
Jak sprawić, by Twój pendrive stał się niezniszczalnym bezpieczeństwem danych:P: 4 kroki
Jak sprawić, by Twój pendrive stał się niezniszczalnym zabezpieczeniem danych: P: Okej, więc w zasadzie to, co zrobimy, to uczynienie go tak, aby Twój ogólny pendrive lub odtwarzacz mp3 (w zasadzie wszystko, co korzysta z pamięci flash…) był bezpieczny przed drapieżnik odnajduje go i przegląda, co na nim przechowujesz:)
Jak zdobyć iPoda Touch (lub iPhone'a, jeśli naprawdę go zepsułeś), aby przestać się zawieszać z powodu braku pamięci: 3 kroki
Jak zdobyć iPoda Touch (lub iPhone'a, jeśli naprawdę go zepsułeś), aby przestać się zawieszać z powodu braku pamięci: Cześć, ipod touch i użytkownicy iPhone'ów. Ok, więc jestem całkiem pewien, że wszyscy macie nieco podstawową wiedzę na temat działania Apple iPod, prawda? Otwierasz aplikację. Ta aplikacja będzie używać w dowolnym miejscu między może na iPodzie touch 1G, 5-30 MB dostępnych