ESP8266-01 i Raspberry Pi

Forum dotyczące urządzeń opartych na popularnym układzie ESP8266

Moderator: bbiernat

Post Reply
User avatar
pancio
Administrator
Posts: 63
Joined: 18 September 2013, 23:02 - Wed
Location: SILESIA

ESP8266-01 i Raspberry Pi

Post by pancio »

Zakupiłem kilka modułów ESP-01, ESP-12 na znanym nierodzimym portalu (2-4$). Przykład oparty jest na ESP-01. Ważne, by pamiętać że ESP nie lubi zasilania powyżej 3.3V i tym samym wymagane są odpowiednie poziomy napięć na porcie szeregowym... dopasowanie napięć automatycznie zapewnia nam Malina RPi - stąd też przygodę warto zacząć od podłączenia ESP do Maliny.

Tak to wygląda:
esp-01.jpg
esp-01.jpg (89.04 KiB) Viewed 83266 times
A tak wygląda płytka PCB i pinout modułu::
esp-01-pcb.jpg
esp-01-pcb.jpg (233.05 KiB) Viewed 83266 times
Raspberry Pi i port szeregowy...
By móc korzystać z portu szeregowego na początku musimy wyłączyć domyślną obsługę terminala na porcie /dev/ttyAMA0. Robimy to edytując poniższe pliki:

/etc/inittab
/boot/cmdline.txt[/code]

w /etc/inittab należy odszukać i zakomentować linię (# na początku):

Code: Select all

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Następnie wyłączamy domyślne komunikaty na porcie szeregowym od jądra podczas startu systemu, w /boot/cmdline.txt zawartość podobną do:

Code: Select all

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
u mnie po modyfikacji plik zawiera:

Code: Select all

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
musimy pozbyć się zaznaczonego fragmentu dotyczącego portu szeregowego.

Po reboocie możemy już korzystać z portu szeregowego... np przez użycie:

Code: Select all

minicom -b 9600 -o -D /dev/ttyAMA0
Oczywiście minicom czy inny program do obsługi terminala (np. screen) musimy sobie doinstalować.

Teraz czas na podłączenie ESP8266 do Maliny.

Połączenie jest trywialne, łączymy odpowiednio RX, TX, GND, 3V3 Power od strony RPi do UTXD, URXD, GND i UCC układu ESP, należy jeszcze podpiąć na stałe CH_PD do UCC oraz zadbać o możliwość chwilowego podpięcia GPIO0 do GND - będzie to potrzebne w procesie flashowania ESP.

Pinout portu P1 Maliny:
rpi-gpio.png
rpi-gpio.png (37.9 KiB) Viewed 83266 times

ESP8266 i Raspberry Pi

Flashowanie ESP:

Moduły oryginalnie posiadają interface z obsługą komend AT, jednak proponuję wykorzystać projekt NodeMCU, który pozwoli nam na znacznie łatwiejszą komunikację a dodatkowo oddaje w nasze ręce bezpośredni interpreter języka eLua.

Do flashowania potrzebujemy tylko jednego skryptu esptool.py w Pythonie, do pobrania w repozytorium GItHub-a:

Code: Select all

git clone https://github.com/themadinventor/esptool
Potrzebujemy jeszcze wsadu, do pobrania również z GitHub-a:

Code: Select all

wget https://github.com/nodemcu/nodemcu-firmware/tree/master/pre_build/latest
Ja używam wersji najbardziej aktualnej, jeśli ktoś musi skorzystać z innej - odszukaj jej w drzewie projektu i ściągnij najbardziej Ci odpowiadającą...

Flashujemy:

Podłączamy na czas flashowania GPIO0 do masy ESP i wykonujemy polecenie

Code: Select all

./esptool.py --port /dev/ttyAMA0 write_flash 0x00000 nodemcu_latest.bin
gdzie nodemcu_latest.bin to ściągnięty z git-a wsad.

Po kilku sekundach możemy zacząć zabawę...



Połączenie i konfiguracja

z ESP z poziomu RPi łączymy się via RS:

Code: Select all

minicom -b 9600 -o -D /dev/ttyAMA0
dostajemy znak zachęty w postaci '>' i możemy skonfigurować połączenie z Wifi:

Code: Select all

ip = wifi.sta.getip()
    print(ip)
    --nil
    wifi.setmode(wifi.STATION)
    wifi.sta.config("SSID","password")
    ip = wifi.sta.getip()
    print(ip)
    --192.168.18.110

gdzie: --xxx - odpowiedzi konsoli ESP

w miejsce SSID i password należy wpisać odpowiednie ustawienia dla własnej sieci. Adres IP w odpowiedzi na print(ip) jest przykładowym - pobranym przez ESP z DHCP naszego rutera WiFi. Teraz już możemy komunikować się z ESP via Wifi.

Co możemy zrobić?

Łatwiej wymienić czego nie można... Zacząć możemy od termometru na 1wire i prezentacji na serwerze www napisanym w eLua na ESP. Przykłady dostępne są na stronie projektu:

nodeMCU Firmware

i to by było na tyle... przedstawiony moduł posiada co prawda tylko 2 piny GPIO lecz dokładnie ta sama zasada tyczy się ESP z większą ilością GPIO.

Życzę udanych projektów.

Post Reply