Archivi categoria: arduino

Errori comuni nell’uso di Arduino – utilizzo dell’operatore ++

Nella “Lezione 2 – Corso di Elettronica Creativa con Arduino Sensor Kit” ho promesso che avrei fornito alcuni esempi pratici sull’utilizzo dell’operatore “++” come prefisso e come suffisso nell’incremento di una variabile. Durante la correzione delle esercitazioni dei miei studenti noto che la posizione del “++” crea qualche confusione, quindi ho pensato di inserire questa spiegazione nella sezione “Errori comuni nell’uso di Arduino”.

Esempio 1: “++variabile” (incremento come prefisso)

Questo sketch dimostra come il valore della variabile viene incrementato prima di essere stampato sulla Serial Monitor.

// Prof. Maffucci Michele
// utilizzo del ++ come prefisso

void setup() {
  Serial.begin(9600);  // Avvia la comunicazione seriale a 9600 bps
}

void loop() {
  int conteggio = 0;
  Serial.println("Incremento come prefisso:");
  for(int i = 0; i < 5; i++) {
    Serial.print("Valore attuale di conteggio: ");
    Serial.println(++conteggio);  // Stampa il valore di conteggio dopo essere stato incrementato
    delay(1000);                  // Attendi un secondo tra ogni iterazione
  }
  Serial.println("Fine del ciclo");
  while(true);  // Termina il loop per evitare ulteriori incrementi
}

Nell’Esempio 1, vedrete che i valori stampati iniziano da 1 e arrivano fino a 5, perché l’incremento avviene prima della stampa del valore di conteggio.

Esempio 2: “variabile++” (Incremento come suffisso)

Questo sketch illustra come il valore della variabile sia stampato prima di essere incrementato.

// Prof. Maffucci Michele
// utilizzo del ++ come suffisso

void setup() {
  Serial.begin(9600);  // Avvia la comunicazione seriale a 9600 bps
}

void loop() {
  int conteggio = 0;
  Serial.println("Incremento come suffisso:");
  for(int i = 0; i < 5; i++) {
    Serial.print("Valore attuale di conteggio: ");
    Serial.println(conteggio++);  // Stampa il valore corrente di conteggio, poi lo incrementa
    delay(1000);                  // Attendi un secondo tra ogni iterazione
  }
  Serial.println("Fine del ciclo");
  while(true);  // Termina il loop per evitare ulteriori incrementi
}

Nell’Esempio 2, i valori stampati iniziano da 0 e arrivano a 4, poiché l’incremento avviene dopo la stampa del valore.

Esempio 3: alternanza tra incremento come prefisso e suffisso

L’esempio che segue utilizza un contatore che aumenta ogni secondo e un messaggio che mostra sulla Serial Monitor il valore del contatore prima e dopo l’incremento, alternando tra incremento come prefisso e suffisso.

// Prof. Maffucci Michele
// utilizzo del ++ come suffisso

int contatore = 0;
bool usaPrefisso = true;  // Flag per alternare tra incremento prefisso e suffisso

void setup() {
  Serial.begin(9600);  // Inizia la comunicazione seriale a 9600 bps
}

void loop() {
  Serial.println("Inizio del ciclo");
  if (usaPrefisso) {
    Serial.print("Incremento come prefisso - Valore prima dell'incremento: ");
    Serial.println(contatore);
    Serial.print("Valore dopo l'incremento: ");
    Serial.println(++contatore);  // Incremento prima della stampa
  } else {
    Serial.print("Incremento come suffisso - Valore prima dell'incremento: ");
    Serial.println(contatore);
    Serial.print("Valore dopo l'incremento: ");
    Serial.println(contatore++);  // Stampa prima dell'incremento
  }

// Alterna tra prefisso e suffisso
  usaPrefisso = !usaPrefisso;

Serial.println("Fine del ciclo\n");
  delay(2000);  // Attendere 2 secondi prima del prossimo ciclo
}

Si noti che nel loop() a ogni iterazione, si decide se usare l’incremento come prefisso o come suffisso, basandosi sul valore del flag “usaPrefisso”. Dopo ogni ciclo, il metodo di incremento viene alternato in questo modo vengono mostrati come i due metodi di incremento influenzano il valore della variabile contatore il cui valore viene stampato sulla Serial Monitor.

