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

ESP8266 Termostat sterowany przez przeglądarkę

kolgreen 24 Mar 2018 21:50 4596 25
  • #1 24 Mar 2018 21:50
    kolgreen
    Poziom 14  

    ESP8266 Termostat sterowany przez przeglądarkę

    ESP8266 w roli termostatu.

    Czujnikiem temperatury jest DS18B20, definiowanie nastaw termostatu odbywa się za pośrednictwem przeglądarki internetowej.

    ESP8266 Termostat sterowany przez przeglądarkę

    Po wgraniu oprogramowania należy dokonać konfiguracji urządzenia przez UART (prędkość: 115200 baud).
    Po wysłaniu znaku "h" (komunikaty zawsze należy zakończyć znakiem końca linii) wyświetlane jest menu:

    Adres IP:
    0.0.0.0
    s - skanuj sieci
    c - konfiguruj siec
    o - czytaj konfiguracje
    j - polacz z siecia
    h - wyswietl to menu

    Po przeskanowaniu sieci (opcja "s") należy dokonać konfiguracji połączenia "c". Program pyta o SSID i prosi o podanie hasła. Urządzenie po zrestartowaniu będzie automatycznie łączyć się z tą siecią. Warto przypisać stały adres IP dla tego urządzenia na domowym routerze.

    Aplikacja została napisana dla modułu NodeMCU, magistrala danych termometru to pin D1, natomiast stan wysoki (uruchamiający grzałkę) pojawia się na D2. Oczywiście będzie działać na dowolnym ESP8266 jednak oznaczenia pinów mogą się różnić.

    Aktualny program i ewentualne aktualizacje publikuję w artykule ESP8266 - termostat.

  • #2 25 Mar 2018 08:45
    golab35
    Poziom 9  

    Serio zrozumiałbym gdybyś stworzył coś mega innowacyjnego na nie wiadomo jak rzadkich komponentach. Ale kupiłeś ESP z ali, środowisko w którym piszesz to podejrzewam arduino, czujnik temperatury jaki użyłeś to jeden z najpopularniejszych na świecie. A i pisząc swój program pewnie wykorzystałeś kilka przykładów dostępnych w necie. Wiec dlaczego udostępniasz tylko wsad programu ? Dla mnie to mega smutne... Nie rozumiem po co wg zadawać sobie tyle trudu pisać jakieś farmazony jakie miałeś cele jakie wykorzystałeś podzespoły jak na końcu dajesz ludziom tylko durny wsad którego nikt nie przerobi pod własne potrzeby ani nikt nigdy nie udoskonali.

  • #3 25 Mar 2018 09:22
    Bombaj9
    Poziom 9  

    Nie oceniam metaforyczności projektu, ale moim zdaniem trochę marnotrawstwo NodeMCU a co za tym idzie $. Prawdopodobnie jeśli już korzystamy z gotowych elementów, to tak jak sam piszesz projekt jest dedykowany pod ESP, wiec można by go wykonać na samej 'kostce' ESP8266 plus ds i przekaźnik, wtedy cena prawdopodobnie zamknęła by ci się w 2$.
    Rezygnacja z nodemcu spowodowałaby spadek wielkości urządzenia oraz poboru energii, wtedy można by się pokusić o zaprojektowanie, jeszcze jakiejś zgrabne małe pcb i mamy bardzo prosty 'termostat na szybko'.

    Oczywiście pewnie tego typu projekty są już bardzo znane i chyba przemielone we wszystkich możliwych wariacjach.

  • #4 25 Mar 2018 09:24
    IS
    Poziom 16  

    Jak to po co - linkowanie do strony. Sam tak zrobię za jakiś czas ale choć postaram się przedstawić coś wartościowego. Kolega pokazałby choć jakie problemy miał podczas realizacji konstrukcji, jak ze stabilnością działania. Cokolwiek ciekawego...

  • #6 25 Mar 2018 10:15
    kolgreen
    Poziom 14  

    Bombaj9 napisał:
    Oczywiście pewnie tego typu projekty są już bardzo znane i chyba przemielone we wszystkich możliwych wariacjach.


    Prawdę mówiąc szukałem chwilę w Google przed przystąpieniem do realizacji tego układu i raczej średnio byłem zadowolony z wyników. Coś tam faktycznie było ale przykładowo nazwa sieci i hasło definiowane jest w tych projektach na etapie programowania. Bardzo mało jest to elastyczne. Nie każdy chce programować, pobierać biblioteki itp. A jak się nazwa sieci zmieni albo przeniesiemy urządzenie? Programowanie od nowa? Ja to rozwiązałem przez konfigurację przez UART.

    golab35 napisał:
    Serio zrozumiałbym gdybyś stworzył coś mega innowacyjnego na nie wiadomo jak rzadkich komponentach.


    Jaki by to miało sens dla tak prostego i mającego bardzo szerokie zastosowanie układu?
    Zrobiłem go, by używać, a nie po to by podziwiano jak autor potrafi stworzyć z wycofanych z produkcji tranzystorów procesor ;-)

    golab35 napisał:
    Ale kupiłeś ESP z ali, środowisko w którym piszesz to podejrzewam arduino, czujnik temperatury jaki użyłeś to jeden z najpopularniejszych na świecie.


    To chyba dobrze? Kupiłem najtaniej jak się da, zaprogramowałem w środowisku, które ma gotowe biblioteki i umożliwia zrobienie tego łatwo i przejrzyście, zastosowałem najpopularniejszy czujnik, by każdy mógł go zastosować. Kolega rozumiem, że jak publikuje układy to na takich podzespołach by nikt ich kupić nie mógł?

    golab35 napisał:
    A i pisząc swój program pewnie wykorzystałeś kilka przykładów dostępnych w necie. Wiec dlaczego udostępniasz tylko wsad programu ? Dla mnie to mega smutne...


    Wydaje mi się, że fragmenty kodu można znaleźć nawet w samym Arduino IDE. Kto powiedział, że nie udostępniam? Jeśli zajrzałeś do artykułu i sprawdzałeś repozytorium, to zapewne zauważyłeś już folder na źródła. Zapewniam cię, że pojawią się one tam lada chwila a artykuł zostanie rozbudowany o krótki opis kodu. Jednak najważniejsza jest sama funkcjonalność i tą przedstawiam w pierwszej kolejności. W miarę wolnego czasu publikuję potem resztę.

    IS napisał:
    Jak to po co - linkowanie do strony. Sam tak zrobię za jakiś czas ale choć postaram się przedstawić coś wartościowego. Kolega pokazałby choć jakie problemy miał podczas realizacji konstrukcji, jak ze stabilnością działania. Cokolwiek ciekawego...


    To też... :D Mam nadzieję, że na podlinkowanej stronie znajdziesz ciekawsze projekty.

    Bombaj9 napisał:
    Nie oceniam metaforyczności projektu, ale moim zdaniem trochę marnotrawstwo NodeMCU a co za tym idzie $. Prawdopodobnie jeśli już korzystamy z gotowych elementów, to tak jak sam piszesz projekt jest dedykowany pod ESP, wiec można by go wykonać na samej 'kostce' ESP8266 plus ds i przekaźnik, wtedy cena prawdopodobnie zamknęła by ci się w 2$.


    NodeMCU zostało użyte ze względu na łatwość prototypowania. Nie ma przeszkód by wgrać program do innego układu z ESP8266. NodeMCU kosztuje $2.75. Myślę, że można to jakoś przeboleć, chyba że kolega zna tańsze "markowe" termostaty sterowane przez WiFi?
    Jeśli chodzi o przekaźniki itp. proponowałbym transoptor i triak.

    Bombaj9 napisał:
    Rezygnacja z nodemcu spowodowałaby spadek wielkości urządzenia oraz poboru energii


    Myślenie nad zmniejszeniem poboru energii ma sens jeśli urządzenie zasilane jest z akumulatora, tutaj samo zastosowanie (termostat) z góry oznacza, że dostęp do sieci energetycznej będzie. Zatem sztuka dla sztuki, wszystko co jest na NodeMCU i tak będzie potrzebne na docelowej płytce i nie wydaje mi się, by ktoś polutował SMD lepiej i na mniejszej powierzchni od fabryki.

  • #7 25 Mar 2018 10:22
    dktr
    Poziom 18  

    Strasznie utrudniasz sobie życie tą konfiguracją sieci przez UART. Program można było napisać tak że przy braku konfiguracji ESP sam nadaje swoją sieć. Po połączeniu z taką siecią pod IP ESP strona konfiguracyjna z listą dostępnych sieci i miejscem na wpisanie hasła. Dodatkowo można dodać jakiegoś buttona pod GPIO w celu "reset defaults"

    Cytat:
    Dużo klepie na wemosy w wolnej chwili, i powiem ze mają przewagę nad gołym esp.


    Jakiś przykład?

  • #8 25 Mar 2018 10:28
    kolgreen
    Poziom 14  

    dktr napisał:
    Strasznie utrudniasz sobie życie tą konfiguracją sieci przez UART. Program można było napisać tak że przy braku konfiguracji ESP sam nadaje swoją sieć.


    Pierwsze co trzeba zrobić, to podłączyć ESP do komputera by wgrać program. Mając już połączenie po UART wystarczy tylko skonfigurować mając już fizycznie połączenie na tym samym kablu. W mojej opinii jest to łatwiejsze od konieczności rozłączania się z Internetem (mam przez WiFi), szukania nowej sieci i konfiguracji przez przeglądarkę. A co jeśli mamy tylko komputer stacjonarny i brak karty WiFi?

  • #9 25 Mar 2018 10:39
    Bombaj9
    Poziom 9  

    kolgreen napisał:

    NodeMCU zostało użyte ze względu na łatwość prototypowania. Nie ma przeszkód by wgrać program do innego układu z ESP8266. NodeMCU kosztuje $2.75. Myślę, że można to jakoś przeboleć, chyba że kolega zna tańsze "markowe" termostaty sterowane przez WiFi?
    Jeśli chodzi o przekaźniki itp. proponowałbym transoptor i triak.


    ESP w wersji ESP-01/ESP8266 kosztuje chyba w okolicach 1,5$ plus jest sporo mniejsze wtedy dodajemy nawet najprościej ale drożej ds/przekaźnik i mamy termostat. Czyli znam tańsze ale 'nie markowe' rozwiązanie ;). Oczywiście 2.75$ za nodemcu nie jest jakoś strasznie drogo ale to dział diy, stad moja propozycja optymalizacji, a i w mojej opini projekt byłby o wiele bardziej oryginalny i mógłby się przydać większej ilości osób.

  • #10 25 Mar 2018 10:54
    pier
    Poziom 23  

    Strumien swiadomosci swia napisał:
    Mi się podoba tylko szkoda ze nie na wemosie i trzeba to programować.
    Dużo klepie na wemosy w wolnej chwili, i powiem ze mają przewagę nad gołym esp.


    A jaką że to przewagę ma Wemos nad Nodemcu?
    Chyba tylko lepszy stabilizator.

  • #11 25 Mar 2018 10:55
    kolgreen
    Poziom 14  

    Bombaj9 napisał:

    ESP w wersji ESP-01/ESP8266 kosztuje chyba w okolicach 1,5$ plus jest sporo mniejsze wtedy dodajemy nawet najprościej ale drożej ds/przekaźnik i mamy termostat. Czyli znam tańsze ale 'nie markowe' rozwiązanie ;). Oczywiście 2.75$ za nodemcu


    Mam wrażenie, że chcesz na siłę znaleźć minusy. :D
    Jak napisałem program można wgrać do dowolnego ESP, a liczenie różnicy w centach - no nie bądźmy śmieszni.

    Bombaj9 napisał:
    nie jest jakoś strasznie drogo ale to dział diy, stad moja propozycja optymalizacji, a i w mojej opini projekt byłby o wiele bardziej oryginalny i mógłby się przydać większej ilości osób.


    Miło by było jeśli binarka się komuś przyda. Co do optymalizacji kosztów w dziale DIY... W dziale tym chodzi tak naprawdę o satysfakcję konstruktora i o fakt, że zbudował coś sam, a nie o koszty. Optymalizacja kosztów ważna jest przy produkcji seryjnej. Ileż to razy niestety czytałem komentarze w stylu: "zbudowałeś urządzenie które można kupić taniej". No ale taki klimat Elektrody... :D
    Jak widać na moim przykładzie można również dostać burę za użycie ogólnodostępnych podzespołów i narzędzi ;-)

  • #12 25 Mar 2018 11:11
    Bombaj9
    Poziom 9  

    kolgreen napisał:

    Mam wrażenie, że chcesz na siłę znaleźć minusy. :D
    Jak napisałem program można wgrać do dowolnego ESP, a liczenie różnicy w centach - no nie bądźmy śmieszni.


    Bez przesady nie szukam na siłę minusów, mam nadzieje że nie odbierasz tego tak dosłownie ;). Projekt jak najbardziej na plus i cenie sobie użycie ogólnodostępnych podzespołów i narzędzi. Ostatecznie może jestem trochę przewrażliwiony, bo coraz częściej widzę projekty w których osoby, wykorzystują najbogatsza wersje powiedzmy arduino/rosp pi do bardzo, bardzo prostego urządzenia. Oczywiście nic nie mam do platformy arduino a wręcz przeciwnie, bo dla mnie, eletronika amatora i to przez duze A, takie rozwiązania i gotowe komponenty są bardzo pomocne i ciekawe, ale czasami widzac przeskalowania w projektach nawet tych składanych z 'black box-ow' wydaja się dziwne a w szczególności jeśli autor, jeszcze nie zdaje sobie z tego sprawy. Oczywiście w projekcie przedstawionym przez Ciebie tego nie ma, ale mam nadzieje że rozumiesz o co mi chodzi.

  • #13 25 Mar 2018 14:26
    golab35
    Poziom 9  

    Ja naprawde podziwiam ludzi, którzy robią fajne rzeczy z ogólno dostępnych części na rynku, niewielkim kosztem i znajdują czas, żeby się tym wszystkim jeszcze podzielić w internecie. Serio. Ale poprostu nie lubie tematów na elektroda.pl w stylu: patrzcie podziwiajcie co zrobiłem - ale nie macie co liczyc na to, że powiem wam jak to zrobiłem.

  • #14 25 Mar 2018 14:53
    kolgreen
    Poziom 14  

    Bombaj9 napisał:
    ale czasami widzac przeskalowania w projektach nawet tych składanych z 'black box-ow' wydaja się dziwne a w szczególności jeśli autor, jeszcze nie zdaje sobie z tego sprawy. Oczywiście w projekcie przedstawionym przez Ciebie tego nie ma, ale mam nadzieje że rozumiesz o co mi chodzi.


    Oczywiście, że również widzę "problem" stosowania "armaty na wróble", w chwili, gdy ktoś stosuje Raspberry Pi w celu migania stworzenia animacji na dwóch LED. Jednak czy będziemy nadal tak na to patrzeć, gdy taki komputer będzie w obudowie małego układu scalonego i będzie kosztować co dwa tranzystory? Takie są chyba koleje postępu technologicznego. Choć faktycznie osoby które pamiętają komputery które miały gorsze parametry od malinki może to trochę przerażać. :D

    golab35 napisał:
    Ja naprawde podziwiam ludzi, którzy robią fajne rzeczy z ogólno dostępnych części na rynku, niewielkim kosztem i znajdują czas, żeby się tym wszystkim jeszcze podzielić w internecie. Serio. Ale poprostu nie lubie tematów na elektroda.pl w stylu: patrzcie podziwiajcie co zrobiłem - ale nie macie co liczyc na to, że powiem wam jak to zrobiłem.

    Rozumiem twoje poglądy i je podzielam. Nie wiem tylko dlaczego te słowa kierujesz do mnie.

  • #15 25 Mar 2018 19:04
    mkpl
    Poziom 37  

    Nawet taki termostat ma sens. Kwestia jego przedstawienia. Wg. mnie brakuje tylko opisu co i jak i która linijka kodu robi i jak się to przekłada na efekt końcowy.

    To że Ty czy tamten inny umiecie arduino (a szkoda, że nie C i ASM) to nie oznacza, że inni umieją. Tak to byłby prosty kod możliwy do analizy przez początkującego. Poczytał by pomyślał przetrawił i czegoś się nauczył.

  • #16 25 Mar 2018 20:47
    kolgreen
    Poziom 14  

    mkpl napisał:
    Nawet taki termostat ma sens. Kwestia jego przedstawienia.


    Złe wejście było? :D

    mkpl napisał:
    Wg. mnie brakuje tylko opisu co i jak i która linijka kodu robi i jak się to przekłada na efekt końcowy.


    Jest trochę komentarza w kodzie (mniej lub bardziej mądrego).

    mkpl napisał:
    To że Ty czy tamten inny umiecie arduino (a szkoda, że nie C i ASM) to nie oznacza, że inni umieją.


    Nie do końca wiem co masz na myśli. Zasadniczo nie piszę w Arduino IDE ale zaczyna mi się ono bardzo podobać. Program pisze się szybko i przejrzyście.

    Jest to bardzo dyskusyjne stwierdzenie ale zaryzykuje, że Arduino programuje się w C i C++.
    Czym jest poniższy kod jak nie c++ ;-)? A kompiluje się pięknie w Arduino IDE.
    Kod: c
    Zaloguj się, aby zobaczyć kod


    A ASM? W dzisiejszych czasach? ASM był dobry w czasach programu Apollo, dzisiaj raczej tylko w specyficznych i bardzo newralgicznych przypadkach. Nie ma opcji by napisać aplikacje sieciowe w ASM. No może by się ktoś uparł ale po co?

  • #17 25 Mar 2018 22:08
    mkpl
    Poziom 37  

    Ja trochę stanąłem po twojej stronie ale widzę, że nie zrozumiałeś o co chodzi.
    Asm jest potrzebny. Pisze się w nim wszystkie "sterowniki" do urządzeń współpracujących np LCD czy inne. Dzięki czemu program działa płynnie i sprawnie i zapewnia odpowiedni "transfer". Sam z tego korzystasz nieświadomie używając bibliotek.

  • #18 25 Mar 2018 23:02
    kolgreen
    Poziom 14  

    Strumien swiadomosci swia napisał:
    Mi się podoba tylko szkoda ze nie na wemosie i trzeba to programować.


    Dzięki ;-) a z programowaniem przecież aż tak dużo pracy nie ma.

    Dodano po 14 [minuty]:

    mkpl napisał:
    Asm jest potrzebny. Pisze się w nim wszystkie "sterowniki" do urządzeń współpracujących np LCD czy inne. Dzięki czemu program działa płynnie i sprawnie i zapewnia odpowiedni "transfer". Sam z tego korzystasz nieświadomie używając bibliotek.


    Zgoda, jednak również można pisać w C/C++. Przyznam, że dawno nie widziałem biblioteki napisanej w czystym ASM. Sporo projektów pisałem dla mikrokontrolerów PIC w CCS C - wszystko jest tam w C (przynajmniej nie przypominam sobie bym dokopał się nawet do jakichś wstawek ASM). Natomiast zerkając na układ będący tematem tego wątku - sprawdziłem przykładowo co zawiera biblioteka DallasTemperature. Jest napisana w C++. Opiera się ona oczywiście mocno na OneWire i tu bym się już spodziewał ASM, ale nie... Również C++.

    Do weryfikacji:
    http://www.pjrc.com/teensy/td_libs_OneWire.html

  • #20 26 Mar 2018 00:05
    kolgreen
    Poziom 14  

    Strumien swiadomosci swia napisał:
    A czy można plik wgrać w wemosa lub coś podobnego w usb?


    Sercem Wemosa jest ESP8266, więc myślę, że będzie działać.

  • #22 27 Mar 2018 18:17
    kolgreen
    Poziom 14  

    marmon napisał:
    Kolega zapomniał o histerezie:



    Kod: c
    Zaloguj się, aby zobaczyć kod


    Histereza


    Słusznie, słusznie... Muszę zaktualizować.

  • #23 31 Mar 2018 12:53
    kisoft
    Poziom 13  

    Projekt bardzo ciekawy, szkoda że nie poszedłeś dalej i nie opracowałeś płytki z przekaźnikiem i rozwiązaniem zasilania. Nie analizowałem twojego kody ale wieżę że działa, brak histerezy to poważny problem ale do rozwiązania. Napisz jeszcze czy termostat pracuje normalnie jak braknie sieci Wifi, czy nie następuje zwiecha i brak reakcji na rosnącą temperaturę( czy dalej jest funkcja termoststu).

  • #24 09 Kwi 2018 11:27
    kolgreen
    Poziom 14  

    kisoft napisał:
    Projekt bardzo ciekawy, szkoda że nie poszedłeś dalej i nie opracowałeś płytki z przekaźnikiem i rozwiązaniem zasilania. Nie analizowałem twojego kody ale wieżę że działa, brak histerezy to poważny problem ale do rozwiązania. Napisz jeszcze czy termostat pracuje normalnie jak braknie sieci Wifi, czy nie następuje zwiecha i brak reakcji na rosnącą temperaturę( czy dalej jest funkcja termoststu).


    Zrobiłem małe aktualizacje. Histerezę się podaje w ustawieniach.

    ESP8266 Termostat sterowany przez przeglądarkę

    Jeśli temperatura jest niższa od zadanej minus histereza, uruchamia się grzałka. Wyłącza po osiągnięciu zadanej temperatury i ponownie uruchamia po osiągnięciu temperatury zadanej-histereza.

    Sprawdziłem działanie układu przy braku sieci WiFi - działa stabilnie.

    Ja nie powiedziałem, że projekt zamykam. Może pokuszę się o zrobienie projektu płytki.

  • #25 09 Kwi 2018 12:01
    mkpl
    Poziom 37  

    Przydał by się wykres czasowy ilustrujący czas załączenia grzałki. Dało by to pewien obraz potrzebnej mocy grzewczej.

  • #26 10 Kwi 2018 00:27
    kolgreen
    Poziom 14  

    mkpl napisał:
    Przydał by się wykres czasowy ilustrujący czas załączenia grzałki. Dało by to pewien obraz potrzebnej mocy grzewczej.


    Teoretycznie nie ma problemu. W praktyce martwi mnie 100 000 zapisów w EEPROM. Niby dużo ale tak naprawdę mało. W czym więc trzymać dane? W pamięci RAM do pierwszego resetu?