És la connexió d’objectes físics (motors, LEDs, (actuadors) i sensors) mitjançant cables, combinats amb la programació per interactuar amb aquests objectes del món real per resoldre un problema.
Un microcontrolador (abreujat µC, uC o MCU) és un petit ordinador en un sol circuit integrat especialitzat a controlar equips electrònics, que inclou una CPU (unitat central de processament), una petita quantitat de memòria, unitats d'E/S (Entrada/Sortida) i acostuma a portar una memòria FRAM, NOR flash o una ROM per guardar-hi el programa.
Els microcontroladors van ser dissenyats per a aplicacions per a sistemes embeguts, en contraposició als microprocessadors utilitzats en els ordinadors personals per a aplicacions d'ús general. Gràcies a la seva mida i cost reduït, fan que siguin ideals per al control digital de molts dispositius.
Els microcontroladors tenen una sèrie de terminals (també anomenats pins o potes) que funcionen com entrades i sortides de senyals (dades) analògiques i/o digitals.
Les entrades permeten al microcontrolador percebre senyals i interpretar fenòmens a partir d'elles. Les sortides li permeten interactuar amb el món real a través dels circuits electrònics, en poder entregar un senyal de voltatge.
Els senyals analògics i digitals són dos mons completament diferents, però alhora estan estretament relacionats. Pensem, per exemple, en un termòmetre. Si tenim dos termòmetres, un analògic (d'aquells amb mercuri en el seu interior) i un digital, tots dos executen la mateixa tasca, mesurar la temperatura. No obstant això, la metodologia que utilitzen és completament diferent, així com la forma com presenten els resultats de les mesures.
El termòmetre analògic ens mostra la temperatura sobre la base del nivell que registra el mercuri dins d'un tub de vidre, on la temperatura dilata o comprimeix el mercuri. Els termòmetres digitals utilitzen semiconductors, les propietats dels quals varien en funció de la temperatura. A través d'un procés anomenat mostreig s'aconsegueix determinar la temperatura, la qual és projectada a l'usuari a través d'una pantalla.
Els senyals analògics són aquells on el voltatge varia en funció del valor del senyal. Per exemple, el sensor de temperatura LM335 és un sensor analògic. Això vol dir que podrem llegir la temperatura que aquest registra si mesurem el voltatge que està lliurant.
Els senyals digitals poden tenir 2 estats ben definits en un moment donat: HIGH i LOW, és a dir, encès o apagat. 1 ó 0. Quan es treballa amb senyals digitals no importa quant voltatge s'estigui aplicant, el microcontrolador només distingeix 2 estats, sigui encès o apagat.
Els senyals digitals estan basats en seqüències de pulsos a alta velocitat que permeten la comunicació entre dos o més dispositius. Són el principi bàsic dels ordinadors, telèfons, internet i la informàtica en general.
Quan treballem amb senyals analògics estem utilitzant nivells de voltatge; quan treballem amb senyals digitals utilitzem seqüències d'uns i zeros.
ESP32 és una família de microcontroladors de l'empresa Espressif Systems, són de baix cost, baix consum d'energia i incorporen comunicació sense fils Wifi i Bluetooth.
A més a més, compten amb un gran nombre de pins amb diverses funcionalitats per poder interactuar amb el món físic:
Programar i interactuar directament amb el xip o microcontrolador és una mica complicat, ja que no incorporen cap port USB per connectar el xip a l'ordinador, ni un sistema per connectar cables als pins; els xips estan pensats per anar incorporats en un circuit imprès.
Per aquest motiu molts fabricants han desenvolupat plaques de desenvolupament basades en el xip ESP32 que faciliten la seva programació i el prototipat. N'hi ha moltes de diferents i ens caldrà conèixer quin és el pinout de cada placa per conèixer quines són les funcions dels pins situats al llarg de les seves vores. La majoria d’aquests pins es poden programar per actuar com a entrada o sortida i no tenen cap propòsit fix, són els pins GP (general-purpose). Alguns pins tenen funcions extres i modes alternatius per comunicar-se amb maquinari més complicat i altres tenen un propòsit fix, proporcionant connexions per a coses com l’alimentació elèctrica.
Aquesta és la placa que utilitzarem per al prototipat físic, les funcions principals dels seus pins són:
22 pins d'entrada i sortida
22 pins amb sortida PWM
16 pins d'entrada ADC (Alerta! els pins ADC2 no tenen suport)
2 pins de comunicació I2C i 4 de comunicació sèrie UART.
10 pins de detecció capacitiva
Sovint és molt útil provar i programar els circuits en un simulador abans de muntar-los. En aquest curs utilitzarem el simulador Wokwi. La distribució i funcionalitats dels pins de la placa ESP32 que incorpora el simulador és molt semblant a la placa que utilitzarem per als muntatges físics, però amb algunes petites diferències en la disposició dels pins que haureu de tenir en compte. La distribució i funcionalitats dels pins d'aquesta placa són:
El llenguatge de programació Python es va desenvolupar per a sistemes informàtics com els ordinadors de sobretaula, ordinadors portàtils i servidors. Les plaques de microcontroladors com són més petites, senzilles i amb molta menys memòria, és a dir, no poden executar el mateix llenguatge Python que els seus germans grans.
Aquí és on entra MicroPython. Desenvolupat originalment per Damien George al 2014, MicroPython és un llenguatge de programació compatible amb Python desenvolupat específicament per a microcontroladors. Inclou moltes de les funcions de Python, i n’afegeix algunes de noves dissenyades per aprofitar els microcontroladors. Com per exemple el mòdul machine que és el que ens permet interactuar amb microcontroladors; aquest mòdul conté funcions i classes que ens permeten tenir accés directe al microcontrolador (pins, temporitzadors, ADC, SPI, I2C, etc.). Les principals classes i funcions que utilitzarem en aquest curs són:
La classe Pin: ens permet crear objectes per configurar els pins físics de la placa com a entrades o sortides.
La classe PWM: per configurar pins com a sortida analògica.
La classe ADC: per configurar pins per llegir dades analògiques.
La classe I2C: per treballar amb els pins del protocol de comunicació i2c.
La placa de proves, també coneguda com a protoboard o breadboard, és un suport on fer connexions que és molt útil a l’hora de fer prototips del circuit, ja que ens permet inserir components i tenir-los connectats a través de pistes metàl·liques amagades sota la seva superfície.
Per quins camins un electró arribarà a la meta?
Les resistències s'utilitzen per reduir el corrent que circula a través d'un circuit o component. Estan disponibles en una àmplia gamma de valors (en Ohms) que podem identificar a través del codi de quatre bandes de color que porten pintades. Les dues primeres bandes corresponen als dos primers dígits del valor de la resistència; la tercera banda és un multiplicador; i la quarta correspon a la tolerància. Cada color correspon a un determinat nombre, segons es mostra a la taula següent:
Per exemple verd-blau-groc-vermell seria 56 * 10^4 ohms = 56 * 10000 ohms = 560 kohms ±2%
Les resistències no tenen polaritat, es poden connectar en qualsevol direcció.
L'ús més habitual de les resistències és per evitar que els components del circuit o el microcontrolador rebin massa corrent i es facin malbé. Per exemple, quan utilitzem un LED hem de col·locar una resistència d'uns 330 ohms per evitar que aquest es fongui en poc temps, o per protegir el propi microcontrolador de rebre massa tensió.
Una altre aplicació de les resistències és per evitar el floating (soroll o distorsió) que es produeix en els pins d'entrada quan no hi ha res connectat. El floating pot, p.ex., donar un senyal de botó activat encara que ningú l'hagi premut. Hi ha dos tipus de disposicions: pull-down connecta el pin a terra, i per tant, en el cas del botó, quan ningú el pitgi la lectura serà 0, i pull-up connecta el pin a 3V3, i per tant quan ningú pitgi el botó la lectura serà 1. Algunes plaques com la Pico ja inclouen resistències programables connectades a cada GPIO, aquestes es poden programar perquè actuïn com a pull-up o com a pull-down, segons els requeriments del circuit.