Spisu treści:

Czujnik ruchu ESP-01 z głębokim snem: 5 kroków
Czujnik ruchu ESP-01 z głębokim snem: 5 kroków

Wideo: Czujnik ruchu ESP-01 z głębokim snem: 5 kroków

Wideo: Czujnik ruchu ESP-01 z głębokim snem: 5 kroków
Wideo: ✨Swallowed Star EP 76 - 85 Full Version [MULTI SUB] 2024, Listopad
Anonim
Image
Image

Pracuję nad stworzeniem domowych czujników ruchu, które po uruchomieniu wysyłają wiadomość e-mail. Istnieje wiele przykładowych instrukcji i innych przykładów robienia tego. Niedawno musiałem to zrobić za pomocą zasilanego bateryjnie czujnika ruchu PIR i ESP-01. ESP-01 jest bardzo funkcjonalny i ma wszystkie wymagane możliwości, więc dlaczego nie wykorzystać minimum i najmniejszego niezbędnego kosztu? Do zestawu dodano kolejny oddzielny i zdalny moduł ESP-01, który uruchamiał brzęczyk po uruchomieniu czujnika ruchu.

Kod i ewentualny układ obwodów zostały zebrane z wielu źródeł w sieci i nie sądzę, abym mógł je konkretnie zidentyfikować. Pomysł wysyłania e-maili przez gmail pochodzi z instruktażowych i innych źródeł, a ostateczny kod jest amalgamatem tych źródeł. Głęboki sen do pracy poprowadził mnie na wiele ścieżek, które często okazywały się bezowocne. Zabawne jest to, że gdy ścieżka okaże się owocna, przestajesz szukać kolejnych ścieżek. Dziękuję więc wszystkim, którzy przyczynili się do mojego sukcesu i są jeszcze nieznani.

Miałem ten sam problem, aby czujnik PIR działał przy wyzwalaniu głębokiego snu ESP-01. Wiele ścieżek, aż pojawiła się jedna, która zadziałała.

Nie trzeba dodawać, że było kilka interesujących przeszkód lub może bardziej istotne, lepsze zrozumienie elektroniki, której potrzebowałem. Uczysz się, aż coś zadziała, a potem nie musisz się uczyć więcej.

ESP-01 wykonuje głęboki sen, podobnie jak każdy inny moduł ESP8266, o ile nie potrzebujesz snu na czas. Jeśli chcesz, aby moduł wybudzał się po określonym czasie, ESP-01 nie jest modułem do użycia. Ale nie tego chciałem. Upływający czas nie ma sensu w przypadku korzystania z PIR. Chciałem, aby ESP-01 budził się tylko wtedy, gdy został wyzwolony przez ruch wykryty przez PIR. Jeśli ruch nie zostanie wykryty przez wiele godzin lub dni, ESP-01 pozostaje w stanie uśpienia przy minimalnym zużyciu baterii.

Zobaczysz wiele obwodów korzystających z GPIO16 podłączonych do resetu ESP8266, ponieważ GPIO16 jest sygnałem wake. To prawda, ale jest to sygnał przebudzenia ze snu zaplanowanego. Możemy zignorować ten PIN, co jest dobre, ponieważ nie jest dostępny w ESP-01.

Zasadniczo wszystko, czego potrzebujemy, to uzyskać sygnał z PIR, aby wyzwolić pin Reset ESP-01. Pierwszą trudnością, jaką można się domyślić, jest to, że Reset jest wyzwalany sygnałem NISKIM, a PIR wysyła sygnał WYSOKI po uruchomieniu. Reset również musi być WYSOKI lub pływający podczas rozruchu. Aby to było krótkie, po wypróbowaniu kilku różnych obwodów zdecydowałem się na użycie tranzystora NPN z rezystorem podciągającym, aby utrzymać pin RESET na wysokim poziomie podczas rozruchu. Wyjście z PIR jest minimalne, ale zapewnia wystarczający prąd bazy, aby włączyć tranzystor.

Jak widać na poniższym schemacie obwodu, ESP-01 budził się z głębokiego snu za każdym razem, gdy czujnik PIR wykrył ruch.

Ale był inny problem. Reset ESP-01 nastąpił dopiero po tym, jak PIR przestał wykrywać ruch i powrócił do niskiego sygnału, wyłączając tranzystor i przywracając pin Reset do stanu HIGH z powodu rezystora pullup. Oznaczałoby to, że wiadomość e-mail nie zostanie wysłana, a brzęczyk nie zostanie aktywowany, dopóki PIR nie przestanie wykrywać ruchu. Chciałem, żeby wyzwalacz nastąpił, gdy tylko wyczujemy ruch.

Z tego zachowania ustaliłem, że ESP-01 faktycznie wyzwala się na zboczu narastającym sygnału. Przytrzymanie pinu Reset do masy nie powoduje wyzwolenia ESP-01 z głębokiego uśpienia, ale w momencie, gdy napięcie wzrasta do sygnału HIGH, następuje reset.

Moją bardzo prostą odpowiedzią na to zachowanie było dodanie kondensatora do linii między wyjściem PIR a bazą tranzystora. To spowodowało, że tranzystor włączał się tylko podczas ładowania kondensatora. Po naładowaniu nie było już prądu i tranzystor się wyłączył. Rezystor 5k umożliwia odprowadzenie prądu do ziemi. Przetestowałem to z diodą LED zamiast ESP-01 i mogłem zobaczyć migającą diodę LED przez ułamek sekundy przed wyłączeniem. Ten mały impuls wystarczył, aby chwilowo pociągnąć pin resetujący do masy i wystarczająco długo, aby wyzwolić reset z głębokiego snu.

Krok 1: Moduł głębokiego snu ESP-01

Moduł głębokiego snu ESP-01
Moduł głębokiego snu ESP-01
Moduł głębokiego snu ESP-01
Moduł głębokiego snu ESP-01

Moduł głębokiego uśpienia wykorzystuje dwa napięcia robocze. Losowe napięcie 5v+ pakietu akumulatorów dla PIR, a także płytka regulatora 3,3 V dla ESP-01. Włączam również diodę do obwodu, aby zapobiec uszkodzeniom części przed odwrotnymi napięciami. To zużywa trochę dodatkowej mocy i obniża napięcie akumulatora o 0,7 wolta. Diodę można pozostawić poza obwodem, jeśli masz pewność, że nigdy nie odwrócisz przewodów akumulatora. Dla wygody dodano również przełącznik.

Ten moduł jest niewielką aktualizacją mojego oryginalnego układu nie głębokiego uśpienia. W konfiguracji bez głębokiego uśpienia, PIR jest bezpośrednio podłączony do pinu RX ESP-01. Używam pinu RX ESP-01 jako pinu wejściowego dla PIR z kilku powodów. GPIO0 nie działało, ponieważ przy starcie PIN wyjścia PIR byłby LOW, powodując przejście ESP-01 w tryb flash. Nie korzystałem z GPIO2, ponieważ wtedy nie mogłem użyć wbudowanej diody LED do wizualnego sprzężenia zwrotnego. Piny RX i TX są często opisywane jako dodatkowe piny IO, ale z mojego doświadczenia wynika, że RX jest dodatkowym pinem INPUT, a TX jest dodatkowym pinem WYJŚCIA.

W konfiguracji głębokiego uśpienia połączenie RX nie jest bezwzględnie konieczne. Używam go tylko do monitorowania, jak długo PIR jest wyzwalany przez włączenie diody LED, gdy wejście jest WYSOKIE. Jak wspomniano wcześniej, jeśli wyczyścisz funkcję pętli i użyjesz tylko procedury konfiguracji, połączenie RX jest niepotrzebne.

Oto lista części modułu głębokiego uśpienia ESP-01:

Płytka prototypowa PCB 1 - 5 x 7 cm

1 - 2 pinowe złącze

2 - 1 x 3 żeńskie nagłówki

1 - AMS1117 - Płytka obwodu regulatora napięcia 3.3

1 - 1 x 3 męski kołek nagłówka pod kątem prostym

1 - 1 x 3 żeńskie gniazdo nagłówka;

1 - 1 x 4 żeńskie gniazdo nagłówka;

1 - 2x4 żeński nagłówek

Kondensator 1 - 1 uf

1 - Czujnik ruchu PIR HC-SR501

Tranzystor 1 - 2N2222

Rezystor 1 - 10k

Rezystor 1 - 4,7k

Rezystor 1 - 1k

1 - 1N4148 dioda

1 - przełącznik SS12D00G4 SPDT

1 - ESP-01

1 - 4 akumulatory AA

Należy pamiętać, że w filmie płytka drukowana wykorzystuje adapter płytki stykowej ESP-01 zamiast nagłówka 2 x 4. Chociaż ten adapter jest łatwiejszy do lutowania, nagłówek 2 x 4 działa dobrze i faktycznie lepiej pasuje.

Krok 2: Kod głębokiego uśpienia ESP-01

Kod Deep Sleep spełnia dwie funkcje. Wyślij wiadomość e-mail (domyślnie przez gmail) i wyślij żądanie internetowe http do powiązanego modułu brzęczyka ESP-01, aby uruchomić brzęczyk.

