Dziś był kolejny ciąg zabaw z ESP8266. Najpierw podłączyłem do niego, poprzez I2C (och, na jednej parze pinów kilka czujników, mniam ;) ), czujnik BMP180 (czyli czujnik ciśnienia atmosferycznego). Czujnik działa od strzału, biblioteka micropython-bmp180 również działa od strzału, jest OK. Trzeba tylko pamiętać że BMP180 domyślnie zwraca wartość w pascalach, a ja chciałem hPa (czyli do wynik trzeba podzielić przez 100).
Później próbowałem powalczyć ze wskazaniami czujnika ruchu (PIR). Tutaj poszło gorzej… nie udało mi się go jeszcze zmusić do sensownych wskazań. W czasie walki znalazłem info że ten czujnik działa najlepiej z napięciem bliskim 5V, a ja cały układ mam na razie na 3.3V. No dobra - przestawiłem zasilanie na 5V, podpięłem zasilanie do układu poprzez LM1117, uruchomiłem - nie udało się zbootować, zaczęło się w kółko restartować. No dobra, zapomniałem filtrować wejście i wyjście z LM1117 - dwa kondensatory, zgodnie z notą katalogową: 10µF, 100nF. Boot: znów się restartuje. Zacząłem się zastanawiać: skoro kondensatory są, to może całość za dużo prądu pobiera? Zajrzałem do noty katalogowej ESP8266, ale to w najgorszym momencie pobiera 200mA, a LM1117 ma wydajność około 800mA, więc to nie to.
Ale spróbowałem jednak odpiąć jeden z czujników (padło na DHT22), i całość wstała… wot, ciekawostka. Spróbowałem uruchomić pomiar - wywaliło się, bo nie znalazło czujnika DHT22 ;) Poprawiłem skrypt żeby się nie wykładał, spróbowałem uploadu - restart o_O Że co? Trochę się pobawiłem, pokombinowałem, okazało się że albo mam walnięte kondesatory, albo coś mocniej szumi - dałem mocniejsze kondesatory (33µF, 470nF) koło LM1117 i problemy z zasilaniem się skończyły. Wgrywam znów poprawiony skrypt - OSError 28 (no space left on device). Że co? Okazało się że chyba przez te restarty prawie całą dostępną przestrzeń zapisały pliki których nazwy zaczęły się składać z samych zer binarnych, których nie dało się usunąć ani nic z tym zrobić :( Trzeba było przeflashować układ. Z tym że po flashu nic się nie zmieniło… Że co? ;) OK, kolejny krok do zapamiętania: przed flashem najpierw wyczyść całość (komenda do esptool.py: erase_flash
), znów flash - tym razem było dużo lepiej, moje pliki zniknęły, ale te z zerami binarnymi też. Uf :)
Wgrałem od nowa swoje pliki (w trakcie wcześniejszych zabaw zmieniłem zasilanie do wersji 3.3V bez LM1117, teraz podpiąłem całość znów na 5V + LM1117), i całość śmiga już ładnie na zasilaniu 5V + LM1117 -> 3.3V dla ESP8266, a czujnik PIR ma swoje 5V.
Zajęło to nieco czasu, i PIR ciągle nie wskazuje mi tak jakbym chciał, ale czegoś nowego się nauczyłem: nie ufaj notom katalogowym - lub chińskim kondensatorom :P