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

Czym jest ESP8266 ESP32, jak je można programować

20 Lut 2019 01:08 1815 13
  • Poziom 10  
    Ogarnąłem troszkę Arduino i kumam, że pisze się w C/C++, kompiluje, wgrywa i działa.

    Nie kumam wszystkich możliwości programowania ESP8266, ale może mi ktoś wyjaśni może w więcej niż jednym zdaniu. Może by się przydał jakiś szerszy opis, jako przypięty post. Jest wiele postów/filmów, które mówią: "Aby zaprogramować ESP e LUNA, to należy..."

    Wiem, że:
    1. Możemy się z ESP komunikować po RX/TX wysyłając mu komendy AT (jak dawniej w modemach) - ale chyba działa jako taki modem po WiFi?

    2. Możemy z pomocą ArduinoIDE napisac program w C/C++, skompilować i wgrać. Ale tutaj słyszałem, że kilka linijek kodu typu Blink, zajmuje połowę pamięci tego ESP, który ma jej wielokrotnie więcej niż Arduino UNO/podobne. To, albo wgrywanie jakiegoś kodu, a tam działa jakiś interpreter C, więc jedna wielka kicha, albo inne cuda.

    3. Możemy zaprogramować coś w LUA - ale kompilujemy do kodu maszynowego czy jak pkt.2?

    4. Można w jakimś MicroPythonie - jeszcze nic nie wyczytałem.

    5. EasyESP ?

    Może są jakieś artykuły z zebranymi tego typu informacjami. Mam 3 egzemplarze różne. Czegoś bym się chciał nauczyć, ale może nie po koleju, jak leci, ale być może niektóre ścieżki są mniej atrakcyjne od innych?
  • Pomocny post
    Poziom 34  
    Nie LUNA tylko LUA. W necie jest mnóstwo poradników jak programować esp (na tym forum też), wystarczy zadać sobie minimum trudu i wpisać w wyszukiwarce.

    Pozdr
  • Poziom 33  
    Wszytko zależy co byś chciał zrobić z tym ESP?
    Na pytania które zadajesz trzeba by książkę napisać aby odpowiedzieć.
  • Pomocny post
    Poziom 40  
    ESP jest na tyle szybkim układem, na ogół posiadający do tego na tyle pojemny flash, że istnieje na niego kilka bardzo rozbudowanych firmwareów (powiedzmy że takich jakby OS'ów).
    W zależności od zastosowań, i w czym ci się łatwej programuje, możesz wgrać firmware obsługujący skrypty LUA, albo pisane w Pythonie (nie kompilujesz, sprawę załatwia interpreter)

    Możesz też traktować ESP jako najnormalniejszy mikrokontroler, pisać w C, w Arduino IDE (ArduinoIDE to język Wiring, ale generalnie bazuje na C ;), a nawet w asemblerze jak masz ochotę...

    A jak nie masz ochoty za dużo myśleć i tworzyć nie wiadomo czego, tylko chcesz szybko uruchomić kilka czujniczków, z podglądem przez WWW i ew integracją z Domoticzem czy innym OpenHUBem, to wgrywasz np firmware ESPEasy. Masz wtedy działające i konfigurowalne "coś" i już nic programować nie musisz. Zostaje ew skryptowanie "od strony" Domoticza/OH...
  • Poziom 10  
    rs6000 napisał:
    Nie LUNA tylko LUA.

    Dziękuję poprawiłem.

    rs6000 napisał:
    wystarczy zadać sobie minimum trudu i wpisać w wyszukiwarce.

    One są w stylu: napięcia, ustawiamy konwerterem 3.3/5, nowy firmware ściągamy z .... nie zapomnij po wgraniu zdjąć +5 z wejścia GPIO... i po godzinie czytania poradnika się dowiadujesz: "Acha, to znaczy mogę pisać w Pythonie i będzie to interpretowane, jak wgram nowy firmware." itd.... nie znalazłem artykułu, który miał słowo wstępu co będziemy robić. Nie znalazłem też art, porównującego te Frameworki, jak określił je kolega w #4 poście tego wątku.

    Karaczan napisał:
    istnieje na niego kilka bardzo rozbudowanych firmwareów (powiedzmy że takich jakby OS'ów).

    Właśnie o taką mniej więcej odpowiedź mi chodziło i wyliczenie tych rozwiązań (no własnie jak je nazwać?). Czyli reasumując wymieniłem chyba te najpopularniejsze, jeśli czegoś brakuje, to proszę o dopisanie. Sądzę, że wielu osobom się przyda takie zestawienie, bo w odróżnieniu od Arduino, gdzie mamy właściwie jedno rozwiązania (pisanie w C/C++) i ew. kilka środowisk (Arduino IDE/ECLIPSE, BASCOM), to z z ESP8266/ESP32 jest o wiele więcej możliwości.
  • Pomocny post
    Poziom 34  
    Karaczan napisał:
    ESP jest na tyle szybkim układem, na ogół posiadający do tego na tyle pojemny flash, że istnieje na niego kilka bardzo rozbudowanych firmwareów (powiedzmy że takich jakby OS'ów).
    W zależności od zastosowań, i w czym ci się łatwej programuje, możesz wgrać firmware obsługujący skrypty LUA, albo pisane w Pythonie (nie kompilujesz, sprawę załatwia interpreter)

    Możesz też traktować ESP jako najnormalniejszy mikrokontroler, pisać w C, w Arduino IDE (ArduinoIDE to język Wiring, ale generalnie bazuje na C ;), a nawet w asemblerze jak masz ochotę...

    A jak nie masz ochoty za dużo myśleć i tworzyć nie wiadomo czego, tylko chcesz szybko uruchomić kilka czujniczków, z podglądem przez WWW i ew integracją z Domoticzem czy innym OpenHUBem, to wgrywasz np firmware ESPEasy. Masz wtedy działające i konfigurowalne "coś" i już nic programować nie musisz. Zostaje ew skryptowanie "od strony" Domoticza/OH...

    Troszke namieszałeś koledze, np. EspEasy to program napisany w Arduino.

    Generalnie mozna powiedziec, ze sa dwa podstawowe sposoby na pisanie programow pod esp8266, jezyk skryptowy LUA oraz Arduino. Aby korzystac z tego drugiego, trzeba pod Arduino IDE zaciagnąć core dla tych ukladow czyli dodac definicje plytek z Board managera. Wtedy piszesz z wykorzystaniem skladni znanej z Arduino. Esp8266 jest też implementowane w gotowe płytki na ktorych jest dodatkowo konwerter usb<->uart i wtedy programowanie jest poprzez przewod usb, inaczej trzeba zewnetrzny konwerter podpinany pod piny rx i tx na esp8266 i zwieranie jednego gpio do gnd.

    Tu masz dobry opis http://www.jarzebski.pl/arduino/arduino-i-klony/nodemcu-v2-esp8266-lua.html

    Pozdr
  • Poziom 10  
    rs6000 napisał:
    Generalnie mozna powiedziec, ze sa dwa podstawowe sposoby na pisanie programow pod esp8266, jezyk skryptowy LUA oraz Arduino.

    Mam dwa pytania:
    1. LUA - język skryptowy. Czy uC ma translator, czy to się kompiluje i w wyniku mamy kod maszynowy wrzucany do uC.
    2. Adruino - kompiluje się, ale jak widziałem, że jakiś prosty BLINK, który w Atmedze zajmuje pareset bajtów, tutaj zajął kilkanaście kB, to coś mi tutaj nie gra. Czy oby na pewno tam jest wyrywany kod maszynowy? Może majfriendy wrzucili tam jakąś wirtualną maszynę, która oprócz wykonywania tego co chcemy wrzucić, jest gotowa na szpiegowanie naszych WiFi? Bo ten narzut u mnie zapala czerwone światło.

    A jak się ma szybkość rzeczywista realizacji programów podobnych na Arduino/Atmega z zegarem 8/16MHz i na ESP/LUN lub ESP/Arduino z zegarem wielokrotnie szybszym. Czy szybkość realizacji programów jest porównywalnie szybsza jak przyrost zegara?
  • Pomocny post
    Poziom 39  
    JanuszKornas napisał:
    Adruino - kompiluje się, ale jak widziałem, że jakiś prosty BLINK, który w Atmedze zajmuje pareset bajtów, tutaj zajął kilkanaście kB, to coś mi tutaj nie gra. Czy oby na pewno tam jest wyrywany kod maszynowy? Może majfriendy wrzucili tam jakąś wirtualną maszynę, która oprócz wykonywania tego co chcemy wrzucić, jest gotowa na szpiegowanie naszych WiFi? Bo ten narzut u mnie zapala czerwone światło.


    Pomijając teorie szpiegowskie, przyczynami większego rozmiaru kodu wynikowego (binarnego) są:
    - ESP8266 (single-core) oraz ESP32 (dual-core) mają procesory 32-bitowe, a ATmega328P (taka w Uno) to procesor 8-bitowy
    - w trakcie linkowania programu, który używa Arduino HAL, dołączanych jest szereg bibliotek do obsługi WiFi i generalnie kodu sieciowego - nawet jak go nie używasz. Wina tu leży raczej po stronie Arduino HAL, a nie samego ESP.

    Programując w C++ na ESP8266 lub ESP32 nie musisz korzystać z Arduino IDE. Nie musisz też korzystać z Arduino HAL. Wystarczy znajomość Espresiff SDK - można wtedy uzyskać kod wynikowy o mniejszym rozmiarze.

    Oprócz języków C++ i Lua można również pisać programy dla ESP8266 oraz ESP32 w języku MicroPython. Arduino to nie jest język programowania.

    Dodano po 1 [minuty]:

    JanuszKornas napisał:
    Czy szybkość realizacji programów jest porównywalnie szybsza jak przyrost zegara?

    Procesor 32-bitowy versus 8-bitowy. Chyba nie trzeba wyjaśniać.
  • Poziom 10  
    khoam napisał:
    Oprócz języków C++ i Lua można również pisać programy dla ESP8266 oraz ESP32 w języku MicroPython.

    A pisząc w LUA i MicroPython używa się kompilatora, czy w ESP musi być pod nich translator?
  • Pomocny post
    Poziom 39  
    JanuszKornas napisał:
    A pisząc w LUA i MicroPython używa się kompilatora, czy w ESP musi być pod nich translator?


    Raczej interpreter, który ładuje się najpierw do ESP z odpowiednią wersją firmware.
  • Pomocny post
    Poziom 10  
    Podsumowując, mamy takie możliwości:
    1. Kompilatory:
    - Arduino IDE/HAL - dużo dodawanych bibliotek na "dzień dobry" - wygodne
    - Espresiff SDK
    2. Interpretery, które wymagają wcześniej wgrania odpowiedniego firmware pod dany interpreter:
    - MicroPython
    - LUA (NodeMCU)
    3. Gotowe skompilowane programy przez osoby trzecie (pewno jest więcej, ale dla przykłady podaję:
    - EasyESP
    - firmware wgrane domyślne przez producenta z obsługą komend AT

    Pkt2 i 3, są właściwie tym samym, to znaczy wgrywamy "jakby system operacyjny" i albo mamy działające urządzenie, albo wrzucamy mu skrypty do wykonania (pkt.2).

    Trafiłem w międzyczasie na stronę:
    http://noweenergie.org/index.php?0/Article/42
  • Pomocny post
    Poziom 22  
    Wsparcie w języku polskim dla ESP jest, ale strasznie rozbite i ciężko cokolwiek z tego wyciągnąć. Bo tutaj autor zakończył na komendach AT, tam zrobił program do migania diodą w pythonie. Tam znów jakiś mega program połączony z chmurą przy pomocy jakiegoś oprogramowania.
    Ja oczywiście nie oczekuje, że ktoś mi zrobi jakiś kurs, ani nic takiego. Po prostu mówię, że w tym przypadku google nie zawsze jest najlepszym źródłem informacji, bo trzeba szukać i szukać dość długo i po angielsku, by dojśc do czegoś konkretniejszego.

    Co mogę doradzić to 2 źródła, które są skupione w jednym miejscu.
    Książki Pana Neil'a Kolban'a z leanpub np. (jedna jest o ESP8266 druga o ESP32)
    Kursy na blogu Dfrobot jest ich tam naprawdę masa i można znaleźć coś dla siebie.
    Co do Lua, to chyba strona główna nt. tego jezyka jest najbardziej rozbudowana.
  • Pomocny post
    Poziom 39  
  • Pomocny post
    Poziom 10  
    khoam napisał:
    Dla ESP32 polecam stronę http://esp32.net/ Niezłe kompendium wiedzy.

    Bardzo fajny link - polecam zajrzeć tam wszystkim obserwatorom wątku, naprawdę fajne zestawienie.