Archivi categoria: arduino

IoT a basso costo con un ESP 01 – una veloce introduzione per i miei studenti

Sto svolgendo in queste settimane un corso Arduino per i miei allievi di II’, ma gli impegni dei consigli di classe e le attività di vicepresidenza mi hanno portato a spostare un paio di lezioni e per farmi perdonare ho deciso di implementare velocemente una breve lezioni che generi l’effetto “waooo” 🙂 spero possa funzionareL’idea è quella di comandare la marcia e l’arresto di motori asincroni trifase (380 Vac) remotamente attraverso comandi dati da cellulare utilizzando tecnologia a basso costo.

Aggiungere funzionalità di controllo remoto via WiFi ai propri progetti Arduino è ormai diventato relativamente semplice e molto economico. E’ da qualche tempo che sto utilizzando i noti ESP8266 nella versione più economica ESP01 per effettuare esperimenti di domotica a basso costo. ESP8266 è un microcontrollore programmabile in una modalità molto simile a quanto viene fatto per Arduino è costituito da un circuito SoC (System on Chip) dalle dimensioni ridottissime (5 x 5 mm) e la scheda che lo ospita integra un’antenna WiFi.

05

Esistono diversi modelli di ESP che includono l’ESP8266 ad essi è stato assegnato un nome che ha la seguente struttura ESP-XX dove XX è un numero che in questo momento va da 01 a 13 e che sicuramente nei prossimi mesi sarà destinato ad aumentare. In generale numeri più alti indicano funzionalità e performance più elevate, ma sicuramente ad oggi la versione più diffusa per semplicità di utilizzo e costi resta ancora l’ESP01.

I modelli ESP differiscono uno dall’altro per le seguenti caratteristiche:

  • dimensioni del modulo;
  • memoria flash, esterna al chip e varia da 512 KByte fino a 4MByte;
  • numero di pin;
  • antenna WiFi stampata su scheda o su apposito connettore a cui collegare un’antenna

Nell’immagine che segue un elenco dei più diffusi moduli ESP disponibili:

famiglia-esp

In questa breve trattazione utilizzerò l’ESP01.

Continua a leggere

IoT con WeMos D1 Mini usando Arduino IDE e Blynk

Durante le mie attività di formazione più volte mi è giunta la richiesta da persone non professioniste del settore elettronico o informatico, la realizzazione di progetti elettronici in grado di interagire via WiFi. Svolgere tale attività può richiedere competenze di livello più elevato che ovviamente tutti possono acquisire, ma per non aggiungere scoraggiamento nella fase iniziale di apprendimento ed invogliare sempre di più a sperimentare progetti sempre più complessi è forse bene partire da qualcosa di semplice che sono sicuro farà “esplodere” la vostra fantasia 🙂

Per questa breve introduzione utilizzerò: Arduino IDE, Blynk con scheda WeMos D1 Mini

Blynk

Avevo fatto una breve segnalazione tempo fa. Blynk è un’applicazione (per dirla in informatiche meglio parlare di freamework) che consente mediante dispositivi mobili (iOS e Android) utilizzando un sistema completamente grafico la realizzazione dei propri widget per comandare ad esempio l’azionamento via WiFi di dispositivi di automazione industriale o implementare progetti di domotica, ma anche di rilevare grandezze fisiche esterne e visualizzarle direttamente sul vostro dispositivo mobile.
Blynk può interagire con Arduino o Raspberry Pi se connessi ad una WiFi o a moltissimi dispositivi basati su ESP8266, modulo WiFi dotato di Input/Output General Purpose e processore ARM. Attualmente sono disponibili una grande quantità di board basate su ESP identificate tutti da un ID da ESP-01 a ESP-13 e la differenza tra una scheda e l’altra dipende dalla quantità di memoria disponibile, il numero di GPIO e il tipo di antenna WiFi.

Wemos D1 Mini

Per darvi un’idea di cosa è la Wemos D1 Mini si potrebbe fare la seguente analogia (non me ne vogliano i puristi mi serve solo per dare l’idea per chi incomincia), immaginate un Arduino micro dotato di una connessione WiFi ad un costo di non più di € 5 che potrà essere programmato in modo grafico con Blynk oppure attraverso l’IDE Arduino o ancora con NodeMCU (vedremo più avanti).
Wemos D1 Mini ospita un ESP-12F, dispone di 11 pin I/O digitali, 1 ingresso analogico, tutti i pin I/O gestiscono interrupt, pwm, I2C e ISP e tutti i pin I/O funzionano con una tensione di alimentazione di 3,3V e dispone di una memoria di 4MB.

01

02

Nell’immagine sopra riportata noterete che il nome usato sulla scheda è diverso da quello utilizzato nell’IDE di Arduino, fate riferimento ai numeri scritti in verde in fase di programmazione.

06

07

Come si evince dalle immagini sopra inserite la scheda è dotata di un connettore micro USB che vi permette di caricare gli sketch, ciò non accade per altre tipologie di schede che necessitano di un debugger per il caricamento di programmi.

On-line potete trovare su diversi store una serie di shield (per un elenco completo seguire il link) che possono esser impilati su questa piccolissima scheda.

03La scheda in genere viene venduta con diverse tipologie di pin header non saldati: maschio, femmina, femmina impilabile e ciò vi permette di adattarla ad ogni tipologia di circuito.

04

E’ presente un pulsante di reset

05

Sul pin analogico è possibile leggere tensioni fino a 3,2 V.

La conversione USB a UART viene realizzata dal chip CH340G (ben visibile nell’immagine sopra), presente su moltissimi cloni Arduino cinesi tra cui gli economicissimi Arduino nano. Gli utenti windows potranno procedere tranquillamente scaricando i driver dal seguente link su cui trovate anche i driver per MacOS X, però se avete l’ultima versione di MacOS X  Sierra  (10.12.x) utilizzate la procedura ben dettagliata a questo link. Sempre per gli utenti Mac, nel caso abbiate installato una precedente versione del driver seguite la procedura che trovate al seguente link.

Vedremo nei successivi passaggi l’utilizzo di WeMos D1 con l’Arduino IDE e con Blynk. Continua a leggere

Espandere gli I/O analogici di Arduino

Come già accennato in precedenti post in questi mesi sto svolgendo una serie di attività di prototipazione rapida di sistemi di rilevazione ambientale presso la facoltà di Agraria di Padova e l’esigenza di espandere la quantità di ingressi analogici di Arduino è una necessità reale che può essere superata agevolmente con pochissimi euro (per la precisione 1€ 🙂 ) utilizzando l’integrato 4051 Multiplexer/Demultiplexer analogico ad 8 canali in grado appunto di ampliare il numero di I/O di Arduino.
Esigenze di questo tipo si presentano spessissimo, ad esempio nel caso voi vogliate collegare più sensori analogici ad un ESP che dispone di un solo ingresso analogico, o più semplicemente andare oltre i 6 pin analogici di Arduino UNO R3, situazione che si presenta ad esempio nel caso in cui si stanno occupando i pin analogici A4 e A5 per la comunicazione I2C  per altri dispositivi.

L’integrato 4051 viene realizzato da diverse aziende vi allego i datasheet corrispondenti alla versione prodotta da Philips e Texas Instruments, identici nelle funzionalità:

All’interno trovate tutte le indicazioni necessarie per poterlo usare che vi riassumo nelle righe che seguono.

Piedinatura dell’integrato

01-4051

Dove:

  • Z: pin input/output (connesso agli Input/Output Arduino )
  • E: pin di enable (attivo basso, cioè attivo su LOW da connettere a GND)
  • VEE: tensione di alimentazione negativa (da connettere a gnd)
  • VSS: terra (0 V)
  • A0-A1-A2: pin di selezione input (connessi a tre pin digitali di Arduino) – A0 bit meno significativo (LSB), A2 bit più significativo (MSB)
  • Da Y0 a Y7: pin di inputs/outputs
  • VDD: tensione di alimentazione positiva (da 3V a 5v)

