Nello scorso appuntamento ci siamo occupati di comprendere cosa voglia dire iniziare la prototipazione in ambito IoT. Inquadrare le specifiche tecniche e progettare in maniera chiara fin da subito, significa spendere del tempo per fare attività di brainstorming, ma il risultato che si ottiene è la comprensione totale di quanto si desidera raggiungere. Chiariti gli obiettivi, è fondamentale focalizzare la propria attenzione sugli strumenti. Quali sono quelli più idonei? Come si possono scegliere? Dove posso trovarli? Come li metto in relazione tra loro? In questo articolo vedremo uno studio specifico sulle schede di prototipazione rapida, la scelta dei sensori ed il loro interfacciamento. Siete pronti?
INTRODUZIONE
Fare prototipazione rapida utilizzando strumenti e tecnologie, oggi ben diffuse e mature, significa innanzitutto lavorare con dati digitali che vanno opportunamente processati. Ciò implica analizzarli, elaborarli e poter proporre in uscita dal nostro sistema un qualche risultato che sia verificabile, misurabile, ripetibile ed accurato. È facile immaginare che queste funzioni siano integrate all'interno di un dispositivo e realizzate tramite circuiti. Ma come deve funzionare esattamente? Come può funzionare? Quali sono le differenze tra le varie implementazioni possibili? Che tipo di logica deve poter gestire il nostro componente? Rispondere a domande di questo tipo è molto più importante di quanto non si pensi perché le risposte influenzano notevolmente le prestazioni attese e i risultati finali.
MICROPROCESSORE VS MICROCONTROLLORE
La prima esigenza è sicuramente quella di gestire i dati. È importante riprendere i concetti di microcontrollore e microprocessore ed estenderli in maniera tale da fornire un quadro informativo più chiaro che consenta di distinguere tra processori, controllori e DSP. Soprattutto per chi è alle prime armi, probabilmente ci sarà un po' di confusione all'inizio sulla distinzione tra queste entità. Il microprocessore è un dispositivo integrato che funziona grazie ad una programmazione ben precisa, si impostano una serie di istruzioni che vanno eseguite in sequenza per effettuare una specifica operazione o una serie di operazioni sui dati. In pratica, la programmazione è la chiave per l'elaborazione dei dati stessi. Il microprocessore è connesso ad una memoria nonché ad una serie, più o meno numerosa, di dispositivi esterni, i quali servono a fornire dati in ingresso oppure proporre gli stessi in uscita. Questa struttura è tipica di un'unità di elaborazione. Esistono componenti circuitali il cui scopo si esplica spesso all'interno di sistemi integrati per controllo e monitoraggio delle funzionalità di macchinari o di motori. In questo caso parliamo di microcontrollori che sono, quindi, microprocessori dedicati espressamente al controllo ed è per questo che vengono chiamati microcontrollori. Le grandezze sulle quali sono chiamati ad operare non sono necessariamente solo digitali ma possono essere anche analogiche. Ecco per quale motivo spesso integrano, al loro interno, un multiplexer, un convertitore analogico digitale (ADC), un convertitore digitale analogico (DAC), ed una serie di circuiti di controllo per pilotare attuatori all’uscita. I DSP, ovvero Digital Signal Processor, sono dispositivi integrati molto simili, dedicati espressamente all'acquisizione dei segnali e possono essere impiegati per l'elaborazione dei segnali stessi. I DSP sono considerabili come un caso speciale di sistemi integrati che utilizzano microprocessori e che vengono specificatamente indicati soltanto quando c'è da fare elaborazione di segnale. Le differenze non sono soltanto funzionali, anzi, esse derivano da una diversa dotazione hardware. Un microprocessore tipicamente è in grado di comunicare con memorie di vario tipo attraverso l'utilizzo di bus di indirizzi, bus dedicati allo scambio di dati ed anche bus di controllo. Non solo, perché l'interfacciamento avviene tipicamente anche con porte di ingresso e uscita.
L'architettura di un microprocessore prevede al suo interno tre unità fondamentali distinte:
- ALU, ovvero l'Arithmetic Logic Unit, l'unità centrale che esegue le operazioni aritmetiche.
- Register Array, un insieme di elementi di memoria che vengono utilizzati durante l'esecuzione dei programmi per memorizzare dati temporanei oppure per salvare informazioni di rilevanza. Il fatto che la memorizzazione sia temporanea può dipendere dalla specifica applicazione o dall'utilizzo che si sta facendo del microprocessore in quello specifico momento.
- Control unit, ovvero l'unità deputata al vero e proprio processamento delle istruzioni, alla temporizzazione ed alla gestione dei segnali di controllo per il trasferimento dei dati verso l'interno o verso l'esterno.
INIZIAMO CON I MICROCONTROLLORI
Cominciamo ad addentrarci nel merito delle schede per la prototipazione rapida e focalizziamoci su Arduino, in particolare sulla scheda Arduino Uno. Questa versione della celeberrima scheda è basata su un integrato, l'ATMega328. Si tratta di un microcontrollore a 8 bit che può funzionare con clock a 16 MHz, le cui specifiche tecniche e caratteristiche funzionali sono riassunte nella seguente tabella:
Tensione operativa | 5 V |
Pin di I/O digitali | 14 |
Pin digitale di I/O con PWM abilitato | 6 |
Ingressi analogici | 6 |
Corrente DC per ciascun pin di I/O | 20 mA |
Corrente DC per il pin a 3.3 V | 50 mA |
Flash Memory | 32 kB (ATmega328P) |
SRAM | 2 kB (ATmega328P) |
EEPROM | 1 kB (ATmega328P) |
Velocità (Clock) | 16 MHz |
LED_BUILTIN | 13 |
Lunghezza | 68.6 mm |
Larghezza | 53.4 mm |
Peso | 25 g |
A chiunque utilizzi Arduino come primo approccio alla programmazione ed alla sperimentazione, la scheda, nella sua veste grafica, risulta essere sufficiente. Tutti coloro che, invece, sono un po' più smaliziati o esperti, hanno bisogno di saperne di più. Come sono realizzate le interconnessioni? Qual è lo schema elettrico? In definitiva, quello che si aspettano di vedere è questa rappresentazione:
Di questa rappresentazione sono fondamentalmente importanti tre sezioni, ovvero:
- quella in blu che rappresenta la semplice interconnessione tramite interfaccia seriale emulata e che è accessibile e resa disponibile grazie all'USB;
- la sezione identificata con il verde rappresenta proprio il microcontrollore. Un integrato che si presenta come un componente con dei pin di interconnessione, che espone diverse interfacce, ovvero collegamenti funzionalmente dedicati. La differenza tra un pin e l'altro non è evidente ad una prima ispezione ma lo è nel momento in cui si va a guardare come sono state effettivamente realizzate le interconnessioni. Saper leggere uno schema elettrico è importante perché, quando si realizza un prototipo, bisogna realizzare uno schema che descriva il proprio circuito ed il proprio progetto;
- l'ultima sezione è quella che rappresenta i pin di interconnessione, le sezioni dell'interfaccia. Quella in arancione è la sezione grazie alla quale Arduino riesce ad entrare in comunicazione con il mondo. È importante capire quanti sono questi pin, che funzionalità hanno, e, tra l'altro, anche cosa vuol dire PWM.
Ogni microcontrollore lavora utilizzando un set di istruzioni, ciascuna scritta in linguaggio macchina. Per semplificare il compito della programmazione, come alcuni di voi sicuramente sapranno, è stato codificato un linguaggio di basso livello noto come assembly, in cui le istruzioni sono date in formato elementare riconducendo tutto a poche semplici istruzioni. Il vantaggio di un linguaggio di alto livello sta prevalentemente nella codifica, ovvero nel fatto che il progettista, il programmatore o lo sviluppatore, possano esprimersi in modo più naturale. Un linguaggio di basso livello è, altresì, più vicino a quello parlato dalla macchina. È importante anche sapere che [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 5921 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Iniziate a parlare di quanto sopra si rischia di dover ridire le stesse cose, si perché quanto detto e proprio ciò che bisogna fare per un qualsiasi progetto per quanto semplice o compreso che sia. Per gli addetti ai lavori sono cose scontate, un progettista, deve essere interaggente sia col l’hardware che con il software, vanno a braccetto non so può pensare l’uno senza che non venga investito l’altro obbligatoriamente, da qui tutti i componenti necessari per modellare il progetto, interfaccia comprese.
E come nella conclusione dell’articolo, ideale mettere in pratica quanto detto.
Per mio modesto parere questo articolo è un’ottima disanima che potrebbe essere molto utile per chiunque voglia iniziare a darsi da fare con il mondo dell’elettronica artigianale e non solo.
Non tutti sono al corrente di quanto descritto qui, quindi penso che sia utile per iniziare ad inquadrare meglio il vasto mondo di dispositivi, di software e metodi che si possono sfruttare.
Altrimenti un neofita rischia di annegare subito in un oceano di informazioni.