Cos'è un microcontrollore?
Il microcontrollore è un dispositivo estremamente versatile, sulla sua base è possibile realizzare un'infinità di dispositivi elettronici diversi, utili o inutili. Qualsiasi apparecchiatura che abbia alcune impostazioni, modalità o automazione (lavatrice, microonde, multicucina ...), alcuni componenti dell'auto, macchine CNC, semplici gadget e così via, funziona sotto il controllo di microcontrollori.
Cosa rende microcontrollore
così potente e versatile? In fondo, infatti, può fare solo tre cose*:
- Misurare la tensione su un pin.
- Tensione di uscita dal pin.
- Può essere programmato.
* - il microcontrollore può anche avere una propria interfaccia wireless, ma questo è già un caso speciale.
Questo è solo il punto, che è sufficiente per la decisione di tutti i problemi concepibili e inconcepibili. Il microcontrollore può controllare qualsiasi carico esterno, pulsanti di polling/manopole/encoder/tastiere/joystick, può funzionare con quasi tutti i sensori, comunicare con qualsiasi microcircuito di terze parti, visualizzare informazioni su un display, incluso un touch screen, essere controllato tramite Internet da qualsiasi parte del mondo e molto altro ancora. La cosa più importante è che tutto questo può funzionare in qualsiasi combinazione ed essere programmato in un numero enorme di modi, ovvero un piccolo microcircuito può diventare il cuore di un numero infinito di dispositivi e progetti elettronici.
Un microcontrollore è un microcircuito programmabile altamente sofisticato, l'analogo più semplice di un computer, o meglio un'unità di sistema (senza alimentazione). Il microcontrollore funziona da solo, può eseguire un semplice sistema operativo, può persino avere accesso a Internet e possiamo collegare dispositivi di input, sensori, display e altri dispositivi
ad esso.
All'interno di ogni microcontrollore sono presenti diversi blocchi hardware, tutti interconnessi:
- CPU (processore) - è responsabile del funzionamento di tutti gli altri blocchi, li collega tra loro. Si compone di una dozzina di elementi (insieme di unità di calcolo, ecc.). Un analogo è un processore per computer.
- La memoria flash - è una memoria di sola lettura (ROM). Memorizza il codice eseguibile del programma, può anche memorizzare dati statici (immagini, pagine web, testi, tabelle con numeri, ecc.). Non cancellato dopo il ripristino dell'alimentazione. Un analogo è un disco rigido del computer.
- La memoria SRAM - è una memoria ad accesso casuale (RAM). Memorizza i dati che cambiano durante il funzionamento del programma (risultati di calcolo intermedi, valori variabili, dati ricevuti da dispositivi esterni, ecc.). Azzerato dopo il ripristino dell'alimentazione. Un analogo è la RAM di un computer.
- GPIO (General Purpose Input-Output) - input-output per uso generico. Misura il segnale digitale applicato al pin o lo emette dal pin. Pin GPIO che chiameremo pin digitali.
- ADC (ADC, convertitore analogico-digitale) - misura la tensione applicata al pin, un segnale analogico, e lo trasferisce al programma. Questi pin sono chiamati pin analogici.
- DAC (DAC, convertitore digitale-analogico) - emette la tensione specificata dal pin (segnale analogico).
- Timer (contatore) - conta i cicli del processore: Consente di misurare il tempo con una precisione molto elevata (fino a nanosecondi). Spesso viene utilizzato un timer per generare un segnale PWM sui suoi pin, questi sono etichettati come PWM.
- Watchdog - questo blocco consente di riavviare l'MK se si blocca, nonché di uscire dalla modalità di sospensione.
Interfacce di comunicazione - necessarie per la comunicazione con dispositivi esterni, ad es. per lo scambio dati (ricezione valori dal sensore, invio dati via radio, ecc.). In effetti, l'microcontrollore
può riprodurre qualsiasi interfaccia di comunicazione utilizzando GPIO, ma questo sarà piuttosto costoso per il processore. Pertanto, alcune interfacce sono implementate separatamente e funzionano in modo indipendente, scambiando dati già pronti con il CPU. Interfacce più popolari:
- UART - comunicazione con un dispositivo esterno. Su un filo trasmette, sul secondo - riceve. Può funzionare solo in trasmissione o solo in ricezione, utilizzando un filo. Nomi pin: RX(Receive) - ricezione, TX(Transmit) - trasmissione.
- I2C - è un bus di indirizzi, puoi collegare fino a 128 dispositivi contemporaneamente con solo due fili. Nomi pin: SDA (Serial DATA) - linea dati, SCL (Serial CLOCK) - linea di sincronizzazione.
- SPI - Puoi collegare tutti i dispositivi che vuoi, ma ognuno richiede un segnale logico (pin) da selezionare. Richiede due fili per la trasmissione unidirezionale o tre per lo scambio dati (ricezione e trasmissione simultanee). La più veloce delle interfacce elencate. Nomi pin: MOSI (Master Output Slave Input) - una linea dati dall'microcontrollore a un microcircuito esterno, MISO (Master Input Slave Output) - una linea dati da un microcircuito esterno all'microcontrollore, SCLK (Serial CLOCK) - linea di sincronizzazione.
Pinout.
Come probabilmente avrai capito, un microcontrollore è un microcircuito con un mucchio di pin. Ogni pin ha la sua funzione, in particolare i blocchi GPIO e le interfacce di comunicazione hanno i propri pin separati. Per risparmiare spazio e ridurre il numero di pin del microcircuito, i produttori combinano quasi sempre diverse funzioni su un pin. Per capire dove collegare l'hardware esterno, è necessario guardare l'uscita del microcircuito o della scheda: questa è un'immagine che mostra le funzioni di tutte le uscite dell'MK o delle uscite della scheda. Ad esempio, ecco i pinout semplificati per le schede Arduino Nano e Wemos Mini:

- Non esiste una numerazione GPIO diretta, tutto è diviso in porte e pin.
- Sulla scheda pin GPIO, sono contrassegnati come Dnumero, Anumero, e nel programma possiamo riferirci ad essi con questa numerazione: I pin GPIO etichettati D (D0-D13) sono accessibili per numero: D2 o solo numero 2. I pin GPIO etichettati come A (A0-A5) sono accessibili dalla etichetta
sulla scheda: A2 e A2. Inoltre, la numerazione dei pin A continua la numerazione dei pin D nell'ordine, ovvero A0 è 14, A1 è 15.. A5 è 19.

- Esiste numerazione GPIO diretta, con questi numeri puoi fare riferimento ai pin nel programma come numeri: GPIO5 o solo numero 5.
- Sulla sceda, i pin sono contrassegnati da Dnumero. Questa numerazione non è la stessa dei numeri GPIO, ma può anche essere utilizzata per fare riferimento ai pin nel programma: D1 e lo stesso pin GPIO5 o solo 5 come il numero GPIO.
Quasi tutte le schede compatibili con Arduino hanno un LED di "debug" collegato a uno dei pin.