Tabella di verità

02-4051

Dalla tabella si evince che per poter far funzionare l’IC è necessario connettere E (Enable) a GND.

Il 4051 è un integrato in tecnologia CMOS dotato di 8 ingressi (nominati Y) che può accettare segnali analogici compresi tra 0V e 5 V, tali segnali possono essere selezionati mediante tre pin di selezione nominati: A0, A1, A2 ed inviati direttamente ad un pin analogico di Arduino per la successiva elaborazione.

La selezione del canale Y scelto (in altre parole del segnale analogico che si desidera leggere o scrivere) può essere fatta sfruttando lo stesso Arduino mediante 3 pin digitali, sui 3 pin si comporrà il numero binario corrispondente all’ingresso analogico Y scelto.

A titolo di esempio, ricordando che con tre bit possiamo rappresentare tutti i numeri tra 0 e 7 (2^0 = 1; 2^1 = 2; 2^2 = 4):

  • Se A0 = 1, A1 = 1 e A2 = 0 allora l’uscita selezionata sarà la Y3
    (2^1 + 2^1 + 2^0 = 2 + 1 + 0 = 3)
  • Se A0 = 1, A1 = 0 e A2 = 1 allora l’uscita selezionata sarà la Y5
    (2^1 + 2^0 + 2^2 = 2 + 0 + 4 = 5)

Per chiarirne il funzionamento analizziamo le due modalità operative:

  • Input: lettura di segnali analogici presenti sugli ingressi Y del 4051
  • Output: invio di un segnale analogico su una delle 8 uscite Y del 4051

4051 usato come multiplexer con Arduino
Lettura di segnali analogici presenti sugli ingressi Y del 4051
Continua a leggere

DotBot Click

DotBotClick-00

Le passeggiate che mi portano a scuola le sto impiegando per ascoltare podcast e per riflettere su progetti che sto portando avanti e dirvi che DotBot mi sta coinvolgendo un po’ ormai lo sanno anche le pietre 😀 ma cosa ci posso fare mi diverte! Se ciò induce felicità perché non farlo? Sono convinto che il progetto possa essere utile anche ad altri e poi la componente di ricerca è fondamentale per continuare a studiare e trovare nuove soluzioni didattiche, in una sola frase, citando Pierangelo Bertoli, l’insegnate dovrebbe avere: “…lo sguardo dritto e aperto nel futuro…”.

Cosa è successo in queste passeggiate “progettuali”? Come sapete nei mesi scorsi ho partecipato ad un evento che mi ha fatto rivivere dopo alcuni anni il “mondo Lego” dove la creatività è realizzata incastrando mattoncini … “incastro” quindi è la parola chiave che ho posto in cima all’albero progettuale di questa nuova versione.

In questa fase volevo rendere tutto libero da viti metalliche, esigenza che nasce da questi quattro obiettivi che mi sono posto:

  1. ridurre parti metalliche piccole in modo che anche i bambini potessero realizzare il robot;
  2. ridurre i tempi di assemblaggio del robot a vantaggio della programmazione;
  3. possibilità di personalizzazioni e ampliamento della piattaforma hardware;
  4. completamente open e gratuito.

Dirvi che ci sono riuscito al 100% sarebbe troppo presuntuoso, ma ho fatto il possibile.

L’analisi che ho fatto nel progettare questo nuovo modello è stata fatta anche analizzando i “competitor” anche se in questo caso forse è esagerato parlare di  “competitor” visto che nel caso di DotBot si parla di progetto open e gratuito che non ha il supporto di finanziamenti privati, se non quelli che vengono dal mio portafoglio, ma certamente per farne un oggetto didatticamente interessante bisogna analizzare cosa offre il mercato.

Cosa ho scoperto?

Mi sono accorto che molti progetti sembravano non pensati per la scuola o non pensati da insegnanti sia dal punto di vista estetico che funzionale. Accade spesso che le due caratteristiche sono fortemente sbilanciate, inoltre un fattore non da sottovalutare sono i costi non sempre allineati allo standard scolastico italiano.

Prerequisiti essenziali per realizzare DotBot Click

  1. avere una stampante 3D;
  2. munirsi di una buona dose di pazienza.

La stampante 3D è essenziale per la creazione di ogni parte e i costi (filamento di stampa e corrente elettrica) per la realizzazione di tutta la struttura sono bassi.

Per quanto riguarda la pazienza ne dovete avere un po’ i tempi di stampa totali, per ottenere una buona qualità e solidità delle strutture, sono di circa 15 ore.
La versione che vedete nelle immagini è stata realizzata in bassa qualità ma

Inoltre poiché le varie parti vengono incastrate in binari di larghezza e profondità di circa 2 mm la calibrazione della stampante influisce moltissimo, quindi in fase iniziale dedicate un po’ di tempo per calibrare la stampante. Ovviamente per piccoli problemi si potrà rimediare usando una piccola lima per smussare ed allargare incastri e nel caso di piccole rotture un po’ di colla sistema sempre tutto 🙂

Dal punto di vista estetico ho deciso di semplificare il più possibile ed ho abbandonato (non definitivamente per il futuro) la struttura ad esagono tipica del DotBot preferendo una struttura quadrata e smussata sugli angoli, ciò mi ha permesso di sistemare i motori mantenendo le ruote in asse, caratteristica per me essenziale per lo svolgimento di esercizi con gli studenti. Una tale simmetria non poteva essere mantenuta con una forma ad esagono se non aumentando di molto la superficie totale del robot.  Devo dirvi che ho fatto una discreta difficoltà nell’accettare questa soluzione geometrica e mi sono confrontato molto con Ludovico, ma alla fine è solo un fork del progetto sperimentiamo ed andiamo avanti 🙂

Di seguito l’immagine che a colpo d’occhio vi mostra la totalità degli oggetti, alcuni di questi non è obbligatorio stamparli.

DotBotClick-01

DotBotClick-02

Tutto è ad incastro, motori e batterie e schede elettroniche.

La condizione di partenza è la seguente:

DotBotClick-03

Continua a leggere

Aggiungere librerie nell’IDE Arduino

Durante un mio recente corso presso l’Università di Padova ho spiegato come installare e creare librerie in Arduino utilizzando le informazioni che scrissi tempo fa nel tutorial: Arduino – lezione 08: display a 7 segmenti e creazione di librerie
aggiungo a quanto già scritto alcuni approfondimenti e precisazioni che credo possano essere utili per chi incomincia ad utilizzare Arduino.

Esistono due modi per installare una libreria in Arduino:

Modo 1

Dalla versione 1.0.5 in avanti è possibile l’installazione automatica delle librerie all’interno della cartella sketchbook.
La posizione esatta della cartella “libraries” è funzione del sistema operativo. Tipicamente la libreria è costituita da un gruppo di file compressi in formato .zip da importare dal menù principale.

A titolo di esempio supponiamo di voler installare la libreria per la gestione del Real Time Clock DS1307 dal sito PJRC e installiamola importandola come file .zip

02-arduino-library

Sul sito indicato prelevate il file facendo click sul link che vi indica l’ultima versione, così come riportato nell’immagine che segue, sarete reindirizzati sul sito GitHub da cui potrete prelevare l’intera libreria.

03-arduino-library

04-arduino-library

Importare il file .ZIP attraverso il menù:

Sketch -> Include Library -> Add .ZIP Library…

01-arduino-library

Selezionate la cartella o il file .zip che contiene tutti i file che costituiscono la libreria.

Dopo l’installazione è necessario riavviare l’IDE.

Continua a leggere