Archivi categoria: arduino

Arduino UNO R4 WiFi e Minima

Con l’introduzione della nuova release Arduino UNO R4 è stata compiuta senza alcun dubbio un’evoluzione tecnologica che non rappresenta solamente un avanzamento considerevole in termini di capacità di elaborazione e di connessione, ma inaugura anche una nuova era nel panorama dell’elettronica del fai da te.

Sono ormai passati 13 anni dal lancio di Arduino UNO R3, ora la versione R4 arriva per rivoluzionare il nostro approccio alla prototipazione, alla produzione, all’innovazione, ma soprattutto dal mio punto di vista una grande possibilità didattica.

Arduino UNO R4 innalza le potenzialità di prototipazione con un microcontrollore Renesas RA4M1 (Arm® Cortex®-M4) a 32 bit, ed un incremento della memoria 16 volte superiore al suo predecessore. UNO R4 viene proposto in due versioni: UNO R4 Minima e UNO R4 WiFi.

Arduino UNO R4 WiFi

(scheda tecnica ufficiale)

Il modello WiFi R4 conserva l’aspetto fisico di una classica Arduino UNO, così come la tensione operativa di 5 V prevista dalla maggioranza degli shields, ma su di essa troviamo il WiFi è integrato gestito da un coprocessore ESP32-S3, che permette anche connessioni Bluetooth/BLE.

Tra i vari miglioramenti troviamo una porta USB-C per la programmazione e le funzionalità HID (Human Interface Devices), permettendo quindi l’utilizzo di un Arduino UNO R4 come una tastiera o un mouse. Molto interessante la presenza di un connettore QWIIC per un collegamento I2C agevole a sensori e attuatori che rispettano questo standard di comunicazione senza la necessità di shields o breadboard.

Ben visibile nell’area sottostante della scheda una matrice di LED 12×8 che permette di disporre di un sistema di output integrato in grado di visualizzare in modo schematico (pixel) animazioni di caratteri alfanumerici e icone ed inoltre, grazie al software online LED Matrix Editor, messo a disposizione di Arduino è possibile realizzare la propria grafica pixel da includere nei propri sketch.

Di seguito elencate tutte le nuove caratteristiche della versione WiFi

  • Compatibilità hardware con il formato UNO: viene conservata la stessa struttura, l’organizzazione dei pin e la tensione operativa a 5 V della versione R3, assicurando così una totale compatibilità senza inconvenienti per le schede e i progetti preesistenti.

  • Memoria più ampia e clock più rapido: memoria ampliata (256 kB Flash, 32 kB RAM) e velocità di clock superiore (45MHz), permettendo elaborazioni più rapide e una gestione fluida di progetti anche sofisticati.

  • Alimentazione estesa fino a 24 V: la scheda supporta un intervallo più vasto di tensioni di alimentazioni d’ingresso, permettendo un’integrazione migliore con motori, strisce LED e altri attuatori mediante un’unica fonte di alimentazione.

  • Wi-Fi® e Bluetooth®: la scheda incorpora un modulo ESP32-S3, permettendo l’integrazione di connettività wireless nei propri progetti e la gestione remota attraverso Arduino IoT Cloud.

  • Periferiche aggiuntive incorporate: un DAC a 12 bit rende possibile la creazione di progetti audio complessi, CAN BUS e un OP AMP, fornendo una capacità di progettazione e una flessibilità accresciute.

  • Supporto HID: grazie al supporto HID incorporato, sarà possibile emulare un mouse o una tastiera quando è connesso a un computer via USB, agevolando l’invio di comandi da tastiera e movimenti del mouse.

  • Connettore QWIIC: un connettore Qwiic I2C, permette con estrema facilità l’interconnessione di sensori ed attuatori I2C in una modalità standard e sicura.

  • Supporto per RTC alimentato a batteria: sulla scheda sono incorporati pin supplementari, tra cui un pin “OFF” per spegnere la scheda e un pin “VRTC” per garantire l’alimentazione e il funzionamento dell’orologio in tempo reale integrato.

  • Matrice LED: matrice LED rossa 12×8, permette la visualizzazione di animazioni o visualizzazione di dati da sensori, evitando la necessità di hardware supplementare.

  • Diagnosi degli errori durante l’esecuzione: Arduino UNO R4 Wi-Fi dispone di un sistema di identificazione degli errori che rileva i crash durante l’esecuzione e fornisce descrizioni approfondite e consigli relativi alla riga di codice che ha provocato il crash.

