Oggi ci contriamo sui devices su cui andremo a lavorare. Per cominciare dobbiamo capire innanzitutto come funziona un sensore. Hai mai provato a considereare come funzioni un sensore? Traforma alcune misure fisiche in un dato elettronico. Come? Praticamente abbiamo un segnale che può essere di diversi tipologie che viene convertito in informazione digitale che possiamo andare ad usaer per fare della computazione.

Abbiamo anche una sacco di diversi sensori che possono venire distribuiti in diversi formati a seconda di che cosa dobbiamo andare a fare. La discriminanz maggiore è che alcuni sono orientati verso la prototipazione altri invece sono orientati per il deployment, che magari non più hot swappable ma devono essere saldati.

Ho anche un sacco di attuatori: pistoni, motori, relé, cambi, … qualsiasi cosa davvero.

Nel mondo IOT ci sono davvero un sacco di device che possiamo andare ad usare come brains:

Tutti questi sono boards differenti per IOT che hanno caratteristiche differenti: raspberry, arduino, isp, … veramente di tutto e poi ce ne sono di identici che però hanno un forma factor diverso! Tutto dipende da che cosa dobbiamo andare a fare essenzialmente.

Che sfide abbiamo: sono dispositivi piccoli, tipicamente battery powered. Dobbiamo tenere a mente che il codice ha bisogno di essere ottimizzato quanto più possibile perché questo vuole dire: consumare meno corrente, avere una batteria che dura di più e alla fine avere un device che necessità migliore manutenzione. Dobbiamo anche fare code squeezing per cercaer di andare risparmiare anche spazio sul device.

Che board andiamo ad usare? Noi useremo un sacco le bread board. Micro controllers non hanno un sistema operativo vero e proprio e praticamente noi scriviamo il programma, flashiamo tutto dentro dentro la board e quello esegue il codice appena lo accendi. Pratcamente fa runnare il binario e basta, senza bisogno di compilare o fare altro, questo perché praticamente fai tutto sul tuo computer e poi flashi tutto. Compili sul computer facendo targetting dell’architettura della board.

Sulle board praticamente ho una linea blu in cui condivido tutto il segnale, idem con la linea rossa. In tutti gli altri punti invece comunico in maniera verticale.

Lezione 3

Fa vedere alcuni led e come funzionano e poi praticamente faremo laboratorio domani in teoria.

Praticamente per fare andare un led abbiamo una setup function e poi una funzione loop che runna sempre essenzialmente.

Praticamente andiamo a comunicare con serial comunication e lo usiamo anche per fare debugging. Alla fine mi trovo con una roba del genere:

void setup() {
	Serial.begin(9600); # praticamente la velocità a cui la board e vscode fanno r/w
	serial.println("Example number 2"); # hello world che andiamo a vedere sulla console
}
...
void loop(){
...
analogWrite(LED_PIN,1)
}

Quale massimo valore possiamo dare? Dipende dalla massima risoluzione dei pin della board. Potrei dover andare a far mapping tra i valori massimi che potrei andare ad avere e quelli possibili diciamo in termini di pin. Questo lo vado gestire con la funzione map:

void loop() {
...
int l = map(value, 100, 700, 255, 0);
}

Questi valori si linkano come segue: