Tak to wygląda: A tak wygląda płytka PCB i pinout modułu:: 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
Code: Select all
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Code: Select all
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Po reboocie możemy już korzystać z portu szeregowego... np przez użycie:
Code: Select all
minicom -b 9600 -o -D /dev/ttyAMA0
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:
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
Code: Select all
wget https://github.com/nodemcu/nodemcu-firmware/tree/master/pre_build/latest
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
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
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.