Po uruchomieniu ten moduł udostępnia dwie opcje powiadomień i może być szczególnie przydatny, gdy nie zwracasz uwagi na wiadomości e-mail.

Aby szkic działał, musisz zaktualizować sześć wierszy kodu o określone wartości:

const char* ssid = "xxxxx"; // Twoje hasło sieci WiFi SSIDconst char* = "xxxxx"; // Twój ciąg hasła WiFi Senders_Login = "xxxxx"; // login dostawcy poczty e-mail String Senders_Password = "xxxxx"; // hasło dostawcy poczty e-mail

Do = "xxxxxx"; Od = "xxxxxx"; // Gmail generalnie woli to samo, co Senders_Login i może zastąpić

Zauważyłem, że moduł głębokiego uśpienia działa nieprzewidywalnie, gdy czujnik PIR został ustawiony na mniej niż 10 sekund dla długości zdarzenia wyzwalającego. Mam ustawione na 20 sekund. Okazało się to bardzo wiarygodne, ale oznacza to również, że zdarzenia wyzwalające mogą wystąpić z taką częstotliwością.

Dodałem również kod do funkcji pętli, aby dioda ESP-01 była włączona, dopóki PIR nadal wykrywa ruch. Cały kod w funkcji pętli można usunąć, a wywołanie głębokiego uśpienia przeniesione na koniec funkcji konfiguracji.

Funkcji migania używam do wizualnego wskaźnika aktywności z modułem ESP-01.

Chociaż używałem i testowałem łączność z Gmailem, działają również inni dostawcy poczty e-mail. Próbowałem kilku. W rzeczywistości uważam, że Gmail jest bardziej kłopotliwy. Gmail wymaga skonfigurowania konta pod kątem dostępu przez mniej bezpieczne aplikacje. To ustawienie konta jest domyślnie WYŁĄCZONE, więc upewnij się, że je znajdziesz i zmień je na mniej bezpieczne. Gmail NIE będzie działał inaczej.

