Spisu treści:
- Krok 1: Zarys, wymagania wstępne i części
- Krok 2: Sprzęt: pudełko, przełącznik i okablowanie
- Krok 3: Sprzęt: ESP-01
- Krok 4: Programowanie ESP-01
- Krok 5: Składanie wszystkiego
- Krok 6: Używanie Node-RED do działania na wiadomości MQTT
- Krok 7: Po przemyśleniach
Wideo: Flaga skrzynki pocztowej MQTT i Wifi Powered: 7 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Uwaga: aktualizacja o nowe oprogramowanie, schemat i wskazówki dla programisty
Kilka lat rozpocząłem własny projekt automatyki domowej. Zaczęło się od zbudowania sterowanego serwerowo nadajnika 433 MHz z Arduino do przełączania wielu tanich zdalnych przełączników opartych na PT2262. Później dodałem odbiornik oparty na Arduino do mojej stacji pogodowej, podłączyłem styk sterujący mojej ładowarki EV itp. Rzeczy coraz bardziej się przeplatały (i komplikowały!). Tak więc kilka miesięcy temu zdecydowałem się ujednolicić wszystko w oparciu o MQTT do przesyłania wiadomości, Node-RED do automatyzacji (oba działają na pojedynczym Raspberry Pi B+) i MariaDb do logowania (działa na moim serwerze Synology NAS). Później przeniosłem też brokera MQTT (Mosquitto) i Node-RED na NAS..
Ta instrukcja opisuje głupi projekt dla zabawy, podpinający moją skrzynkę pocztową na ulicy w tej domowej infrastrukturze. Chodzi o to, że jeśli ktoś otworzy skrzynkę pocztową zamontowaną na płocie około 10 metrów od drzwi wejściowych, zasygnalizuje mi to mój telefon i ewentualnie inne urządzenia.
Krok 1: Zarys, wymagania wstępne i części
Zarys
Na wysokim poziomie skrzynka pocztowa powinna po otwarciu wysłać unikalną wiadomość MQTT do brokera, aby subskrybenci tego tematu zostali poinformowani. Node-RED również subskrybuje i wykonuje pewną automatyzację, w tym przypadku wysyłając e-mail i/lub wiadomość push na mój telefon.
Skrzynka pocztowa powinna działać na bateriach i działać przez co najmniej rok, przy użyciu mojej sieci Wi-Fi. Ponieważ wybudzenie mikrokontrolera i połączenie z siecią WiFi może zająć kilka sekund, nie mogłem użyć przełącznika aktywacji do odcięcia zasilania. Zamiast tego, procesor powinien mieć możliwość zakończenia swojej działalności po zamknięciu skrzynki pocztowej.
Wymagania wstępne
Zakładam, że masz skromne umiejętności lutowania, pracowałeś trochę z Arduino IDE i zainstalowałeś płyty ESP8266 za pomocą Menedżera płyt. Do zaprogramowania mikrokontrolera potrzebny jest również adapter szeregowy USB 3,3 V.
Zakładam również, że masz działającego brokera MQTT i serwer Node-RED. Jeśli nie, w Internecie jest wiele instrukcji, ale radzę wybrać leniwą drogę i użyć doskonałego skryptu instalacyjnego Petera Scargilla, jeśli chcesz uruchomić to na dowolnym Pi lub Ubuntu, lub użyj obrazu Andreasa Spiessa dla Pi Zero W (linki w opisie tego filmu), co pozwoli Ci zaoszczędzić kilka godzin oglądania uruchomionych skryptów instalacyjnych. Alternatywnie możesz sprawić, by oprogramowanie układowe wysłało wiadomość e-mail bezpośrednio, ale stracisz w ten sposób dużą elastyczność.
Części
- 1 zamknięty, 3 opakowanie na baterie AA
- 2 baterie AA
- 1 moduł ESP8266. Do tego projektu użyłem ESP-01
- 1 mikroprzełącznik
- 1 rezystor 47K
- 1 rezystor 4M7
- 1 kondensator 2.2uF
- 1 cienka plastikowa tubka. użyłem długopisu
- 1 gruba, długa zapałka lub patyczek do lizaka. Powinien łatwo mieścić się i poruszać w plastikowej tubie
Krok 2: Sprzęt: pudełko, przełącznik i okablowanie
Zacząłem od starej skrzynki na baterie z nieistniejącej dekoracji świątecznej. Został zaprojektowany na trzy baterie AA. Ponieważ ESP8266 będzie ładnie działał na 3 V, mógłbym użyć dwóch baterii i użyć trzeciej pozycji dla mikrokontrolera. Zwróć uwagę, że pudełko miało małą dodatkową komorę, którą mogłem wykorzystać na przełącznik aktywacji. Użyłem bardzo popularnego typu przełącznika pokazanego na zdjęciach, ale usunąłem sprężynę, która zatrzaskuje go w pozycji włączonej lub wyłączonej. Przylutowałem dwa cienkie druciki do styków NC i wkleiłem je w pudełku malutką kroplą super kleju.
Następnie wywierciłem w górnej pokrywie otwór pasujący do plastikowej tuby wyjętej z długopisu. Otwór pokrywa się dokładnie z przełącznikiem i prowadzi tłok wykonany z grubej zapałki.
Na koniec przylutowałem jeszcze dwa przewody do styków akumulatora i poprowadziłem wszystkie cztery przewody do miejsca trzeciego akumulatora, w którym miał być mikrokontroler.
Krok 3: Sprzęt: ESP-01
Biorąc pod uwagę wymaganie WiFi, cały projekt krzyczy ESP8266. Ten mały kontroler WiFi stał się ulubionym koniem roboczym społeczności majsterkowiczów jako moduł, który można kupić za mniej niż 2,50 EUR i integruje pełny stos WiFi i TCP/IP, z wystarczającą pojemnością, aby móc uruchamiać własne programy. Arduino IDE (lub Atom z wtyczką PlatformIO) w pełni obsługuje ESP8266.
Zwykle brałbym ESP-12F, ale miałem małą płytkę ESP-01 leżącą dookoła, która była idealna do pracy i ładnie mieściła się w pojemniku na baterie. Jedynym problemem jest to, że flashowanie oprogramowania układowego w ESP-01 jest dość skomplikowane. Więcej o tym w następnym kroku. Jest jedna modyfikacja do wykonania: musisz usunąć czerwoną diodę LED zasilania z płyty, ponieważ stale pobiera ona 3mA. Po usunięciu diody LED moduł zużywa zaledwie kilkadziesiąt uA w trybie głębokiego uśpienia, co wystarczy na ponad rok na dwóch wysokiej jakości bateriach AA.
Okazało się, że mógłbym użyć dwóch pasków 4-pinowych złączy żeńskich i przylutować kilka dodatkowych elementów w dowolnej formie, aby móc wyjąć ESP-01 w celu aktualizacji oprogramowania, podczas gdy nadal mieściłby się w trzeciej komorze baterii.
Bardzo ważne jest prawidłowe okablowanie ESP. Korzystając z powyższej ściągawki, połącz ją w następujący sposób.
- Plus baterii do Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) i rezystora 47K.
- Minus akumulatora do GND (A1) i jeden przewód przełącznika.
- Drugi przewód przełącznika do kondensatora 100nF i rezystora 4M7.
- Otwarte końce obu rezystorów i kondensatora do RST (C2).
- TXD (A2) może pozostać niepodłączony.
Edycja: musiałem wymienić ESP-01, ponieważ popełniłem głupi błąd i go zniszczyłem. Okazało się, że ku mojemu zdziwieniu nowy ESP-01 nie resetował się z oryginalnym kondensatorem 100nF. Prawdopodobnie ma nieco inny wygląd. Wymieniłem go na 2,2 uF i teraz znowu działa
Po zakończeniu wszystko można zamontować w puszce, ale trzymaj się, najpierw musimy zaprogramować moduł.
Krok 4: Programowanie ESP-01
Aby sflashować oprogramowanie na ESP-01, możesz zbudować małą platformę lub kupić (prawie) kompletny programator za około 1 euro.
Programowanie sprzętu sprzętowego
Zbuduj mały zestaw z ponownie dwoma żeńskimi nagłówkami dla ESP-01. Potrzebny jest również moduł szeregowy USB, który może zapewnić napięcie 3,3 wolta. Zauważ, że układ ESP8266 nie jest utwardzony 5 woltami, więc błąd tutaj może zabić twój moduł. W każdym razie, ponownie korzystając ze ściągawki, podłącz swój zestaw w następujący sposób:
- 3,3V z modułu USBSerial do Vcc, CH_PD, RST i GPIO2.
- GND modułu USBSerial do GND i GPIO0.
- TXD modułu USBSerial do RXD.
- RDX modułu USBSerial do TXD.
Programista pre-kompilacji
Chociaż tworzenie własnych rzeczy jest zabawne, bardziej leniwym podejściem jest uzyskanie interfejsu ESP-01 do interfejsu szeregowego z ulubionej witryny aukcyjnej, patrz obrazek powyżej. Jest to znacznie prostsze, bardziej kompaktowe i bardziej niezawodne niż przypon. Jednak niektórzy z nich nie są programistami, tylko interfejsami szeregowymi. Musisz przylutować mostek druciany pomiędzy GND (pin A1) i GPIO0 (pin C1) z tyłu interfejsu, patrz drugie zdjęcie. Zwróć uwagę, że ESP-01 powinien być podłączony tak, aby antena była skierowana w stronę wtyczki USB, a nie odwrotnie!
Uwaga: istnieją również z przełącznikiem, patrz trzecie zdjęcie, bardzo ładne.
Załaduj oprogramowanie układowe
Zakładając, że Arduino IDE 1.8.3 lub nowsze, wybierz Narzędzia > Płytka i wybierz posiadaną płytkę. W przypadku ESP-01, takiego jak użyłem, wybierz „Generic ESP8266 Module” i ustaw następujące opcje (powinny to być wszystkie wartości domyślne):
- Tryb lampy błyskowej: DIO
- Częstotliwość błysku: 40 MHz
- Częstotliwość procesora: 80 MHz
- Rozmiar Flash: 512KB (64KB SPIFFS) Uwaga: jeśli używasz czarnej płyty ESP-01, wybierz 1MB (64KB SPIFFS)
- Port debugowania: wyłączony
- Poziom debugowania: Brak
- Metoda resetowania: ck
- Szybkość wysyłania 115200
- Port: wybierz port, który jest podłączony do interfejsu szeregowego USB. Na moim komputerze z Ubuntu, który był /dev/ttyUSB0
Podłącz platformę / programistę, załaduj szkic, który znajdziesz tutaj https://gitlab.com/jeroenmeijer/Mailbox.git. Podaj swoje dane uwierzytelniające brokera WiFi i MQTT oraz konfigurację IP w config.h i wybierz Prześlij.
Krok 5: Składanie wszystkiego
Wywierciłem otwór na plastikową rurkę w wewnętrznej pokrywie mojej skrzynki pocztowej, jak najbliżej zawiasu, a następnie przykleiłem pojemnik na baterie do spodu tej pokrywy. Następnie jako tłoka użyłem grubej zapałki. Przyciąłem zapałkę nożem na odpowiednią długość, aby przełącznik otworzył się, gdy zewnętrzna pokrywa była zamknięta. Sprawdziłem łączność, otwierając pokrywę podczas uruchamiania mosquitto_sub, aby monitorować wiadomości MQTT (zastąp mqttbroker, użytkownika i hasło swoją konfiguracją MQTT):
$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u użytkownik -P hasło
Około sześć sekund po otwarciu zewnętrznej pokrywy publikowany jest następujący komunikat MQTT. Czas służy do wybudzenia mikrokontrolera i nawiązania połączenia WiFi i brokera.
stat/mailbox/trigger {"vcc":3050, "flap":true, "prev":0, "RSSI":29, "version": "005"}
W tym czasie mikrokontroler pobierał około 70mA. Po zakończeniu przechodzi w głęboki sen i w moim przypadku zużył mniej niż 20uA. „flap” zawsze jest prawdziwe, „vcc” oznacza napięcie akumulatora w mV, a „prev” powinno wynosić 0. Jeśli jest 1 lub 2, oznacza to, że skrzynka nie mogła wcześniej wysłać wiadomości, ponieważ nie mogła się połączyć z WiFi lub dlatego, że nie mógł połączyć się z brokerem MQTT. „RSSI” to siła sygnału WiFi. Oba są bardzo przydatne do diagnozowania problemów.
Dobrym pomysłem jest monitorowanie napięcia baterii przez kilka dni, aby upewnić się, że urządzenie działa zgodnie z przeznaczeniem i z jakiegoś powodu nie rozładowuje baterii.
Oprogramowanie układowe może również aktualizować się bezprzewodowo (OTA), ale jest to nieco poza zakresem tej instrukcji. Dla zainteresowanych konfiguracja OTA jest również w config.h.
Krok 6: Używanie Node-RED do działania na wiadomości MQTT
W końcu stworzyłem prosty przepływ w Node-RED. Pierwszy węzeł subskrybuje temat skrzynki pocztowej (stat/postbox/trigger). Po otrzymaniu wiadomości drugi węzeł formatuje wiadomość e-mail *). Ostatni węzeł wysyła go na mój adres Gmail, używając Gmaila jako serwera SMTP. Mój telefon poinformuje mnie o nowej poczcie.
Dodałem przepływ Node-RED do fragmentu kodu gitlab, dzięki czemu można go zaimportować do przepływów Node-RED.
Oczywiście możesz dodać więcej węzłów, na przykład, aby rejestrować zdarzenia skrzynki pocztowej w MariaDb lub SqlLite, lub tworzyć dodatkowe alarmy, gdy napięcie baterii spadnie poniżej 2,7 wolta.
Miłego polowania na pocztę!
*) Zobacz następną stronę, teraz używam PushBullet zamiast e-maila.
Krok 7: Po przemyśleniach
Zawsze jest to uczucie, że rzeczy można było zrobić lepiej.
Przełącznik
Wolałbym użyć (super) magnesu i kontaktronu zamiast nieco niezgrabnego podejścia do tłoka. Były dwa powody. Jednym z nich jest to, że nie było możliwości, aby to zadziałało, gdy styk się zamknie, gdy skrzynka zostanie otwarta, a posiadanie go zawsze zamkniętego oznaczało, że zawsze będzie płynął mały prąd. Patrząc wstecz, mniej niż 1uA przepływający przez rezystor 4M7 nie byłby wielkim problemem pod względem żywotności baterii. Drugi był bardziej praktyczny. Wymyśliłem ten projekt w sobotę i napisałem oprogramowanie, zbudowałem to wszystko w niedzielę z tego, co leżało. Po prostu nie miałem kontaktronu w skrzynce na śmieci.
Uwaga: jak skomentował diy_bloke, styki kontaktronowe mają tendencję do sklejania się po namagnesowaniu przez długi czas, więc może tłok wcale nie był takim złym pomysłem. Zobaczymy. *)
Wiadomość o opróżnianiu
Skrzynka pocztowa wysyła również wiadomość podczas jej opróżniania. To nic wielkiego, ale gdy więcej osób w domu otrzyma ostrzeżenie, można skończyć w pętli sprawdzając skrzynkę pocztową, zaprzeczając jej całemu celowi! Można to obejść na kilka sposobów, na przykład sprawdzić, czy wewnętrzna pokrywa jest podniesiona, a jeśli tak, nie wysyłać wiadomości. Lub zamiast używać przełącznika na pokrywie, zainstaluj czujnik na dole skrzynki pocztowej. Lub mały przycisk resetowania, który należy nacisnąć podczas opróżniania. Wszystko to jednak skomplikuje sprawę i prawdopodobnie pogorszy niezawodność.
Wiadomości
Wysyłanie wiadomości e-mail jest dość skutecznym, ale prymitywnym sposobem na wysłanie ostrzeżenia. Bardziej eleganckim sposobem byłaby aplikacja na telefon, ale nie znalazłem aplikacji pulpitu nawigacyjnego Android MQTT, którą można skonfigurować tak, aby uruchamiała alert systemu operacyjnego po otrzymaniu określonej wiadomości. Jeśli jest w pobliżu, dodaj do komentarzy. **)
*) Po ponad roku pracy okazuje się, że użyty przeze mnie lollipop stick, w zasadzie twarda rolka papieru, ma tendencję do skracania się pod stałym naciskiem sprężyny włącznika. Po pewnym rozwiązywaniu problemów zastąpiłem go drewnianym kijem.
**) Używam teraz PushBullet do wiadomości push, niezależnie od pulpitu nawigacyjnego MQTT. Mały interfejs Node-RED low do API można znaleźć tutaj. Upewnij się, że podasz token dostępu w węźle „Przygotuj do pushbullet”, a swój adres e-mail do celów awaryjnych w węźle „Ponów”.
Zalecana:
Czujnik skrzynki pocztowej za pomocą Arduino: 4 kroki
Czujnik skrzynki pocztowej za pomocą Arduino: Cześć, mam nadzieję, że wszyscy dobrze sobie radzicie. Dzisiaj pokażę Wam jak zrobić skrzynkę pocztową z czujnikiem za pomocą płytki arduino i IDE. Ten projekt jest bardzo prosty i większość materiałów można znaleźć w większości domów. Wiedz, że Covid-19 uderzył, jesteśmy
Powiadomienie skrzynki pocztowej i drzwi garażowych: 5 kroków (ze zdjęciami)
Powiadomienie skrzynki pocztowej i drzwi garażowych: Ta instrukcja jest oparta na Powiadomieniu skrzynki pocztowej Johana Moberga. W stosunku do tego projektu dokonałem kilku zmian: daleko od mojego domu jest nie tylko skrzynka pocztowa, ale i garaż. Znajdują się w jednym miejscu blisko drogi, a dom znajduje się około 5
IOT123 - Montaż SKRZYNKI MIERNIKA MOCY: 6 kroków
IOT123 - MOC MIERNIK BOX Montaż: Jest to obudowa ATTINYPOWERMETER autorstwa moonnournation. Może on w sposób ciągły mierzyć napięcie (V), prąd (mA) i zakumulowane zużycie energii (mWh). A także narysuj prosty wykres, aby zwizualizować liczby. Ponieważ prosty przewodnik podłączania jest rozprys
Flaga powiadomień - świetne wprowadzenie do Wi-Fi, IFTTT i Huzzah ESP8266: 9 kroków (ze zdjęciami)
Flaga powiadomień - świetne wprowadzenie do Wi-Fi, IFTTT i Huzzah ESP8266: Zawsze brakuje mi ważnych rzeczy… więc stworzyłem flagę. Urządzenie Internetu Rzeczy (IoT) do powiadamiania lub przypominania mi o tych ważnych rzeczach! Teraz, rzucając okiem na moje biurko, mogę sprawdzić, czy… Mam e-mail, o którym wspomniano w t
Flaga Francji / Flaga Wolności: 6 kroków
Francuska flaga / Flaga wolności: Francuska flaga to pseudonim nadawany narzędziu aparatu służącemu do blokowania niechcianego światła padającego na obiektyw, co zwykle powoduje flarę obiektywu lub sprawia, że brud jest bardziej widoczny na obiektywie. Chciałem odtworzyć francuską flagę znalezioną na filmtools.com