In questo tutorial vi mostriamo come realizzare un robot controllato a voce utilizzando uno smartphone, Google Assistant, le piattaforme IFTTT e Adafruit.IO. In questo progetto abbiamo utilizzato un ESPP8266 Wemos D1, e il robot può ricevere comandi da una rete Wi-FI e controllare la velocità dei motori. Potete utilizzare questo tutorial in diversi modi, tra cui:

  • Scoprire come programmare un ESP8266 usando Arduino IDE;
  • Affinare le tue capacità di elettronica e saldatura;
  • Scoprire come assemblare un kit robotico;
  • Scoprire come usare Adafruit.IO con IFTTT nei tuoi progetti;

STEP 1: strumenti e materiali

 

In questo progetto sono stati utilizzati i seguenti strumenti:

  • Saldatura ferro e filo. I motori dc sono già arrivati con fili saldati ai suoi terminali… ma alla fine si rompe e si potrebbe dover resolder. Quindi considera di avere un buon ferro da saldare e filo di filo.
  • Foglio di schiuma Eva (o altro materiale non conduttore). Il telaio robot che ho usato in questo progetto è fatto di alluminio, e le tavole di circuito sono installate su queste parti metalliche. Ho usato uno strato di foglio di schiuma tra le tavole e la piastra di metallo per evitare possibili brevi circuiti.
  • Nastro a doppio lato. È stato usato per incollare i fogli di schiuma alle bacheche, e per l’installazione del Ponte.
  • Forbici, per aver tagliato alcuni rettangoli di foglio di schiuma.

Ho usato le seguenti parti hardware per il mio progetto:

  • Wemos D1 esp8266 dev board. Wemos D1 board è davvero facile da usare e programma con arduino. Ha la stessa impronta di arduino uno! In questo modo la maggior parte dello scudo arduino funzionerà anche con questa lavagna. Ha il modulo Wi-Fi integrato, per cui puoi usarlo in un diversi di progetti. Si possono usare anche altre tavole a base di esp8266.
  • L298n Dual canale h-Bridge modulo. Questo modulo permette di amplificare i segnali 3.3 v dal wemos (o da un arduino) per essere amplificato ai 12 v necessari per i motori.
  • Serbatoio del telaio robot fai da te. Questo fantastico kit ha con tutto quello che serve per costruire un serbatoio: due motori DC, marce, binari, bulloni, noci, ecc. Si arriva già con gli strumenti necessari per assemblare il telaio, che è ottimo per i principianti!
  • 18650 3.7 v batterie (x3). Questo serbatoio usa motori da 12 v. Ho usato tre batterie da 3.7 v in serie per averle alimentate.
  • 3 S 18650 titolare batteria. Può reggere tre 18650 batterie in serie, e può essere easilly essere attaccata al retro del serbatoio.
  • 18650 caricabatterie a batteria. Le tue batterie alla fine avranno finito il potere. Quando succede, un caricabatterie a batteria verrà in tuo soccorso.
  • Ponticelli. Io ho usato 6 PONTICELLI MASCHI-femmine per segnali tra l’h-Ponte a il wemos, e 2 PONTICELLI MASCHI-MASCHI PER 5 V e gnd. Potresti avere bisogno di più se hai in programma di aggiungere qualche sensore.
  • Micro cavo USB. Avrai bisogno di questo per aver caricato il tuo codice. La maggior parte delle tavole già arrivano con il proprio cavo.

 

Passaggio 2: assemblare il robot

 

La prima parte di questo progetto è stata l’assemblaggio della struttura robot. Questa volta ho deciso di dare la possibilità ad un kit robotico preso direttamente da un negozio online. Puoi trovare il telaio robot al seguente link: http://bit.ly/2ycI8fP. Se stai cercando un kit, credo sia una buona opzione!

All’inizio sembrava che l’assemblaggio sarebbe stato complesso anche a causa della mancanza di parti (data la quantità). Ma in realtà tutti i pezzi sono di buona qualità, e diversi pezzi di ricambio sono inclusi nel kit. In questo modo, una vite persa sotto il banco di lavoro non renderà impossibile realizzare il tuo progetto.

Un altro punto positivo è che tutti gli strumenti necessari per montare il robot sono inclusi nel kit (un paio di chiavi di Allen e il cacciavite). Credo che questo renda eccellente il kit per cominciare a chi non ha tanti strumenti!

Come aspetto negativo vorrei sottolineare la mancanza di documentazione. Il manuale di montaggio del robot (un file di foglio di calcolo in cinese) non è estremamente user friendly, e non ci sono tutorial online. Un altro punto di attenzione riguarda il materiale della struttura robot. La base è interamente fatta di alluminio, che può causare qualche corto circuito se i perni delle tavole a circuito stampato toccano la cornice. Ci sono altri kit online che si possono usare.

STEP 3: impianto elettrico per il circuito (Wemos D1)

 

Un power pack fatto di tre batterie è stato installato sul retro del robot. Fornisce 11.1 V (3 x 3.7 v) al robot. Basta così per il potere dei motori 12 V DC.

Un L298n Dual Channel h-Bridge è stato utilizzato per il controllo dei motori. Riceve alcuni segnali da 3.3 v della lavagna wemos, e fornisce tensioni più alte per i motori. Permette anche ai motori di correre in entrambe le direzioni, dipende dalla combinazione di quei segnali di ingresso. Ogni dispositivo è collegato secondo gli schemi. Segue una lista delle spille che ti serviranno per connetterti.

Wemos D1 input / uscite:

 

  • Pin digitale D3 (gpio5) => h-ponte enb pin
  • Pin digitale D4 (gpio4) => h-Ponte contributo pin
  • Pin digitale D5 (gpio14) => h-Ponte In3 PIN
  • Pin digitale D6 (gpio12) => h-Ponte In2 PIN
  • Pin digitale D7 (gpio13) => h-Ponte In1 PIN
  • Pin digitale D8 (gpio0) => h-Ponte ena pin
  • 5 v pin => h-PONTE 5 V PIN
  • Gnd Pin => h-Bridge gnd pin

 

H-Bridge inputs/outputs:

  • Snb pin => wemos d3 pin
  • Batteria contributo => wemos d4 batteria
  • In3 PIN => WEMOS D5 pin
  • In2 PIN => WEMOS D6 pin
  • Pin in1 => wemos pin pin
  • ENA pin => Wemos D8 pin
  • 5V pin => Wemos 5V pin
  • Gnd Pino => wemos gnd pino
  • Gnd pin => batteria pack filo negativo
  • 12 v pin => batteria pack filo positivo
  • Out1 => giusto motore negativo filo
  • Out2 => giusto motore positivo filo
  • Out3 => il filo positivo del motore sinistro
  • Out4 => il filo negativo del motore sinistro

 

STEP 4: setup di esp8266 su Arduino IDE

 

Per questo progetto ho usato Arduino IDE per la programmazione di wemos. È il modo più semplice se hai già usato un arduino prima, e non avrai bisogno di imparare un nuovo linguaggio di programmazione, come Python o Lua per esempio. Se non l’hai mai fatto prima, prima dovrai aggiungere il supporto ESP8266 al software Arduino.

  1. Scarica e installa Arduino IDE ultima versione

Puoi trovare l’ultima versione per Windows, Linux o mac osx sul sito di Arduino: https://www.arduino.cc/en/main/software

Scaricalo gratuitamente, installalo sul tuo computer e lancialo.

 

  1. Aggiungi ESP8266

Arduino IDE arriva già con il supporto per un sacco di tavole diverse: Arduino nano, mio, uno, mega, yún, ecc. Purtroppo esp8266 non è di default tra tutte queste piattaforme. Quindi, per caricare i tuoi codici in un tabellone di base esp8266, dovrai aggiungere prima le sue proprietà al software di Arduino.

  • Naviga nel file > Preferenze (ctrl +, su Windows OS);
  • Aggiungi il seguente url alla casella aggiuntiva di gestione delle bacheche (quella in fondo alla finestra delle preferenze):

http://arduino.esp8266.com/stable/package_esp8266com_index.json

  • Se la casella di testo non era vuota, vuol dire che aveva già aggiunto altre bacheche prima su Arduino ide prima. Aggiungi una virgola alla fine dell’url precedente e quella sopra.
  • Colpisci il pulsante “ok” e chiudi la finestra delle preferenze.
  • Naviga per strumenti > Board > Board manager per l’aggiunta della tua bacheca esp8266.
  • Digita ” Esp8266″ sulla casella di testo di ricerca, seleziona ” Esp8266 By Esp8266 Community ” e installa.