Specifiche tecniche

Scheda Nome Arduino® UNO R4 WiFi
SKU ABX00087
Microcontrollore Renesas RA4M1 (Arm® Cortex®-M4)
Modulo radio ESP32-S3-MINI-1-N8
USB USB-C® Porta di programmazione
Pin I/O Digitali 14
Pin Analogici 6
DAC 1
pin PWM 6
Comunicazione UART 1
I2C 1
SPI 1
CAN 1
Tensione di funzionamento Tensione operativa 5 V (ESP32-S3 is 3.3 V)
Tensione di alimentazione (VIN) 6-24 V
Corrente continua per i pin I/O 8 mA
Velocità di clock RA4M1 48 MHz
ESP32-S3-MINI-1-N8 fino a 240 MHz
Memoria RA4M1 256 kB Flash, 32 kB RAM
ESP32-S3-MINI-1-N8 384 kB ROM, 512 kB SRAM
Dimensioni Larghezza 68.85 mm
Lunghezza 53.34 mm

IMPORTANTE

Connettore ESP: il modulo ESP32-S3 su questa scheda funziona a 3,3 V. Il connettore ESP, situato vicino al connettore USB-C®, supporta solo i 3,3 V e non deve essere collegato a 5 V. Ciò potrebbe danneggiare la tua scheda.

Connettore Qwiic: il connettore Qwiic è collegato a un bus I2C secondario: IIC0. Questo connettore supporta solo i 3,3 V, collegare tensioni superiori potrebbe danneggiare la scheda. Per inizializzare questo bus usare l’istruzione Wire1.begin().

Assorbimento massimo di corrente per pin: l’assorbimento massimo di corrente per ogni pin della GPIO della serie UNO R4 è di 8 mA, quindi inferiore rispetto alle versioni R3 precedente. Superare questo limite potrebbe danneggiare il pin o la scheda.

Arduino UNO R4 Minima

(scheda tecnica ufficiale)

Le caratteristiche tecniche differiscono per l’assenza rispetto alla versione WiFi:

  • della matrice di LED
  • porta QWIIC

però su questa scheda è dotata di un connettore SWD, assente nella versione WiFi che permette la connessione esterna di un debugger per controllare il funzionamento di uno sketch in condizioni controllate e rilevare quindi errori o più semplicemente verificare lo stato del programma in tempo reale (variabili, memoria usata, ecc…)

Specifiche tecniche

Scheda Nome Arduino® UNO R4 WiFi
SKU ABX00080
Microcontrollore Renesas RA4M1 (Arm® Cortex®-M4)
Modulo radio ESP32-S3-MINI-1-N8
USB USB-C® Porta di programmazione
Pin I/O Digitali 14
Pin Analogici 6
DAC 1
pin PWM 6
Comunicazione UART 1
I2C 1
SPI 1
CAN 1
Tensione di funzionamento Tensione operativa 5 V (ESP32-S3 is 3.3 V)
Tensione di alimentazione (VIN) 6-24 V
Corrente continua per i pin I/O 8 mA
Velocità di clock RA4M1 48 MHz
ESP32-S3-MINI-1-N8 fino a 240 MHz
Memoria RA4M1 256 kB Flash, 32 kB RAM
ESP32-S3-MINI-1-N8 384 kB ROM, 512 kB SRAM
Dimensioni Larghezza 68.85 mm
Lunghezza 53.34 mm

IMPORTANTE

