Elektroda.pl
Elektroda.pl
X
Servizza
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Pogodełko - pudełko do monitorowania pogody

lagrange 14 Sty 2017 22:40 7902 24
  • Pogodełko - pudełko do monitorowania pogody

    Witam wszystkich!

    Dzisiaj chciałbym zaprezentować pomysł na znany problem - w miarę bezobsługowe, przenośne, działające jak najdłużej na bateriach i minimalizujące liczbę urządzeń rozwiązanie do monitorowania warunków otoczenia. Często podróżuję, więc chciałem zbudować urządzenie, które pomoże mi śledzić np. temperaturę w mieszkaniu podczas mojej nieobecności, porównywać warunki w moim obecnym miejscu zamieszkania z warunkami w rodzinnej miejscowości, sprawdzić najwyższą temperaturę w lipcu zeszłego roku, porównać zależność temperatury i poziomu światła itp.

    Założenia:
    - projekt ma być przenośny
    - projekt ma działać jak najdłużej na baterii
    - wygląd zewnętrzny projektu powinien być jak najprostszy (pudełko które stoi i nie zwraca na siebie uwagi) oraz taki, żeby można go przechowywać zarówno w domu, jak i na zewnątrz
    - projekt powinien działać na wifi (nie chciałem architektury nadajnik - odbiornik - za dużo urządzeń)
    - pomiar temperatury, wilgotności (te dwie wartości w miarę dokładnie) oraz ciśnienia i orientacyjnego poziomu światła
    - przechowywanie we własnej "chmurze" - poza kwestiami prywatności, chciałem mieć dużą elastyczność po stronie serwera, a więc np. możliwość wprowadzania modyfikacji na poziomie bazy danych, zdalnego konfigurowania urządzenia oraz zdalnej aktualizacji firmware

    Wykonanie:
    Pogodełko - pudełko do monitorowania pogody

    Ze względu na uwarunkowania estetyczno-użytkowe zdecydowałem się na drewno. Na obudowie wykonałem lutownicą prosty napis Pogodelco.

    Pogodełko - pudełko do monitorowania pogody

    Obudowa to zwykłe drewniane pudełko, na którym widać 2 otwory: jeden do pomiaru światła, a w drugim znajduje się dioda LED. Historia z otworami jest dosyć ciekawa, bo nie było łatwo znaleźć przeźroczyste koła do ich zamaskowania, o średnicy 1cm, a zamówienie takich z pleksi z różnych powodów nie wchodziło w grę. Zdecydowałem się więc na szkiełka nakrywkowe ze sklepu z zaopatrzeniem medycznym. Okazały się one jednak tak cienkie, że ostatecznie musiałem sklejać po 5, żeby nie kruszyły się przy najmniejszym dotknięciu. Dla wyobrażenia podam, że takich szkiełek zmieściło się 100szt w pudełku o wymiarach ok. 5x5x1.5cm. Nie polecam wysypywać ich na podłogę (zaufajcie mi).





    Po otwarciu klapki pokazuje nam się sklejka, na której znajduje się pojemnik na 4 baterie AA oraz dwa przyciski (do czego służą napiszę w dalszej części). Widać też tasiemkę, która służy mi do otwierania sklejki w celach "serwisowania" urządzeń (zrobiłem ich 10). Użytkownik nie ma potrzeby zaglądać do środka.

    Pogodełko - pudełko do monitorowania pogody

    Po podważeniu tasiemki widać płytkę drukowaną oraz połączenia do przycisków, zasilania oraz czujnika światła i diody.

    Co do projektu płytki.
    Pogodełko - pudełko do monitorowania pogody
    Sercem układu jest dobrze znany moduł ESP8266 w wersji 12E. Dlaczego taka wersja? Posiada wyprowadzenia większej liczby pinów i wystarczająco dużo pamięci, żeby obsłużyć FOTA (Firmware Over The Air), czyli zdalną aktualizację firmware'u. Moduł służy jako nadajnik/odbiornik łączący się przez sieć wifi, jak również kontroler dla całego układu.

    Urządzenie wykorzystuje następujące czujniki:
    - HTU21D - dobra dokładność i odporność na napięcia lekko niższe niż 3,3V (w przeciwieństwie do DHT22). Wykorzystuję go również do pomiaru temperatury
    - BMP180 - dobrze znany czujnik ciśnienia o przyzwoitej dokładności
    - fotorezystor - pomiar poziomu światła
    - pomiar napięcia baterii

    Ze względu na ograniczone możliwości przetwornika analogowo-cyfrowego ESP8266, zastosowałem też kostkę PCF8591.

    Dodatkowo mamy też kostkę przełącznika CD4066. Służy ona oszczędzaniu energii poprzez włączanie 2 obwodów tylko na czas pomiarów: z fotorezystora do przetwornika A/C oraz z baterii do przetwornika (przez dzielnik napięcia).

    Do płytki dodanych jest kilka redundantnych wyjść, np. do przełącznika trybu flashowania oprogramowania (początkowo używałem, później już nie) oraz do DSB18B20, jako alternatywy dla pomiarów temperatury przy pomocy HTU (nie było takiej potrzeby).

    Całość po testowym wytrawieniu została wykonana w 10 egzemplarzach na płytce zamówionej w jednym z popularnych serwisów z Chin. Technologia głównie przewlekana, dla łatwiejszego lutowania.

    Poniżej kilka płytek oraz jedna płytka zlutowana w prototypowej obudowie z plastyku
    Pogodełko - pudełko do monitorowania pogody Pogodełko - pudełko do monitorowania pogody

    Sposób działania:
    Sposób działania jest prosty. Po włożeniu baterii urządzenie sprawdza czy ma w pamięci zapisane dane sieci wifi. Jeśli nie, propaguje własną sieć i stawia mały serwer WWW, przez który można skonfigurować połączenie sieciowe.

    Po skonfigurowaniu, lub jeśli w pamięci znajdują się już dane sieci, urządzenie wykonuje pomiary, łączy się z siecią wifi, wysyła dane przy pomocy zapytania post i jako informację zwrotną otrzymuje swoje dane konfiguracyjne. Porównuje te dane z konfiguracją zapisaną w pamięci EEPROM i aktualizuje je, jeśli to konieczne. Ten warunek został wprowadzony w celu zminimalizowania liczby operacji zapisu. Jeśli w danych konfiguracyjnych znajduje się informacja o nowej wersji oprogramowania, urządzenie przeprowadza procedurę aktualizacji firmware'u, upewniając się wcześniej, że poziom baterii jest wyższy od zadanej wartości krytycznej. Następnie urządzenie przełącza się w tryb uśpienia na skonfigurowany okres. Do danych konfiguracyjnych należą: informacja, czy należy stosować stałe IP, częstotliwość pomiarów, wersja najnowszego firmware dostępna na serwerze oraz informacja, czy używać diody (jeśli ktoś trzyma urządzenie np. przy łóżku, może sobie nie życzyć migania).

    Mignięcie diody LED sygnalizuje włączenie i wyłączenie urządzenia. Jeśli propagowana jest sieć wifi w celu pobrania konfiguracji sieci, urządzenie miga diodą LED z dużą częstotliwością. W przypadku wystąpienia błędu połączenia, urządzenie sygnalizuje to szybkimi seriami. Częstotliwości migania diodą zostały tak dobrane, żeby łatwo można rozróżnić te trzy podstawowe informacje przekazywane użytkownikowi.

    Na urządzeniu znajdują się 2 przyciski służące do:
    - wykonania natychmiastowego pomiaru (oraz ewentualnie pobrania zaktualizowanej konfiguracji) - np. jeśli ustawiliśmy interwał pomiaru na 1 dzień, ale go zmieniliśmy i chcemy, żeby urządzenie pobrało nową konfigurację wcześniej
    - drugi przycisk służy do zresetowania danych konfiguracyjnych - przydaje się to, jeśli np. zmieniliśmy dane dostępowe wifi na routerze, lub przenieśliśmy urządzenie do innej lokalizacji

    Wspomnę jeszcze jakiego rodzaju dane przesyłane są do serwera:
    - temperatura
    - wilgotność
    - ciśnienie
    - poziom światła
    - ID urządzenia
    - wersja zainstalowanego firmware'u
    - napięcie na bateriach
    - czas od wybudzenia (w celach diagnostycznych)
    - napięcie zasilania modułu wifi (w celach diagnostycznych)
    - wolna pamięć (w celach diagnostycznych)

    Pobór mocy i bateria
    Biorąc pod uwagę fakt, że pogodelco działa w oparciu o sieć www, dość istotnym było zarządzanie poborem mocy. To znaczy jego minimalizacja, jak również to, żeby zasilanie radziło sobie z dużymi skokami mocy podczas transmisji.

    Pobór mocy został zminimalizowany poprzez:
    - możliwość zastosowania stałego IP, co minimalizuje czas łączenia się z siecią
    - włączanie obwodów fotorezystora i pomiaru stanu baterii tylko na czas pomiarów
    - zastosowanie trybu uśpienia

    Sporej wielkości kondensator pozwala sobie poradzić ze skokami zapotrzebowania na zasilanie. A są one spore, co obrazuje poniższy wykres (pomiar wykonany przy pomocy INA19 i Arduino, wykres przy pomocy SerialChart):
    Pogodełko - pudełko do monitorowania pogody Pogodełko - pudełko do monitorowania pogody

    Na obrazkach widać dobrze różnicę pomiędzy statycznym i dynamicznym IP. Skoki poboru mocy generowane są przez kalibrację anteny, łączenie oraz transmisję danych. Co ciekawe, wbudowane tryby wybudzania ESP8266 nie dały zauważalnej różnicy w poborze prądu.

    Pobór prądu kształtuje się następująco:
    - w trybie uśpienia pobór wynosi ok. 0,1mA (wahania w zakresie 0,09 - 0,12)
    - w trybie pracy, na jeden cykl, pobór wynosi około 0,045mAh

    Przy zastosowaniu 4 standardowych paluszków, daje to:

    InterwałCzas działania na komplecie baterii
    5 minut6 miesięcy
    1 godzina1 rok 7 miesięcy


    Wpływ na żywotność baterii mają oczywiście również same baterie, temperatura otoczenia czy router (prędkość uzyskania połączenia z wifi).

    Poniżej przykładowy zrzut ekranu pokazujący cykl życia baterii, na podstawie przesyłanych przez pogodelco danych:
    Pogodełko - pudełko do monitorowania pogody

    Platforma WWW
    Jak już wspomniałem, zależało mi na sporej elastyczności, więc postawiłem swój własny serwer, domenę oraz silnik oparty na Joomli, PHP, mySQL, AJAXie, JS oraz Google Charts. Ten element pochłonął przynajmniej 50% całego projektu, ale efekt spełnił moje zamierzenia.

    Nie będę się rozpisywał na temat szczegółów, wspomnę tylko o podstawowych ekranach.
    Tak prezentuje się strona główna. Serwis posiada funkcjonalność logowania. Logowanie jest potrzebne do ochrony prywatności, jak również tego, żeby różni użytkownicy mieli dostęp do różnych (własnych lub udostępnionych im) urządzeń, jak również mogli nadawać im swoje własne nazwy (jedno urządzenie może mieć kilka nazw - np. dom "dla" jednego użytkownika, dla drugiego może się nazywać "w Poznaniu").
    Pogodełko - pudełko do monitorowania pogody

    Po zalogowaniu widzimy kokpit z podstawowymi danymi naszych urządzeń.
    Pogodełko - pudełko do monitorowania pogody

    Następnie widzimy ekran wykresów. W celu spełnienia założeń, projekt posiada dość zaawansowane opcje analityki oparte na języku SQL. Maksymalnie w jednym widoku można zobaczyć 2 wykresy jeden na drugim - w celu porównania. Można porównywać dane 2 różnych urządzeń (np. temperatura w środku i na zewnątrz), 2 różne pomiary (np. temperatura a poziom baterii) oraz różne kalkulacje (np. temperatura minimalna i maksymalna). Oprócz tego można też wyliczać wartości średnie, minimalne, maksymalne, amplitudy i odchylenia standardowe dla danych okresów (np. łatwo zidentyfikować skoki ciśnienia).
    Pogodełko - pudełko do monitorowania pogody

    Użytkownik może też definiować swoje ulubione widoki wykresów, w celu wybrania ich z listy. Wystarczy, że kliknie opcję zapisania wyświetlanej konfiguracji wykresu jako ulubionego widoku. Widokami można zarządzać na dedykowanej karcie - zmieniać im nazwy, parametry, usuwać itp.
    Pogodełko - pudełko do monitorowania pogody

    Ostatni ekran służy do konfigurowania, diagnostyki i dodawania urządzeń.
    Pogodełko - pudełko do monitorowania pogody

    Oprócz tego w serwisie znajdują się karty zarządzania profilem, instrukcji obsługi oraz wylogowania.

    Dodam jeszcze, że co godzinę serwer wykonuje zadanie CRON polegające na porównaniu czasu ostatniego otrzymania danych z urządzenia ze skonfigurowanym interwałem. W przypadku spóźnienia, wysyłany jest email z informacją do użytkownika. Służy to np. poinformowaniu o wyczerpanej baterii.
    Pogodełko - pudełko do monitorowania pogody

    Podsumowanie i wnioski
    Ogólnie wykonałem 10 egzemplarzy urządzenia, z których niektóre zostały podarowane rodzinie i znajomym. Projekt funkcjonuje już równy rok. Był on dla mnie okazją do zdobycia sporej ilości wiedzy. Wiele rzeczy robiłem po raz pierwszy i niektóre zrobiłbym teraz inaczej (więc proszę o wyrozumiałość).

    Główne wnioski i możliwości udoskonalenia, w losowej kolejności:
    - w celu dokładnego pomiaru wilgotności konieczne jest zapewnienie bardzo dobrej wentylacji obudowy (nawiercenie 8 otworów okazało się niewystarczające)
    - czujniki wilgotności DHT można wyrzucić do kosza. DHT11 nie nadaje się do niczego, DHT22 jest bardzo wrażliwy na wahania napięcia
    - "tasiemka serwisowa" niestety wzbudzała dużą ciekawość użytkowników, którzy wyrywali wlutowane w płytkę przewody. Musiałem zastosować pewne zabiegi typu fail-proofing w postaci zastosowania konektorów i schowania tasiemki.
    - biorąc pod uwagę dość niski pobór energii, w przyszłości można się pokusić o zasilanie z energii słonecznej

    To tyle na ten moment. Wszelkie uwagi/ sugestie czy pytania mile widziane. Jeśli ktoś boryka się z problemami powiązanymi tematycznie z opisanym projektem, w miarę możliwości pomogę. Nie udostępniam natomiast w całości kodów źródłowych (myślę, że większość użytkowników elektrody sama napisałaby je lepiej).

    Pozdrawiam!


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Servizza
  • #2 15 Sty 2017 12:01
    dan50
    Poziom 11  

    lagrange napisał:
    Pobór prądu kształtuje się następująco:
    - 0.012mA podczas uśpienia
    - 0.045mA (średnio) podczas pracy


    Bardzo niskie wartości poboru prądu podałeś. Nie ma tu czasem pomyłki z przedrostkami?
    Dla modułu wi-fi przy uśpienie pobór wynosi 10uA, a Ty tu podajesz że całe urządzenie pobiera 45uA dla pracy.
    Jeżeli są poprawne, to jak to osiągnąłeś, bo też wykonuję coś na wzór stacji meteo i u mnie średni pobór prądu podczas pracy wynosi około 20mA, a w trybie uśpienie około 3mA.

    Bardzo ciekawe rozwiązanie, gratuluje wykonania.

  • #3 15 Sty 2017 13:53
    george2002

    Poziom 20  

    dan50 napisał:
    lagrange napisał:
    Pobór prądu kształtuje się następująco:
    - 0.012mA podczas uśpienia
    - 0.045mA (średnio) podczas pracy


    Bardzo niskie wartości poboru prądu podałeś. Nie ma tu czasem pomyłki z przedrostkami?
    Dla modułu wi-fi przy uśpienie pobór wynosi 10uA, a Ty tu podajesz że całe urządzenie pobiera 45uA dla pracy.
    Jeżeli są poprawne, to jak to osiągnąłeś, bo też wykonuję coś na wzór stacji meteo i u mnie średni pobór prądu podczas pracy wynosi około 20mA, a w trybie uśpienie około 3mA.

    Bardzo ciekawe rozwiązanie, gratuluje wykonania.


    Fajne urządzenie ale również jestem ciekaw tak niskich poborów jak zostały osiągnięte, zakładam że chodzi o średnią z 5 min i dla tego takie małe te pobory ale może coś więcej kolega napisze na ten temat :)

  • #5 15 Sty 2017 14:11
    lagrange
    Poziom 8  

    Rzeczywiście, wkradła się nieścisłość, dziękuję za czujność :-)

    Sprawa wygląda tak:
    - w trybie uśpienia pobór wynosi ok. 0,1mA (wahania w zakresie 0,09 - 0,12)
    - w trybie pracy, na jeden cykl, pobór wynosi około 0,045mAh

    Daje to około 15.84 mAh na dobę przy pomiarach co 5 minut i 3.528 mAh przy pomiarze co godzinę.

    Natomiast podany w pierwszym poście czas pracy na komplecie baterii jest prawidłowy, co widać na jednym z wykresów. Urządzenie, dla którego pokazany jest poziom baterii działa w konfiguracji co 5 minut.

    W celu obniżenia poboru prądu zastosowałem w miarę wydajną przetwornicę, włączanie/wyłączanie obwodów fotorezystora i pomiaru baterii i rezystory podciągające o rezystancji 100KOhm. Następnym krokiem pewnie byłoby wymienienie kondensatora na inny typ niż elektrolityczny, żeby zmniejszyć straty wynikające z samorozładowywania.

  • #6 15 Sty 2017 18:46
    andrzej18k
    Poziom 11  

    lagrange napisał:
    W celu obniżenia poboru prądu zastosowałem w miarę wydajną przetwornicę

    Jaką zastosowałeś przetwornicę?

  • Servizza
  • #7 15 Sty 2017 19:13
    dan50
    Poziom 11  

    lagrange napisał:
    - biorąc pod uwagę dość niski pobór energii, w przyszłości można się pokusić o zasilanie z energii słonecznej


    Proponuję zastosowanie akumulatora li-ion, oraz ładowarki do tych akumulatorów. Ładowanie poprzez panel fotowoltaiczny 6V, np. o mocy 3W.

    Ja wykonuję na chwilę obecną taką małą stację meteo - tam zastosuje ładowarkę i akumulator li-ion. Podczas testów taki zestaw przy małym nasłonecznieniu potrafił ładować prądem około 15mA (przy dużym około 200mA). Natomiast akumulator o pojemności 2200mAh wystarczył na 3 tygodnie pracy - oczywiście bez ładowania z ogniwa.

    Dla Twojej konstrukcji pewnie czas pracy na ogniwie li-ion będzie o wiele dłuższy.

    lagrange napisał:
    - w trybie pracy, na jeden cykl, pobór wynosi około 0,045mAh

    Tą wartość oszacowałeś czy jakoś zmierzyłeś? Pytam się, bo sam chciałbym określić pobór prądu dla swojej stacji.

  • #8 15 Sty 2017 23:01
    krzbor
    Poziom 16  

    Właśnie planuję wykorzystanie ESP12 do sterowania ogrzewaniem. Chciałbym, aby czujnik temperatury był mobilny - chodzi o to, by mierzył temperaturę w konkretnym miejscu, a nie przy grzejniku. Podstawowym problemem jest zasilanie. Czy mogę poprosić o publikację schematu? Jestem bardzo ciekaw, jak rozwiązano problem zasilania. Przy cyklu 5min, 6 miesięcy to bardzo dobry wynik. Ja myślę o dodaniu drobnego usprawnienia - w przypadku, gdy grzanie jest wyłączane, a skoki temperatury nie są duże, serwer może zwrotnie przesłać czas następnego pomiaru, np. zamiast 5 min może to być 15 minut. Nie ukrywam, że chciałbym stworzyć jak najmniejsze urządzenie, które będzie działać przez 9 miesięcy na baterii lub maksymalnie długo na akumulatorze. Ostatnio trafiłem jednak na opis ogniw LiFePO4. Ich podstawową zaletą jest napięcie - 3,3V - można bezpośrednio zasilać ESP8266.

  • #9 16 Sty 2017 07:37
    jazon1964
    Poziom 12  

    Freddy napisał:
    Coś mi te prądy nie pasują, sam ESP w trybie standby pobiera 0,9mA.


    Ja również mam małą "stację meteo", chociaż jak na sam pomiar temperatury to za dużo powiedziane i pobór prądu w trybie deepsleep wynosi ~160uA. Niestety nie ma tam układów odcinających niepotrzebne elementy i do tego cały czas chodzi przetwornica buck-boost, aby umożliwić zasilanie z pojedynczego ogniwa li-ion.

    Przy pomiarach co minutę udało się na ogniwie "z odzysku" (powinno mieć ok. 2Ah) osiągnąć czas pracy ponad 3 tygodnie przy pomiarach co minutę. Wykonując pomiar np. co minutę w ciągu dnia i co 5 minut w nocy można odpowiednio ten czas wydłużyć. Nowa wersja w układem odcinającym niepotrzebne elementy układu powinna, według obliczeń, pobierać nie więcej jak 7uA w trybie uśpienia. Po testach będę mógł powiedzieć trochę więcej na temat realnego czasu pracy tego urządzenia.

  • #10 16 Sty 2017 10:22
    lagrange
    Poziom 8  

    andrzej18k napisał:
    lagrange napisał:
    W celu obniżenia poboru prądu zastosowałem w miarę wydajną przetwornicę

    Jaką zastosowałeś przetwornicę?


    S7V8F3 z pololu. Ponieważ jest to przetwornica step up/down, pozwala wycisnąć z baterii ostatnie soki.

    dan50 napisał:

    Proponuję zastosowanie akumulatora li-ion, oraz ładowarki do tych akumulatorów. Ładowanie poprzez panel fotowoltaiczny 6V, np. o mocy 3W.


    Ciekaw jestem jaką ładowarkę zastosowałeś i jak rozwiązałeś kwestię zarządzania energią? Chodzi mi o Maximum Power Point Tracking oraz sprawne przełączanie/ mieszanie źródeł napięcia podczas startu pomiaru (podczas uspienia ładowanie baterii, podczas pomiaru przekazanie prądu z ogniwa do do układu, przy wsparciu baterii jeśli to konieczne).

    dan50 napisał:
    lagrange napisał:
    - w trybie pracy, na jeden cykl, pobór wynosi około 0,045mAh

    Tą wartość oszacowałeś czy jakoś zmierzyłeś? Pytam się, bo sam chciałbym określić pobór prądu dla swojej stacji.


    Pobór prądu zwłaszcza w trakcie pracy był dość trudny do zmierzenia, bo występują w nim częste wahania, a nie posiadam oscyloskopu. Wykorzystałem więc Arduino i moduł INA219. Pozwoliło to na częstotliwość pomiaru około 500Hz, co okazało się zupełnie wystarczające na te potrzeby. Wyciągnąłem średnią z kilku serii tych 2-3 tysięcy pomiarów przypadających na 1 cykl pracy i mnożyłem przez czas pomiaru. Dokładność okazała się zadowalająca. Do pomiaru prądu uśpienia wystarczył zwykły miernik i nie było tu większych zaskoczeń. Obliczona na podstawie tych 2 danych (praca + czuwanie) długość życia dla interwału 5 min dała 156 dni, przy rzeczywistej ok. 190 dni. Dla rocznego interwału jest to 575 dni, ale wciąż czeka na weryfikację empiryczną.

    krzbor napisał:
    Czy mogę poprosić o publikację schematu?


    Pogodełko - pudełko do monitorowania pogody

    Jest to chyba najbardziej kompletna/ aktualna wersja jaką znalazłem. Źródło zasilania to 4 baterie AA.

    krzbor napisał:
    Ja myślę o dodaniu drobnego usprawnienia - w przypadku, gdy grzanie jest wyłączane, a skoki temperatury nie są duże, serwer może zwrotnie przesłać czas następnego pomiaru, np. zamiast 5 min może to być 15 minut.


    Pewnym ograniczeniem tutaj jest fakt, że odbiór danych może odbywać się tylko jako informacja zwrotna po wysłaniu zapytania do serwera. W trakcie uśpienia, urządzenie nie wybudzi się na żądanie serwera żeby przyjąć nowy zadany interwał pomiaru.

    Notomiast samo wysłanie informacji przez serwer i jej sparsowanie przez urządzenie jest dość proste do wykonania.

  • #11 16 Sty 2017 17:18
    dan50
    Poziom 11  

    jazon1964 napisał:
    Ciekaw jestem jaką ładowarkę zastosowałeś i jak rozwiązałeś kwestię zarządzania energią? Chodzi mi o Maximum Power Point Tracking oraz sprawne przełączanie/ mieszanie źródeł napięcia podczas startu pomiaru (podczas uspienia ładowanie baterii, podczas pomiaru przekazanie prądu z ogniwa do do układu, przy wsparciu baterii jeśli to konieczne).


    Do testów miałem ładowarkę jedną z najtańszych, opartą o TP4056, jednak w układzie docelowym zastosuję moduł Digi-Lion, który oprócz ładowania akumulatora ma na pokładzie przetwornicę step up/down (tego rozwiązania jeszcze nie testowałem ale wg tego co producent pisze to ma ona ciekawe możliwości).
    Natomiast śledzeniem punktu pracy nie przejmowałem się i nie mam zamiaru jak na razie tego stosować - wydaje mi się, że przy takich małych prądach może to nie mieć aż takiego zysku energetycznego.

    lagrange napisał:
    moduł INA219

    Tego kiedyś szukałem, a teraz znalazłem. Dzięki.

  • #12 16 Sty 2017 19:25
    krzbor
    Poziom 16  

    lagrange napisał:
    krzbor napisał:
    Ja myślę o dodaniu drobnego usprawnienia - w przypadku, gdy grzanie jest wyłączane, a skoki temperatury nie są duże, serwer może zwrotnie przesłać czas następnego pomiaru, np. zamiast 5 min może to być 15 minut.



    Pewnym ograniczeniem tutaj jest fakt, że odbiór danych może odbywać się tylko jako informacja zwrotna po wysłaniu zapytania do serwera. W trakcie uśpienia, urządzenie nie wybudzi się na żądanie serwera żeby przyjąć nowy zadany interwał pomiaru.

    Myślałem o wysyłaniu czasu następnego pomiaru w wyniku odpowiedzi na wynik pomiaru temperatury. Jeśli nie nastąpiła zmiana stanu z "zał/wył", a poprzedni pomiar był zbliżony, to kolejny może być opóźniony.

  • #13 16 Sty 2017 21:00
    madejpm
    Poziom 10  

    Hw clock ESP (ten układ co zżera te uA przy uśpieniu) ma trochę pamięci (512 bajtów wg dokumentacji) podtrzymywanej podczas uśpienia. W połączeniu z możliwością ustawienia budzenia ESP (deep_sleep_set_option()) bez włączania wifi, można dodatkowo zmniejszyć pobór prądu, włączając wifi tylko co kilkanaście pomiarów i przesłać zebrane dotychczas wyniki.

    Co do baterii, jeśli chce się użyć przetwornicy tylko step-down, to można użyć baterii li-pol - nie powinno jej się rozładowywać poniżej 3.5V więc w całym zakresie napięcie na baterii będzie wyższe od 3,3V (choć lipol mają one mniej korzystny stosunek wagi do pojemności od li-on, za to łatwo dobrać pojemność baterii do potrzeb - są dostępne w najróżniejszych pojemnościach).
    LiFe raczej nie proponowałbym używać bezpośredniu, bo napięcia na niej są od 3.7V do 2.5V przy rozładowaniu.

  • #15 17 Sty 2017 07:33
    andrzej18k
    Poziom 11  

    krzbor napisał:
    Nie wiem, czy przy 3.7V stanie się jakaś krzywda ESP

    Nic się nie stanie. Mam podłączone od ponad roku ESP bezpośrednio pod Li-ion. Podczas ładowania napięcie dochodzi nawet do 4.2V
    Tylko prąd w trybie uśpienia rośnie wraz ze wzrostem napięcia.

  • #16 17 Sty 2017 19:53
    Sam Sung
    Poziom 31  

    Fajny projekt.
    Czy ten dedykowany serwer stoi na domowym łączu z publicznym stałym IP? Ma UPS-a?
    Takie łącze, domena i prąd do serwera swoje kosztują, a nawet na darmowym hostingu jest PHP i MySQL i nie widzę większych przeszkód w realizacji wymienionych założeń tj. "możliwość wprowadzania modyfikacji na poziomie bazy danych" (phpMyAdmin), "zdalnego konfigurowania urządzenia oraz zdalnej aktualizacji firmware".
    Fakt, MySQL na takim hostingu jest dostępny tylko z enginem MyISAM, który w przeciwieństwie do InnoDB jest atrapą relacyjnej bazy danych; dopóki jednak zasilanie nie padnie, to dane raczej nie są zagrożone, a taki serwer jest przecież kolokowany w serwerowni z prawdziwego zdarzenia, ma odpowiednie łącze, zasilanie i jest pod opieką admina.
    Więc chyba tylko totalny brak zaufania do admina jest argumentem przeciw? Ale czy z tych odczytów on jest w stanie się czegokolwiek konkretnego dowiedzieć? :)

  • #17 17 Sty 2017 20:05
    lagrange
    Poziom 8  

    Sam Sung napisał:
    Czy ten dedykowany serwer stoi na domowym łączu z publicznym stałym IP? Ma UPS-a?
    Takie łącze, domena i prąd do serwera swoje kosztują, a nawet na darmowym hostingu jest PHP i MySQL i nie widzę większych przeszkód w realizacji wymienionych założeń tj. "możliwość wprowadzania modyfikacji na poziomie bazy danych" (phpMyAdmin), "zdalnego konfigurowania urządzenia oraz zdalnej aktualizacji firmware".


    Postawiłem na serwerze, który już miałem wykupiony. Też nie widzę większych przeszkód, żeby postawić na darmowym hostingu. Przez niekorzystanie z ogólnodostępnej chmury miałem na myśli rozwiązania typu ThingSpeak - w takim przypadku elastyczność po stronie serwera nie byłaby możliwa do uzyskania.

  • #18 18 Sty 2017 08:17
    Galareta
    Poziom 21  

    Osobiście z serwera za odpytywanie bazy co 30s [zapis] wyleciałem;-) teraz siedzę na VPS, ale gdybym miał tylko do tego używać to bym orange pi lite wybrał lub coś podobnego i moduł obsługi zapisu napisany w C, cena samego orange lub innego podobnego to około 60zł prąd pobierany raczej znikomy a zawsze coś może robić dodatkowo w domu sama komunikacja z serwerem to MQTT.

  • #19 18 Sty 2017 10:33
    _JAG_
    Poziom 15  

    Możesz pokazać jak wygląda strona konfiguracji ESP. Meczę się z tym ostatnio - robię sterownik PID do wędzarni. Pięknie to działa na arduino uno +wyświetlacz, ale jak próbuje do tego dołożyć obsługę przez WWW to niestety dramat (uczę się dopiero HTML). Oczywiście na samym ESP mam już działające oprogramowanie. Wszystko ładnie jak wysyłam komendy po websocket, ale chciałbym zęby ESP pokazywało stronę, która wyświetla aktualną temperaturę i dawała możliwość zmiany parametrów - suwak lub pole do wpisywania zadanej temperatury i Kp, Ki i Kd. W tej chwili mam stronę, która pokazuje parametry ale się nie odświeża. Esp ma w wersji Witty z pamięcią 32Mb. Całość kodu nie jest moim dziełem - źródło https://github.com/tomweingarten/sous_vide_wifi, autor także przysłużył się gotową wersją z Adafruit, dostosował ja tylko do ESP8266.
    Chcę żeby całość obyła się bez zewnętrznych serwerów, oraz zęby można było to obsłużyć nawet z telefonu.

  • #20 18 Sty 2017 22:28
    krzbor
    Poziom 16  

    Uważam, że wewnętrzny serwer daje duże możliwości. Oczywiście pobiera prąd, ale można na nim postawić wiele rzeczy: serwer WWW, dysk NAS, DLNA, monitoring (rejestracja materiału wideo) itd. Jego zaletą jest możliwość obsługi sieci wewnętrznej (czyli, to czym steruje wewnątrz domu) i oddzielenie jej od sieci zewnętrznej. Oczywiście konieczny jest DDNS (jeśli nie mamy stałego IP). Nie ma także problemu z szyfrowanym połączeniem (https) poprzez LetsEncrypt. Ja używam OMV i jestem zadowolony.

  • #21 18 Sty 2017 23:11
    lagrange
    Poziom 8  

    _JAG_ napisał:
    Możesz pokazać jak wygląda strona konfiguracji ESP. [...] chciałbym zęby ESP pokazywało stronę, która wyświetla aktualną temperaturę i dawała możliwość zmiany parametrów - suwak lub pole do wpisywania zadanej temperatury i Kp, Ki i Kd. W tej chwili mam stronę, która pokazuje parametry ale się nie odświeża.


    W takim razie potrzebujesz serwera działającego na samym ESP. W moim doświadczeniu nie jest to superwydajny sprzęt jak na te potrzeby i mogą być w tej wersji ESP problemy ze stabilnością (1 rdzeń służy do obsługi zarówno WiFi jak i wykonywanego programu).

    Ja rzeźbiłem ręcznie, ale dobrym punktem startowym powinna być biblioteka WiFi Manager, w której możesz sobie dostosować generowany kod HTML. Do ściągnięcia tutaj: https://github.com/tzapu/WiFiManager

    Jeśli chodzi o odświeżanie, to zależy jak ma być ładnie a jak łatwo. Najprościej odświeżać przy pomocy znacznika <meta http-equiv="refresh" content="x" > gdzie x oznacza oczywiście liczbę sekund.

    Dodano po 5 [minuty]:

    krzbor napisał:
    Uważam, że wewnętrzny serwer daje duże możliwości. Oczywiście pobiera prąd, ale można na nim postawić wiele rzeczy: serwer WWW, dysk NAS, DLNA, monitoring (rejestracja materiału wideo) itd. Jego zaletą jest możliwość obsługi sieci wewnętrznej (czyli, to czym steruje wewnątrz domu) i oddzielenie jej od sieci zewnętrznej. Oczywiście konieczny jest DDNS (jeśli nie mamy stałego IP). Nie ma także problemu z szyfrowanym połączeniem (https) poprzez LetsEncrypt. Ja używam OMV i jestem zadowolony.


    Jasne, moja wykluwająca się gdzieś tam wizja inteligentnego domu opiera się właśnie na takiej architekturze. Tak jak piszesz, rozwiązuje to wiele problemów, choćby z bezpieczeństwem.

    W tym przypadku zdecydowałem się na zewnętrzny serwer, bo chciałem żeby urządzenia były jak najbardziej mobilne i niezależne od infrastruktury skoro miały działać również u rodziny i znajomych.

  • #22 19 Sty 2017 09:07
    Galareta
    Poziom 21  

    Czy ja wiem, sam stosuję spiffs i po FTP ładuję stronę na ESP (piszę w RTOS_SDK https://github.com/espressif/ESP8266_RTOS_SDK)
    Mała wydajność samego ESP - śmiało dźwiga stronkę z CSS i JS - tylko odświeżanie idzie po json czyli ajax wykorzystuje - jeszcze też całkiem przyjaźnie się pisze w sming framework - tam jest spiffs od razu zaimplementowany jak i wydajność jest całkiem spoko.

    ogólnie to ja potrafię tam upchnąć framework bootstrap, jquery i pokaźną ilość html który jest prasowany i znaczniki są podmieniane w locie na wartości - tylko o zasilaniu bateryjnym trzeba wtedy zapomnieć. Ogólnie chyba są to moje ulubione układy teraz, czasem jak coś na szybko piszę to nawet potrafię bez WiFi je wykorzystać, współczynnik wydajności do ceny jest trudny do przebicia.

    Nie zauważyłem informacji w czym jest "pogodełko" napisane?

  • #23 19 Sty 2017 19:40
    lagrange
    Poziom 8  

    Galareta napisał:
    Czy ja wiem, sam stosuję spiffs i po FTP ładuję stronę na ESP (piszę w RTOS_SDK https://github.com/espressif/ESP8266_RTOS_SDK)
    Mała wydajność samego ESP - śmiało dźwiga stronkę z CSS i JS - tylko odświeżanie idzie po json czyli ajax wykorzystuje - jeszcze też całkiem przyjaźnie się pisze w sming framework - tam jest spiffs od razu zaimplementowany jak i wydajność jest całkiem spoko.

    ogólnie to ja potrafię tam upchnąć framework bootstrap, jquery i pokaźną ilość html który jest prasowany i znaczniki są podmieniane w locie na wartości - tylko o zasilaniu bateryjnym trzeba wtedy zapomnieć. Ogólnie chyba są to moje ulubione układy teraz, czasem jak coś na szybko piszę to nawet potrafię bez WiFi je wykorzystać, współczynnik wydajności do ceny jest trudny do przebicia.

    Nie zauważyłem informacji w czym jest "pogodełko" napisane?


    C++ (Arduino IDE). Poza tym działa na bateriach. Być może te dwa czynniki przyczyniają się do zawieszania się programu, nawet na 2-3 sekundy, podczas otwierania strony konfiguracyjnej kiedy urządzenie jest serwerem.

    Nie znam tego SDK - możesz napisać kilka słów czym się wyróżnia i czy warto?

  • #25 26 Sty 2017 13:47
    Galareta
    Poziom 21  

    Osobiście dla mniej zaawansowanych i potrafiących co nieco w Arduino polecam "Sming" https://github.com/SmingHub/Sming

    różnica prędkości pomiędzy sming a nativeSDK jest malutka bo to nakładka na SDK a prostota programowania o wiele większa oraz dużo wbudowanych bibliotek. przykładowo najprostszy program serwera HTTP wygląda mniej więcej tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    dodatkowo kompilator obsługuje spiffs więc tworzymy sobie plik index.html i wrzucamy go do katalogu który zostanie dodany jako zamontowany system plików do wynikowego pliku z programem. jest bardzo dużo gotowych przykładów wykorzystania bibliotek. można do spifsa dodać pliki css skompresowane jako .gz oraz obrazy i pliki .js skompresowane jako .gz tworząc kompletny ładnie wyglądający i interaktywny (technologia AJAX) serwis prezentujący dane lub konfigurujący naszego esp. Jak się ktoś zaweźmie to można przez FTP ładować pliki (Wbudowany serwer FTP uruchamiany kilkoma linijkami) i używać jako zwykłego serwera www

    Wyświetlenie strony opartej o bootstrap (60kb css 30kb js po kompresji) oraz 4kb HTML który jest prasowany i podmieniane są znaczniki na wartości z kodu zajmuje 600ms wraz z prasowaniem przez google chrome samo pobieranie według chrome to 51ms wraz z oczekiwaniem i na odpowiedż.

    Web serwer jak i klient obsługuje SSL i TLS

    Przykład klienta:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    różnica pomiędzy arduino a sming to system zarządzania zdarzeniami i szybkość mielenia samego kodu. Dodatkowo teraz powoli się sming zaczyna przesiadać na RTOS więc będzie jeszcze dodatkowo system operacyjny zarządzający priorytetami itd. polecam przejrzeć przykłady na github.