Microcontrollori (MCU)

Page content

Microcontrollori – MCU MicroController Unit

Un micro-controllore (MCU MicroController Unit) è un piccolo computer che risiede in un singolo circuito integrato.


Un microcontrollore può essere inserito all’interno di un dispositivo oppure essere integrato in una scheda di prototipazione insieme a altri componenti e a delle periferiche di input/output programmabili: questo è il caso della piattaforma Arduino.

Analogie e differenze tra microcontrollori e computer

Che vuol dire che un microcontrollore è un piccolo computer?
E' piccolo perché ha dimensioni ridotte e perché, rispetto a un computer, ha una minore capacità di calcolo.
Un computer è un dispositivo che permette di utilizzare contemporaneamente diverse applicazioni e può essere programmato per svolgere funzioni diverse; un microcontrollore di solito viene utilizzato per realizzare un dispositivo hardware programmato per svolgere un compito specifico, per esempio:

  • dispositivi di segnalazione stradale (semafori)
  • impianti di domotica (smart home)
  • autoveicoli e treni
  • dispositivi elettronici di uso generale (usb key, lettori smart card)

Codice per Microcontrollori

Quando scriviamo un programma per un microcontrollore, spesso vogliamo che questo codice permetta al MCU di interagire con l’ambiente circostante e di compiere delle azioni.
L’azione più semplice che un MCU può compiere è quella di far lampeggiare un LED.

I/O o input/output

Per far lampeggiare un LED, il LED deve essere collegato al MCU.
Infatti i MCU hanno dei piedi (pin) che permettono al MCU stesso di comunicare con l’ambiente circostante: alcuni piedi (input pin) ricevono informazioni dall’esterno, altri trasmettono informazioni verso l’ambiente esterno oppure attivano dei dispositivi (output pin).


Questi piedini prendono il nome di GPIO pins, Generic purpose Input Output pins.
Per esempio per la scheda Adafruit Feather Huzzah il pinout della scheda è quello mostrato in figura:

Da Wiring alla IDE Arduino

Uno degli ambienti di sviluppo maggiormente utilizzati per scrivere codice per MCU è la Arduino IDE (Integrated Development Environment), che è stata derivata da Wiring, una piattaforma di prototipazione elettronica open-source, sviluppata a partire dal 2003 da Hernardo Berragan all’Interaction Design Institute di Ivrea.

Il diagramma di flusso di un programma (sketch) in Arduino è il seguente:

Ci sono due funzioni principali, setup() che viene eseguita per prima una volta soltanto, e loop(), che viene eseguita dopo setup e ripetuta un numero infinito di volte.

Arduino: LED blinking!

Torniamo al LED e vediamo in dettaglio come fare per farlo lampeggiare utilizzando un Arduino Uno e la IDE di Arduino.
Per prima cosa vanno effettuati i collegamenti fisici (wiring)

A questo punto possiamo passare a scrivere il codice.
Per prima cosa disegniamo il diagramma a blocchi del codice per far lampeggiare un LED


Vediamo adesso come possiamo scrivere il codice in uno linguaggio simil-macchina, chiamato pseudo-codice

setup() {
  set pin 13 as output
}

loop() {
  turn LED on
  wait 500ms
  turn LED off
  wait 500ms
}

Infine passiamo al codice vero e proprio, che scritto con la sintassi di Arduino (C/C++) diventa:

void setup() {
  // initialize pin 13 as output
  pinMode(13, OUTPUT);
}

void loop() {
  // turn LED on
  digitalWrite(13, HIGH);
  // wait 500ms
  delay(500);
  // turn LED off
  digitalWrite(13, LOW);
  // wait 500ms
  delay(500);
}

A questo punto non rimane che caricare lo sketch sul MCU e.. il LED inizierà a lampeggiare.

Adafruit ESP8266 Feather Huzzah

La scheda Adafruit ESP8266 Feather Huzzah è basata sul microcontrollore ESP8266 della Espressif che ha una scheda Wi-Fi integrata, per una panoramica della scheda e delle applicazioni specifiche si veda la pagina dedicata, Adafruit ESP8266 Feather Huzzah