Buon Coding a tutti 🙂

EduRobot MicroMoto – Versione Arduino

Qualche mese fa durante un corso per docenti avevo realizzato EduRobot MicroMoto un piccolo kit robotico nato dalla necessità di realizzare attività di Coding e Robotica che potessero essere sperimentate da un numero elevato di allievi, inclusivo dal punto di vista economico, facile da assemblare e personalizzare.

MicroMoto nasce per essere essenziale, sia nella costruzione che nell’uso quotidiano, con  una forma compatta per essere utilizzato comodamente a scuola, sia aula che in laboratorio o a casa.

Il piccolo MicroMoto è stato adottato da diverse classi 🙂 e ringrazio i colleghi che hanno seguito i miei corsi per aver usato questo progetto. In questi mesi mi sono giunte richieste per la realizzazione di una versione Arduino, nello specifico della versione R4 che permette comunicazione Bluetooth e WiFi con un display per mostrare gli stati del sistema e possibilità di essere programmato in C ed in MicroPython e questa versione la utilizzerò da domani per un corso di robotica indirizzato a docenti.

La modalità costruttiva per questa versione Arduino è la medesima di quella realizzata per la versione BBC micro:bit con scheda motori :MOVE, sono presenti però alcune piccole differenze nella faccia superiore, nel taglio delle palline da Ping Pong utilizzate come Caster Ball e nell’uso di un pacco batteria posto nella parte interna del robot, fate riferimento a questo breve tutorial ed utilizzate il PDF allegato effettuare i tagli.

Ricordo che la modalità per vincolare i motori alla struttura avviene sempre con elastici.

Come già segnalato nel post di presentazione, il design del kit è stato pensato per essere minimale e simmetrico, misurando solamente 10×10 cm. Assomiglia a una piccola scatola, assemblata con colla a caldo, un metodo che non solo garantisce maggiore sicurezza durante il montaggio, ma accelera anche significativamente il processo rispetto alle precedenti versioni che utilizzavano viti, facilitando così tutto il lavoro di costruzione.

Utilizzando cartone come materiale base, il kit permette una grande flessibilità per l’espansione e la personalizzazione. L’uso è quello di un cartone di 4 mm di spessore, ricoperto da un foglio bianco adesivo su cui sono stampati i contorni per il taglio. Questo permette agli studenti di esprimere la loro creatività, colorando e personalizzando le superfici bianche. MicroMoto può essere ulteriormente arricchito incollando pezzi Lego sulle sue superfici, offrendo così una versatile adattabilità a diverse esigenze educative.

Nel corso che sto realizzando verranno aggiunte altre funzionalità:

  • evita ostacoli
  • segui linea
  • segui luce

Allego il file PDF con i profili ritaglio in colore rosso. Nel video allegato ho usato un foglio A4 adesivo bianco, ma è possibile utilizzare anche un comune foglio di carta che potrà essere incollato al cartone.

Di seguito le istruzioni per la costruzione.

Continua a leggere

Lezione 1 – Corso di Elettronica Creativa con Arduino Sensor Kit

Introduzione

Negli ultimi mesi mi sono occupato, nell’ambito dell’azione PNRR Scuola 4.0, della progettazione delle “next generation classroom” e dei “next generation labs” per l’istituto in cui insegno. L’obiettivo principale di questa azione è stata quella di progettare percorsi didattici con strumenti che potessero arricchire l’apprendimento degli studenti nel campo dell’elettronica e dell’automazione, ma soprattutto prevenire il più possibile la dispersione pensando ad attività che possano appassionare i ragazzi. La mia attenzione si è naturalmente focalizzata sui prodotti Arduino che da sempre utilizzo in quanto consentono di rendere l’elettronica accessibile e stimolante per appassionati di tutte le età.