Ora il tuo Arduino IDE sarà pronto per lavorare con un sacco di tavole di sviluppo basate su esp8266, come il generico esp8266, nodemcu (che ho usato in questo tutorial), adafruit urrà, sparkfun cosa, wemos, ecc.

 

  1. Aggiungere le librerie

 

Le seguenti librerie saranno utilizzate per il nostro codice Arduino:

 

  • Libreria Client di Arduino http (https://github.com/arduino-libraries/ArduinoHttpClient)
  • Arduino IO library (https://github.com/adafruit/Adafruit_IO_Arduino)
  • Libreria Adafruit Mqtt (https://github.com/adafruit/Adafruit_MQTT_Library)

Naviga a sketch-> Includi Libreria -> Gestisci le librerie… sul tuo Arduino IDE e aggiungi le librerie sopra.

Ora che il tuo ambiente dev è pronto, andiamo avanti al prossimo passo!

 

Passo 5: Adafruit.IO, configurazione

 

Ci sono un sacco di servizi disponibili per comunicare un microcontrollore al web. Con quei servizi puoi caricare / scaricare i dati a / dal Cloud, e fare un sacco di cose fighe. Adafruit.IO è uno di quei servizi gratuiti. È davvero facile da usare e promette di portare internet a tutti!

Crea Adafruit.IO web feed

  • Iscriviti a su https://io.adafruit.com/
  • Sotto feed >create un nuovo feed aggiungi un nuovo feed di nome “comandi vocali”. creerà un database, e lo usiamo store i comandi ricevuti dal gadget.

Al prossimo passo vi mostrerò come configurare ora, un’altra piattaforma che ho usato in questo progetto. L’ idea qui è semplice: ora avrà qualche trigger configurato e manda alcuni dati a adafruit. Il gadget sarà in grado di leggere i dati memorizzati in un dato feed su adafruit.

E’ anche un buon momento per copiare il tuo adafruit, che verrà successivamente usato per permettere al tuo dispositivo di accedere al database. Naviga per le impostazioni > Visualizza la chiave AIO e copia il codice chiave attivo. Ne avrai bisogno per il tuo codice Arduino (nodemcu) sui prossimi passi.

STEP 6: IFTTT configurazione

 

IFTTT è una piattaforma gratuita che ti aiuta a collegare le app e i dispositivi. Puoi usarlo per collegare il tuo smartphone con altri gadget, o per condividere i dati tra i tuoi webservices preferiti (come google, Facebook, Twitter, Instagram, ecc.) e altri dispositivi fisici, ad esempio. E la parte migliore è che è davvero facile da usare!

IFTTT usa una logica del ” se questo allora quello” dove ” questo ” rappresenta un servizio che farà scattare una data azione data da ” quello”. In questo modo si creano piccole applet che collegano webservices e dispositivi. Per il progetto descritto in questo tutorial, ho usato Google Assistant per inviare comandi vocali da uno smartphone a adafruit. Io, che viene poi ricevuto dal robot.

Prima dovrai iscriverti a:

https://ifttt.com/

Installa ora IFTTT sul tuo smartphone. Lo puoi trovare al Google Play Store:

https://play.google.com/store/apps/details?id=com.ifttt.ifttt

 

https://itunes.apple.com/us/app/ifttt/id660944635?mt=8

 

Sul sito, naviga su nuova applet (clicca il pulsante freccia accanto al tuo login per accedere al menu).

Nel prossimo passo ti faccio vedere come creare le IFTTT applets.

STEP 7: installare Google Assistant

 

Per questo progetto, dovrai anche installare l’app di Google Assistant sul tuo smartphone Android o Iphone. Lo puoi trovare qui su Google Play o Apple Store:

https://play.google.com/store/apps/details?id=com.google.android.apps.googleassistant&hl=en

https://itunes.apple.com/br/app/google-assistant/id1220976145?l=en&mt=8

Google Assistant è un assistente virtuale sviluppato da Google. È l’intelligenza artificiale in grado di identificare i comandi vocali, eseguire comandi e altri compiti. Ha una grande integrazione con il servizio IFTTT, che è stato approfondito in questo tutorial.

STEP 8: applet IFTTT

 

Per questa applet creiamo un comando vocale che farà muovere il robot in una determinata direzione o girare a sinistra / a destra.

Crea l’applet sul sito:

 

1-clicca su +this;

 

2-digita “Google Assistant” sulla casella di testo di ricerca service e seleziona Google Assistant widget;

 

3-scegliere “dire una frase con sia un numero che un ingrediente di testo” Trigger. Come è descritto sul sito di IFTTT, creerà un’animazione ogni volta che si dice “ok google” seguito da una frase con testo e un numero;

 

4-per completare l’innesco, dovrai definire la frase che vuoi dire. Ora ti permette di configurare più di una frase come innesco. $ rappresenta l’ingrediente di testo e #l’ingrediente del numero. Nel mio caso, ho definito i seguenti comandi:

  • Gira $ #gradi
  • Ruota i #gradi di $
  • Sposta $ #

5-dovrai anche definire il messaggio che dirà in risposta, se ti capisce al comando. Nel mio caso l’ho configurato per dire “girare $”.

6-ora scegli +that;

7-Digita “adafruit” E seleziona adafruit > Invia dati a adafruit io. Questo invia i dati ad un feed nel tuo account adafrui. io ogni volta che l’innesco che hai configurato in precedenza (+This) è attivato;

 

8-configura il nome del feed come ” Comando vocale “. in ” dati da salvare ” scegli ” Aggiungi ingrediente ” e aggiungi il textfiel e il numberfield. Aggiungi “:” tra allora. Questo funziona come delimitatore più tardi sul codice Arduino.

9-finisci il tuo programma e accendila

 

Ora ogni volta che si dice una frase (ad esempio: ” girare a sinistra 90 gradi ” o ” andare avanti 10 “), si innesca il comando e il numero su adafruit. Io (nell’esempio precedente, ” left:90″ o ” forward:10″ sarà memorizzato). Ripeti le istruzioni precedenti se vuoi creare frasi diverse.

Nel seguente passo vi mostriamo come fare in modo che il codice il esp8266 esegua un’azione quando viene ricevuto il comando.

STEP 9: Codice Arduino

 

Scarica il codice e aprilo su Arduino IDE. Dovrai aggiornare i seguenti parametri prima di caricare il codice:

  • Io _ USERNAME = Adafruit. Io nome utente
  • IO_KEY = Adafruit.io key
  • Wifi _ ssid rete Wi-Fi ssid
  • Wifi _ pass = password di rete Wi-FI

Seleziona ‘WEMOS D1 R2 & Mini’ (se stai usando questa piattaforma), e carica il codice. Ci vorrà un po’, porta pazienza.

Quando il caricamento è completato, stacca il cavo USB e metti le batterie. Il codice inizierà a correre immediatamente e Wemos cercherà automaticamente di collegare il router wi-FI e aspettare i comandi dal server adafruit. IO.

Robot pronto, ora è arrivato il momento di provarlo! Lancia Google Assistant sul tuo telefono. Puoi premere l’icona del microfono sull’app o basta dire “ok google” e inizierà ad ascoltare i tuoi comandi.

Pronuncia le frasi che hai configurato prima (sposta [avanti / indietro] [Numero] o gira [destra / sinistra] [Numero]). Se Google Assistant capisce quello che hai appena detto, invia un messaggio ad un adafruit. Io feed (usando l’app ora). Esp8266 Board ascolterà quel feed e se arriva un nuovo messaggio, lo dividerà in due parti (un comando e un numero).

La stringa di comando potrebbe assumere uno dei seguenti valori: sinistra, anteriore, posteriore o destra, e sarà utilizzata per selezionare la direzione e la velocità appropriate di ogni traccia. La parte del numero potrebbe rappresentare l’angolo di rotazione (se è stato ricevuto il comando ” sinistro ” o ” Destro “) o la distanza che deve spostare (se è stato ricevuto il comando ” avanti ” o ” Back “).

Notare che questo robot usa un controller a loop aperto. In questo modo, gli angoli e le distanze non saranno precisi (e potrebbero anche dipendere da quanta potenza c’è rimasta sulle batterie). Se hai bisogno di precisione sui movimenti, dovrai aggiungere un sistema a loop chiuso (misurare la rotazione di ogni motore, ad esempio, e usarlo come feedback).

 

Connettere Raspberry Pi e Arduino tramite cavo seriale USB

Comunicazione seriale con Arduino e Python