Spisu treści:

Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel: 4 kroki (ze zdjęciami)
Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel: 4 kroki (ze zdjęciami)

Wideo: Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel: 4 kroki (ze zdjęciami)

Wideo: Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel: 4 kroki (ze zdjęciami)
Wideo: ARCHIWUM Mówiący dom zapowiedzi głosowe inteligentny dom powiadomienia o stanach zdarzeń 2024, Listopad
Anonim
Image
Image
Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel
Powiadomienia o zdarzeniach w czasie rzeczywistym za pomocą NodeMCU (Arduino), Google Firebase i Laravel

Czy kiedykolwiek chciałeś otrzymać powiadomienie, gdy w Twojej witrynie zostanie wykonana akcja, ale e-mail nie jest odpowiedni? Czy chcesz słyszeć dźwięk lub dzwonek za każdym razem, gdy dokonujesz sprzedaży? A może potrzebujesz natychmiastowej uwagi z powodu nagłej sytuacji w domu?

To urządzenie może ostrzegać Cię w czasie rzeczywistym o wszystkim, co chcesz.

Krok 1: Podłącz obwód

Podłącz obwód
Podłącz obwód
Podłącz obwód
Podłącz obwód

Urządzenie, które zbudowałem, składa się z płytki NodeMCU z brzęczykiem informującym mnie o sprzedaży dokonanej na stronie internetowej. Mikrokontroler programowany jest za pomocą oprogramowania Arduino, a częścią wyzwalającą może być dowolna aplikacja webowa, iOS lub Android. Na przykład stworzyłem dwie proste aplikacje internetowe, jedną w Laravelu, a drugą w zwykłym HTML i JavaScript.

Ponieważ płyta NodeMCU może bezpiecznie działać do około 12 mA prądu na pinach, brzęczyk jest podłączony przez tranzystor NPN. Użyłem 2N2222, ponieważ mam ich wiele, ale jestem pewien, że zasada będzie taka sama w przypadku każdego innego tranzystora NPN.

Aby okablować obwód, podłącz kolektor tranzystora do pinu Vin na płytce. Brzęczyk pracuje na 5V i skoro zamierzamy zasilać urządzenie z USB to ten pin poda nam napięcie przed regulatorem 3.3V na płytce.

Następnie podłącz dodatnią stronę brzęczyka na emiterze tranzystora, a ujemny styk brzęczyka do dowolnego styku masy na płytce. Użyłem pinu 2, ale można go również podłączyć na pinach 9, 25 lub 29.

Baza tranzystora jest podłączona do pinu D2, który koreluje z GPIO 4 w oprogramowaniu Arduino. W tej konfiguracji tranzystor będzie skutecznie działał jako przełącznik włączający brzęczyk przy każdym zdarzeniu. Zamiast brzęczyka można podłączyć przekaźnik w ten sam sposób, aby móc sterować dowolnym urządzeniem sieciowym, takim jak żarówki, maszyny lub syrena, jeśli wykonujesz jakieś urządzenie alarmowe.

Krok 2: Przygotuj aplikacje internetowe

Przygotuj aplikacje internetowe
Przygotuj aplikacje internetowe
Przygotuj aplikacje internetowe
Przygotuj aplikacje internetowe
Przygotuj aplikacje internetowe
Przygotuj aplikacje internetowe

W przypadku części wyzwalającej i działającej w czasie rzeczywistym użyjemy bazy danych czasu rzeczywistego Firebase firmy Google. To wspaniała baza danych NoSQL w chmurze stworzona przez Google, która zapewnia synchronizację danych w czasie rzeczywistym między każdą z używanych platform.

Najpierw utwórz projekt z wybraną nazwą. Po utworzeniu stwórz pojedynczy węzeł o nazwie „count” i zainicjuj go z wartością 0. To będzie nasza początkowa liczba, którą chcemy śledzić w przyszłości.

Aplikacja Laravel korzysta z pakietu „firebase-php” firmy Kreait, do którego link znajduje się poniżej. Zainstaluj pakiet, uruchamiając „kompozytor wymaga kreait/firebase-php”. Po zakończeniu instalacji musimy stworzyć kontroler, w którym nastąpi akcja. Metodę nazwałem „update” i połączyłem ją w trasach w akcji POST.

Aby pobrać instancję Firebase, potrzebujesz pliku json, który musisz pobrać z konsoli Firebase. Umieść ten plik w katalogu głównym projektu Laravel i nazwij go firebase.json. Podczas pobierania instancji Firebase musimy podać ścieżkę do tego pliku za pomocą metody withCredentials.

Po otrzymaniu instancji firebase musimy uzyskać odwołanie do bazy danych i do utworzonego wcześniej węzła. Przy każdej akcji otrzymamy aktualną wartość węzła, zwiększymy ją o jeden i zapiszemy, jeśli wrócimy do bazy danych. Pozwoli to śledzić nasze wydarzenia, o których musimy powiadomić.