Anche per la versione Minima l’assorbimento massimo di corrente per pin: l’assorbimento massimo di corrente per ogni pin della GPIO della serie UNO R4 è di 8 mA, quindi inferiore rispetto alle versioni R3 precedente. Superare questo limite potrebbe danneggiare il pin o la scheda.

Costruiamo EduRobot Black Panther – kit robotico didattico multipiattaforma

Un robot che costa meno di un libro.

Al fine di supportare i colleghi che seguono i miei corsi, ho realizzato una struttura robotica che deriva da un precedente progetto che ho sviluppato per i miei studenti, si tratta della versione n. 6 del kit robotico che ho chiamato EduRobot, nominata “Black Panther”.

Ho pensato ad una struttura estremamente economica in cui, ad esclusione delle viti di serraggio delle varie parti, il resto dei materiali è costituito da schede di controllo, motori e sensori.

La struttura minima richiede almeno 3 livelli, ma è possibile innalzarla per aggiungere tutta l’elettronica necessaria per espandere le funzionalità del robot.

Tutti gli elementi sono stati stampati in 3D ed il materiale scelto è il PLA.

I costi complessivi di stampa, viti di serraggio e dadi, non supera i 10€.

Per prelevare i sorgenti per la stampa 3D seguire il link sulla mia pagina su Thingiverse.

Le funzioni che possono essere programmate sono le medesime dei più blasonati kit robotici in commercio, pertanto se la vostra scuola ha acquistato una stampante 3D, sarà sufficiente una manciata di elettronica a basso costo per realizzerete robot assolutamente inclusivo, sia per il portafoglio delle famiglie degli allievi che di quelle del docente.

Il cilindro di occupazione del robot ha un diametro di 135 mm e i motori sono esattamente centrati rispetto alla base del cilindro.

Per evitare spese aggiuntive al posto delle caster ball ho preferito utilizzare un elemento dotato di superficie curva, ovviamente tale elemento se lo desidera può essere sostituito da una caster ball metallica.

Sul terzo livello del robot sono stati già inseriti fori per fissare i microcontrollori: Arduino UNO R3 e BBC micro:bit e computer Raspberry Pi 3 o 4.

Sempre sul terzo livello nel caso si desidera utilizzare un BBC micro:bit, è possibile fissare una scheda motorbit.

Nel caso il controllo avvenisse con Arduino UNO R3 la scheda di controllo motori è costituita da un L298N che andrà impilato sulla scheda Arduino, secondo quanto indicato nel tutorial che segue.

Nei kit di base sul 3’ livello viene utilizzata una minibreadboard per facilitare la connessione tra i vari dispositivi elettronici.

Per entrambe le versioni il robot è dotato di un sensore ad ultrasuoni HC-SR04 fissato alla struttura. Per la valutazione della distanza dell’ostacolo si è preferito evitare l’utilizzo di un servomotore che facesse ruotare il sensore ad ultrasuoni al fine di ridurre i costi. La rotazione che valuta la distanza dell’ostacolo più vicino verrà svolta ruotando l’intero robot rispetto al suo baricentro.

Il robot è dotato di due sensori ad infrarossi da impiegare per la realizzazione di un robot segui linea.

Nella versione con scheda Arduino UNO R3 sarà possibile effettuare un controllo mediante scheda Bluetooth HC-05, il cui supporto potrà essere fissato sul terzo piano del robot.

Di seguito la lista dei materiali e le relative fotografie che ne dettagliano la costruzione delle parti meccaniche e delle schede, non viene dettagliata la connessione elettrica tra le parti e la programmazione, per ora riservato ai colleghi che frequentano o frequenteranno i miei corsi, ma molto probabilmente nel prossimo futuro, con un po’ di calma lavorativa estenderò a tutti la parte di spiegazione elettronica e programmazione.

Sto sviluppando corsi in cui mostro come, usando la medesima struttura robotica, sarà possibile controllare il robot mediante un Raspberry Pi oppure un Raspberry Pi Pico.

