Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wyświetlanie pomiaru z czujnika podłączonego do ESP8266-01 na stronie internetow

Isero 21 Feb 2020 00:28 618 5
  • #1
    Isero
    Level 6  
    Witam,



    Potrzebuje pomocy w zaprogramowaniu modułu ESP8266-1 oraz pliku HTML tak, aby wykonany pomiar z dowolnego czujnika był wyświetlany na stronie internetowej. Moduł ESP jest podłączony do adruino poprzez interfejs UART i został zaprogramowany za pomocą komend AT natomiast strona internetowa znajduje się w osobnym pliku HTML, do której przypisywany jest adres ip modułu. Obecnie na stronie znajdują się przyciski z przypisanymi numerami "id" które są odbierane przez arduino. Poniżej znajduje się fragment kodu z arduino oraz HTML odpowiadający za prawidłowe funkcjonowanie przycisków, który może trochę przybliży sposób działania/wykonania programu.

    Wyświetlanie pomiaru z czujnika podłączonego do ESP8266-01 na stronie internetow

    Niestety nie mam pojęcia jak zintegrować plik HTML z modułem ESP, aby pomiar z czujnika został przekazany oraz wyświetlony na stronie internetowej. Zależy mi jednak aby strona znajdowała się w osobnym pliku HTML, a nie była programowana w środowisku Arduino IDE.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • #2
    kaczakat
    Level 33  
    Sposób z komendami AT jest mocno nieefektywny. To były pierwsze metody wykorzystania ESP, aktualnie kod po prostu wgrywa się do ESP. Przykładowy sposób wykorzystania ESP do wyświetlania wartości z kodu z wykorzystaniem websocket znajdziesz tu: https://github.com/kaczakat/ESP8266 - cały kod HTML, JS jest wewnątrz ESP.
    Jeśli nawet nie możesz podłączyć wszystkiego do wolnych pinów ESP8266 (ma ich mało, z 8 do wszystkiego i kilka możliwych do użycia warunkowo) to dalej możesz komunikować przez UART ESP z innym kontrolerem, ale na tej samej zasadzie jak postawione dwa uC AVR wymieniające się informacjami.
    Google podpowie jak użyć ESP, po prostu dodajesz definicje płytek i masz kolejną rodzinę płytek Arduino w swoim programie - generic, WEMOS, NODMCU, itp.
  • #3
    Isero
    Level 6  
    Właśnie zależy mi, aby plik HTML nie znajdował się wewnątrz ESP, jednak nie potrafię znaleźć sposobu na wyświetlenie danych.
  • Helpful post
    #4
    ex-or
    Level 27  
    Pewnie można to zrobić na wiele sposobów. Ja bym zrobił tak, że kliknięcie buttona na stronie WWW odpytuje przez asynchroniczny XHTMLrequest ESP8266. ESP przygotowuje i zwraca dane w JSONie. Javascript na stronie HTML odbiera dane i je odpowiednio rozrzuca po tagach. Nie jestem pewien, czy przeglądarka pozwoli na requesty pod inny IP. Trzeba by sprawdzić...
    Nie jestem też pewien czy dalo by się to zrobić w Twojej obecnej konfiguracji czyli ESP z AT w trybie transparent i interpretacja i generowanie odpowiedzi w Arduino. Ardu ma trochę mało RAMu do pracy na tekstach, ale może... Można by tworzenie JSONów i responsów scedować na ESP, Arduino pozostawić zbieranie danych i co tam jeszcze, a oba moduły połączyć jakimś prostym protokołem via UART. Można by też całość roboty zrzucić na ESP. Dwie ostatnie opcje wymagały by trochę programowania na ESP. Ostatnia opcja, jak już wspomniano, może być kłopotliwa bo ESP ma mało pinów i badziewne peryferia (właściwie to wcale nie ma peryferiów)
  • #5
    khoam
    Level 41  
    Biorąc pod uwagę cele, jakie chcesz osiągnąć proponowałbym Ci użycie tylko ESP8266, ale w pełnej wersji sprzętowej np. w postaci płytki Wemos czy NodeMCU. Użycie płytki Arduino z AVR jest IMHO pozbawione sensu ze względu na dużo mniejszą wydajność procesora i ograniczenia w ilości dostępnej pamięci do takich celów (właściwie to tam nie ma pamięci w porównaniu z ESP).

    Definicje stron HTML wraz z niezbędnymi obrazkami itp. można umieścić w pamięci SPIFFS w ESP8266, gdzie jest do dyspozycji prawie 3 MB. Wtedy nie będą one zawarte w kodzie programu.
  • #6
    kaczakat
    Level 33  
    To jest tylko przykład jak to ma działać, zauważ jednak, że w tym przykładzie cały kod HTML/JS/CSS jest wewnątrz R"rawliteral()", można mieć stronę edytowaną w notatniku, tu modyfikować z podświetleniem składni w notepadzie++ i potem CTLR+C CTRL+V do kodu. Nie jest to strona typu "wydrukuj klientowi linię tekstu" gdzie każda modyfikacja to poprawianie dziesiątek linii.
    Dokładnie taką samą stronę mam wrzuconą na ESP do SPIFFS, działa to tak samo. Po prostu instalujesz core ESP, wtyczkę do SPIFFS, kompilujesz jakiś przykład z HTML z SPIFFS, wgrywasz i sprawdzasz jak działa (najpierw kod, potem zawartość SPIFFS), zapisujesz JAKO, powstaje katalog projektu Arduino, wewnątrz katalog zawartości SPIFFS gdzie są HTMLe,JS,CSS, grafiki (to dodatkowa zaleta SPIFFS, pliki mogą być osobno), potem wystarczy podmienić pliki html na swój i wgrać ponownie tylko SPIFFS, zrobić reset płytki. Jeśli strona ma komunikować się z kodem to oczywiście trzeba zmodyfikować kod ESP tak, by obsługiwał websockets. WEMOS/MODEMCU lub Witty jest o tyle przyjazne, że można podłączyć od razu do USB i wgrywać.