Amb les entrades analògiques podem captar els senyals del món real (temperatura, velocitat, pes, cabal, etc) amb el nostre microcontrolador. Un senyal analògic pren diferents valors en el temps a diferència del senyal digital que és binari (OFF-ON). El microcontrolador té la capacitat de llegir senyals analògics fent aproximacions discretes a través de petits rectangles digitals:
Els microcontroladors acostumen a tenir un convertidor d'analògic a digital (ADC) amb el qual prenen un senyal analògic i el canvien a digital. Un ADC té dues característiques clau: la seva resolució, mesurada en bits, i els seus canals, o quants senyals analògics pot acceptar i convertir alhora.
L'ESP32 integra dos ADC de 12 bits (4095 valors) que admeten un total de 18 canals de mesura (pins analògics habilitats). Al mòdul “wroom 32”, són 16 pins analògics. L'API del controlador ADC admet ADC1 (6 canals, connectats a GPIO 32-36,39) i ADC2 (10 canals, connectats a GPIO 0, 2, 4, 12-15 i 25-27). Cal tenir en compte que l'ADC2 és utilitzat pel controlador Wi-Fi i, per tant, l'aplicació només pot utilitzar ADC2 quan el controlador Wi-Fi no s'ha iniciat.
Per aconseguir llegir els pins ADC del nostre microcontrolador amb MicroPython necessitarem la classe ADC del modul machine. Per llegir el senyal analògic fem servir el mètode read().
Un potenciòmetre és el tipus de component que podeu trobar, per exemple, en el control de volum d'un reproductor de música. Depenent de com el connectem pot tenir dues funcions diferents: connectant dues de les tres potes, actua com a resistència variable, un tipus de resistència que es pot ajustar en qualsevol moment girant el selector; amb les tres potes ben cablejades, es converteix en un divisor de tensió i pot donar diferents voltatges en funció de la posició del selector.
Tots els pins connectats al convertidor analògic a digital del vostre microcontrolador es poden utilitzar com a entrades analògiques, com per exemple els valors d'un potenciòmetre.
Quan el potenciòmetre es gira cap a l' esquerra , la fletxa apunta al pin GND , quan es gira cap a la dreta , la fletxa apunta al pin 3V3 . El pin central és el que utilitzem per llegir els valors.
Una fotoresistència (també coneguda com a fotocèl·lula) és una resistència dependent de la llum (LDR). Com el seu nom indica, aquests components actuen com una resistència, canviant la seva resistència en resposta a la quantitat de llum que hi cau. Normalment, les fotoresistències tenen una resistència molt alta a la foscor i una resistència molt baixa a la llum brillant.
Com que aquest sensor funciona com una simple resistència, no obtindreu valors de llum absoluts (per exemple, en lúmens). En comparació amb un nivell de tensió de referència (és a dir, els 3,3 V proporcionats per la ESP32) llegireu un valor menor o igual a Vref, reduït proporcionalment a la llum exposada a la fotoresistència. Amb el mòdul ADC de MicroPython, aquest valor oscil·larà entre 0 i 4095 (valor màxim de 12 bits) i el transformarem en un percentatge (entre 0% i 100%).
El DHT11 és un sensor de baix cost i poca precisió àmpliament utilitzat per mesurar la temperatura i la humitat de l'aire en aplicacions com ara estacions meteorològiques casolanes o sistemes de control d'hivernacles.
Normalment, ve en un encapsulat en una carcassa de color blau i té 4 pins, però a vegades també el podem trobar muntat sobre una placa amb només 3 pins. La distribució dels senyals als pins és la següent:
El pin de dades no cal que sigui ADC, pot ser qualsevol.
El pin de dades necessita una resistència de PULL UP de 10K per funcionar correctament. A l'encapsulat de 3 pins aquesta resistència ja està soldada a la placa, mentre que a l'encapsulat de 4 pins nosaltres hem d'afegir-la.
Pel que fa a la programació, per sort, per treballar amb aquest i molts altres sensors ja hi ha algú que ha preparat un mòdul o llibreria per tal de facilitar-nos la feina. De fet per al sensor DHT11 i DHT22 (de la mateixa família i una mica més precís) Micropython ja incorpora un mòdul de forma estàndard i, per tant, només cal que l'importem per poder-hi treballar.
Importarem la classe DHT11 del mòdul dht i crearem un objecte DHT11 passant el pin que utilitzarem al constructor. Els mètodes per llegir el sensor són els següents:
measure() : Es connecta amb el sensor i realitza una mesura
temperature(): Retorna el valor de temperatura mesurat, en graus centígrads.
humidity(): Retorna el valor d'humitat relativa mesurat, en percentatge.