Spisu treści:

Czujnik wycieku wody w ESP8266 + Micropython + Domoticz: 16 kroków (ze zdjęciami)
Czujnik wycieku wody w ESP8266 + Micropython + Domoticz: 16 kroków (ze zdjęciami)

Wideo: Czujnik wycieku wody w ESP8266 + Micropython + Domoticz: 16 kroków (ze zdjęciami)

Wideo: Czujnik wycieku wody w ESP8266 + Micropython + Domoticz: 16 kroków (ze zdjęciami)
Wideo: Prosty wskaźnik poziomu wody Pod Napięciem S5E06 2024, Lipiec
Anonim
Czujnik wycieku wody w ESP8266 + Micropython + Domoticz
Czujnik wycieku wody w ESP8266 + Micropython + Domoticz
Czujnik wycieku wody w ESP8266 + Micropython + Domoticz
Czujnik wycieku wody w ESP8266 + Micropython + Domoticz

Jakiś czas temu żona poprosiła mnie o wykonanie czujnika wycieku wody. Bała się, że wąż w kotłowni może być nieszczelny, a woda zaleje świeżo ułożoną drewnianą podłogę. A ja jako prawdziwy inżynier podjąłem się takiego czujnika do zrobienia.

Z mojego 15-letniego doświadczenia jako inżyniera medycznego wiem, że najłatwiejszym sposobem wykrywania wody są metalowe szpilki zwarte wodą. Zasada działania najprostszych czujników polega na tym, że woda musi zwierać dwa (lub więcej) metalowe bolce, a gdy to nastąpi, uruchamia się alarm.

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy

Do tego projektu potrzebujemy:

1. ESP8266-01 moduł

2. Moduł zasilacza regulatora liniowego HT7333 3.3V MS o niskim spadku napięcia

Potrzebujemy tego modułu, aby obniżyć napięcie z akumulatora do akceptowalnego poziomu dla ESP8266. Zgodnie z arkuszem danych powinno być wejście od 3V do 3,6V. Ten moduł daje nam 3,3V.

3. Bateria. Używam baterii litowo-jonowej 3,7 V 400 mAh. Właściwie możesz użyć dowolnego innego odpowiedniego źródła zasilania. Bateria 18650 to również dobry wybór. Wybierając baterię należy pamiętać, że ESP "zjada" około 200mA podczas łączenia się z siecią WiFi, a około 60mA jest używane, gdy płytka przesyła dane na serwer.

4. Płytka do ładowania baterii Lipo TP4056.

5. Pololu mini przycisk Power Switch Bardzo ciekawa malutka płytka. Pozwala nam przełączyć moduł ESP dopiero po wykryciu wody. Nie musisz trzymać ESP ON. Więc to jest dobre dla oszczędzania baterii.

6. Obudowa7. Podwójny mikroprzełącznik ON-OFF. Jedna linia służy do włączenia urządzenia. Druga linia służy do testowania - zwiera obwód bez wody, tylko po to, aby dać znać, czy urządzenie działa, czy nie.

8. Mikrokomputer Raspberry Pi

Używam Raspberry Pi Zero. Jest wystarczająco wydajny, aby uruchomić serwer Domoticz.

Krok 2: Oprogramowanie

Na twoim komputerze:

1. Zainstalowano esptool, do kasowania modułów i flashowania oprogramowania układowego

2. Zainstalowane Ampy, do flashowania twojego programu

3 Zalecany Python 3.6 lub nowszy

4. Dowolny edytor kodu, który chcesz. Najprostszy - Python IDLE, który jest zwykle instalowany z Pythonem. Używam Pycharm/Atom lub Anaconda Spyder On raspberry Pi

5. Serwer Domoticz zainstalowany na Raspberry Pi (lub zwykłym komputerze PC pod Windows lub Linux)

Krok 3: Przygotuj Raspberry Pi - Zainstaluj Domoticz

Więc weź swoje RPi i zainstaluj system operacyjny odpowiedni do uruchomienia serwera Domoticz.

