Néhány szó az ESP8266 képességeiről és az ADC-ről

ESP8266, ESP32 chipek és az ESP-xx modulok. Programozási nyelvek, trükkök, hardware tippek.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: csabeszq »

A kerti öntöző projektemben a nano-val befuccsoltam (nodemcu web-szerver), mert kicsi volt benne a memória, ezért kipróbáltam, hogy fordítva működik-e. Lehetséges-e komplett ESP8266-ba helyezni a teljes logikát, ami a rendszerben volt: web interfész/időzítő/ADC-s szivattyú teljesítmény mérés/RF jel fogadás/I2C RTC/...

A legtöbb részt képes volt az ESP8266 önállóan is ellátni: a szoftveres I2C flottul megy (RTC), a web kiszolgáló stabil, az időjárás előrejelzést simán letölti, sőt NTP-vel az órát szinkronizálja, ha tudja a pontos időt, az RTC-t is beállítja, simán fogadja és dekódolja az RF jeleket. Egy projektben egy ESP8266 mindezt megcsinálja párhuzamosan.

Három esetet nem tudtam megoldani: a watchdog tragikusan működik, az ADC nem úgy ment, ahogy szerettem volna (lentebb részletezem) és kevés IO port volt. Egy 3.3V-os 8MHz-en futó Atmega328P-t csatoltam be IO portnak, hogy ne kelljen szint-illeszteni, ami kiegészíti I2C-n keresztül a hiányzó funkciókat.

A kérdés az ADC-vel kapcsolatban sokáig nyitva maradt: képes-e az ESP8266 50Hz-es jelet mintavételezni és abból effektív értéket számolni.
- a válasz igen és nem
- az ESP8266-nak egy ADC-je van (ahogy az Atmega328P-nek is), viszont nem tud multiplexelni több lábra, azt külön kell megoldani
- egy ADC mérés átlag 7-8000 órajelet vett igénybe 80 MHz-en, magyarul elvileg 10kHz-ig akár lehetne mintavételezni is
- meglehetősen pontosan mér, egyáltalán nem pontatlanabb, mint az Atmega328P
- ha fogok egy ESP-t, képes 50Hz-es szinuszos jelből effektív értéket számolni (50x50 minta másodpercenként)
- némi varázslással elindítottam egy timert 400us-enként, az hívta az analogRead függvényt, megbízhatóan mintavételezett
- viszont: ha ADC-zek, akkor a Wifi-ről le kell mondani, mert automatikusan bontja a kapcsolatot

Elsőre furcsán hangzik, hogy mi köze az ADC-nek a Wifi-hez és 2.5kHz-es mintavételezés miért eredményezi a kapcsolat eldobását. A Wifi a háttérben használja az ADC-t (talán jelerősség mérésre), tehát amikor hívogatom az ADC rutint, akkor a Wifi elől szívom el az erőforrást. A 2.5 kHz-es mintavételezéssel simán kiütöttem a wifi-t, azonnal bontott is. Ezt nem árt tudni.

Az ADC tehát működik, de másodpercenként 100 fölé már semmiképp ne menjünk. Lehetőleg módjával kell hívogatni, mintavételezésre semmiképp nem ajánlanám.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: Robert »

Az ADC-t az RF jelfeldolgozó egység használja (a szűkös adatlapban ha akarom beleérthető a félmondatába) :(.
Akkor érdemes az I2C részen a Arduino lapkát I2C slaveként felrakni és azon futtatni:
- ADC
- I/O bővítést
De lehet pl. a külső watchdogja is. Ha nincs I2C lekérés pl. 5 sec-ig, akkor az egyik kimeneti lába legyen az ESP RESETlábra kötve. Így az ESP chipen is megoldott...


Külső órából a DS3231 javasolt (Vcc: 3.0...5.5V), mert a DS1307-es tápfeszültsége 5V (4.5...5.5V)!
Külső PIR szenzor is lehet, csak a rajta levő feszstab kikötendő, mert a rajta levő BS0001 chip alapban 3.3V-s.
http://www.tavir.hu - a gazda :)
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: csabeszq »

Az Arduino lapkával nem tudtam igazából mit kezdeni, mert van rajta USB csatlakozó. A szintillesztést akartam megspórolni, mert egyszerűbb, ha egy jelszintet használok egy rendszerben. Ennek ára, hogy nem mehetek 8 MHz fölé, mert az Atmega328P ezt tudja 3.3V-on.

Arduinoval az a gond, hogy amint bedugom az USB csatlakozót, az ESP kiég, mert a VCC-n megjelenik az 5V. Inkább vettem egy DIP-es mikrovezérlőt, mert azon nincs USB, ahova minden vackot be lehet dugni. Tény, hogy egyszerűbb lenne az élet kész Arduino nano lapkával, de azért nem megoldás, hogy minden leég, ha bedugom az USB kábelt.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: Robert »

Pro Miniből van 3.3V@8MHz. Itt a soros oldalon f232/cp2102.
http://www.tavir.hu - a gazda :)
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: csabeszq »

Nézegettem a pro minit az oldaladon, már a kép alapján sem túl bizalomgerjesztő. Valahol a panel közepén van 2 lyuk, oda kellene bedugni az I2C csatlakozót. Legalább olyan macerás, mint a DIP-es Atmega328P (2 kapacitás (AREF/VCC) és reset logika).

Azt a 3 kapacitást és egy ellenállást simán fel lehet még egy próba panelre is varázsolni SMD méretben.
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: vargham »

Használunk néhány tucatos nagyságrendben 16 MHz-es 328-at 3,3 Volton. Ez valóban kívül van a specifikáción, mert az 3,3 Voltnál maximum 13,3 MHz, de eddig hiba nélkül működnek.

http://forum.arduino.cc/index.php?topic=213105.0
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Néhány szó az ESP8266 képességeiről és az ADC-ről

Hozzászólás Szerző: csabeszq »

Elkészítettem a watchdog-ot. 20 s-ig ha nem jön heartbeat. akkor resetel.

A 20s azért fontos, mert ha éppen programfeltöltés közben beleresetel, az nem kívánatos. Az OTA-t is átírtam, az hívogatja a heartbeat-et, viszont a sorosporti feltöltés még 921600 baudon is necces. 7-8 másodperc, ezért raktam be a 20-as limitet.

Nem egyszerű a külső watchdog. Azon is gondolkodtam, hogy figyelem az UART RX vonalat és ha a Nodemcu ad, akkor nem RESET-elek.
Válasz küldése