Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Funkcje
- Krok 2: PCB
- Krok 3: Montaż
- Krok 4: Przegląd programowania
- Krok 5: Wejścia
- Krok 6: Wyjścia
- Krok 7: Logowanie
- Krok 8: Brzęczyk
- Krok 9: Zewnętrzne integracje IoT
- Krok 10: Użycie
- Krok 11: Plany na przyszłość
Wideo: ESP32 Smart Home Hub: 11 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Stworzenie systemu, który może obsłużyć duże ilości danych z czujników, mieć wiele wyjść i połączyć się z Internetem lub siecią lokalną, jest czasochłonne i pracochłonne. Zbyt często ludzie, którzy chcą stworzyć własne inteligentne sieci domowe, mają problemy ze znalezieniem i złożeniem niestandardowych komponentów w większy system. Dlatego chciałem stworzyć modułową i bogatą w funkcje platformę, która ułatwiłaby konstruowanie czujników i wyjść podłączonych do Internetu Rzeczy.
Dziękujemy DFRobot i PCBGOGO.com za sponsorowanie tego projektu!
Aby uzyskać więcej szczegółowych informacji, odwiedź repozytorium Github:
Kieszonkowe dzieci
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Czujnik DHT22
www.dfrobot.com/product-1102.html
-
APDS9960 Czujnik światła i gestów
www.dfrobot.com/product-1361.html
-
Moduł LCD I2C 20x4
www.dfrobot.com/product-590.html
-
Analogowa taśma LED RGB
www.dfrobot.com/product-1829.html
- DRV8825 Sterowniki silników krokowych
- Czytnik kart SD
- Silniki krokowe NEMA17
Krok 1: Funkcje
Główną cechą tej płyty jest płytka rozwojowa FireBeetle ESP32, która obsługuje całą komunikację, odczyty czujników i wyjścia. Istnieją dwa sterowniki silników krokowych, które sterują dwoma bipolarnymi silnikami krokowymi.
Magistrala I2C jest również przystosowana do użytku z komponentami takimi jak APDS9960 lub LCD. Do odczytu temperatury złamane są piny do podłączenia czujnika DHT22, a także fotorezystor do odczytu poziomu światła otoczenia.
Na płycie znajduje się obsługa analogowego paska świetlnego, na którym znajdują się trzy tranzystory MOSFET do sterowania diodami LED.
Krok 2: PCB
Proces projektowania PCB rozpocząłem od stworzenia schematu w Eagle. Ponieważ nie mogłem znaleźć biblioteki FireBeetle ESP32, zamiast tego użyłem dwóch nagłówków pinów 1x18. Następnie stworzyłem obwód zarządzania energią, który mógł przyjmować napięcie 12V przez gniazdo DC baryłkę i przekonwertować go na 5V do zasilania czujników i ESP32.
Po ukończeniu schematu przeszedłem do projektowania samej płytki drukowanej.
Wiedziałem, że wtyczka beczki DC będzie musiała znajdować się blisko przodu płytki, a kondensatory wygładzające zasilacza 100uF musiały być blisko wejść zasilania sterownika silnika krokowego. Po ułożeniu wszystkiego zacząłem wyznaczać ślady.
Oshpark produkuje wysokiej jakości PCB, ale ich ceny są dość wysokie. Na szczęście PCBGOGO.com produkuje również świetne płytki PCB w przystępnej cenie. Udało mi się kupić dziesięć płytek PCB za jedyne 5 USD, zamiast płacić 52 USD za tylko trzy płytki z Oshpark.com.
Krok 3: Montaż
Ogólnie montaż deski był dość łatwy. Zacząłem od przylutowania elementów montowanych powierzchniowo, a następnie wpięcia łącznika lufy i regulatora. Następnie wlutowałem listwy szpilkowe dla komponentów takich jak sterowniki silników i FireBeetle.
Po zakończeniu lutowania przetestowałem płytkę pod kątem zwarcia, przełączając multimetr w tryb pomiaru rezystancji i sprawdzając, czy rezystancja przekracza pewną wartość. Płytka minęła, więc mogłem wtedy podłączyć każdy komponent.
Krok 4: Przegląd programowania
Chciałem, aby kod tej płyty był modułowy i łatwy w użyciu. Oznaczało to posiadanie kilku klas, które obsługują określone funkcje, wraz z większą klasą opakowującą, która łączy te mniejsze.
Krok 5: Wejścia
Do obsługi danych wejściowych utworzyłem klasę o nazwie „Hub_Inputs”, która pozwala hubowi domowemu komunikować się z APDS9960, wraz z tworzeniem i zarządzaniem przyciskami oraz pojemnościowymi interfejsami dotykowymi. Zawiera następujące funkcje:
Przycisk Utwórz
Sprawdź, czy przycisk jest wciśnięty
Uzyskaj liczbę naciśnięć przycisków
Pobierz najnowszy gest
Uzyskaj pojemnościową wartość dotyku
Przyciski są przechowywane jako struktura z trzema atrybutami: is_pressed, numberPresses i pin. Każdy przycisk po utworzeniu jest dołączony do przerwania. Gdy to przerwanie jest wyzwalane, procedura obsługi przerwań (ISR) jest przekazywana do wskaźnika przycisku (podanego jako adres pamięci w tablicy przycisków) i zwiększa liczbę naciśnięć przycisków, wraz z aktualizacją wartości logicznej is_pressed.
Pojemnościowe wartości dotykowe są znacznie prostsze. Są one pobierane przez przekazanie pinezkę do funkcji touchRead().
Ostatni gest jest aktualizowany przez odpytywanie APDS9960 i sprawdzanie, czy wykryto nowy gest, a jeśli został wykryty, ustaw zmienną prywatnego gestu na ten gest.
Krok 6: Wyjścia
Centrum inteligentnego domu oferuje kilka sposobów przesyłania informacji i zmiany oświetlenia. Istnieją piny, które wyrywają magistralę I2C, umożliwiając użytkownikom podłączenie wyświetlacza LCD. Jak dotąd obsługiwany jest tylko jeden rozmiar wyświetlacza LCD: 20 x 4. Używając funkcji „hub.display_message()”, użytkownicy mogą wyświetlać komunikaty na wyświetlaczu LCD, przekazując obiekt ciągu.
Istnieje również listwa pinowa do podłączenia ciągu analogowych diod LED. Wywołanie funkcji „hub.set_led_strip(r, g, b)” ustawia kolor paska.
Dwa silniki krokowe są napędzane za pomocą pary płyt sterownika DRV8825. Postanowiłem wykorzystać bibliotekę BasicStepper do obsługi sterowania silnikiem. Po uruchomieniu płyty tworzone są dwa obiekty krokowe i oba silniki zostają włączone. Aby wykonać krok każdego silnika, używana jest funkcja „hub.step_motor(motor_id, steps)”, gdzie identyfikator silnika to 0 lub 1.
Krok 7: Logowanie
Ponieważ płytka ma kilka czujników, chciałem mieć możliwość lokalnego zbierania i rejestrowania danych.
Aby rozpocząć rejestrowanie, tworzony jest nowy plik z „hub.create_log(nazwa pliku, nagłówek)”, gdzie nagłówek jest używany do utworzenia wiersza pliku CSV, który oznacza kolumny. Pierwsza kolumna to zawsze znacznik czasu w formacie Rok Miesiąc Dzień Godzina:Min:Sek. Aby uzyskać czas, funkcja hub.log_to_file() pobiera czas za pomocą funkcji basic_functions.get_time(). Struktura czasu tm jest następnie przekazywana przez odwołanie do funkcji rejestrującej wraz z danymi i nazwą pliku.
Krok 8: Brzęczyk
Po co płyta IoT, jeśli nie możesz odtwarzać muzyki? Dlatego dołączyłem brzęczyk z funkcją odtwarzania dźwięków. Wywołanie „hub.play_sounds(melodia, czas trwania, długość)” rozpoczyna odtwarzanie utworu, przy czym melodia jest tablicą częstotliwości nut, czas trwania jest tablicą czasów trwania nut, a długość jest liczbą nut.
Krok 9: Zewnętrzne integracje IoT
Centrum obsługuje obecnie webhooki IFTTT. Mogą być wyzwalane przez wywołanie funkcji Hub_IoT.publish_webhook(adres URL, dane, zdarzenie, klucz) lub Hub_IoT.publish_webhook(adres URL, dane). Spowoduje to wysłanie żądania POST do podanego adresu URL z dołączonymi danymi, wraz z nazwą zdarzenia, jeśli to konieczne. Aby skonfigurować przykładową integrację IFTTT, najpierw utwórz nowy aplet. Następnie wybierz usługę webhook, która jest wyzwalana po odebraniu żądania.
Następnie wywołaj zdarzenie „high_temp” i zapisz je. Następnie wybierz usługę Gmail dla części „To” i wybierz opcję „Wyślij e-mail do siebie”. W ustawieniach usługi wpisz „Temperatura jest wysoka!” dla tematu, a następnie wpisuję „Zmierzona temperatura {{Value1}} przy {{OccurredAt}}”, która pokazuje zmierzoną temperaturę i czas, w którym zdarzenie zostało wywołane.
Po skonfigurowaniu wystarczy wkleić adres URL webhooka wygenerowany przez IFTTT i wstawić „high_temp” w sekcji zdarzenia.
Krok 10: Użycie
Aby użyć Smart Home Hub, po prostu wywołaj potrzebne funkcje w setup() lub loop(). Umieściłem już przykładowe wywołania funkcji, takie jak drukowanie aktualnego czasu i wywoływanie zdarzenia IFTTT.
Krok 11: Plany na przyszłość
System Smart Home Hub sprawdza się bardzo dobrze w prostych zadaniach związanych z automatyką domową i gromadzeniem danych. Można go wykorzystać niemal do wszystkiego, np. do ustawiania koloru taśmy LED, monitorowania temperatury w pomieszczeniu, sprawdzania, czy świeci się światło i do wielu innych potencjalnych projektów. W przyszłości chciałbym jeszcze bardziej rozszerzyć funkcjonalność. Może to obejmować dodanie bardziej niezawodnego serwera WWW, lokalnego hostingu plików, a nawet Bluetooth lub mqtt.
Zalecana:
Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: 10 kroków
Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: W tym projekcie IoT stworzyłem system Alexa Smart Home Automation przy użyciu NodeMCU ESP8266 & Moduł przekaźnikowy. Możesz łatwo sterować oświetleniem, wentylatorem i innymi urządzeniami gospodarstwa domowego za pomocą polecenia głosowego. Aby połączyć inteligentny głośnik Echo Dot z
Wifi Smart Switch ESP8266 współpracuje z Alexa i Google Home Automation: 7 kroków
Przełącznik Wifi Smart ESP8266 współpracuje z Alexą i automatyką domową Google: w świecie globalizacji wszyscy pragną najnowszych i inteligentnych technologii. Inteligentny przełącznik WiFi, dzięki któremu Twoje życie będzie bardziej inteligentne i wygodne
ForgetMeNot - Platforma powiadomień Smart Home: 14 kroków (ze zdjęciami)
ForgetMeNot - Platforma powiadomień inteligentnego domu: Jako zapracowani studenci, biegający między zajęciami, pracą i obowiązkami rodzinnymi, zapominamy o drobiazgach. Urodziny przychodzą i odchodzą bez naszej uwagi, ważny termin mija z powodu zwykłego zapomnienia, a czasami po prostu
Interfejs Alarm Honeywell Vista ze Smart Hub (Wink/Smartthings): 7 kroków (ze zdjęciami)
Interfejs Alarm Honeywell Vista ze Smart Hub (Wink/Smartthings): Cześć! Chciałem przedstawić krótki samouczek, w jaki sposób zintegrowałem system alarmowy Honeywell Vista z moim inteligentnym koncentratorem. Używam Wink do tego samouczka, ale powinno to działać z dowolnym inteligentnym koncentratorem (Smartthings / Iris / itp.) Zanim zaczniemy, zaczynasz
DIY Google Home z głośnikiem Bluetooth na Raspberry Pi Zero Docking Hub: 7 kroków (ze zdjęciami)
DIY Google Home z głośnikiem Bluetooth na Raspberry Pi Zero Docking Hub: Mamy instrukcje dotyczące DIY Amazon Echo Alexa - Alexa Voice Assistant na Raspberry Pi Zero Docking Hub. Tym razem chcemy pokazać, jak zbudować DIY Google Home. W tej instrukcji pokażemy, jak zainstalować i skonfigurować Asystenta Google