EduRobot Frisbee – Come realizzare la versione in cartone ed usarla a scuola

E’ possibile costruirne un kit di robotico a basso costo con materiali di recupero che abbia valenza didattica?

Come sapete nel mio caso la risposta è sì 🙂

Ho più volte proposto su queste pagine soluzioni di kit robotici che potessero essere sviluppate da colleghi insegnanti che, pur non avendo competenze elevate di informatica ed elettronica, fossero in grado di realizzare con semplicità, attività di robotica con i loro studenti. Recentemente ho svolto due edizioni del corso in Webinar: “Creare un kit robotico a basso costo”, dove ho sviluppato soluzioni con diverse tecnologie. Nell’ultima edizione ho presentato EduRobot Frisbee costruito con materiali diversi per far fronte ad ogni disponibilità economica della scuola. In questi giorni ne sto espandendo le funzionalità e per chi desiderasse tutti i progetti ed una proposta didattica è possibile seguire il progetto su Patreon.

P.S. Per i colleghi che hanno in passato seguito seguito il mio corso in Webinar è sufficiente che mi contattino direttamente via mail per avere tutti gli aggiornamenti del kit.

Grazie per tutti coloro che vorranno sostenere il mio lavoro.

Buon Making a tutti 🙂

Esercitazioni di base di Arduino – visualizzazione luminosità LED mediante una barra di avanzamento su display 16×2


Continuo nell’aggiornamento delle esercitazioni di base per gli studenti di 3′ dell’ITIS (Elettronica ed Automazione) e per gli utenti che iniziano con Arduino.
Utilizzeremo un display LCD 16×2 di tipo I2C su cui visualizzeremo mediante una barra di avanzamento, la quantità di luminosità impostata per il LED, mediante un potenziometro.

Per la gestione di un display LCD di tipo I2C rimando alla mia lezione: Utilizzo dell’LCD 16×2 Hitachi HD44780 1602 con modulo I2C PCF8574T.

Per la creazione di caratteri personalizzati rimando alla mia lezione: Disegnare caratteri personalizzati con Arduino per un LCD 16×2.

Lista componenti

  • N.1 Arduino UNO
  • N.1 Breadboard
  • N.1 LCD 16×2 I2C
  • N.1 Potenziometri da 10 KOhm
  • N.1 LED da 5 mm
  • N.1 Resistore da 220 Ohm
  • jumper

Schema di collegamento

Scketch

Di seguito viene indicato il codice i base, all’interno i commenti che ne dettagliano il funzionamento di ogni parte:

/*
   Prof. Maffucci Michele
   https://www.maffucci.it
   Ver.1 - 27.12.21
   Controllo di luminosità LED con
   visualizzazione intensità mediante una
   barra di avanzamento su display 16x2
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

byte pinPot = A0;           // pin analogico 0 a cui connettere il potenziometro per controllare la luminosità
byte pinLed = 3;            // pin PWM a cui connettere il LED
int  analogVal = 0;         // variabile in cui memorizzare il valore impostato dal potenziometro
int  luminosita = 0;        // variabile in cui memorizzare la luminosità 
byte barraAvanzamento = 0;  // indice barra avanzamento

// Per maggiori informazioni sulla realizzazione di caratteri speciali:
// https://www.maffucci.it/2020/01/18/disegnare-caratteri-personalizzati-con-arduino-per-un-lcd-16x2/

// Carattere personalizzato per disegnare la barraAvanzamento di avanzamento
byte iconaBarra[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

// inizializzazione della libreria in cui è descritta la modalità di utilizzo dei pin
// impostazione dell'indirizzo dell'LCD 0x27 di 16 caratteri e 2 linee
LiquidCrystal_I2C lcd(0x27, 16, 2);
//-----------------------------

void setup()
{
  lcd.begin();      // inizializzazione dell'LCD
  lcd.backlight();  // attivazione della retroilluminazione

  // Inpostazione ad OUTPUT del pin a cui connettiamo il LED
  pinMode(pinLed, OUTPUT);

  // Cancella il display
  lcd.clear();

  // Stampa il messaggio sulla prima riga del display
  lcd.print("Luminosita' LED");

  //Creazione del carattere per la barra di avanzamento
  lcd.createChar(0, iconaBarra);
}

// Per maggiori informazioni sull'uso del display 16x2 I2C:
// https://www.maffucci.it/2019/01/25/utilizzo-delllcd-16x2-hitachi-hd44780-1602-con-modulo-i2c-pcf8574t/
//-----------------------------

void loop() {
  // Cancella il display
  lcd.clear();
  
  // Stampa il messsaggio sulla prima riga
  lcd.print("Luminosita' LED");
  
  //Posiziona il cursore nella seconda riga, prima colonna
  lcd.setCursor(0,1);
  
  // Lettura del valore impostato dal potenziometro
  analogVal = analogRead(pinPot);
          
  // Conversione del valore analogico impostato con il potenziometro
  // in Duty Cicle per impostare la luminosità del LED
  luminosita=map(analogVal, 0, 1024, 0, 255); 
  
  // Impostazione della luminosità del LED
  analogWrite(pinLed, luminosita); 
  
  // Conversione della luminosità in quantità di caratteri della barra da stampare 
  barraAvanzamento=map(luminosita, 0, 255, 0, 15);
  
  // Stampa la barra di avanzamento
  for (byte i = 0; i < barraAvanzamento; i++)
  {
    lcd.setCursor(i, 1);   
    lcd.write(byte(0));  
  }
  // leggero ritardo di 500 ms per visualizzare la barra
  delay(500);        
}

Proposta esercizi

Esercizio 1
Nell’esempio proposto viene utilizzato un delay() finale per permettere la visualizzazione dei caratteri sul display. Sostituire il delay() ed utilizzare l’istruzione millis() per valutare il tempo trascorso e controllare la stampa dei caratteri sul display.

Esercizio 2
Modificare il programma precedente raddoppiando il numero di caratteri che rappresenta la barra di avanzamento.

Esercizio 3
Modificare l’esercizio proposto variando la barra di avanzamento in funzione dell’approssimarsi al valore massimo o minimo della luminosità.

Esercizio 4
Modificare l’esercizio proposte inserendo un buzzer che emette un suono la cui frequenza varia in funzione dell’intensità luminosa del LED.

Buon Making a tutti 🙂

Buone Feste

Un sincero augurio a tutti coloro che mi conoscono nel mondo virtuale e nel mondo reale. Con la speranza che queste feste siano per voi piene di serenità e tante attività creativi elettroniche, auguro a tutti voi Buone Feste 🙂

Esercitazione di Sistemi Elettronici – Arduino – impianto semaforico ad 1 via

Questa esercitazione è dedicata ai miei studenti di 3′ (Automazione ed Elettronica Biomedicale) che come compito per le vacanze natalizie dovranno, partendo dall’esempio svolto, realizzare le 4 varianti richieste al fondo di questa lezione.

Introduzione

  • In questo progetto bisognerà realizzare l’impianto semaforico per automobili e modificarlo secondo le specifiche indicate al fondo di questo post
  • vengono utilizzati 3 LED: verde, giallo e rosso per simulare un semaforo reale
  • vengono utilizzati 2 LED : verde e rosso per simulare il semaforo per i pedoni
  • è presente un pulsante di richiesta attraversamento per i pedoni

Lista componenti

  • 1 Breadboard
  • 1 Arduino UNO
  • 3 LED da 5mm (rosso, giallo, verde)
  • 2 LEd da 5mm LED (rosso, verde)
  • 5 resistori da 220 Ohm
  • 1 resistore da 10 kOhm
  • 1 pulsante normalmente aperto
  • jumper

Collegamenti

Sketch

Per la realizzazione di questo progetto non avrete necessità di nessuna libreria da aggiungere all’IDE di Arduino.

L’automazione del semaforo sarà la seguente:

  • Il semaforo per le automobili è sempre verde e la luce pedonale risulta sempre rossa a meno che qualcuno preme il pulsante.
  • Quando viene premuto il pulsante dal pedone:
    • il semaforo auto cambia da giallo e successivamente si spegne il giallo e si accende il rosso;
    • sul semaforo pedonale si spegne il rosso e si accende il verde;
    • le luci del semaforo pedonale rimangono in questo stato per un tempo pari a tempoAttraversamento
    • successivamente il verde del semaforo pedonale lampeggia, terminata la sequenza di lampeggio si spegne e si accende il rosso;
  • il semaforo delle auto passa da rosso a verde

Tutte queste funzioni sono svolte dalla funzione cambiabentoLuci().

/*
   Prof. Maffucci Michele
   Ver.1 - 22.12.21
   Impianto semaforico con attraversamento
   pedonale a richiesta
*/

// pin a cui sono connessi i LED
byte rossoAuto = 13;
byte gialloAuto = 12;
byte verdeAuto = 11;
byte rossoPedone = 10;
byte verdePedone = 9;

// pin a cui è connesso il pulsante di richiesta
byte pulsante = 8;

// tempo massimo di attraversamento del pedone
int tempoAttraversamento = 10000;

// definizione della variabile per l'impostazione
// del cambio stato del semaforo auto
unsigned long tempoCambio;

void setup() {
  // inizializzazione timer
  tempoCambio = millis();

  // inizializzazione dei pin come OUTPUT

  pinMode(rossoAuto, OUTPUT);
  pinMode(gialloAuto, OUTPUT);
  pinMode(verdeAuto, OUTPUT);
  pinMode(rossoPedone, OUTPUT);
  pinMode(verdePedone, OUTPUT);

  // inizializzazione pin come INPUT
  pinMode(pulsante, INPUT);

  // accensione luci verdi
  // all'avvio le auto hanno il verde e i pedoni il rosso
  digitalWrite(verdeAuto, HIGH);
  digitalWrite(rossoPedone, HIGH);
  digitalWrite(rossoAuto, LOW);
  digitalWrite(gialloAuto, LOW);
  digitalWrite(verdePedone, LOW);

  // inizializzazione della Serial Monitor
  Serial.begin(9600);
}

void loop() {
  // la variabile state viene utilizzata per sapere se il
  // pulsante di attraversamento viene premuto
  int stato = digitalRead(pulsante);

  // lo stato del pulsante viene visualizzato sulla Serial Monitor
  Serial.println(stato);

  // Se viene premuto il pulsante e se sono
  // passati 5 secondi dall'ultima pressione del pulsante

  if (stato == HIGH && (millis() - tempoCambio) > 5000) {
    // chiama la funzione per il cambio luci
    cambioLuci();
  }
}

void cambioLuci() {
  digitalWrite(verdeAuto, LOW);      // il LED verde viene spento
  digitalWrite(gialloAuto, HIGH);    // il LED giallo viene acceso per 2 secondi
  delay(2000);

  digitalWrite(gialloAuto, LOW);    // il LED giallo viene spento
  digitalWrite(rossoAuto, HIGH);    // il LED rosso viene acceso per 5 secondi

  digitalWrite(rossoPedone, LOW);   // il LED rosso del pedone viene spento
  digitalWrite(verdePedone, HIGH);  // il LED verde del pedone viene acceso
  delay(tempoAttraversamento);

  // lampeggio del LED verde dei pedoni
  for (int x = 0; x < 10; x++) {
    digitalWrite(verdePedone, LOW);
    delay(100);
    digitalWrite(verdePedone, HIGH);
    delay(100);
  }
  digitalWrite(verdePedone, LOW);
  digitalWrite(rossoAuto, LOW);
  digitalWrite(rossoPedone, HIGH);
  digitalWrite(verdeAuto, HIGH);

  tempoCambio = millis();
}

Esercizio 1
Aggiungere un sensore ad ultrasuoni che rileva la presenza del pedone in fase di attraversamento, fino a quando viene rilevato il pedone viene mantenuto il verde per il pedone ed il rosso per le auto. E’ presente sempre il pulsante di richiesta attraversamento.

Esercizio 2
Ampliare l’esercizio 1 aggiungendo un display a 7 segmenti utilizzato come conto alla rovescia (da 9 a 0) per i pedoni quando attraversano.

Esercizio 3
Ampliare l’esercizio 1 aggiungendo un buzzer che con un segnale pulsante variabile, indica l’approssimarsi del rosso.

Esercizio 4
Ampliare l’esercizio proposto in questa lezione trasformando l’impianto semaforico da 1 via a 4 vie con rispettivi attraversamenti pedonali sulle 4 strade.

Per coloro che non sono miei studenti, sul mio Patreon nei prossimi giorni verrà proposta:

  • La soluzione a tutti gli esercizi proposti con schemi di collegamento e codice
  • Video di spiegazione
  • Sorgenti STL per la stampa 3D di un semaforo da poter essere inseriti all’interno di un plastico
  • Proposta progettuale per la realizzazione di un kit didattico per lo sviluppo di questa tipologia di esercizi.

Buon Making a tutti.

Cambio di rotta – nuove avventure

Come avrete notato in questo periodo sono sempre più occupato nella realizzazione di corsi in Webinar e la collaborazione con case editrici per la creazione di libri. Chi mi segue in modo costante su queste pagine mi chiede sempre più spesso di intensificare: articoli, post, video, condividere appunti di elettronica e sistemi elettronici e tutte le progettualità che sviluppo che coprono le STEAM in ogni ordine di scuola. Tutte queste attività le utilizzo in presenza con i miei studenti e con i colleghi che seguono i miei corsi.