To samo można osiągnąć za pomocą zwykłego HTML i JavaScript, korzystając z dostarczonej biblioteki Firebase. Dzięki niemu najpierw musimy dostarczyć do tablicy konfiguracyjnej odpowiednie ustawienia z konsoli Firebase i zainicjować aplikację. Po zainicjowaniu otrzymujemy odwołanie do węzła, w którym przechowujemy liczniki zdarzeń i dołączamy detektor, aby pobrać każdą zmianę wartości.

Dodatkowo, zamiast wysyłać formularz jak w przykładzie Laravela, mamy teraz funkcję JavaScript, która jest wywoływana po kliknięciu przycisku, aktualizuje licznik i zapisuje zaktualizowaną wartość z powrotem do bazy danych.

Krok 3: Zaprogramuj płytę NodeMCU

Zaprogramuj płytę NodeMCU
Zaprogramuj płytę NodeMCU
Zaprogramuj płytę NodeMCU
Zaprogramuj płytę NodeMCU
Zaprogramuj płytę NodeMCU
Zaprogramuj płytę NodeMCU

Do zaprogramowania NodeMCU użyłem oprogramowania Arduino i po zainstalowaniu na nim płytki upewniłem się, że wybieram odpowiednią wersję i port, aby móc wgrać oprogramowanie. Moja jest w wersji 1.0, więc przed kontynuowaniem sprawdź dokładnie na swojej tablicy.

Pierwsza część kodu Arduino, ustawia wszystkie niezbędne definicje, które będziesz musiał dostosować na swoim urządzeniu. Pierwszym takim ustawieniem jest identyfikator sieci Wi-Fi i hasło, a następnie musimy ustawić adres URL Firebase i Sekret bazy danych Firebase. Niestety nie jest to zalecany sposób łączenia się z bazą danych, ale jak na razie jest to jedyny sposób, w jaki biblioteka go obsługuje. Możesz znaleźć ten sekret w ustawieniach projektu, menu kont usług w konsoli Firebase.

Następna definicja to ścieżka, którą będziemy sprawdzać pod kątem aktualizacji oraz identyfikator urządzenia. Identyfikator urządzenia jest potrzebny, więc w przypadku, gdy mamy wiele urządzeń do powiadamiania o tych samych zdarzeniach, musimy wiedzieć, które urządzenie powiadomiło nas o zdarzeniu i przechowywać to. Na koniec musimy ustawić pin, do którego podłączyliśmy brzęczyk iw naszym przypadku jest to D2.

Funkcja konfiguracji definiuje wbudowany pin led i piny D2 jako wyjścia, uruchamia komunikację szeregową, aby wiedzieć, co się dzieje i łączy się z określoną siecią WiFi. Po nawiązaniu połączenia rozpoczyna komunikację z Firebase i pobiera ostatnią wartość, o której zgłosiliśmy. Następnie zaczyna nasłuchiwać zmian na określonej ścieżce.

W głównej pętli jest wywołanie funkcji blink, która mruga wbudowaną diodą przez 500 milisekund, abyśmy mogli stwierdzić, że urządzenie jest aktywne. Po wykryciu zmiany i dostępnych danych, które możemy odczytać za pomocą dostępnej funkcji, odczytywana jest nowa wartość węzła, obliczana jest różnica, ponieważ w międzyczasie mogło być wiele zdarzeń i za każdym razem generowany jest sygnał dźwiękowy różnicy.

Na przykład, jeśli różnica między ostatnio zgłoszoną wartością a nową wartością wynosi 4, zostaną wygenerowane 4 sygnały dźwiękowe informujące o dokonaniu 4 nowych zakupów. Funkcja sygnału dźwiękowego wykorzystuje wbudowaną funkcję tonu do odtwarzania określonej częstotliwości przez brzęczyk przez określony czas.

Po wygenerowaniu sygnałów dźwiękowych nowa wartość zostanie zaktualizowana dla określonego urządzenia, a strumieniowanie zostanie ponownie uruchomione. Obecnie w bibliotece Firebase arduino istnieje otwarty problem polegający na tym, że strumieniowanie nie jest kontynuowane automatycznie po ręcznym zapisaniu wartości, więc musimy ją ponownie uruchomić.

Krok 4: Ciesz się swoim urządzeniem

Ciesz się swoim urządzeniem!
Ciesz się swoim urządzeniem!

Cały kod, którego użyłem, jest dostępny na moim koncie GitHub połączonym poniżej wraz z linkiem do schematu projektu.

Kod źródłowy

Schematyczny

Kod można łatwo zaadaptować do pracy w wielu różnych scenariuszach i wydarzeniach i jestem pewien, że będziesz się z nim dobrze bawić.

Dla mnie była to naprawdę fajna konstrukcja i udało mi się na niej sporo się nauczyć i z tego jestem bardzo zadowolony. Mam nadzieję, że może ci to pomóc w twoim projekcie, ale jeśli utkniesz w jakiejś jego części lub potrzebujesz dalszych wyjaśnień, daj mi znać w komentarzach, a dołożę wszelkich starań, aby ci pomóc.

Jeśli podobał Ci się projekt, zasubskrybuj mój kanał na YouTube:

Skosztuj kodu

Zalecana: