czwartek, 14 lipca 2016

ESP8266 na poważnie cz. 2

Dzień drugi - nie ma łatwo

Poprzedni dzień kursu nauki ESP to był dobry dzień - w trzy godziny udało się uruchomić ESP a do tego pełen sukces uruchomienia BLYNKa na tym procesorze. Z małymi problemami z driverem konwertera - ale poszło. Pajęczyna niestety nie zdaje egzaminu - poruszenie jakimś kabelkiem zawiesza procesor i pomaga tylko reset.
Trzeba więc było przygotować coś bardziej stabilnego


Płytka prototypowa według wczorajszego schematu - dodatkowe kondensatory filtrujące na zasilaniu 3V3 a całość przystosowana do zasilania z 5V z konwertera USB lub z zewnętrznego zasilacza. Stabilizator 3V3 wylądował obok LED po prawej stronie. Dzielnik na wejście RX i oporniki podciągające do GPIO 0 są pod modułem.
Wyprowadziłem 4 GPIO (4,5,2,15)  dla przyłączania zewnętrznych modułów. Razem z portami Tx i Rx mam na szybko 6 możliwych do wykorzystania portów cyfrowych z wyprowadzeniami na kabelki przyłączeniowe. LED czerwony na porcie 12 (13 wciąż nie działa). Dodatkowo mam LED niebieski na ESP, który reaguje na sterowanie portem GPIO 2. Przycisk przyłączony do RST a GPIO 0 zwieram do masy na czas programowania zworką.
Na początek zabawy z nowym procesorem powinno wystarczyć.
Całość ruszyła zaraz po przełożeniu modułu ESP z pająka na płytkę.
Programowanie wymaga kilku operacji.
  • Zwarcia GPIO 0 do masy - zalecają przez niewielki opornik (100-200om) gdyby port był ustawiony na 1 w czasie działania wcześniej wgranego programu.
  • reset modułu - zwarcie RST do masy na chwilę - w tym momencie procesor czeka na transmisję po RS 232
  • wgrania programu - poprzez Arduino IDE
  • rozłączenia GPIO 0
  • reset 
trochę to bardziej złożone niż przy programowaniu UNO czy NANO. Nowa wersja oprogramowania ESP na IDE umożliwia już jednak automatyzację tego procesu poprzez przyłączenie RST i GPIO 0 do portów DTE RTS konwertera i automatyczne ich ustawianie przez IDE


Ale jak raz mój chiński klon ma wyprowadzone tylko Rx i TX więc pomysł poczeka do realizacji gdy uporam się z konfliktem pomiędzy IDE i driverem droższego konwertera 3 voltowego.

Muszę jeszcze uruchomić ARDUINO IDE.CC 1.6.9 na moim roboczym komputerze.
I tu siurpriz. Instalacja programu identyczna jak na pierwszym laptopie - tzn portable z pliku ZIP - daje efekt zgoła odmienny - kompilacja zawiesza się w połowie wypluwając  nieładne czerwone napisy w stylu:
In file included from c:\documents and settings\krzysztofp\ustawienia lokalne\dane aplikacji\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
 from C:\Documents and Settings\KrzysztofP\Ustawienia lokalne\Dane aplikacji\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Esp.cpp:24:
c:\documents and settings\krzysztofp\ustawienia lokalne\dane aplikacji\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:59:28: fatal error: bits/c++config.h: No such file or directory
 #include <bits/c++config.h>
 compilation terminated.
exit status 1 


Cytuję całość bo jak mowi prof. Google to dość powszechne zjawisko i dobrze opisane w literaturze internetowej. Problem w tym że funkcja PORTABLE dla IDE 1.6.9 jest testowa i by ją uruchomić w pełni należy w katalogu głównym programu IDE dodać podkatalog "Portable" przed wgraniem rozszerzenia dla ESP8266 do Arduino IDE (patrz opis w poprzednim poście).



Po tym drobnym zabiegu i po wgraniu plików ESP do IDE kompilacja przebiega bez zakłóceń. Wyjaśniło się też dlaczego takiego efektu nie miałem na pierwszym komputerze. Jeśli pracuje się z użytkownikiem Windows nie mającym dostępu w trybie administratora, IDE samo przechodzi w tryb PORTABLE bez konieczności dodania tego podkatalogu. Ale ... umieszcza dodatkowe pliki gdzieś w przepastnych tylko sobie wiadomych podkatalogach Windows. Tutaj zaś pliki dla ESP  mamy ładnie wgrane do katalogu "PORTABLE".
 I wszystko jasne.
Dodałem też nowy podkatalog >projekty.cc< w którym umieszczam moje programy dla ESP i działające w nim biblioteki Arduino. Wygląda to mniej więcej tak
> Arduino
>>........ (inne podkatalogi)
>> arduino-1.6.9 (to jest IDE z arduino.cc)
>> arduino-1.7.10 org (to jest IDE z arduino.org)
>> moje projekty (projekty na UNO i NANO pod arduino.org)
>> > xxx (różne projekty z UNO i NANO)
>>> libraries (biblioteki dla UNO i NANO)
>>moje projekty.cc (projekty na ESP)
>> > yyy (różne projekty z ESP)
>>> libraries (biblioteki dla ESP)
Dzięki temu nie mieszają mi się pliki projektów pod Arduino i pod ESP a najważniejsze jest rozdzielenie zbiorów bibliotek dla obu platform. W obu tych katalogach mam tylko sprawdzone i działające biblioteki

Testowanie bibliotek Arduino zmuszonych do pracy w środowisku ESP8266.

Wczoraj już sprawdziłem, że ulubiona biblioteka Timers.h działa bez problemu w kompilacjach pod ESP. Najważniejsze dla mnie to obsługa biblioteki  transmisji 433MHz, czujnika temperatury 18b20 i serwomechanizmów i one muszą wszystkie śmigać by poważnie myśleć o stosowaniu ESPów jako samodzielnych procesorów. Dodatkowo niezbędny będzie jakiś watchdog, i funkcja zapisywania dowolnych danych do EEpromu.

Skończyłem testowanie bibliotek transmisji 433MHz
Działają obydwie! Zarówno <RemoteSwitch>  i <RCswitch>.
Nadawanie wydawało się proste - to tylko odpowiednie wysterowanie pinu wyjściowego. I rzeczywiście poszło ale nie od razu. Zadeklarowałem w bibliotece port 4 (GPIO 4) jako dane nadajnika i cisza. Przełączyłem na 2 - działa i jeszcze dodatkowo widać transmisję na delikatnie migającym niebieskim LEDzie. Płytka pod lupę - oczywiście brak połączenia pinu 4 i 5 z płytką przejściową. Przy okazji wyjaśniła się też historia z pinem 13 - niby był lutowany ale pomiędzy modułem a płytką była mikroskopijna przerwa. Widać to było dopiero pod 40-krotną lupą z podświetleniem. Po przelutowaniu wszystkie piny zachowują się prawidłowo.

Test odbiornika jest trudniejszy bo nie pomyślałem o różnicy poziomów napięć pomiędzy odbiornikiem a ESP. Czytałem gdzieś że moduł ma zabezpieczone piny przed wyższym napięciem do wartości 5.8V. Powinien więc wytrzymać sygnał z odbiornika. Podłączam na krótko ESP z odbiornikiem CY15 433MHz  - monitor pokazuje kody odbierane z pilota. Bardzo ładnie. Zmieniam w programie port, kompiluję ....... BŁĄD DOSTĘPU DO MODUŁU.  I ciemna płytka nie reaguje na przycisk reset. Nic nie widać na monitorze. Uszkodzony moduł? No to chyba zarobiłem 18,50 - szkoda bo to jedyny moduł ESP-12F jaki posiadam.

Dla pewności odłączam zasilanie modułu, zdejmuję zworkę z pinu 0, resetuję konwerter i przeładowuję program. Odłączam oczywiście odbiornik 433 MHz i ostatnia próba. Zasilanie ... ożył i mruga LEDem na porcie 12. Więc jeszcze raz zworka, reset i próba wgrania. Jest, poszło. Może to przypadek ale na przyszłość powstrzymam się od testowania ESP napięciami większymi niż 3,3V.

Podsumowanie

Biblioteki
Timers.h  +++
rc-switch.h +++
RemoteSwitch +++

Nieźle jak na początek zabawy z ESP8266 więc cdn .................................







Brak komentarzy:

Publikowanie komentarza