Ho analizzato diversi kit e tra quelli acquistati è presente l’Arduino Sensor Kit. Questo kit, pensato per essere intuitivo anche per i giovani studenti senza precedenti esperienze in elettronica, si presta perfettamente come elemento “attivatore” di curiosità e desiderio di esplorazione. La scelta di questo prodotto non è casuale: utilizzando il sistema Grove di Seeed Studio, esso facilita enormemente la connessione tra componenti elettronici, permettendo agli studenti di concentrarsi sulla programmazione e sull’interazione con sensori e attuatori senza preoccuparsi della complessità hardware.

La particolarità dell’Arduino Sensor Kit risiede anche nel fatto che ogni modulo è progettato con tutta la componentistica di supporto necessaria, semplificando notevolmente il processo di apprendimento e consentendo di focalizzarsi sui principi di base dell’elettronica e della programmazione. Questo approccio è adatto soprattutto ai neofiti e pone le basi per una comprensione più approfondita nei corsi avanzati che verranno svolti in anni scolastici successivi.

Le lezioni che troverete in queste pagine sono pensate per studenti di ogni età e per quanto mi riguarda saranno la base per i futuri corsi che svolgerò dal prossimo anno scolastico. Per quanto riguarda questo specifico kit, durante gli incontri, sia in presenza che online, arricchirò il materiale didattico già presente sul sito Arduino, con contenuti tecnici e teorici, facendo sviluppare progetti pratici che stimolano la creatività e la comprensione. Questo percorso non solo vi introdurrà ai fondamenti dell’elettronica e dell’automazione ma vi guiderà nella realizzazione di progetti concreti, permettendovi di vedere immediatamente i risultati delle vostre creazioni.

A chi è rivolto questo corso?

A tutti gli studenti della secondaria di primo grado e del primo anno dell’ITIS e a chiunque sia interessato a esplorare il mondo dell’elettronica e dell’automazione partendo da zero. Attraverso questo corso, avrete l’opportunità di imparare, sperimentare e, soprattutto, divertirvi, ponendo le basi per future esplorazioni elettroniche.

Durante queste brevi lezioni entrerò nel dettaglio dei termini tecnici, quindi troverete in più punti note specifiche che daranno dettagli sui termini utilizzati in modo che la guida oltre ad essere uno strumento che vi porta alla scoperta del kit sia anche un manuale di studio.

Benvenuti nel mondo di Arduino e dell’elettronica creativa. Iniziamo questo viaggio insieme 🙂

Cosa Imparerete

Durante il corso, esploreremo insieme i principi base dell’elettronica e della programmazione attraverso l’uso dell’Arduino Sensor Kit. Imparerete a:

  • Leggere dati da vari sensori ambientali per comprendere il mondo intorno a voi.
  • Elaborare informazioni attraverso la programmazione di base con Arduino, trasformando i dati grezzi in informazioni utili.
  • Agire sul mondo esterno, utilizzando attuatori come motori e LED per creare effetti visibili e meccanici.

Analisi della kit

L’Arduino Sensor Kit include dieci moduli con connessione Grove che possono essere utilizzati individualmente o combinati per realizzare i vostri progetti. Tutti i moduli utilizzano un connettore Grove, che può poi essere collegato facilmente ad Arduino UNO R3 o R4 tramite uno Shield, il tutto può essere programmato tramite l’IDE di Arduino.

NOTE

    • IMPORTANTE. I moduli sono montati su una PCB (scheda a circuito stampato – vedete foto allegata), che viene collegata allo Shield di base. È possibile lasciarli in questo modo e non è necessario alcun cablaggio con fili elettrici. Se si decide di provare i moduli individualmente, tenete presente che dovrete staccarli dal PCB principale ed essere cablati mediante fili elettrici e NON potranno più essere reinseriti nella PCB principale.
    • Cos’è uno Shield Arduino. Uno shield Arduino è un modulo progettato per essere sovrapposto direttamente su una scheda Arduino standard, estendendone le funzionalità senza la necessità di un cablaggio esterno complicato. Gli shield sono utilizzati per aggiungere nuove capacità alle schede Arduino, come connettività wireless, controllo di motori, sensoristica avanzata, interfacciamento con display, e molto altro.