Możesz postępować zgodnie z tymi instrukcjami.

Używam Raspbian Stretch z pulpitem stąd:

Następnym krokiem jest zainstalowanie serwera Domoticz na swoim komputerze. Możesz skorzystać z instrukcji tutaj lub tutaj:). Nie bój się, to nie jest takie trudne. Oczywiście musisz uruchomić w swoim terminalu:

curl -L install.domoticz.com | sudo bash

I tyle:) mniej więcej. Konfiguracja Domoticza

Teraz, gdy nasz serwer jest gotowy, możemy uzyskać do niego dostęp z dowolnej przeglądarki internetowej, w tym z tabletu, wpisując następujący adres URL:

Krok 4: Konfiguracja Domoticza

Konfiguracja Domoticza
Konfiguracja Domoticza

Teraz, gdy nasz serwer jest gotowy, możemy uzyskać do niego dostęp z dowolnej przeglądarki internetowej, w tym z tabletu, wpisując następujący adres URL:

Krok 5: Dostosuj ustawienia aplikacji

Dostosuj ustawienia aplikacji
Dostosuj ustawienia aplikacji
Dostosuj ustawienia aplikacji
Dostosuj ustawienia aplikacji

Istnieją różne ustawienia aplikacji, które można ustawić za pomocą opcji Konfiguracja | Menu ustawień.

Menu Ustawienia z różnymi zakładkami umożliwia wprowadzenie parametrów osobistych niezbędnych do lepszego funkcjonowania systemu. Po wprowadzeniu danych w pola należy je zapisać naciskając czerwony przycisk „Zastosuj ustawienia”. Po tej akcji wszystkie pola Hasła, które były puste przy pierwszym dostępie, pojawią się z długim ciągiem gwiazdek, nawet jeśli nie zostały one użyte.

Po dokonaniu głównej konfiguracji na stronie "System", kliknij "Powiadomienia". Tutaj musimy dostosować, jakiego rodzaju powiadomień będziemy używać.

Krok 6: Ustawienia powiadomień

Powiadomienia o konfiguracji
Powiadomienia o konfiguracji

Powiadomienia mogą być wysyłane na przykład po naciśnięciu przełącznika, zbyt wysokim zużyciu energii elektrycznej, zbyt wysokiej temperaturze i wielu innych opcjach.

W naszym przypadku powiadomienia muszą być wysyłane, gdy tylko czujnik wykryje wodę. Więc po prostu włącz te, których chcesz użyć. Również normalnie potrzebujesz klucza API, aby powiadomienie działało. Wybiegając trochę do przodu powiem, że próbowałem Pushover, Pushsafe i Pushbullet. I zostałem z Pushoverem. Później powiem dlaczego.

Kilka słów o tym, jak działają powiadomienia. Musisz mieć konto na Pushbullet, Pushover lub innych stronach, z których chcesz korzystać. Będziesz także potrzebować aplikacji na telefon komórkowy lub komputer.

Uzyskaj klucz API i wstaw go na powyższej stronie. Możesz przetestować powiadomienie, klikając "Testuj". Jeśli klucz API jest poprawny, powinieneś otrzymać testowe powiadomienie na swój telefon komórkowy.

Gdy tylko czujnik wykryje wodę, ESP włącza się i wysyła żądanie do serwera Domoticz w formacie JSON. Wtedy, jeśli warunki uruchomienia zdarzenia (wysłanie powiadomienia na Twój telefon komórkowy) są spełnione, Domoticz wyśle powiadomienie.

Później wrócę do "wydarzeń".

Krok 7: Skonfiguruj komunikację z urządzeniami sprzętowymi

Konfiguracja komunikacji z urządzeniami sprzętowymi
Konfiguracja komunikacji z urządzeniami sprzętowymi
Konfiguracja komunikacji z urządzeniami sprzętowymi
Konfiguracja komunikacji z urządzeniami sprzętowymi
Konfiguracja komunikacji z urządzeniami sprzętowymi
Konfiguracja komunikacji z urządzeniami sprzętowymi

Zanim będziesz mógł używać aplikacji Domoticz do sterowania urządzeniami lub odczytywania czujników, musisz skonfigurować komunikację z urządzeniami sprzętowymi. Wybierz Setup|Hardware, aby dodać sprzęt. Urządzenia nie będą wyświetlane, dopóki nie zostanie dodany odpowiedni sprzęt.

Aplikacja Domoticz obsługuje natywnie wiele urządzeń sprzętowych. W naszym przypadku aby odczytać nasz czujnik zalania musimy dodać z listy sprzęt tzw. „atrapa”.

Po dodaniu sprzętu zostanie wyświetlony przegląd wszystkich zdefiniowanych urządzeń. Sprzęt można wyłączyć lub usunąć.

Nowy sprzęt powinien znajdować się na liście i powinien znajdować się przycisk „Utwórz wirtualne czujniki”.

Kliknij ten przycisk i wybierz Typ czujnika „Alert”. Teraz musimy dodać urządzenie w Domoticz, aby stało się aktywne.

Krok 8: Dodaj urządzenie w Domoticz, aby stać się aktywne

Dodaj urządzenie w Domoticz, aby stać się aktywnym
Dodaj urządzenie w Domoticz, aby stać się aktywnym
Dodaj urządzenie w Domoticz, aby stać się aktywnym
Dodaj urządzenie w Domoticz, aby stać się aktywnym
Dodaj urządzenie w Domoticz, aby stać się aktywnym
Dodaj urządzenie w Domoticz, aby stać się aktywnym

Proszę zwrócić uwagę na numer poniżej „IDX”. Jest to unikalne odniesienie do tego urządzenia i potrzebujemy go później w naszym skrypcie Pythona do adresowania powiadomień. W tym przypadku numer IDX to 1.

Włącz urządzenie klikając zieloną strzałkę po lewej stronie (na moim obrazku poniżej jest niebieska, ze względu na włączone urządzenie).

Wpisz nazwę urządzenia i kliknij "dodaj".

Przejdź do menu „Narzędzia”, a Twoje urządzenie powinno być tam wymienione.

Teraz musimy zaprogramować "zdarzenie" dla naszego czujnika. Oznacza to, że musimy powiedzieć serwerowi, co zrobić w przypadku, gdy otrzyma wiadomość z czujnika. A to było dla mnie najtrudniejsze miejsce:).

Krok 9: To nie działa w ten sposób…

To nie działa w ten sposób…
To nie działa w ten sposób…

Zacząłem od próby zaprogramowania zdarzenia na stronie /device/. To poniżej nie jest moje, ale można to zilustrować.

Jeśli uważasz, że zaznaczysz jakieś pola wyboru i zadziała, to się mylisz:) To nie działa w ten sposób. Przypuszczam, że ta funkcja nie jest jeszcze zakończona. Nie zapomnij - to oprogramowanie open source. Ok, po kilku godzinach znalazłem rozwiązanie. Musimy użyć opcji „Zdarzenia” z menu rozwijanego „Konfiguracja”.

Po kliknięciu "Wydarzenia" możesz stworzyć własne wydarzenie. Możesz to zrobić kupując kod w Pythonie lub LUA, lub po prostu używając czegoś o nazwie "Blockly". Zdecydowałem się użyć Blockly. Istnieją dwa sposoby na zmuszenie serwera do zrobienia tego, co chcesz.

Krok 10: Zbuduj wydarzenie we właściwy sposób 1

Zbuduj wydarzenie we właściwy sposób 1
Zbuduj wydarzenie we właściwy sposób 1

1. Uruchom plik zewnętrzny przez „Zdarzenia”, używając komunikatu Blockly „Skrypt startowy”

To działa dla mnie doskonale na komputerze z systemem Windows. Ale nie udało mi się tego na Raspbianie na moim Raspberry Pi. Podejrzewam, że jest problem z uprawnieniami.