Per i colleghi insegnanti svolgerò nel prossimo futuro ulteriori corsi gratuiti a cui potrete iscrivervi attraverso la piattaforma ScuolaFutura, corsi che saranno svolti i diverse modalità: in presenza, MOOC e blended.

Per essere aggiornati sui progetti e sui corsi che svolgerò nel prossimo futuro vi invito ad iscrivervi al mio sito inserendo la vostra e-mail nel campo: “Iscriviti al blog tramite email” nella colonna destra in alto, in questo modo potrete essere aggiornati tempestivamente.

La sequenza di montaggio indicata di seguito è quella che secondo il mio parere vi consente di montare l’intera struttura in non più di 60 minuti, è essenziale però munirsi di cacciaviti a stella e pinza a becco lungo, ottimo sarebbe utilizzare un piccolo avvitatore.

In generale non è richiesta nessuna saldatura a stagno in quanto i motori (gialli) a 6V utilizzati possono essere acquistati anche con cavi già saldati, attenzione però che la connessione tra motore e cavi elettrici potrebbe essere delicata, pertanto si consiglia di serrare i cavi mediante una fascetta stringicavi, come dettagliato di seguito.

Se è necessario prolungare la lunghezza dei cavi è possibile adottare diversi metodi, quello che preferisco è l’utilizzo di connettori wago che possono essere acquistati con diverso numero di fori, nel caso di questo kit robot sono sufficienti wago da 3 fori.

Ovviamente, nel caso di rotture o disconnessione dei cavi dai poli del robot bisognerà per forza ricorrere alla saldatura a stagno. 

La fotografia che segue mostra tutti gli elementi da stampare in 3D per le due versioni di robot.

Di seguito elenco materiali e sequenza di montaggio.

Continua a leggere

Un base robotica molto semplice: EduRobot 4WD

Durante le attività di robotica sia con allievi che con docenti la fase di costruzione meccanica può richiedere parecchio tempo, pertanto ho pensato di realizzare qualcosa di molto semplice su cui disporre l’elettronica di controllo che si preferisce. Per rendere più interessante l’attività di programmazione ho realizzato un robot 4WD da utilizzare per costruire diverse tipologie di robot: controllati remotamente via Bluetooth, WiFi, autonomi, inseguitore di persone, inseguitore di luce, rilevatore di gas, line follower, controllato dalla voce umana.

5 minuti di Yoga creativo per recuperare elementi da altri progetti in questo modo è nato EduRobot 4WD, su questa base solamente i fori per le forcelle che sostengono i motori e fori per passaggio cavi, tutto il resto sarà a carico del Maker che farà i fori opportuni con un piccolo trapano o cacciavite in modo da disporre l’elettronica che desidera, costo di stampa dell’intera struttura 1€.

Per chi seguirà il mio prossimo corso di robotica organizzato da Tecnica della Scuola: “Creare un kit robotico educativo a basso costo – 4′ edizione”, renderò disponibile il codice di controllo e nei prossimi giorni per tutti, sul mio sito personale, i file sorgenti per realizzare la struttura di supporto.

Buon Making a tutti 🙂

Arduino: Sensore resistivo di umidità del terreno

Abbiamo visto nei precedenti post come rilevare l’umidità del terreno con micro:bit per controllare l’irrigazione di una pianta, vediamo ora una soluzione estremamente economica che può essere adottata con Arduino e che mostrerò nel dettaglio durante il mio prossimo corso sulla realizzazione dei laboratori green.

Il funzionamento del sensore di umidità del suolo è estremamente semplice.

La sonda a forma di forcella, con due conduttori esposti, agisce come un resistore variabile (come un potenziometro) la cui resistenza varia in base al contenuto di acqua nel terreno.

La resistenza è inversamente proporzionale all’umidità del suolo:

  • più acqua è presente nel terreno implica maggiore conduttività e quindi minore resistenza;
  • meno acqua è presente nel terreno implica minore conduttività e quindi maggiore resistenza.