Caratteristiche chiave degli shield Arduino includono:

    • Compatibilità di Form (form factor): Gli shield sono progettati per adattarsi perfettamente ai pin di connessione presenti sulle schede Arduino, garantendo una connessione fisica sicura e stabile.
    • Facilità di Uso: Possono essere facilmente montati o rimossi, consentendo agli utenti di aggiungere o modificare funzionalità al loro progetto in modo rapido.
      – Stackabili (imputabili): Molti shield sono progettati per essere impilabili, il che significa che è possibile montarne diversi contemporaneamente, a patto che non ci siano conflitti tra i pin utilizzati dai vari moduli.
    • Librerie Dedicate: Spesso, per facilitare l’utilizzo degli shield, sono disponibili delle librerie software specifiche che permettono di sfruttarne le funzionalità tramite l’IDE di Arduino.

Grazie alla loro facilità d’uso e alla vasta gamma di funzionalità che offrono, gli shield sono particolarmente apprezzati sia dai principianti che dai professionisti del mondo dell’elettronica e del DIY (Do It Yourself – fai da te), permettendo di realizzare progetti complessi senza dover entrare nei dettagli tecnici di ogni singolo componente hardware.

    • Connessione Grove. Una connessione Grove è un tipo di interfaccia standardizzata sviluppata da Seeed Studio, progettata per semplificare il processo di connessione fisica tra diversi componenti elettronici e piattaforme di prototipazione, come Arduino. L’obiettivo principale del sistema Grove è rendere più accessibile l’elettronica a hobbisti e studenti che iniziano lo studio dell’elettronica, minimizzando la necessità di saldature o di comprendere complessi schemi di collegamento.

Apriamo la scatola

Vediamo cosa è incluso nel Breakout Board del Kit Sensori Arduino:

  • Lo Shield di Base
  • 4 moduli digitali: LED, Pulsante, Buzzer e un Sensore di Angolo Rotativo
  • 5 Sensori: Luce, Suono, Barometro, Temperatura & Umidità e Accelerometro
  • 1 Display Oled
  • Materiali didattici

Inoltre, tutti i pin su UNO R3 o R4 rimangono accessibili mediante l’uso di cavi jumper.

NOTE

    • Le breakout board rappresentano uno strumento essenziale nel mondo dell’elettronica e del prototipaggio. Sono schede che incorporano uno specifico componente elettronico, il quale è già saldato sulla scheda stessa. Questo permette agli appassionati e ai professionisti di lavorare con componenti altrimenti difficili da maneggiare a causa delle piccole dimensioni o della complessità dei pin. Le breakout board rendono i collegamenti estremamente accessibili, portando le connessioni del componente all’esterno su terminali facilmente gestibili. Tipicamente, queste connessioni terminano su piazzole con un passo standard di 2,54 mm, lo standard per molte breadboard e dispositivi di prototipazione, facilitando così l’integrazione del componente in circuiti più ampi senza la necessità di saldature complesse o configurazioni intricate.
    • I cavi jumper sono piccoli cavi usati in elettronica per stabilire connessioni temporanee tra i componenti su una breadboard, tra differenti breadboard, o tra componenti elettronici e dispositivi di input/output. Sono particolarmente utili nel prototipaggio e nel test di circuiti elettronici perché permettono di modificare rapidamente le connessioni senza la necessità di saldature. Esistono cavi jumper Maschio-Maschio (M-M), le estremità del cavo terminano con un connettore maschio, Femmina-Femmina (F-F) che hanno connettori femmina su entrambe le estremità (F-F), Maschio-Femmina (M-F), questi cavi hanno un connettore maschio da un lato e un connettore femmina dall’altro (M-F). I cavi jumper sono disponibili in diversi colori, il che può aiutare a mantenere l’organizzazione dei collegamenti in un progetto elettronico, facilitando l’identificazione dei diversi segnali, alimentazioni e terre. Sono strumenti indispensabili nel kit di chiunque lavori con l’elettronica a livello di hobbistica o professionale, offrendo una soluzione rapida e flessibile per esperimenti e prototipi.

Lo Shield di base

Lo Shield di base è progettato per essere montato sopra una scheda Arduino UNO R3 o R4. È dotato di 16 connettori Grove, che, quando posizionati sopra la scheda Arduino, forniscono funzionalità a vari pin. Per interagire con i componenti utilizza i seguenti pin:

  • 7x pin digitali – D2, D3, D4, D5, D6, D7
  • 4x pin analogici – A0, A1, A2, A3
  • 4x pin I2C
  • 1x pin UART

NOTE

  • IMPORTANTE. Lo Shield di base ha un interruttore per la selezione della tensione di ingresso (3V3 e 5V) che alimenta i moduli, mantenere su 5V per seguire far funzionare correttamente i dispositivi contenuti nel kit.
    I 10 moduli inclusi possono essere collegati allo shield di base, attraverso i pin digitali, analogici e I2C presenti sulla scheda.
  • Cosa sono i pin digitali e analogici. Nel contesto dell’elettronica e in particolare quando si parla di schede come Arduino, i termini “pin digitale”, “analogico” e “I2C” si riferiscono a diversi tipi di connessioni o porte sulla scheda che hanno funzioni specifiche. Ecco una spiegazione più dettagliata di ciascuno:
    • Pin Digitali
      I pin digitali sono utilizzati per leggere o scrivere due stati distinti: HIGH (alto) o LOW (basso), che corrispondono solitamente a tensioni specifiche (per esempio, 5V o 3.3V per HIGH e 0V per LOW). Questi pin sono adatti per controllare LED, leggere lo stato di pulsanti o interruttori, e per comunicazione digitale. Un pin digitale configurato come input può leggere lo stato di un dispositivo esterno (ad esempio, se un pulsante è premuto o meno), mentre un pin configurato come output può inviare un segnale (ad esempio, accendere o spegnere un LED).
    • Pin Analogici
      I pin analogici sono usati per leggere valori che possono variare su un ampio range, non limitandosi solo a due stati come i pin digitali. Questi pin sono tipicamente utilizzati per leggere il segnale da sensori che forniscono una variazione continua nel tempo, come un potenziometro o un sensore di temperatura. Il valore letto da un pin analogico è quindi convertito in un numero digitale tramite un convertitore analogico-digitale (ADC) interno alla scheda, permettendo al microcontrollore di elaborarlo.
    • I2C (Inter-Integrated Circuit)
      I2C è un protocollo di comunicazione seriale che utilizza due linee: SDA (Data) e SCL (Clock). Permette la comunicazione tra un microcontrollore (master) e uno o più dispositivi periferici (slave) utilizzando solo queste due linee, indipendentemente dal numero di dispositivi collegati. Questo lo rende particolarmente adatto per connettere vari sensori, display, e altri moduli a microcontrollori con un numero limitato di pin disponibili. I2C è apprezzato per la sua semplicità e efficienza nel collegare multiple periferiche con un cablaggio minimo.

Ogni tipo di pin ha il suo scopo specifico e la scelta tra di loro dipende dal tipo di segnale che si vuole leggere o trasmettere e dalla natura del progetto elettronico che si sta realizzando.

Continua a leggere

Corsi: Didattica della robotica – CTS di Cosenza


Presso la Rete Provinciale di Scuole per l’inclusività di Cosenza si parte con la nuova stagione di corsi sulla Didattica della Robotica con nuove proposte di kit e attività laboratoriali, dalla robotica di servizio a quella ludica. Il corso programmato da più di 6 mesi vede coinvolte numerose scuole di ogni ordine e grado della provincia di Cosenza.

Sempre da questo settembre per altri enti saranno avviati corsi in presenza ed online sempre di robotica, appena disponibile fornirò indicazioni per procedere con l’iscrizione.