Jeśli zdecydujesz się mieć więcej niż jeden moduł brzęczyka, po prostu dodaj dodatkowe wywołania klienta http (powtórz trzy wiersze kodu, ale zmień używany adres ip, a także zdefiniuj zmienną httpCode jako int raz!

Zauważ, że adres IP brzęczyka jest zakodowany w tym module. Nie musisz używać adresu IP, który wybrałem, ale musisz dopasować adres IP wywołania internetowego w tym module z adresem IP konfiguracji serwera internetowego w następnym module.

Krok 3: Moduł brzęczyka ESP-01

Moduł brzęczyka ESP-01
Moduł brzęczyka ESP-01
Moduł brzęczyka ESP-01
Moduł brzęczyka ESP-01
Moduł brzęczyka ESP-01
Moduł brzęczyka ESP-01

Moduł brzęczyka ma dość prostą konfigurację. Wykorzystuje złącze USB zamiast pakietu baterii, ponieważ nie sądzę, aby ten moduł był odpowiedni dla pakietu baterii. Musi być cały czas włączony i podłączony do sieci / Wi-Fi, ponieważ nigdy nie wie, kiedy zostanie wysłane żądanie sieciowe. Wymaga to większej mocy ciągłej niż akumulatory.

Moduły brzęczyków można wygodnie umieścić w wielu miejscach, zapewniając powiadomienie o zdarzeniu wyzwalającym czujnik ruchu bez względu na to, gdzie jesteś!

Brzęczyk jest podłączony do 5V złącza USB i jest jeszcze jedna płytka regulatora 3.3V, która dostarcza zasilanie do ESP-01.

Moduł brzęczyka będzie działał z wykorzystaniem TX, GPIO0 lub GPIO2 dla wyjścia. W mojej konfiguracji używam GPIO0. (Na zdjęciu modułu przewód jest podłączony do GPIO2, ale od tego czasu go przeniosłem.) Chociaż GPIO0 nie działa dla modułu głębokiego uśpienia (jako INPUT), działa dobrze z tym układem jako OUTPUT. Nie jest ciągnięty do podłoża na bucie, co spowoduje problemy. Użyłem GPIO2, ale potem nie mogłem użyć wbudowanej diody LED do jakichkolwiek informacji zwrotnych, ale używając GPIO0 do WYJŚCIA, mogę użyć wbudowanej diody LED.

Próbowałem użyć tranzystora NPN do zasilania brzęczyka w obwodzie, gdy ESP-01 umieścił sygnał WYSOKI na pinie GPIO0, ale wyniki były strasznie niespójne. Brzęczyk wydawał się chcieć brzmieć przez cały czas, nawet przy bardzo małej mocy. Więc zamiast tego użyłem tranzystora MOSFET z kanałem N (2n7000) i wynik był wspaniały. Pin IO steruje bramą zgodnie z wymaganiami.

Podczas gdy potrzebujemy tylko dwóch pinów ze złącza USB Vcc(+) i Gnd(-), używam 5-pinowego złącza do połączenia z płytką PCB dla dodatkowej stabilności i do lutowania przed podłączeniem USB do regulatora. Moja płyta regulatora 3,3 V została fabrycznie zainstalowana z pinami i w mojej głowie była odwrócona do góry nogami. Aby umieścić regulator w pinach nagłówka, możesz zobaczyć, że płytka drukowana jest ukryta, ale co gorsza, vcc i gnd na regulatorze są odwrócone od vcc i gnd na złączu USB. Więc przewody się krzyżują.

Należy również pamiętać, że + zasilanie dla aktywnego brzęczyka pochodzi z 5V USB. Ponadto 4-pinowe gniazdo żeńskie dobrze współpracuje z rozmieszczeniem pinów brzęczyka.

Lista części modułu brzęczyka ESP-01:

1-5x7 płytka drukowana

1 - złącze USB mini z listwami pinowymi (7 pinów)

2 - 1 x 3 żeńskie nagłówki

1-AMS1117-3.3 v płyta regulatora napięcia;

1 - 2x4 żeński nagłówek

2 - 1 x 4 gniazda żeńskie

1 - 2N7000 N-kanałowy MOSFET

Rezystor 1 - 10 omów

Aktywny brzęczyk 1–5 V

Krok 4: Kod modułu brzęczyka ESP-01

Moduł brzęczyka pełni rolę prostego serwera WWW ESP-01. Odpowiada prostą wiadomością na żądanie roota, a gdy otrzyma żądanie buzza, uruchomi brzęczyk. GPIO0 jest używany dla pinu GPIO dla sygnału brzęczyka.

Zauważ, że ESP-01 jest skonfigurowany z zakodowanym adresem IP. Jest to wymagane, aby moduł głębokiego uśpienia był połączony z adresem brzęczyka.

Podobnie jak w poprzednim module, będziesz musiał zaktualizować dwa wiersze kodu o określone wartości:

//SSID i hasło routera WiFiconst char* ssid = "xxxxxxx";

const char* hasło = "xxxxxxxx";

Jeśli masz utworzonych wiele modułów brzęczyka, każdy z nich powinien zostać załadowany własnym, unikalnym adresem IP.

Możesz również dodać różne metody brzęczyka, które wytwarzają różne melodie brzęczyka. Na przykład, jeśli masz czujnik PIR przy przednich drzwiach i jeden przy tylnych drzwiach, każdy z nich może wysłać żądanie internetowe do każdego z modułów brzęczyka, ale jeden czujnik może mieć szkic, który wywołuje buzz, a drugi szkic może wywołać buzz2 dzięki czemu można odróżnić od dźwięku, który czujnik został wyzwolony. I tak dalej i tak dalej! Funkcja buzz2 nie istnieje, wystarczy skopiować funkcję buzza i zmienić wartości opóźnienia.

W przypadku serwera WWW wystarczy dodać wiersz kodu w następujący sposób:

serwer.on("/buzz2", buzz2);

Krok 5: Końcowe myśli

To moja pierwsza instrukcja, więc być może przegapiłem kilka praktycznych rzeczy, które powinienem był uwzględnić. Użyta przeze mnie płytka regulatora AMS1117-3.3 zawiera małą diodę LED, która zapala się po włączeniu. W przypadku modułu głębokiego uśpienia nie chciałem, żeby to się zapalało i niepotrzebnie pobierało moc. Odlutowałem więc, co mogłem, po jednej stronie leda na tablicy, a następnie użyłem noża, aby przeciąć linię śladu. Było to łatwiejsze niż myślałem i zapobiega zapaleniu się diody LED. Nie byłem w stanie określić, jaki jest pobór mocy, gdy ESP-01 jest w głębokim śnie, ale może będę miał odpowiedź za kilka tygodni. Mój kolega prowadził czujnik (nie był w głębokim śnie) i stwierdził, że baterie są wyczerpane (5AA) po około tygodniu. Myślę, że ta konfiguracja powinna dać miesiąc lub nawet więcej. Zobaczymy.

Moduł głębokiego uśpienia kosztuje około 8 USD CDN w częściach (baterie nie są dołączone!), a moduł brzęczyka 5 USD.

Zalecana: