niedziela, 31 lipca 2016

Bezprzewodowy miernik wilgotności gleby z odczytem w telefonie - cz.2

Watchdog dla ESP8266

 

Czujnik wilgotności testuje się w warunkach polowych. Nie dając wiary w szczelność chińskiej lampki uzupełniłem ją o własny pokrowiec bryzgoszczelny. IP64 jak mniemam.


Godzinowy wykres z okresu tygodnia zarejestrowany przez History Graph przedstawia się następująco

Opadające gwałtownie zbocza wykresu to moment podlewania. To w zasadzie wykres oporności gruntu a nie jego wilgotności stąd podlanie powoduje spadek mierzonego sondą napięcia.


Wadą ESP jest posiadanie tylko jednego portu ADC. Nie można w tym samym czasie mierzyć napięcia zewnętrznego i napięcia zasilania układu. To spory problem przy zasilaniu akumulatorowym, kiedy nie można określić czasu koniecznego doładowania. Postanowiłem testować układ do momentu zaprzestania transmisji. Zastosowany tani akumulatorek 14500 nie ma żadnych wewnętrznych zabezpieczeń. Tym samym mam dużą szansę, że będzie to jego jednorazowe zadanie lub w sposób istotny utraci on swoje parametry. Trzeba poszukać prostych możliwości pomiaru większej ilości napięć za pomocą jednego wejścia ADC modułu ESP.

Tworząc program dla czujnika wilgotności udało się przetestować kilka nowych zagadnień z funkcjonalności ESP i BLYNKa.



1. Zastąpienie  BLYNK_READ(V11) procedurą transmitBLYNK() okresowo wysyłającą dane do serwera BLYNK komendą Blynk.virtualWrite(V12, str);. Jest to mało eleganckie w stosunku do poprzedniego automatycznego pobierania danych przez aplikację ale inaczej dane potrzebne w History Graph nie są zapisywane na serwerze w czasie gdy aplikacja w telefonie nie jest aktywna.

2. Wysyłanie powiadomień o zdarzeniach na telefon.
To bardzo wdzięczna funkcja odciążająca od bieżącego śledzenia co dzieje się w aplikacji. Szkoda tylko, że mocno ograniczona do 1 powiadomienia /minutę. Ale i tak ładnie się to prezentuje na ekranie telefonu







3. Po wielokroć gruntownym przestudiowaniu forum BLYNKa udało mi się trafić na propozycję kodu nie wstrzymującego wykonywania programu przy braku połączenia z siecią lub braku połączenia z BLYNK tu>>>>>>>>> 

Zmodyfikowałem nieco te procedury i w efekcie zrobiłem sobie procedurę WifiBlynk() pozwalającą na przejście procedur nawiązywania połączenia z siecią i z serwerem BLYNK w przypadku braku jednego lub drugiego połączenia. Procedurę uzupełnia fragment w pętli głównej - linie 203-217 - pozwalające na dopisanie procedur działania programu w przypadku braku połączenia. Procedury działają rewelacyjnie. Bardzo szybko logują do sieci i BLYNK a przypadku braku połączenia przekazują sterowanie programem do pętli głównej. Przy powrocie połączenia komunikacja podnosi się prawie natychmiast. Zastosuję to w dotychczasowych projektach szczególnie w projekcie POMPA, który może a nawet powinien działać autonomicznie nawet przy braku komunikacji z siecią.

4. Watchdog dla ESP. to chyba najważniejszy z nowych elementów programowych. Zaproponowany tutaj>>>>> kod programowego wd ESP działa bez problemu. Nie jestem w stanie wyjaśnić potrzeby użycia poszczególnych komend w programie przepisałem je więc CTR+C CTR+V i zadziałało od razu. Najważniejsze, że jak do tej pory nie ma żadnych konfliktów w zasobach biblioteki  <Ticker.h> z  biblioteką BLYNK. Z opisu wynika że ten watchdog działa na trzech poziomach:  sprzętowym wd, programowym wd SDK i w programowej pętli programu i pokrywa większość teoretycznych możliwości zawieszenia się procesora i programu.

5. Procedura uśpienia ESP, o której już pisałem
Komendą   ESP.deepSleep(y * x * 1000 * 1000); uruchamiamy uśpienie procesora na y*x sekund.
Należy tylko pamiętać o zwarciu RST z GPIO16 (a więc do zastosowania w ESP-07 i 12) i o ewentualnym wyłączeniu na stałe LED modułu ESP sygnalizującego podanie zasilania (zwiększa pobór prądu w stanie deepsleep o około 0,6mA) . U mnie został on  brutalnie przewiercony

uffff....................cdn 

Brak komentarzy:

Publikowanie komentarza