Come più volte ribadito, credo che una soluzione per realizzare una didattica personalizzata di Coding e Robotica sia quella che fa uso di tecnologia a basso costo; questa impiega materiali di uso comune e strumenti di costruzione già in possesso di molte scuole, ciò permette che l’oggetto didattico possa essere creato, manipolato e modificato dall’allievo in piena libertà a scuola e a casa, quindi durante il corso mostrerò come realizzare robot con strutture in cartone e legno.
La realizzazione di robot a fini didattici prevede un controllo dei parametri fisici che può essere agevolmente svolto con strumenti didattici utilizzati comunemente in attività laboratoriali per l’apprendimento del Coding; schede elettroniche come BBC micro:bit, Arduino, Raspberry Pi, possono assolvere a questo compito e la loro programmazione può avvenire utilizzando i linguaggi più adatti al livello di scuola a cui appartengono gli studenti; quindi si potrà optare per un linguaggio grafico a blocchi o testuale.

Negli scorsi mesi mi sono concentrato in modo specifico sulla creazione di kit per la primaria e secondaria di primo grado, molto semplici da creare, manipolare e modificare, pertanto se volete saperne di più rimanete sintonizzati sui miei social 🙂

Per la scuola superiore utilizzerò le evoluzioni di EduRobot Black Panther e EduRobot 4WD (con tutte le estensioni).

Per il CTS di Cosenza non solo Robotica low cost ma anche quella che fa uso di kit commerciali molto diffusi: Bee-Bot, Ozobot Evo, LEGO Education WeDo 2.0, Lego Mindstorms EV3, Makeblock mBot Robot.

Buona Robotica a tutti 🙂

EduRobot 4WD – Bluetooth

Alcuni lettori hanno notato nella lezione in cui ho condiviso i sorgenti per la stampa 3D del robot, che la scheda motori utilizzata è una Adafruit Motor Shield V01 e mi è stato fatto notare che esiste la V02 della scheda, quindi perché ho usato la versione precedente? La risposta non è tecnica ma economica, ho acquistato ad un prezzo interessante, su uno store cinese, una grande quantità di queste schede che poi ho usato per i miei corsi. Ovviamente nulla vieta che voi possiate utilizzare una qualsiasi altra scheda, la logica di programmazione è la medesima, ma certamente varieranno il nome delle istruzioni che controllano il motore, se avete necessità contattatemi.

Lista componenti

  • N. 1 Arduino UNO R3
  • N. 1 Adafruit Motor Shield V01
  • Modulo Bluetooth HC05
  • N. 4 Motori DC 6V
  • N. 4 Ruote

Di seguito trovate i collegamenti elettrici effettuati e il primo sketch di esempio con cui parto per svolgere le successive esercitazioni. Per gli allievi e i docenti che si iscriveranno ai miei corsi darò ulteriori esempi e spiegazioni.

Lo shield per il controllo motori può gestire fino a 4 motori DC in entrambe le direzioni, ciò vuol dire che possono essere azionati sia in avanti che all’indietro. La velocità può anche essere variata con incrementi dello 0,5% utilizzando PWM integrato sulla scheda, ciò permetterà un movimento uniforme e non brusca del robot.

Il ponte H presente sulla scheda può pilotare carichi NON superiori ai 0,6A o che hanno picchi di richiesta corrente NON superiori a 1,2A, quindi utilizzate questa scheda per piccoli motori, i classici motori gialli da 6V vanno più che bene.

Collegamento motori allo shield Arduino Motor Driver

Come indicato nell’immagine che segue è molto semplice:
– saldate due cavi al motorino (in commercio trovate motori con fili saldati)
– collegate i motori ai morsetti: M1, M2, M3 o M4.

Collegamento scheda Bluetooth HC-05 allo shield Arduino Motor Driver

Come sicuramente saprete, il modulo Bluetooth HC-05 permette di convertire una porta seriale UART in una porta Bluetooth e la utilizzeremo per inviare su seriale i caratteri selezionati da una specifica app Android, per comandare direzione e velocità dei motori del robot.

I collegamenti sono:

HC05 <-> Arduino Motor Driver
RX - Pin 1
TX - Pin 0
G - GND
V - +5V

Orientamento ruote.

Collegamento motori M1 e M2.

Collegamento motori M3 e M4.

Modulo Bluetooth HC-05.

Connessione dei pin RX e TX del modulo Bluetooth HC-05 alla seriale di Arduino (pin 0 e pin 1).

Alimentazione del modulo Bluetooth HC-05 attraverso lo shield.

Alimentazione dello shield.

Continua a leggere