Krok 11: Zbuduj wydarzenie we właściwy sposób 2

Zbuduj wydarzenie we właściwy sposób 2
Zbuduj wydarzenie we właściwy sposób 2

2. Użyj wiadomości „Wyślij powiadomienie z tematem”. Działa na Raspbianie. Ta opcja obsługuje wysyłanie powiadomień do Pushsafe i Pushover.

Zaletą korzystania z 1st way jest to, że jest bardziej elastyczny. Możesz wybrać ikonę, która ma być wyświetlana na ekranie, dźwięki i tak dalej. Moje "wydarzenie" pokazane jest na powyższym obrazku.

Następnie zaprogramujmy moduł ESP.

Krok 12: Programowanie modułu ESP8266-01

Programowanie modułu ESP8266-01
Programowanie modułu ESP8266-01

Zacznijmy od flashowania naszego modułu ESP8266. Standardowo te moduły są dostarczane z fabrycznym oprogramowaniem. możliwa jest komunikacja z modułami przy pomocy tzw. komend AT. A także to oprogramowanie nie pozwala na używanie modułów takich jak samodzielne kontrolery. Aby używać ich jako samodzielnych kontrolerów, musimy skasować fabryczne oprogramowanie układowe i zainstalować nowe.

W tym celu użyjemy esptool. Następnie musimy podłączyć nasz moduł do komputera, aby skasować oprogramowanie. Do tego potrzebny jest konwerter TTL + kilka dodatkowych komponentów. Ale jest prostszy sposób:). Po prostu kup na aliexpress lub ebay moduł adaptera USB do ESP8266 ESP-01 Wi-Fi ze sterownikiem CH340G.

Podłącz moduł ESP8266 do konwertera TTL jak pokazano na rysunku i podłącz go do portu USB.

Jeśli masz taki sam konwerter jak ja, to sam musisz zmienić przełącznik na pozycję "Prog". Znajdź, gdzie jest zainstalowane esptool (zwykle gdzieś C:\Program Files (x86)\Python36-32\Scripts. Przejdź do tego folderu, uruchom tam wiersz polecenia. Wpisz: python esptool.exe --port COM5 erase_flash

Oczywiście wybierz odpowiedni port. W moim przypadku jest to COM5. Port, na którym zainstalowano ESP, można sprawdzić w Panelu sterowania - System - Menedżer urządzeń.

Zainstaluj oprogramowanie (wziąłem je stąd: https://micropython.org/download#esp8266) wpisując:

python esptool.exe --port COM5 --baud 460800 write_flash --flash_size=wykryj 0 C:\path_to_firmware\esp8266-20180511-v1.9.4.bin

Ok, teraz jesteśmy gotowi do wgrania skryptów micropython do ESP8266.

Używam do tego Adafruit MicroPython Tool (ampy).

Ale obecnie istnieje inna opcja o nazwie Esplorer. Jest to aplikacja z interfejsem użytkownika, umożliwiająca przesyłanie plików do modułów ESP.

Tutaj znajdziesz instrukcje jak zainstalować ampy. Ustaw przełącznik konwertera TTL w pozycji „UART”. Będziemy musieli przesłać pliki:

  • wifimgr.py - menedżer Wi-Fi do łączenia się z siecią Wi-Fi
  • main.py - nasz główny skrypt

W wierszu poleceń wpisz: ampy --port COM5 wpisz C:\ścieżkę do swojego pliku

Wciśnij Enter . Po kilku sekundach powinieneś zobaczyć pustą linię poleceń. Oznacza to, że plik został przesłany. Listę plików na ESP można sprawdzić poleceniem ampy:

ampy --port COM5 ls

Z mojego doświadczenia wynika, że po wgraniu wszystkich niezbędnych plików lepiej jest wgrać main.py. jest tak, ponieważ jak tylko wgrasz main.py - moduł ESP8266 zrestartuje się i zacznie wykonywać plik main.py. Więc w tym przypadku, jeśli spróbujesz przesłać inny plik, czasami proces przesyłania zakończy się niepowodzeniem. Ale to nie znaczy, że wszystko stracone:), po prostu spróbuj drugi raz, a odniesiesz sukces (znowu, z mojego doświadczenia).

Wszystkie pliki dla tego projektu są dostępne tutaj:

Krok 13: Połącz się z siecią Wi-Fi. Dostać zawiadomienie

Połącz się ze swoją siecią Wi-Fi. Dostać zawiadomienie
Połącz się ze swoją siecią Wi-Fi. Dostać zawiadomienie
Połącz się ze swoją siecią Wi-Fi. Dostać zawiadomienie
Połącz się ze swoją siecią Wi-Fi. Dostać zawiadomienie

jeśli wszystko jest w porządku, zrestartuj moduł, ponownie wkładając konwerter TTL do portu USB komputera.

Po uruchomieniu ESP znajdź nową sieć WiFi o nazwie „Wifimanager”. Połącz się z nim za pomocą komputera lub telefonu, a następnie przejdź do adresu IP 192.168.4.1. Tutaj możesz podłączyć ESP do lokalnej sieci WiFi. Wybierz sieć WiFi, z której będziesz korzystać, wpisz hasło, naciśnij „Prześlij”.

Jeśli wszystko jest w porządku, pojawi się komunikat „ESP pomyślnie połączony z siecią XXXX”. Twój ESP jest teraz podłączony do sieci Wi-Fi i gotowy. Jak tylko połączy się z Wi-Fi, połączy się z serwerem Domoticz. Shorty musisz otrzymać powiadomienie na swój telefon komórkowy.

Możesz śledzić proces w "Ustawienia"/"Dziennik".

Vua lia!:) To działa. Teraz możemy przystąpić do składania wszystkich części razem, zgodnie z poniższym schematem blokowym.

Krok 14: Schemat blokowy

Schemat blokowy
Schemat blokowy

Nie ma zbyt wiele do powiedzenia na temat tego schematu. Bardzo prosta. Włącz zasilanie przełącznikiem S1. Urządzenie pozostaje w stanie wyłączonym, dopóki woda nie zwiera pinów „Water sensor”. Następnie włącza się "płytka Pololu" i podaje zasilanie do konwertera napięcia. Ten moduł zasilania oparty na układzie HT7333 konwertuje napięcie na stabilne 3.3V dla ESP8266. Następnie włącza się ESP i wysyła wiadomość do serwera Domoticz.

Krok 15: Wynik i wnioski

Wynik i wnioski
Wynik i wnioski
Wynik i wnioski
Wynik i wnioski
Wynik i wnioski
Wynik i wnioski
Wynik i wnioski
Wynik i wnioski

To działa. Wysłanie powiadomienia zajęło do 10 sekund: połączenie z Wi-Fi, wysłanie powiadomienia, otrzymanie wiadomości alarmowej na telefon.

Zaprogramowałem czujnik tak, aby wysyłał alarmy co 30s, jeśli zostanie wykryta woda. Czujnik może wysyłać do 5 – 6 powiadomień do momentu rozładowania baterii. Takie urządzenie można wykorzystać również do określenia poziomu wody. Co chciałbym poprawić.

1. Aby działało szybciej. Myślę, że spróbuję wykorzystać technologię ESP-Now, która pozwala na bezpośrednie podłączenie kilku ESP. W tym przypadku pobór mocy podczas połączenia jest bardzo niski i jest szybszy. Pomysł polega więc na użyciu jednego ESP jako koncentratora do łączenia innych ESP.

2. Wdróż alarm poziomu baterii. Teraz nie możesz wiedzieć, czy jest wystarczająca moc, aby wysłać wiadomość alarmową, czy nie. Myślę, że w następnej generacji tego czujnika pojawi się specjalny przycisk do testowania naładowania akumulatora.

Użytkownik będzie musiał nacisnąć przycisk, a zostanie wyświetlony poziom naładowania baterii.

Zalecana: