W gadżetach elektroda.pl niebawem pojawi się moduł pozwalający na komunikację Wi-Fi i Bluetooth oparty o ESP32. W porównaniu do wcześniej dostępnych modułów ESP8266, ESP32 wyposażony jest w dwa 32b rdzenie, jeden dedykowany dla obsługi komunikacji bezprzewodowej. Porównanie ESP8266 z ESP32 pokazuje nowe funkcjonalności i większe możliwości przy zbliżonej cenie i poborze mocy.
Charakterystyka ESP32 w porównaniu do ESP8266:
-liczba rdzeni: 2 (ESP8266: 1)
-WiFi + Bluetooth/BLE (ESP8266: WiFi)
-RAM: 512kB (ESP8266: 160kB – 96+64)
-ilość pinów GPIO zależnie od wersji: ~32 (ESP8266: ~16)
-ilość kanałów ADC: 18 kanałów 12b (ESP8266: 1 kanał 10b)
-ilość kanałów DAC: 2 kanały 8b (ESP8266: 0)
-ilość kanałów interfejsu dotykowego: 10 (ESP8266: 0)
-magistrale SPI, I2C, UART, I2S, CAN, IR, Ethernet MAC (ESP8266: SPI, I2C, UART, I2S)
-wspomaganie funkcji kryptograficznych: SHA,AES,ECC/RSA,RNG
-16x PWM
Interfejsy dla karty SD oraz MAC Fast Ethernet pozwalają na łatwe budowanie uniwersalnych modułów typu:
WiFi / BLE / Ethernet / microSD
Moduł wyposażony jest w układ CP2102 będący konwerterem USB<->UART, co pozwala m.in. na programowanie modułu z poziomu Arduino. Na płytce modułu znajduje się stabilizator, co umożliwia zasilanie napięciem 5V np. z portu USB.
Integracja ze środowiskiem Arduino pod kontrolą Win10:
-instalujemy najnowszą wersję Arduino https://www.arduino.cc/ aktualnie 1.8.3
-instalujemy python 2.7 https://www.python.org/ wybierając podczas instalacji opcję "Add python.exe to Path"
-instalujemy klienta Git https://git-scm.com/downloads
-uruchamiamy Git GUI jako administrator (prawy klawisz myszy)
-wybieramy "sklonuj istniejące repozytorium"
-podajemy źródło: https://github.com/espressif/arduino-esp32.git
-wybieramy cel jako ścieżkę, którą znajdziecie w Arduino->Plik->Preferencje->Lokalizacja Szkicownika, na końcu ścieżki dodajemy \hardware\espressif\esp32, następnie klikamy Clone
-wchodzimy do utworzonych katalowgów \hardware\espressif\esp32 następnie \tools i uruchamiamy get.exe
obserwujemy proces pobierania, rozpakowywania
-uruchamiamy środowisko Arduino, wybieramy narzędzia->plytka i powinna pojawić się możliwość wybrania ESP32 Dev Module, wybieramy port szeregowy, który pojawił się w systemie po podłączeniu płytki.
Możemy rozpocząć pracę z ESP32!
Aktualizacja polega na uruchomieniu Git GUI wybraniu utworzonego repozytorium oraz wybrania Remote->Fetch from->orgin a następnie ponowne uruchomienie get.exe w \hardware\espressif\esp32\tools\
Przygotowanie do pracy z ESP32 jest bardziej złożone niż w przypadku ESP8266, jeżeli zauważycie błędy w opisie lub natraficie na problemy z uruchomieniem, dajcie znać w tym temacie, wspólnie powinniśmy dać radę pokonać ew. przeszkody.
Termometr Wi-Fi DS18B20 Blynk – wykorzystanie kodu dla ESP8266.
Podobnie jak w poprzednim materiale spróbjemy przesłać dane z czujnika temperatury do aplikacji blynk na smartfonie. Niestety biblioteka arduino thingspeak obecnie nie wspiera ESP32, ale dane do thingspeak możecie wysyłać zwykłymi żądaniami GET.
Gdy będziecie dostosowywali swoje programy na ESP8266 do ESP32, należy m.in. zmienić:
#include <ESP8266WiFi.h> na #include <WiFi.h>
Kolejna zmiana to nazwy pinów zamieniamy konwencję nazewniczą:
D2, D3, D4, D5 itp. zastępujemy zwyczajnym 2,3,4,5 itp.
Zmieniamy kod programu dla blynk z poprzedniego przykładu i możemy odebrać na aplikacji na naszym smartfonie dane z czujnika temperatury wysyłane przez WiFi.
Więcej informacji o blynk w poprzednim materiale: ESP8261 D1 mini.
Przykładowy kod programu:
Magistrala 1-wire została skonfigurowana na pinie G13, który łączymy z żółtym przewodem czujnika DS18B20, pin G13 łączymy rezystorem 4.7kom z +3.3V, czerwony przewód czujnika łączymy z 3.3V, a czarny z GND.
Po skonfigurowaniu w kodzie programu dostępu do WiFi oraz tokenu blynk, po skompilowaniu i uruchomieniu na ESP32 w aplikacji blynk na smarftonie, powinny pojawić się aktualne odczyty temperatury. Udało się wykorzystać kod opisany w dwóch poprzednich materiałach: Moduł D1 mini - ESP8266 oraz ESP8266-12E NodeMCU Amica + DS18B20
Radio internetowe na ESP32:
Spróbujmy zostawić na chwilę Arduino i wyjść nieco poza schemat aplikacji IoT w postaci czujnika temperatury.
Uruchomimy na ESP32 projekt odtwarzacza radia internetowego: https://github.com/MrBuddyCasino/ESP32_MP3_Decoder
Projekt bazuje na wcześniejszym, który współpracował z ESP8266: https://github.com/espressif/ESP8266_MP3_DECODER
Można trafić na projekty rozbudowane o zewnętrzny DAC i wyświetlacz OLED: https://www.youtube.com/watch?v=aSnZo7Biu5E
https://github.com/kodera2t/ESP32_OLED_webradio
Zgodnie z opisem na stronie: http://esp-idf.readthedocs.io/en/latest/get-started/windows-setup.html pobieramy zestaw narzędzi MSYS2, rozpakowujemy pobrane archiwum np. do C:\msys32 oraz uruchamiamy C:\msys32\mingw32.exe
Okno środowiska możemy zamknąć, w lokalizacji C:\msys32\home\nazwa_użytkownika\ tworzymy folder o nazwie np. esp
Zgodnie z opisem http://esp-idf.readthedocs.io/en/latest/get-started/index.html#get-started-get-esp-idf uruchamiamy cmd i w konsoli wchodzimy do katalogu esp
cd C:\msys32\home\nazwa_użytkownika\esp
Uruchamiamy zainstalowane przy okazji integracji z Arduino narzędzie git wydając polecenie:
git clone --recursive https://github.com/espressif/esp-idf.git
następnie wchodzimy do katalogu esp-idf:
cd esp-idf
i wydajemy polecenie
git submodule update --init
Pozostaje skonfigurowanie ścieżek zgodnie z opisem: http://esp-idf.readthedocs.io/en/latest/get-s...-profile.html#add-idf-path-to-profile-windows
Czyli w katalogu C:/msys32/etc/profile.d/ tworzymy plik np. export_idf_path.sh
w pliku wpisujemy:
export IDF_PATH="C:/msys32/home/nazwa_uzytkownika/esp/esp-idf"
Ponownie uruchamiamy C:\msys32\mingw32.exe i wpisujemy:
printenv IDF_PATH
Ścieżka powinna wskazywać na lokalizację esp-idf w katalogu esp
Dla odmiany skorzystajmy z GIT GUI i wybierzmy opcję klonowania istniejącego repozytorium:
źródło: https://github.com/MrBuddyCasino/ESP32_MP3_Decoder.git
cel: C:\msys32\home\nazwa_użytkownika\esp\web_radio
wybieramy remote-> fetch from-> orgin
Uruchamiamy C:\msys32\mingw32.exe i wchodzimy do katalogu C:\msys32\home\nazwa_użytkownika\esp\web_radio
Wykonujemy konfigurację:
make menuconfig
W sekcji serial flasher config podajemy numer portu COM na którym dostępny jest podłączony ESP32 (do sprawdzenia w menadżerze urządzeń, lub środowisku Arduino):
W sekcji Web Radio / BT Speaker ustawiamy parametry dostępu do WiFi oraz rodzaj wyjścia audio:
Wybrałem wbudowane przetworniki DAC 8bit co da dość kiepską jakość dźwięku, ale można zastosować zewnętrzny DAC I2S co powinno znacznie poprawić jakość odtwarzanego dźwięku.
Zapisujemy ustawienia i wychodzimy z narzędzia konfiguracyjnego, następnie wydajemy polecenie:
make flash
Po kompilacji, wynik zostanie przesłany do ESP32 i uruchomiony, sygnał audio pojawi się na pinach DAC G25,G26:
Przycisk boot przełącza źródła strumieni zdefiniowane w:
C:\msys32\home\nazwa_użytkownika\esp\web_radio\main\playlist.pls
Głośnik bluetooth na ESP32:
Wykonując ponownie:
make menuconfig
możemy zmienić konfigurację tak, aby projekt https://github.com/MrBuddyCasino/ESP32_MP3_Decoder zadziałał jako głośnik bluetooth.
W sekcji component config wybieramy Bluetooth:
W Bluetooth wybieramy Bluedroid Bluetooth stack enabled:
Następnie clasics Bluetooth:
W sekcji web radio wybieramy BT speaker mode, tutaj możemy zmienić nazwę urządzenia BT:
Po kompilacji i załadowaniu kodu do ESP32:
make flash
np. w smartfonie możemy wyszukać i połączyć się z urządzeniem ESP_SPEAKER lub o innej nazwie, jeżeli zmieniliście ją podczas konfiguracji.
W porównaniu do poprzedniego materiału o ESP8266, uruchomienie ESP32 może wydawać się bardziej złożone, ale warto poznawać nowe rzeczy i wypróbować nowe funkcjonalności, jakie daje ESP32.
Jakie macie pomysły na wykorzystanie swojego ESP32?

Charakterystyka ESP32 w porównaniu do ESP8266:
-liczba rdzeni: 2 (ESP8266: 1)
-WiFi + Bluetooth/BLE (ESP8266: WiFi)
-RAM: 512kB (ESP8266: 160kB – 96+64)
-ilość pinów GPIO zależnie od wersji: ~32 (ESP8266: ~16)
-ilość kanałów ADC: 18 kanałów 12b (ESP8266: 1 kanał 10b)
-ilość kanałów DAC: 2 kanały 8b (ESP8266: 0)
-ilość kanałów interfejsu dotykowego: 10 (ESP8266: 0)
-magistrale SPI, I2C, UART, I2S, CAN, IR, Ethernet MAC (ESP8266: SPI, I2C, UART, I2S)
-wspomaganie funkcji kryptograficznych: SHA,AES,ECC/RSA,RNG
-16x PWM
Interfejsy dla karty SD oraz MAC Fast Ethernet pozwalają na łatwe budowanie uniwersalnych modułów typu:
WiFi / BLE / Ethernet / microSD
Moduł wyposażony jest w układ CP2102 będący konwerterem USB<->UART, co pozwala m.in. na programowanie modułu z poziomu Arduino. Na płytce modułu znajduje się stabilizator, co umożliwia zasilanie napięciem 5V np. z portu USB.
Integracja ze środowiskiem Arduino pod kontrolą Win10:
-instalujemy najnowszą wersję Arduino https://www.arduino.cc/ aktualnie 1.8.3
-instalujemy python 2.7 https://www.python.org/ wybierając podczas instalacji opcję "Add python.exe to Path"
-instalujemy klienta Git https://git-scm.com/downloads
-uruchamiamy Git GUI jako administrator (prawy klawisz myszy)
-wybieramy "sklonuj istniejące repozytorium"
-podajemy źródło: https://github.com/espressif/arduino-esp32.git
-wybieramy cel jako ścieżkę, którą znajdziecie w Arduino->Plik->Preferencje->Lokalizacja Szkicownika, na końcu ścieżki dodajemy \hardware\espressif\esp32, następnie klikamy Clone
-wchodzimy do utworzonych katalowgów \hardware\espressif\esp32 następnie \tools i uruchamiamy get.exe
obserwujemy proces pobierania, rozpakowywania
-uruchamiamy środowisko Arduino, wybieramy narzędzia->plytka i powinna pojawić się możliwość wybrania ESP32 Dev Module, wybieramy port szeregowy, który pojawił się w systemie po podłączeniu płytki.
Możemy rozpocząć pracę z ESP32!
Aktualizacja polega na uruchomieniu Git GUI wybraniu utworzonego repozytorium oraz wybrania Remote->Fetch from->orgin a następnie ponowne uruchomienie get.exe w \hardware\espressif\esp32\tools\
Przygotowanie do pracy z ESP32 jest bardziej złożone niż w przypadku ESP8266, jeżeli zauważycie błędy w opisie lub natraficie na problemy z uruchomieniem, dajcie znać w tym temacie, wspólnie powinniśmy dać radę pokonać ew. przeszkody.
Termometr Wi-Fi DS18B20 Blynk – wykorzystanie kodu dla ESP8266.
Podobnie jak w poprzednim materiale spróbjemy przesłać dane z czujnika temperatury do aplikacji blynk na smartfonie. Niestety biblioteka arduino thingspeak obecnie nie wspiera ESP32, ale dane do thingspeak możecie wysyłać zwykłymi żądaniami GET.
Gdy będziecie dostosowywali swoje programy na ESP8266 do ESP32, należy m.in. zmienić:
#include <ESP8266WiFi.h> na #include <WiFi.h>
Kolejna zmiana to nazwy pinów zamieniamy konwencję nazewniczą:
D2, D3, D4, D5 itp. zastępujemy zwyczajnym 2,3,4,5 itp.
Zmieniamy kod programu dla blynk z poprzedniego przykładu i możemy odebrać na aplikacji na naszym smartfonie dane z czujnika temperatury wysyłane przez WiFi.
Więcej informacji o blynk w poprzednim materiale: ESP8261 D1 mini.
Przykładowy kod programu:
Kod: C / C++
Magistrala 1-wire została skonfigurowana na pinie G13, który łączymy z żółtym przewodem czujnika DS18B20, pin G13 łączymy rezystorem 4.7kom z +3.3V, czerwony przewód czujnika łączymy z 3.3V, a czarny z GND.
Po skonfigurowaniu w kodzie programu dostępu do WiFi oraz tokenu blynk, po skompilowaniu i uruchomieniu na ESP32 w aplikacji blynk na smarftonie, powinny pojawić się aktualne odczyty temperatury. Udało się wykorzystać kod opisany w dwóch poprzednich materiałach: Moduł D1 mini - ESP8266 oraz ESP8266-12E NodeMCU Amica + DS18B20
Radio internetowe na ESP32:
Spróbujmy zostawić na chwilę Arduino i wyjść nieco poza schemat aplikacji IoT w postaci czujnika temperatury.
Uruchomimy na ESP32 projekt odtwarzacza radia internetowego: https://github.com/MrBuddyCasino/ESP32_MP3_Decoder
Projekt bazuje na wcześniejszym, który współpracował z ESP8266: https://github.com/espressif/ESP8266_MP3_DECODER
Można trafić na projekty rozbudowane o zewnętrzny DAC i wyświetlacz OLED: https://www.youtube.com/watch?v=aSnZo7Biu5E
https://github.com/kodera2t/ESP32_OLED_webradio
Zgodnie z opisem na stronie: http://esp-idf.readthedocs.io/en/latest/get-started/windows-setup.html pobieramy zestaw narzędzi MSYS2, rozpakowujemy pobrane archiwum np. do C:\msys32 oraz uruchamiamy C:\msys32\mingw32.exe
Okno środowiska możemy zamknąć, w lokalizacji C:\msys32\home\nazwa_użytkownika\ tworzymy folder o nazwie np. esp
Zgodnie z opisem http://esp-idf.readthedocs.io/en/latest/get-started/index.html#get-started-get-esp-idf uruchamiamy cmd i w konsoli wchodzimy do katalogu esp
cd C:\msys32\home\nazwa_użytkownika\esp
Uruchamiamy zainstalowane przy okazji integracji z Arduino narzędzie git wydając polecenie:
git clone --recursive https://github.com/espressif/esp-idf.git
następnie wchodzimy do katalogu esp-idf:
cd esp-idf
i wydajemy polecenie
git submodule update --init
Pozostaje skonfigurowanie ścieżek zgodnie z opisem: http://esp-idf.readthedocs.io/en/latest/get-s...-profile.html#add-idf-path-to-profile-windows
Czyli w katalogu C:/msys32/etc/profile.d/ tworzymy plik np. export_idf_path.sh
w pliku wpisujemy:
export IDF_PATH="C:/msys32/home/nazwa_uzytkownika/esp/esp-idf"
Ponownie uruchamiamy C:\msys32\mingw32.exe i wpisujemy:
printenv IDF_PATH
Ścieżka powinna wskazywać na lokalizację esp-idf w katalogu esp
Dla odmiany skorzystajmy z GIT GUI i wybierzmy opcję klonowania istniejącego repozytorium:
źródło: https://github.com/MrBuddyCasino/ESP32_MP3_Decoder.git
cel: C:\msys32\home\nazwa_użytkownika\esp\web_radio
wybieramy remote-> fetch from-> orgin
Uruchamiamy C:\msys32\mingw32.exe i wchodzimy do katalogu C:\msys32\home\nazwa_użytkownika\esp\web_radio
Wykonujemy konfigurację:
make menuconfig
W sekcji serial flasher config podajemy numer portu COM na którym dostępny jest podłączony ESP32 (do sprawdzenia w menadżerze urządzeń, lub środowisku Arduino):
W sekcji Web Radio / BT Speaker ustawiamy parametry dostępu do WiFi oraz rodzaj wyjścia audio:
Wybrałem wbudowane przetworniki DAC 8bit co da dość kiepską jakość dźwięku, ale można zastosować zewnętrzny DAC I2S co powinno znacznie poprawić jakość odtwarzanego dźwięku.
Zapisujemy ustawienia i wychodzimy z narzędzia konfiguracyjnego, następnie wydajemy polecenie:
make flash
Po kompilacji, wynik zostanie przesłany do ESP32 i uruchomiony, sygnał audio pojawi się na pinach DAC G25,G26:
Przycisk boot przełącza źródła strumieni zdefiniowane w:
C:\msys32\home\nazwa_użytkownika\esp\web_radio\main\playlist.pls
Głośnik bluetooth na ESP32:
Wykonując ponownie:
make menuconfig
możemy zmienić konfigurację tak, aby projekt https://github.com/MrBuddyCasino/ESP32_MP3_Decoder zadziałał jako głośnik bluetooth.
W sekcji component config wybieramy Bluetooth:
W Bluetooth wybieramy Bluedroid Bluetooth stack enabled:
Następnie clasics Bluetooth:
W sekcji web radio wybieramy BT speaker mode, tutaj możemy zmienić nazwę urządzenia BT:
Po kompilacji i załadowaniu kodu do ESP32:
make flash
np. w smartfonie możemy wyszukać i połączyć się z urządzeniem ESP_SPEAKER lub o innej nazwie, jeżeli zmieniliście ją podczas konfiguracji.
W porównaniu do poprzedniego materiału o ESP8266, uruchomienie ESP32 może wydawać się bardziej złożone, ale warto poznawać nowe rzeczy i wypróbować nowe funkcjonalności, jakie daje ESP32.
Jakie macie pomysły na wykorzystanie swojego ESP32?
Fajne? Ranking DIY
