Სარჩევი:

რა მოხდება, თუ თქვენი ბმული იშლება?: 5 ნაბიჯი
რა მოხდება, თუ თქვენი ბმული იშლება?: 5 ნაბიჯი

ვიდეო: რა მოხდება, თუ თქვენი ბმული იშლება?: 5 ნაბიჯი

ვიდეო: რა მოხდება, თუ თქვენი ბმული იშლება?: 5 ნაბიჯი
ვიდეო: დახტის 5 მაიმუნი ფერად საწოლზე, სიმღერა მაიმუნებზე 2024, ივლისი
Anonim
Image
Image
რა მოხდება, თუ თქვენი ბმული იშლება?
რა მოხდება, თუ თქვენი ბმული იშლება?

ამ ვიდეოში ჩვენ შევქმნით ბმულის ვარდნის სენსორს ESP32 და SIM800. ეს ნიშნავს, რომ ამ პროექტის საშუალებით ჩვენ შეგვიძლია შევამოწმოთ ინტერნეტთან კავშირი, ხოლო კავშირის გაწყვეტის შემთხვევაში დარეკეთ ტელეფონის ნომერზე, რომ შეატყობინოთ, რომ ქსელს პრობლემები აქვს.

ეს არის ერთ -ერთი მრავალი გზა ამ ტიპის მონიტორინგის შესასრულებლად. მიუხედავად იმისა, რომ ეს მარტივია, ის საშუალებას გაძლევთ შეამოწმოთ სხვადასხვა მოწყობილობები, რომლებიც შეიძლება არსებობდეს თქვენს CPD– ში. მისი შემოწმების ძალა გაცილებით დიდი ხდება ESP32– ის გამოყენებისას. მიუხედავად იმისა, რომ მე ვიყენებ WiFi- ს ამ მაგალითში, თუ გსურთ, შეგიძლიათ გამოიყენოთ სადენიანი ინტერნეტი.

ნაბიჯი 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

მოიცავს და განსაზღვრავს

#განსაზღვრეთ 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 konsiderrar como desconectado #განსაზღვრეთ MAX_DISCONNECTED_TIME 10000 // 10 თებერვალი // დროთა განმავლობაში გამოიყენეთ ეს მითითებები #განსაზღვრეთ MAX_CALL_TIME_INTERVAL 1800000 // 30 წთ // გამოყენება სერიული 1 para or módulo gsm HardwareSerial SerialGSM (TinyGsm მოდემი GSM (SerialGSM); // Tempo em que conectou à internet pela última vez uint32_t lastTimeConnected = 0; // Tempo em que fez a tltima ligação. Colocamos como -MAX_CALL_TIME_INTERVAL imigiatamente // იმდენად, რამდენადაც ეს იქნება უწინ 32, ბოლო დროს დარეკილი ტელეფონი = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h და მაკარონი ბიბლიოთეკაში TFT_eSPI ჩვენება = TFT_eSPI ();

Აწყობა

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura ან ჩვენების setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será შესრულება "checkWiFiConnection", // Nome da 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 (no caso não precisamos) 0); // Número do core que será ekzada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será executiveada "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á exeada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

SetupDisplay

void setupDisplay () {display.init (); // Inicializa o display 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 (ყალბი, ყალბი); // 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}

SetupGSM

void setupGSM () {showDisplay ("GSM დაყენება"); // O Módulo GSM არის GPIOs 4 e 2 SerialGSM. დასაწყისი (9600, SERIAL_8N1, 4, 2, false); დაგვიანება (1000); // გადატვირთეთ თუ (! 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) {// მანდა conectar connectWiFi (); } // Delay de 1s da tarefa. É feita em ტკიპები. შემსრულებლებისთვის ჩვენ უნდა გავყოთ მუდმივი პორტი TICK_PERIOD_MS TickType_t ამოცანა გადადება = 1000 / პორტი TICK_PERIOD_MS; vTaskDelay (taskDelay); }}

დაკავშირება Wi -Fi

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 ("დაკავშირებულია"); }

შეამოწმეთ ინტერნეტი

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É 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); }}

აქვს ინტერნეტი

bool hasInternet () {WiFiClient კლიენტი; // Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite para conexão client.setTimeout (5); // Tenta conectar bool დაკავშირებულია = client.connect (ადრ, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado დაბრუნება დაკავშირებული; }

მარყუჟი

void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("გათიშული"); // გთხოვთ შეცვალოთ თქვენი ტელეფონის განსაზღვრება თუ (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} სხვა {// Mostra no display que está conectado showDisplay ("დაკავშირებულია"); } // Espera 1 segundo para a próxima iteração do loop delay (1000); }

არის გათიშული ForTooLong

bool isDisconnectedForTooLong () {// Retorna true se o tempo desde a tltima conexão for maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna true se o tempo desde a tltima ligacão para or telefone for myior que que definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

ტელეფონზე დარეკვა

void callPhone () {// Faz a ligação para o telefone definido 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 a última ligação lastTimeCalledPhone = millis (); } else {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("ზარის ტელეფონი ვერ მოხერხდა"); } // Termina a ligação modemGSM.callHangup (); }

ჩვენება ჩვენება

void showDisplay (სიმებიანი შეტყობინება) {// Mostra a mensagem na primira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (შეტყობინება + ""); }

ნაბიჯი 5: ჩამოტვირთეთ ფაილები

PDF

ინო

გირჩევთ: