Jak zrobić inteligentny system automatyki domowej za pomocą modułu ESP32?

W dzisiejszych czasach koncepcja automatyki domowej rozwija się w ogromnym tempie. Inteligentne systemy są instalowane prawie w każdym miejscu. Systemy Smart Home to koncepcja, w której wszystkie urządzenia elektryczne lub urządzenia sterowane są za pomocą jednego pilota. W tych systemach najczęściej pilot jest aplikacją mobilną. Ponieważ telefon komórkowy z Androidem jest najpopularniejszy wśród ludzi, aplikacja na Androida jest najlepszą opcją do sterowania wszystkimi tymi urządzeniami.



Automatyka domowa

W tym projekcie zamierzamy podłączyć niektóre domowe urządzenia elektryczne do modułu przekaźnika i sterować nim za pomocą mikrokontrolera ESP32. Stworzymy bazę danych czasu rzeczywistego Firebase i połączymy ją z aplikacji na Androida. Ta aplikacja na Androida wyśle ​​dane do chmury, a następnie zostaną przesłane do mikrokontrolera w celu włączenia lub wyłączenia urządzenia elektrycznego. Najlepsze jest to, że możesz mieć pełną kontrolę nad przełączaniem swoich urządzeń z dowolnego miejsca na świecie. Do obsługi aplikacji na Androida wystarczy połączenie internetowe.



Jak sterować urządzeniami domowymi przez WiFi?

Systemy automatyki domowej, które są już dostępne na rynku, są bardzo kosztowne. Możemy użyć płytki ESP32 do podłączenia różnych urządzeń domowych i sterowania nimi za pomocą aplikacji na Androida. Będzie to bardzo tani i skuteczny sposób na zautomatyzowanie domu. Przejdźmy teraz krok do przodu i zacznijmy zbierać informacje, aby rozpocząć projekt.



Krok 1: Zbieranie komponentów

Najlepszym podejściem do rozpoczęcia każdego projektu jest sporządzenie listy komponentów i przejrzenie ich krótkiej analizy, ponieważ nikt nie będzie chciał pozostać w środku projektu tylko z powodu brakującego komponentu. Poniżej znajduje się lista komponentów, których będziemy używać w tym projekcie:



  • ESP32
  • Płytka prototypowa
  • Podłączanie przewodów

Krok 2: Badanie komponentów

Teraz, gdy znamy streszczenie tego projektu, przejdźmy o krok do przodu i przeprowadźmy krótkie badanie działania głównych komponentów, których będziemy używać.

ESP32 to energooszczędna i tania płytka mikrokontrolera, która ma wbudowane WiFi i podwójny moduł Bluetooth. Ta płytka mikrokontrolera została stworzona i opracowana przez Systemy Espressif . Ta płyta ma wbudowane wzmacniacze mocy, wzmacniacze o niskim ładnym odbiorze, filtry i przełączniki antenowe. Jest zasilany kablem do transmisji danych z systemem Android i może zapewnić do 3,3 V na wyjściu. ESP32 wykonuje protokół TCP / IP, pełną konwencję 802.11 b / g / n / e / I WLAN MAC, a zwłaszcza Wi-Fi Direct. Oznacza to, że ESP 32 może adresować dużą część znajdujących się tam routerów WiFi, gdy jest używany w trybie stacji (klienta). Podobnie może stanowić punkt dostępu z pełnym 802.11 b / g / n / e / I. ESP32 nie tylko stanowi podstawę najnowszego BLE Bluetooth 4.2, ale dodatkowo wspiera świetny Bluetooth. Zasadniczo oznacza to, że może adresować stare i nowe telefony / stoły Bluetooth. Jeśli nie masz modułu ESP32, możesz również użyć ESP8266 lub MCU węzła. Te karty mogą być używane do wykonywania tego samego zadania, jeśli są podłączone do WiFi.

ESP32



Moduł przekaźnikowy jest urządzeniem przełączającym. Działa w dwóch trybach, Normalnie otwarty (NIE) i Normalnie Zamknięte (NC) . W trybie NO obwód jest zawsze przerwany, chyba że wyślesz sygnał WYSOKI do przekaźnika przez Arduino. Tryb NC pogarsza się w drugą stronę, obwód jest zawsze kompletny, chyba że włączysz moduł przekaźnika. Upewnij się, że dodatni przewód urządzenia elektrycznego został podłączony do modułu przekaźnika w sposób pokazany poniżej.

Montaż obwodu modułu przekaźnikowego

Krok 3: Schemat blokowy

Schemat blokowy

Na powyższym schemacie blokowym pokazano przepływ tego projektu. Przekaźniki są podłączone do domowych urządzeń lub urządzeń elektrycznych. Aplikacja mobilna wyśle ​​plik Na lub POZA polecenie do bazy danych. Ta chmura jest podłączona do płytki mikrokontrolera ESP32 przez WiFi. Aby włączyć urządzenie elektroniczne, wyślemy „1” do bazy danych, a aby wyłączyć wysyłamy „0” w bazie danych. To polecenie zostanie następnie pobrane przez mikrokontroler, ponieważ jest również połączone z bazą danych. Na podstawie tego 0 lub 1 mikrokontroler włączy lub wyłączy moduł przekaźnika, co ostatecznie spowoduje przełączenie urządzeń elektrycznych.

Więc tutaj, w tym artykule, użyję dwóch modułów przekaźników, aby pokazać ci całą procedurę. Możesz jednak zwiększyć liczbę przekaźników i dodać ten sam fragment kodu do swojego programu, jeśli chcesz sterować większą liczbą elektrycznych urządzeń domowych.

Krok 4: Montaż komponentów

Teraz, gdy mamy jasną wizję tego, co chcemy robić w tym projekcie, nie traćmy więcej czasu i zacznijmy składać komponenty.

  1. Weź płytkę prototypową i zamocuj w niej mikrokontroler ESP32. Teraz weź dwa moduły przekaźnikowe i podłącz równolegle Vcc i masę modułów do Vin i masy płytki mikrokontrolera ESP32. Podłącz w szpilce modułów przekaźnikowych do pin34 i pin35 płyty ESP32. Zobaczysz, że przekaźniki są teraz włączone.
  2. Podłącz urządzenia domowe do modułu przekaźnika. Upewnij się, że połączenia są zgodne z połączeniami pokazanymi na rysunku w kroku 2.

Teraz, gdy połączyliśmy sprzętową część naszego systemu. Opracujemy aplikację na Androida, która zostanie połączona z bazą danych Firebase. Bazę danych i aplikację na Androida stworzymy w części 2 tego artykułu.

Krok 5: Pierwsze kroki z ESP32

Jeśli wcześniej nie pracowałeś na Arduino IDE, nie martw się, ponieważ poniżej pokazano krok po kroku, jak skonfigurować Arduino IDE.

  1. Pobierz najnowszą wersję Arduino IDE ze strony Arduino.
  2. Podłącz swoją płytę Arduino do komputera i otwórz Panel sterowania. Kliknij Sprzęt i dźwięk. Teraz otwarte Urządzenia i drukarka i znajdź port, do którego jest podłączona twoja płyta. W moim przypadku tak COM14 ale jest inaczej na różnych komputerach.

    Znajdowanie portu

  3. Kliknij Plik, a następnie kliknij Preferencje. Skopiuj poniższy link w Dodatkowy adres URL menedżera zarządu. „ https://dl.espressif.com/dl/package_esp32_index.json ”

    Preferencje

  4. Teraz, aby używać ESP32 z Arduino IDE, musimy zaimportować specjalne biblioteki, które pozwolą nam wypalić kod na ESP32 i go używać. te dwie biblioteki są dołączone w linku podanym poniżej. Aby dołączyć bibliotekę, gotowe Szkic> Dołącz bibliotekę> Dodaj bibliotekę ZIP . Pojawi się pole. Znajdź folder ZIP na komputerze i kliknij OK, aby dołączyć foldery.

    Uwzględnij bibliotekę

  5. Teraz gotowe Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami.

    Zarządzaj bibliotekami

  6. Otworzy się menu. Na pasku wyszukiwania wpisz Arduino JSON. Pojawi się lista. zainstalować Arduino JSON autorstwa Benoit Blanchon.

    Arduino JSON

  7. Teraz kliknij Przybory. Pojawi się menu rozwijane. Ustaw tablicę na Moduł deweloperski ESP.

    Tablica nastawcza

  8. Kliknij ponownie menu Narzędzie i ustaw port, który obserwowałeś wcześniej w panelu sterowania.

    Ustawianie portu

  9. Teraz prześlij kod, który znajduje się w linku poniżej i kliknij przycisk przesyłania, aby wypalić kod na mikrokontrolerze ESP32.

    Przekazać plik

Więc teraz, kiedy prześlesz kod, może wystąpić błąd. Jest to najczęstszy błąd, który może wystąpić, jeśli używasz nowej wersji Arduino IDE i Arduino JSON. Poniżej przedstawiono błędy, które mogą pojawić się na ekranie.

W pliku zawartym z C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, z C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer to klasa z ArduinoJson 5. Odwiedź arduinojson.org/upgrade, aby dowiedzieć się, jak zaktualizować swój program do ArduinoJson wersja 6 StaticJsonBuffer jsonBuffer; ^ W pliku zawartym z C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, z C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: StaticJsonBuffer to klasa z ArduinoJson 5. Odwiedź arduinojson.org/upgrade, aby dowiedzieć się, jak zaktualizować program do ArduinoJson wersja 6 zwraca StaticJsonBuffer (). ParseObject (_data); ^ Znaleziono wiele bibliotek dla 'WiFi.h' Używany: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Nieużywane: C:  Program Files ( x86)  Arduino  libraries  WiFi Korzystanie z biblioteki WiFi w wersji 1.0 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Korzystanie z biblioteki IOXhop_FirebaseESP32-master w folderze: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Korzystanie z biblioteki HTTPClient w wersji 1.2 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Korzystanie z biblioteki WiFiClientSecure w wersji 1.0 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Korzystanie z biblioteki ArduinoJson pod adresem wersja 6.12.0 w folderze: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson status wyjścia 1 Błąd kompilacji dla modułu deweloperskiego ESP32.

Nie ma się czym martwić, ponieważ możemy wyeliminować te błędy, wykonując kilka prostych kroków. Te błędy pojawiają się, ponieważ nowa wersja Arduino JSON ma inną klasę zamiast StaticJsonBuffer. To jest klasa JSON 5. Możemy więc po prostu wyeliminować ten błąd, obniżając wersję Arduino JSON naszego Arduino IDE. Po prostu przejdź do Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami. Szukaj Arduino JSON autorstwa Benoit Blanchon które zainstalowałeś wcześniej. Najpierw odinstaluj go, a następnie ustaw jego wersję na 5.13.5. Teraz, gdy ustawiliśmy starą wersję Arduino JSON, zainstaluj ją ponownie i ponownie skompiluj kod. Tym razem Twój kod zostanie pomyślnie skompilowany.

Aby pobrać kod, Kliknij tutaj.

Krok 6: Zrozumienie Kodeksu

Kod tego projektu jest bardzo prosty i dobrze skomentowany. Mimo to kod jest pokrótce wyjaśniony poniżej.

1. Na początku dołączone są biblioteki, dzięki czemu płytkę ESP32 można podłączyć do lokalnego połączenia WiFi w domu lub biurze. Następnie definiowane jest łącze do projektu Firebase i uwierzytelnianie projektu Firebase. Następnie definiuje się nazwę i hasło lokalnego połączenia Wi-Fi, aby ESP32 można było podłączyć do Wi-Fi. Niektóre piny ESP32 są przeznaczone do podłączenia do modułów przekaźnikowych. i wreszcie deklarowana jest zmienna, która będzie przechowywać tymczasowe dane, które będą pochodzić z chmury Firebase.

#include // dołącz bibliotekę, aby połączyć się z lokalnym połączeniem Wi-Fi #include // Dołącz bibliotekę, aby połączyć się z bazą danych Firebase #define FIREBASE_HOST 'coma-patient.firebaseio.com' // dołącz link do swojego projektu Firebase # zdefiniuj FIREBASE_AUTH 'UrzlDZXMBNRhNdc5i73DRWE10KFE9 '// Uwzględnij uwierzytelnienie swojego projektu firebase # zdefiniuj WIFI_SSID' abcd '// nazwa połączenia Wi-Fi w Twoim domu lub biurze # zdefiniuj WIFI_PASSWORD' abcd '// hasło połączenia Wi-Fi w domu lub biurze int r1 = 34; // pin do podłączenia przekaźnika 1 int r2 = 35; // pin do podłączenia przekaźnika 2 int temp; // zmienne do przenoszenia danych

2. void setup () to funkcja, w której inicjalizujemy piny INPUT lub OUTPUT. Ta funkcja ustawia również szybkość transmisji za pomocą Serial.begin () Komenda. Szybkość transmisji to szybkość komunikacji mikrokontrolera. W tym miejscu dodano kilka wierszy kodu, aby połączyć ESP32 z lokalnym połączeniem Wi-Fi. Płyta spróbuje połączyć się z lokalnym połączeniem Wi-Fi i wyświetli komunikat „połączenie”. na monitorze szeregowym. Po ustanowieniu połączenia wyświetli się „Połączono”. Aby to monitorować, lepiej otworzyć monitor szeregowy i sprawdzić tam jego stan.

void setup () {Serial.begin (115200); // ustawienie szybkości transmisji // połączenie z Wi-Fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('łączenie'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); opóźnienie (500); } Serial.println (); Serial.print ('connected:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () to funkcja, która powtarza się w pętli. W tej pętli piszemy kod, który mówi płytce mikrokontrolera, jakie zadania wykonać i jak. Pobraliśmy dane przeciwko lekki i AC z bazy danych i przechowywane w dwóch zmiennych tymczasowych. Następnie stosowane są cztery warunki w celu przełączenia dwóch urządzeń zgodnie z pobranym 0 lub 1 z bazy danych.

void loop () {// get value temp1 = Serial.println (Firebase.getFloat ('light')); // pobierz wartość do przełączania światła temp2 = Serial.println (Firebase.getFloat ('AC')); // pobierz wartość dla przełączenia opóźnienia wentylatora (1000); if (temp1 == 1 && temp2 == 1) {// Aby włączyć światło i wentylator digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); } if (temp1 == 0 && temp2 == 1) {// Aby włączyć wentylator i wyłączyć światło digitalWrite (r1, LOW); digitalWrite (r2, HIGH); } if (temp1 == 1 && temp2 == 0) {// Aby wyłączyć wentylator i włączyć światło digitalWrite (r1, HIGH); digitalWrite (r2, LOW); } if (temp1 == 0 && temp2 == 0) {// Aby wyłączyć wentylator i zgasić światło digitalWrite (r1, LOW); digitalWrite (r2, LOW); }}

To była część pierwsza „Jak stworzyć system inteligentnego domu za pomocą ESP32?”. Możesz dodać więcej modułów przekaźnikowych, jeśli chcesz kontrolować więcej urządzeń domowych, jedyne, co musisz zrobić, to odczytać dane z bazy firebase i dodać więcej warunków przełączania. W kolejnym artykule wyjaśnię, jak stworzyć aplikację na Androida i bazę danych Firebase. Wyjaśnię krok po kroku procedurę łączenia aplikacji na Androida z firebase i wysyłania do niej danych.

Aby przejść do następnego samouczka Kliknij tutaj