Archivi tag: making

BBC micro:bit Soil Moisture Sensor

Continuo con la pubblicazione degli strumenti per l’analisi dell’umidità del terreno, questa volta l’idea è quella di realizzare un dispositivo su cui è possibile alloggiare: sonda, micro:bit e batterie.
Il dispositivo è pensato per attività da svolgere con allievi di scuola elementare e media, pertanto ho creato un design interessante per gli allievi più giovani.

Ovviamente bisognerà poi creare un codice opportuno in modo tale che ci sia il minimo consumo di batterie e far si che l’ossidazione dei puntali della sonda non avvenga rapidamente, è opportuno quindi usare chiodi in acciaio inossidabile, nel caso di chiodi in ferro l’ossidazione potrebbe avvenire dopo qualche giorno.
Per questa sonda ho utilizzato chiodi da 80 mm.

Durante il corso:realizzare laboratori green con il Making e il Coding, mostrerò come realizzare il codice e come leggere remotamente da un secondo micro:bit, i dati rilevati dalla sonda.

Se desiderate replicare la struttura seguite il link sul mio profilo Thingiverse da cui potrete scaricare i sorgenti grafici per la stampa 3D.
Sono necessari poco più di due ore di stampa, è essenziale aggiungere i supporti di stampa.

Buono Making green a tutti 🙂

Arduino: stampare più funzioni sulla serial plotter

L’attività di progetto di questa mattina: progettazione di dispositivi elettronici che rispondono a diverse necessità per la salute umana: cura della persona, disabilità, sicurezza sul lavoro, strumenti medici/laboratorio, accessibilità dei luoghi pubblici, ecc…

Con mio piacere ne è nata un’intensa attività di ricerca che ha coinvolto l’intero gruppo classe. Molte le necessità e tra queste ne evidenzio uno, semplice, che riguarda la programmazione, che in più occasioni gli studenti affrontano durante le sperimentazioni e di cui mi sono reso conto di non avere documentato adeguatamente, ovvero: il plot di più funzioni su uno stesso piano cartesiano con Arduino.

Avevo mostrato in più occasioni come effettuare il plot di grandezze variabili nel tempo utilizzando la Serial Plotter dell’IDE di Arduino, uno degli ultimi articoli si riferisce alla realizzazione di uno strumento per la rilevazione di vibrazioni, un semplice sismografo realizzato con un sensore piezoelettrico.

Alcuni studenti questa mattina, si stavano cimentando nella progettazione di un guanto da utilizzare per la movimentazione di un braccio robot industriale della hyundai con l’obiettivo di simulare la movimentazione a distanza di sostanze chimiche pericolose. Nelle prime attività di ricerca si è manifestata la necessità di visualizzare su tre grafici diversi le componenti X, Y, Z dell’accelerazione fornite da un accelerometro connesso ad Arduino.

Come sicuramente saprete l’avvio della Serial Plotter avviene, così come per la Serial Monitor dal menù Tools. Ricordo che Serial Monitor e Serial Plotter non possono essere avviate contemporaneamente.

La Serial Plotter prende i valori che giungono dalla seriale (connessione USB) e li grafica su un piano cartesiano. I dati numerici vengono anche visualizzati nella parte in alto a sinistra della finestra della Serial Plotter.

I valori massimi e minimi rappresentati sull’asse Y vengono regolati automaticamente, mentre la dimensione dell’asse X è fissato a 500 punti e l’aggiornamento del grafico avviene ogni qual volta nel vostro sketch viene eseguita una Serial.println().

Ricordate inoltre di fissare il Baud Rate del Serial Plotter in modo che corrisponda a quello che avete indicato nel codice.

Per tracciare contemporaneamente forme d’onda è possibile agire in due modi:

inserendo uno spazio tra due istruzioni di stampa

1Serial.print(temperatura);
2Serial.print(" ");
3Serial.println(umidita);

oppure inserendo una tabulazione tra due istruzioni di stampa

1Serial.print(temperatura);
2Serial.print("\t");
3Serial.println(umidita);

In questo caso le due grandezze, temperatura e umidità, saranno rappresentate da due funzioni separate e tracciate contemporaneamente sullo stesso piano cartesiano.

A titolo di esempio consideriamo il mio post in cui mostravo come utilizzare un DHT11 e visualizzeremo sulla Serial Plotter le due grandezze fisiche temperatura ed umidità. Di seguito schema di collegamento, sketch e grafici.

1// Prof. Maffucci Michele
2// Visualizzazione della pressione e dell'umidità rilevata da un DHT11
3// sulla Serial Plotter
4// 16.09.2021
5 
6// Libreria DHT
7#include "DHT.h"
8 
9// Pin digitale di arduino connesso al DHT
10#define DHTPIN 2
11 
12// tipo del sensore: DHT 11
13#define DHTTYPE DHT11
14 
15DHT dht(DHTPIN, DHTTYPE);
16 
17void setup() {
18  Serial.begin(9600);
19  dht.begin();
20}
21 
22void loop() {
23  // Attesa di 1 millisecondo prima di fornire la misura.
24  delay(1);
25 
26  // Lettura dell'umidità
27  float h = dht.readHumidity();
28  // Lettura della temperatura in gradi Celsius
29  float t = dht.readTemperature();
30 
31  // Verifica se le si presenta un errore di lettura (e riprova nuovamente)
32  if (isnan(h) || isnan(t)) {
33    Serial.println(F("Impossibile leggere dal sensore DHT!"));
34    return;
35  }
36 
37  // Stampa del valore dell'umidità
38  Serial.print(h);
39  Serial.print(' ');
40  // Stampa del valore della temperatura
41  Serial.println(t);
42}

Il plot delle due grandezze è:

Per completezza realizziamo un semplice sketch che permette di rappresentare 3 funzioni sinusoidali sfasate di 90 gradi una rispetto all’altra con ampiezze diverse:

1// Prof. Maffucci Michele
2// Visualizzazione di tre funzioni siusoidali
3// di ampiezza diversa e sfasate di 90 gradi
4// 16.09.2021
5 
6void setup() {
7  Serial.begin(9600);
8}
9 
10void loop() {
11 
12  // M_PI è la macro definita nell'header math.h
13  // che definisce il pi greco che ha il valore di:
14  // 3.14159265358979323846
15  for(int i = 0; i < 360; i += 2) {
16    float ValoreY1 = 1 * sin(i * M_PI / 180);
17    float ValoreY2 = 2 * sin((i + 90)* M_PI / 180);
18    float ValoreY3 = 4 * sin((i + 180)* M_PI / 180);
19 
20    Serial.print(ValoreY1);
21    Serial.print(' ');         // deve essere stampato spazio ' ' o  tab '\t' tra due valori.
22    Serial.print(ValoreY2);
23    Serial.print(' ');         // deve essere stampato spazio ' ' o  tab '\t' tra due valori.
24    Serial.println(ValoreY3);  // l'ultimo valore deve avere un ritorno a capo
25 
26    delay(1);
27  }
28}

Buon Coding a tutti 🙂

micro:bit steering wheel

Sto realizzando una serie di attività didattiche in cui utilizzare micro:bit come controller per giochi realizzati con il Blocks Editor, Scratch 3 e per controllare remotamente alcuni robot.

L’idea, molto semplice è stata quella di realizzare un semplice volante stampato in 3D su cui disporre un involucro che ospita BBC micro:bit e il pacco batterie di alimentazione della scheda. Il video in allegato mostra la prima versione del volante micro:bit multiuso. Per chi avesse necessità condivido i file sorgenti per la stampa 3D.

In fase di progetto un controller più evoluto che ospiterà scheda Arduino, pulsanti ed altri dispositivi elettronici.

Per chi fosse interessato condivido i sorgenti grafici per la stampa 3D che possono essere prelevati su Thingiverse.

Buon making a tutti 🙂

BBC micro:bit – funzioni

Sto svolgendo in questi giorni il corso sulla didattica laboratoriale e nelle giornata di ieri ho svolto un approfondimento sull’uso delle funzioni con il MakeCode editor di micro:bit che rendo pubblico su questo sito.

NOTA. Gli esempi in questo post hanno il solo scopo di mostrare l’utilizzo delle funzioni (chiamata di una funzione, passaggio per valore, restituzione di un valore da una funzione, ecc…) e non quello di risolvere un specifico problema, pertanto gli esempi potrebbero essere realizzati in modalità sicuramente più efficiente.

Le funzioni con BBC micro:bit

Una funzione consente di creare una porzione di codice che possiamo riutilizzare più volte nel nostro programma, quindi invece di copiare lo stesso codice in molte sezioni del programma, possiamo semplicemente utilizzare un unico blocco funzione da utilizzare all’interno del nostro codice tutte le volte che ci necessita.

Una funzione è definita dal suo nome e dal corpo della funzione che ospita tutte le istruzioni.