Pertanto il sensore fornisce una tensione di uscita proporzionale alla resistenza misurata, in tal modo possiamo determinare il livello di umidità.

La sonda ha la forma di una forcella su cui sono disposte delle piste conduttive esposte. Le forcelle saranno da inserire all’interno del terreno o in qualsiasi altro elemento di cui bisogna misurare l’umidità.

La forcella viene connessa ad un modulo elettronico e quest’ultimo dovrà poi essere connesso ad Arduino. Il modulo fornirà una tensione di uscita proporzionale alla resistenza rilevata dalla sonda, questa tensione verrà resa disponibile ad un pin analogico di Arduino, nell’esempio che segue collegheremo la sonda al pin A0.

Nella foto si notano, sulla sinistra i due pin a cui collegheremo i pin di uscita della forcella e sulla destra quattro pin:

  • A0: uscita analogica
  • D0: uscita digitale
  • GND: ground
  • Vcc: tensione positiva di alimentazione (da 3,3V a 5V)

Il modulo è dotato di un potenziometro per la regolazione della sensibilità dell’output digitale (DO). Con il trimmer sarà possibile impostare la soglia di sensibilità, in modo tale che, quando il livello di umidità e al di sopra o al di sotto di un determinato valore, sul D0 vi sarà un segnale HIGH che potrebbe, ad esempio, attivare un relè che controlla l’avvio di una pompa di irrigazione.

Sulla scheda sono presenti inoltre un LED che segnala il funzionamento della scheda ed un LED che segnala lo stato del pin D0.

Continua a leggere

Arduino: water sensor

Per le attività in programma per il corso sui laboratori green, spiegherò come controllare il livello d’acqua in una cisterna utilizzata per l’irrigazione. A livello prototipale svolgerò prima sperimentazioni su singola pianta utilizzando il “water sensor” che potete acquistare per pochi centesimi online. In una fase successiva impiegherò dei sensori di livello che vengono comunemente impiegati in cisterne e controlleremo il riempimento e lo svuotamento della cisterna.

Il “water sensor” misura il livello di conduttività elettrica del liquido, conduttività che sarà funzione della quantità di superficie del sensore immerso.
Nell’acqua ed in generale nei liquidi, il passaggio di corrente è dovuto alla presenza di sali, infatti l’acqua pura non risulta conduttiva.
Le piste parallele di rame presenti sul sensore sono connesse al potenziale positivo e al GND, quando il sensore viene immerso nel liquido viene misurata una differenza di potenziale tra i due poli, d.d.p. che dipenderà dalla quantità di superficie immersa, pertanto al variare della quantità d’acqua varierà il valore di resistenza tra i due potenziali.

Sottolineo che il sensore non è preciso e richiede una taratura iniziale che dipende prevalentemente dall’acqua, inoltre sensori diversi potrebbero fornirvi misure diverse.

Il segnale di uscita del sensore (pin S) verrà inviato su un pin analogico di Arduino e da esso convertito in un valore numerico che oscillerà tra ~ 0 e ~500, pertanto se il sensore non è immerso il valore misurato sarà di circa 0, mentre se sarà totalmente immerso raggiungerà il valore massimo rilevato.

Sul sensore sono presenti 10 piste di rame parallele, connesse in modo alternato, in modo che vi siano 5 piste connesse ad un potenziale alto e 5 piste connesse a GND. E’ presente inoltre un LED che indica quando il sensore viene alimentato.

  • S (Signal): uscita analogica da connettere ad un ingresso analogico di Arduino
  • +Vcc: potenziale positivo dell’alimentazione. Si consiglia di alimentare il sensore con una tensione compresa tra 3,3 V e 5V. Si ricorda che l’uscita analogica del sensore varierà in funzione della tensione di alimentazione del sensore.
  • – : da connettere al GND

Attenzione che il sensore non è progettato per essere completamente immerso, fate in modo che solo le tracce ramate parallele esposte sul PCB vengano a contatto con l’acqua.

Continua a leggere