Relazione auto a trazione elettrica comandata con ARDUINO



Documenti analoghi
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Telecontrollo escavatore LEGO con board Arduino

Arduino: Programmazione

Università degli studi di Roma LA SAPIENZA

11^ parte : Come gestire i servomotori con Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

ITC FOSSATI- DA PASSANO. Progetto sonar. A cura di: Bamonte Davide Bertagna Davide Canaccini Alessandro Celi Andrea Conti Thomas Filattiera Lorenzo

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

12 - timer da cucina display a 4 cifre

Automobile Bluetooth

TITOLO ESPERIENZA: Progetto Arduino GPS OBIETTIVO: Realizzare tramite Arduino un sistema di localizzazione GPS

D sistema d allarme con sensori magnetici

Indruduzione... 1 Il modulo Bluetooth HC Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android...

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari

Rossetto Flavio a.s. 2011/2012 classe 5E 2

8^ parte : Motor shield FE e motore passo-passo bipolare. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

8^ parte : Pilotare Motori passo-passo bipolari usando l integrato L298N. Author: Ing. Sebastiano Giannitto (ITIS M.

Relazione Release Alpha 2.0

Montaggio e configurazione hard disk Introduzione

QUALITÀ, ASSISTENZA, MANUTENZIONE... UNA RICETTA PER SODDISFARE AL MEGLIO LE ESIGENZE DEI CLIENTI.

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore

Università degli Studi di Messina

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Introduzione alla programmazione in C

Il campanello Trilly è un avanzatissimo videocitofono con supporto ai più avanzati sistemi di gestione via Smartphone.

ANNO SCOLASTICO

Facciamo click su Ricerca tra i miei Viaggi

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

G l o b a l M o b i l e S i s t e m a d i t e l e c o n t r o l l o G P S s u G S M / G P R S

CORSO ARDUINO. Giulio Fieramosca Stefano Panichi. Corsi GOLEM 2014

Quick Guide imagic. ATTENZIONE Prima di collegare l alimentazione inserire la SD CARD che si trova dentro alla scatola (vedi istruzioni all interno)

Esercitazione Controllo di un motore DC mediante Arduino YUN

NTC E MISURA DELLA TEMPERATURA CON ARDUINO

Corso Base Arduino ed Elettronica

CASO D USO: MICRORACCOLTA. 21 aprile

ESPLORARE IL MONTE CUCCO CON SMARTPHONE E TABLET: QRPLACES E LA REALTÀ AUMENTATA

Sistema Informativo Anagrafe Fondi - SIAF

RISTOFIERE GESTIONE BAR, RISTORANTI, SAGRE E FESTE DI PAESE. Visita il nostro sito per tutti i nostri prodotti

WebGis - Piano Comprensoriale di Protezione Civile

Progetto Esami Di Stato Anno 2014/2015

Autoware Ladder Tool (per Arduino ) Basic Tutorial

Guida all uso di Java Diagrammi ER

Impianti per il trasferimento di energia

Esame di INFORMATICA

Nozione di algoritmo. Gabriella Trucco

Manuale IT_VNA by IZ1PMX

RILEVA LIGHT Manuale dell Utente

Dichiarazione di conformità Noi dichiariamo sotto la nostra esclusiva responsabilità che il prodotto è conforme alle disposizioni della

6^ parte : Acquisizione della temperatura con LM35. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Codifica: dal diagramma a blocchi al linguaggio C++

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari

GUIDA DETTAGLIATA ALL ACQUISIZIONE DELL ACCOUNT GMAIL.

PROGETTO PLC Moeller Easy 621dc-tc AZIONAMENTO CARROPONTE

COME È FATTO IL COMPUTER

NuMa Nuove Manutenzioni. Web Application per la Gestione dell Iter di Manutenzione degli Edifici e del Territorio

ISTRUZIONI PER LA TRASFORMAZIONE DI UN DISPOSITIVO By10850 IN UN DISPOSITIVO By10870

Manuale istruzioni. Rivelatore di presenza art Manuale per l'installatore

Guida per esecuzione dell aggiornamento del programma DINAMIC

MODULO 01. Come è fatto un computer

VRbot e ROBONOVA-I (rev. 1.2)

Accedendo a questo menu, è possibile effettuare l aggiornamento dei programmi contenuti nella memory card in due diversi modi: CONNESSIONE PC:

Circolari e lettere da Word con anagrafiche e indirizzi da Metodo

Raggruppamenti Conti Movimenti

Manuale Utente Guglielmo MILESTONE

Invio SMS. DM Board ICS Invio SMS

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

8^ parte : Pilotare Motori passo-passo bipolari usando l integrato L298N. Author: Ing. Sebastiano Giannitto (ITIS M.

I L C O M P U T E R COM E FATTO DENTRO (Unità 2)

Guida alla registrazione on-line di un DataLogger

inserire la SD CARD che si trova dentro alla scatola

Introduzione al MATLAB c Parte 2

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

File, Modifica, Visualizza, Strumenti, Messaggio

PRINCIPIO DI FUNZIONAMENTO DI UN ASCENSORE

MONITORAGGIO ACQUEDOTTO MANUALE UTENTE

Istruzioni. Il cuore del dispositivo è un Embedded PC Linux che raccoglie e gestisce tutte le funzioni dell' apparecchiatura.

PROGETTAZIONE DI UN CONTROLLO ON-OFF CON CRITERI E METODOLOGIA

- la possibilità di monitorare lo stato attuale della macchina - fornire una reportistica sulla base di alcune variabili

9^ parte : Come pilotare motori dc utilizzando il motor shield. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Arduino: domotica open source

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

DESCRIZIONE GENERALE E ARCHITETTURA HARDWARE DI I-DROID01

CONTROLLO IN TENSIONE DI LED

Controllo accessi nei cantieri

Il contatore elettronico

STRUMENTO LOCALIZZATORE DI CAVI MODELLO: 5000E MANUALE D USO

Comunicazioni preventive lavoro intermittente (job on call-a chiamata)

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

EW3590/EW3591/3592 Cuffia stereo Bluetooth con microfono

Chapter 1. Circuiti sequenziali: macchine a stati

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

ATTENZIONE Prima di collegare l alimentazione inserire la SD CARD che si trova dentro alla scatola (vedi istruzioni all interno)

Ammortamento di un debito

Installazione Tooway. Guida veloce all installazione del servizio Tooway

Istituto Nazionale di Previdenza per i Dipendenti dell Amministrazione Pubblica

CitySoftware PROTOCOLLO. Info-Mark srl

LUXMETRI DIGITALI (digital lights meters) Art. Sicutool 4481GS

L obiettivo di questo servizio, proposto agli espositori, è di poter disporre dei dati anagrafici dei visitatori rilevati presso il loro stand.

Note funzionali Modello Unico Dichiarazione Ambientale MUD 2013

Transcript:

Relazione auto a trazione elettrica comandata con ARDUINO Powered by: Ventrella Niccolò Sciaruto Mattia Giannarelli Nicola Valenti Giorgia Loiacono Lucadomenico 1

INDICE Introduzione..3 Materiale utilizzato.4/5 Funzionamento.6 Realizzazione circuito.6 Programmazione Arduino.7-14 Possibili miglioramenti..15 Collegamenti con le altre materie.16 Possibili utilizzi nella vita reale..16 Conclusioni e foto del gruppo 17 2

INTRODUZIONE In questa relazione, noi, Best Electronic Group della classe 4Q, vi illustreremo come realizzare una macchina guidata da arduino in due differenti modalità: -Autonomo; -Teleguidato, mediante uso del bluetooth da applicazioni...android. Il primo prototipo di Macchina, nasce nel 2013. Dopo diversi tentativi di una realizzazione completa, abbiamo deciso di acquistare una struttura già munita di motori e appositi sistemi di bloccaggio, in modo da semplificare il lavoro. Nel momento in cui ci siamo accorti che la nostra buona scelta, il progetto ha cominciato a prendere forma. PRIMA DOPO-> 3

MATERIALE UTILIZZATO Durante il nostro percorso di realizzazione abbiamo utilizzato diversi materiali, alcuni qui sotto elencati: ARDUINO UNO Arduino uno è una scheda elettronica di piccole dimensioni, con un microcontrollore e circuiteria di contorno, mediante la quale si possono realizzare molti progetti. L'Arduino necessita la programmazione tramite linguaggio MicroC, un derivato del linguaggio C. MOTORI DC 6V (x4) LED Vdc=6v I=15-17 ma V=1.2v INTEGRATO L293B (PONTE H) L'integrato L293B TEXAS INSTRUMENTS, comunemente noto come ponte H, è solo uno dei tanti modelli di circuiti di controllo. Il ponte H è un circuito elettronico che può funzionare nei quattro quadranti del piano corrente-tensione sul carico. In breve, tramite un alimentazione esterna (nel nostro caso ricevuta dall' Arduino), il ponte H permette il pieno controllo sulla rotazione dei motori. 4

SONAR HC-SR04 HC-SR04 è un sensore a ultrasuoni che misura il tempo impiegato dalle onde sonore emesse da un sorgente, dal momento dell'invio, e, dopo l'incontro di un ostacolo, il loro ritorno. Tramite il tempo calcolato si è in grado di ricavare la distanza. SHIELD BLUETOOTH La shield bluetooth è un dispositivo integrativo all'arduino. Questo piccolo dispositivo permetto l'uso, e il controllo dell'arduino da dispositivi bluetooth, precedentemente accoppiati con la shield, chiamata HC- 06. Per utilizzarla è necessario disporre dell applicazione android arduino rc controller. BREADBOARD CAVI DI RAME RIGIDO (d=0.25mm) 5

FUNZIONAMENTO La macchinina presenta diverse funzionalità. Inizialmente tramite l'utilizzo degli ultrasuoni HC-SR04, il veicolo in movimento riesce ad individuare un ostacolo posto ad una distanza preimpostata, e data una funzione di controllo nel programma lo evita cambiando direzione; la scelta della direzione avviene per mezzo di un controllo, nel quale la macchina compie una rotazione di 90 a destra e 90 a sinistra dell'ostacolo, e si dirige sulla via dove rileva la profondità maggiore. Secondariamente la macchinina può essere guidata mediante l'uso di un applicazione scaricabile da play store per soli smartphone android, che utilizza la connessione bluetooth, connettendosi alla shield bluetooth (HC-06) integrata sul veicolo. L'utilizzo si estende anche alla possibilità di utilizzare un impianto sonoro tramite uno speaker e luminoso tramite vari led piazzati sulla struttura. PROCEDIMENTO OPERATIVO La realizzazione del progetto è avvenuta in 2 diverse fasi: -Realizzazione del circuito; -Programmazione dell'arduino. REALIZZAZIONE DEL CIRCUITO 6

PROGRAMMAZIONE DELL ARDUINO #include <SoftwareSerial.h> #define C 2100 #define D 1870 #define E 1670 #define f 1580 #define G 1400 #define R 0 int bluetoothtx = 0; //Trasmettirore bluetooth int bluetoothrx = 1; //Ricevitore bluetooth const int motorpin1 = 2; //Motore destro massa const int motorpin2 = 3; //Motore destro positivo const int motorpin3 = 4; //Motore sinistro positivo const int motorpin4 = 5; //Motore sinistro massa int speakerout = 8; //Speaker const int enablepin = 9; //Pin di accensione ponte H const int led1 = 10; //Luci posteriori int echopin = 11; //Ricevitore ad infrarossi int trigpin = 12; //Trasmettitore ad infrarossi const int led = 13; //Luci anteriori char lettera; int cont = 0; int conta = 0; int contb = 0; //Assegnamento da bluetooth //Contatore per automatizzare la macchina //Contatore note SoftwareSerial bluetooth(bluetoothtx, bluetoothrx); void setup() //Dichiaro i componenti di OUTPUT e INPUT pinmode(trigpin, OUTPUT); pinmode(echopin, INPUT); pinmode(motorpin1, OUTPUT); pinmode(motorpin2, OUTPUT); pinmode(motorpin3, OUTPUT); pinmode(motorpin4, OUTPUT); pinmode(enablepin, OUTPUT); pinmode(led, OUTPUT); pinmode(led1, OUTPUT); 7

pinmode(speakerout, OUTPUT); Serial.begin(9600); //Avvio monitor seriale (se connesso a PC) bluetooth.begin(115200); //Avvio la comunicazione tra bluetooth e PC/dispositivo bluetooth.print("$$$"); //Scrivo su monitor seriale "$$$" delay(100); //Pausa di 100mS bluetooth.println("u,9600,n"); //Scrivo su monitor seriale del dispositivo bluetooth (dove possibile) bluetooth.begin(9600); //Avvio la comunicazione tra bluetooth e PC/dispositivo digitalwrite(enablepin, HIGH); //Accendo il ponte H //LOOP BLUETOOTH void loop() if(conta==58) conta=0; //Azzera il contatore note if(bluetooth.available()) //Se un dispositivo bluetooth e'connesso do lettera = (char)bluetooth.read(); //'lettera' assume il valore dato da bluetooth Serial.print(lettera); //Scrive su monitor seriale 'lettera' if(lettera=='w') ledon(); //Accende le luci anteriori if(lettera=='w') ledoff(); //Spegne le luci anteriori if(lettera=='u') led1on(); //Accende le luci posteriori 8

if(lettera=='u') led1off(); //Spegne le luci posteriori if(lettera=='x') cont=1; //Incremento 'cont' if(lettera=='x') cont=0; //Decremento 'cont' if(cont==1) automatica(); //Funzione per automatizzare la macchina while(cont==1); //Ripete il ciclo affinche 'cont' ha valore 1 if(lettera=='f') avanti(); //Funzione avanti if(lettera=='b') indietro(); //Funzione indietro if(lettera=='s') ferma(); //Funzione ferma if(lettera=='l') sinistra(); //Funzione sterzo a sinistra if(lettera=='r') destra(); //Funzione sterzo a destra 9

if(lettera=='v') contb=1; if(lettera=='v') contb=0; if(contb==1) // LET THE WILD RUMPUS BEGIN ============================= int melody[] = E, E, E,R, E, E, E,R, E, G, C, D, E, R, f, f, f,f, f, E, E,E, E, D,D,E, D, R, G,R, E, E, E,R, E, E, E,R, E, G, C, D, E, R, f, f, f,f, f, E, E, E, G,G, f, D, C,R ; int MAX_COUNT = sizeof(melody) / 2; // Melody length, for looping. // Set overall tempo long tempo = 5000; // Set length of pause between notes int pause = 500; // Loop variable to increase Rest length int rest_count = 100; //<-BLETCHEROUS HACK; See NOTES // Initialize core variables int tone_ = 0; int beat = 0; long duratin = 0; tone_ = melody[conta]; beat = 50; duratin = beat * tempo; // Set up timing playtune(tone_,rest_count,duratin); // A pause between notes... delaymicroseconds(pause); 10

conta++; void automatica() int d,s; //Variabili per controllo distanza laterale long distance; //Variabile per controllo distanza anteriore distance=distanza(); //'distance' viene calcolata e restituita nella funzione 'distanza()' monitorseriale(distance); //Scrive su monitor seriale 'distance' if(distance>25) avanti(); else ferma(); delay(500); controllo(d,s); //Funzione per controllo distanza laterale, al quale passiamo le apposite variabili 'd', ed 's' //CONTROLLO AUTOMATICA long distanza() long duration, distance; digitalwrite(trigpin, LOW); //Tramite infrarossi la macchina e' in delaymicroseconds(2); //grado di calcolare il tempo da quando digitalwrite(trigpin, HIGH); //invia e riceve il segnale ad IR, e delaymicroseconds(10); //calcolare la distanza da ciò che ha davanti digitalwrite(trigpin, LOW); duration = pulsein(echopin, HIGH); distance = (duration/2) / 29.1; return distance; //Restituisce al programma principale 'distance' void controllo(int d, int s) //Controllo prossimità laterale destra(); //Gira a destra per il tempo stabilito 11

delay(1250); ferma(); delay(30); d=distanza(); delay(30); sinistra(); delay(2500); ferma(); delay(30); s=distanza(); delay(30); //Si ferma per il tempo stabilito //'d' viene calcolata e restituita nella funzione 'distanza()' //Gira a sinistra per il tempo stabilito //Si ferma per il tempo stabilito //'s' viene calcolata e restituita nella funzione 'distanza()' if(d>s) destra(); delay(2500); //Se 'd' è maggiore di 's', e quindi la distanza a destra della macchina è più conveniente //La macchina gira a destra per il tempo stabilito e sceglie quella direzione //FUNZIONI MOTORI void avanti() digitalwrite(motorpin1, LOW); digitalwrite(motorpin2, HIGH); digitalwrite(motorpin3, LOW); digitalwrite(motorpin4, HIGH); void indietro() digitalwrite(motorpin1, HIGH); digitalwrite(motorpin2, LOW); digitalwrite(motorpin3, HIGH); digitalwrite(motorpin4, LOW); void ferma() digitalwrite(motorpin1, LOW); digitalwrite(motorpin2, LOW); digitalwrite(motorpin3, LOW); digitalwrite(motorpin4, LOW); 12

void sinistra() digitalwrite(motorpin1, LOW); digitalwrite(motorpin2, HIGH); digitalwrite(motorpin3, HIGH); digitalwrite(motorpin4, LOW); void destra() digitalwrite(motorpin1, HIGH); digitalwrite(motorpin2, LOW); digitalwrite(motorpin3, LOW); digitalwrite(motorpin4, HIGH); //ALTRE FUNZIONI void monitorseriale(long distance) Serial.print("Distanza = "); Serial.print(distance); Serial.print("\n"); void ledon() digitalwrite(led, HIGH); void led1on() digitalwrite(led1, HIGH); void ledoff() digitalwrite(led, LOW); void led1off() digitalwrite(led1, LOW); 13

void playtune(int tone_, int rest_count, long duratin) // PLAY TONE ============================================== // Pulse the speaker to play a tone for a particular duration long elapsed_time = 0; if (tone_ > 0) // if this isn't a Rest beat, while the tone has // played less long than 'duration', pulse speaker HIGH and LOW while (elapsed_time < duratin) digitalwrite(speakerout,high); delaymicroseconds(tone_ / 2); // DOWN digitalwrite(speakerout, LOW); delaymicroseconds(tone_ / 2); // Keep track of how long we pulsed elapsed_time += (tone_); else // Rest beat; loop times delay for (int j=0; j < rest_count; j++) // See NOTE on rest_count delaymicroseconds(duratin); 14

POSSIBILI MIGLIORAMENTI Uno dei possibili miglioramenti è dato dall aggiunta di un particolare integrato comunemente chiamato MAG. Grazie a questo integrato, la macchinina sarebbe in grado, tramite il rilevamento di campi magnetici, di costruire una mappa di un certo edificio, munito di ferrite (dischi magnetici), stabilendo con ciò i percorsi più brevi per raggiungere un punto B partendo da un punto A. Un altro possible miglioramento sarebbe portato dall aggiunta di una shield WI-FI, con la quale la macchinina sarebbe in grado di essere controllata da tutti i dispositivi connessi alla sua stessa rete, o da un apposito sito. Quest ultima modifica avrebbe il compito di filmare l andamento della macchina,tramite una telecamera montata sopra al mezzo stesso, in modo da ricreare la grafica di un gioco, dunque la visione in prima persona del viaggio. Tutto questo tramite un monitor al quale sarà collegata la webcam. 15

COLLEGAMENTI CON ALTRE MATERIE INFORMATICA: La programmazione dell arduino è stata fatta in linguaggio Micro-C, che come il C++ utilizzato a informatica è un derivato del linguaggio C. Precedentemente abbiamo inserito il nostro sketch, nel quale si può notare questa somiglianza. MATEMATICA: Per quanto riguarda questa materia, è stato necessario Effettuare dei calcoli per la rotazione della macchinia quando è utilizzata in modalità automatica, in modo tale da regolare gli angoli di rotazione. INGLESE: La materia inglese è stata coinvolta nella programmazione,in quanto la maggior parte dei comandi sono in lingua inglese. POSSIBILI UTILIZZI NELLA VITA REALE Questo prototipo ha diverse funzionalità che potrebbero essere utilizzate nella vita quotidiana. Robot di salvataggio: in questa modalità con l integrazione di una videocamera il prototipo potrebbe esplorare nei casi di calamità naturali, i luoghi dove potrebbe servire sia un aiuto, sia una verifica della sicurezza dell area. Guida Turistica: con l ausilio dello speaker, con all interno una voce pre-registrata, il prototipo, tramite controllo da smartphone, risulterebbe utile a guidare i turisti nelle tappe più importanti delle diverse città. Guida per i cechi: con l aggiunta del MAG e relative mappatura di un edificio, la macchinina potrebbe guidare un cieco nella sua vita quotidiana, e con l aggiunta di messaggi sonori che grazie allo speaker, andrebbero ad indentificare l area in cui l umano si trova. Robot Casalingo: con l applicazione di 2 semplici spazzole nella parte anteriore del mezzo, il prototipo potrebbe effettuare la funzione di una scopa per le pulizie domestiche. 16

Ventrella, Sciaruto, Giannarelli, Valenti, Loiacono 4Q RELAZIONE ELETTRONICA CONCLUSIONI La realizzazione del progetto è stata lunga e piena di imprevisti, tuttavia il risultato è estremamente soddisfacente. Allegati alla relazione sono stati realizzati 2 video: -Video del progresso temporale del prototipo; -Video con rappresentazione del commando del prototipo da smartphone. Eccoci, i componenti di BEST ELECTRONIC GROUP. 17

18