La funzione ha un nome univoco e non può essere costituita da parole staccate tra loro. E’ utile assegnare alle funzioni nomi che specificano cosa fa la funzione, ad esempio “calcoloVolume”, “calcoloArea”, “distanzaOstacolo”, “impostaLed”, “displayOn”. Si consiglia inoltre di adottare una notazione camel case (testo a cammello), ovvero scrivere parole composte o frasi, come il nome di funzioni, unendo tutte le parole tra loro, ma lasciando le loro iniziali con lettera maiuscola, in questo modo viene meglio decodificato da un essere umano il significato del nome composto. E’ buona regola adottare una strategia di questo genere anche per il nome delle variabili.
La prima lettera della frase può essere maiuscola o minuscola, tendenzialmente si preferisce usare la lettera minuscola.

Il corpo della funzione è il codice all’interno del blocco funzione, quello che viene chiamato body.

Continua a leggere

Convegno: Metodologie didattiche innovative Making Robotica e Dobotica Educative

Nella giornata di domani, 30 Marzo, dalle 9.30 alle 17.00 parteciperò alla: Giornata di studio per la scuola sui temi del Making, della Domotica e della Robotica Educative.
Rappresenterò il mio istituto, l’ITIS G.B. Pininfarina di Moncalieri e il FutureLabs di Moncalieri. Il mio intervento previsto dalle 10,30 alle 11,00, avrà come titolo: “Didattica e IOT: l’intelligenza delle cose”, parlerò di making a scuola e “del futuro prossimo venturo” della didattica laboratoriale dal mio punto di vista. L’evento, in diretta streaming su YouTube vuole essere anche il momento per l’inaugurazione della rete nazionale: Robot School che ha tra i suoi obiettivi:

…creare, promuovere e sostenere, tramite l’attuazione delle misure previste dal PNSD, un sistema sinergico tra scuola, agenzie educative, enti, associazioni e tutti gli attori della comunità educante, diretto a favorire la più ampia diffusione dei processi di innovazione digitale e di didattica innovativa condividendo i principi e gli obiettivi dell’innovazione metodologico-didattica e digitale e ricercando costantemente l’incontro e la collaborazione con altre istituzioni scolastiche presenti su tutto il territorio nazionale, al fine di creare sempre maggiori sinergie e moltiplicare l’impatto della sperimentazione…

Rete capofila della rete: Liceo Scientifico “Leonardo da Vinci” Floridia (SR).

Programma della giornata:

    • 9.30 – 10.00  Saluti istituzionali – relatori on. Lucia Azzolina (ex Ministro Pubblica Istruzione), dott. S. Suraniti  (Direttore – USR Sicilia) , dott. N. Neri Serneri (Dirigente AT Siracusa)
    • 10.00 – 10-30 Presentazione del progetto – relatori prof. M. Pisani (Dirigente Scolastico Liceo L. Da Vinci ), prof.ssa V. Martorino (referente Progetto Robot School)
    • 10.30- 11.00  Didattica e IOT : l’intelligenza delle cose –relatore prof. Maffucci (Future Lab Pininfarina di Torino)
    • 11.00 -11.30  “ Innovazioni tra Making ed IoT  ” – relatore prof.  F. Piana (vincitore Premio Scuola Digitale)
    • 11.30-12.00  “La tecnologia nello spazio : prospettive e scenari futuri – relatore ing.  Farina (Microgravity Research Center – Brussels)
    • 12.00-12.30 – Saluti del dirigente del Future Lab di Gallarate – prof. G. Martino
    • STEM : Tinkering, IoT e Robotica Educativa” – Proposte formative e buone pratiche dal FutureLab – relatori prof. M. Sabella, V. Belloni (Future Lab di Gallarate)
    • 12.30-13.00 -“Spazio Domande e Contributi”
    • 13:00 – 14:30 Pausa
    • 14.30 – 15.00 Strategie e processi di ragionamento durante la programmazione robotica: riflessioni teoriche ed empiriche”relatori Edoardo Datteri e Gilda Bozzi – (Università Milano Bicocca- coordinatore del Laboratorio di Robotica per le Scienze Cognitive e Sociali)
    • 15.00- 15.30 Pepper recita Dante – Buone pratiche nella robotica umanoide  – relatore prof R. Delle Monache (Future Lab Volta – Pescara)
    • 15:30 -16.30 Workshop Immersivo: “Umanoidi e Disabilità”, relatori dott. G. Pioggia , dott.ssa Flavia Marino (CNR Messina, Istituto Marino)
    • 16.30-17.00 -“Spazio Domande e Contributi”