Come sapete i tutorial presenti su queste pagine sono il punto di partenza per le lezioni più approfondite che svolgo a scuola e proprio su questi approfondimenti che ricevo richieste di condivisione da colleghi e studenti di scuola superiore ed università. La creazione di lezioni richiede un lavoro intenso che occupa gran parte delle mie giornate, preparazione che non termina con una descrizione passo passo delle azioni da svolgere durante l’attività laboratoriale, ma aggiunge tutti gli aspetti teorici che permettono di comprendere in profondità gli argomenti trattati.

Ricevo numerosissime richieste di condivisione o produzione di documentazione didattica e tecnica da utilizzare immediatamente in classe. Da moltissimi colleghi mi giungono richieste di formazione specifica, ciò accade anche da parte di enti di formazione che necessitano molto spesso di supporto per impostare progettualità a carattere STEAM per l’ottenimento di finanziamenti.

Come i colleghi sapranno molte sono le scuole interessate alla partecipazione a PON, concorsi e gare nazionali e per questo in passato ho dato il mio contributo nel supporto tecnico/formativo. Importante inoltre è l’attività lavorativa che svolgo con Aziende ed Università.

Non ultimo le richieste per ottenere i kit didattici che sviluppo o eventuali modifiche a questi kit per adattarli all’ordine di scuola o ancora le proposte che mi giungono per creare strumenti e percorsi didattici specifici.

Pertanto ho deciso di ottimizzare tutti i miei sforzi al fine di rispondere ad ogni necessità da parte vostra in una maniera che possa almeno sostenere le spese derivanti dai servizi online che mi necessitano per svolgere l’attività di divulgazione e per acquistare la tecnologia di cui ho bisogno per sviluppare la didattica laboratoriale da proporre a tutti voi utilizzando l’esperienza dei tanti anni di insegnamento e di attività professionale nell’ambito delle tecnologie didattiche ed industriali.

Come agirò da oggi?

Ogni pubblicazione sarà pubblica o privata:

  • gli articoli pubblici saranno tutorial brevi che permetteranno di utilizzare in modo iniziale un dispositivo o introducono un’aspetto tecnologico o una metodologia didattica.
  •  gli articoli privati:
    • approfondiranno con esercitazioni e appunti gli argomenti teorici gli articoli che sono visibili in modalità pubblica;
    • trattazione di argomenti tecnici o progetti didattici più ampi;
    • progetti specifici su richiesta.

I miei studenti avranno accesso sempre e per sempre in modalità gratuita a tutti i contenuti pubblici e privati, dal mio sito o su piattaforma specifica scolastica.

Gli argomenti che tratterò nelle due modalità pubblica e privata, utilizzeranno diverse tecnologie: Arduino, Raspberry Pi, Raspberry Pi Pico, BBC micro:bit, PLC, realizzazione di kit didattici per le STEAM, programmazione consigli progettuali e molto altro.

Cosa vuol dire pubblico e privato?

Pubblici saranno i tutorial che sempre sono stati pubblicati su queste pagine e che intensificherò in modo costante a partire dalla prossima settimana.

Privato sarà tutto il resto: approfondimenti a ciò che scrivo nei tutorial pubblici, video dedicati, sviluppo di progetti didattici con schemi, codice e schede di lavoro immediatamente spendibili in classe. Gli argomenti privati copriranno argomenti che vanno dalla scuola dell’infanzia alla scuola superiore (ITIS, Professionale e Liceo) in ambito STEAM, tutto ovviamente sarà a livello didattico e coprirà argomenti presenti nelle linee guida dei programmi ministeriali della scuola italiana.

Come accedere alle due sezioni:

  • sezione pubblica: sulle pagine del mio sito, e sui miei social;
  • sezione privata: attraverso il Patreon che ho attivato in queste ore e di cui trovate link anche nella colonna destra di questo sito.

Nel Patreon potrete contribuire in modo continuativo in molte modalità in modo da sostenere tutti i miei sforzi.

Come sarete informati sulle nuove proposte sul mio Patreon?
Mediante il mio sito ed i miei social.

Quindi un cambio di rotta, o meglio una sistemazione al mio flusso di lavoro che mi permetterà in questo modo di continuare con tranquillità lavorativa concentrandomi su chi ritiene importante i miei consigli ed il mio lavoro.

Se siete interessanti sul Patreon ho pubblicato una lista in costruzione di corsi che fornirò in modo periodico, passo passo.

Fin d’ora il mio infinito grazie per tutto ciò che potrete fare, per chi mi ha sempre seguito e sostenuto.

Un caro saluto
e come sempre: Buon Making a tutti! 🙂