Your SlideShare is downloading. ×
Csp@scuola uav corso1_lez2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Csp@scuola uav corso1_lez2

859
views

Published on

Piattaforma Arduino per applicazioni UAV . concetti base

Piattaforma Arduino per applicazioni UAV . concetti base

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
859
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
37
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Piattaforma Arduino per applicazioni UAV:concetti baseLezione 2CSP@SCUOLAin collaborazionecon ITI FAUSER NOVARAAnno scolastico 2011-2012
  • 2. Introduzione • Questa lezione introduce la piattaforma Arduino fornendo linee guida per l’utilizzo e lo sviluppo • La piattaforma Arduino è utilizzata attivamente per progetti di vario genere – Robotica, automazione domestica • La piattaforma Arduino verrà presentata per quanto riguarda: – Hardware – Ambiente di sviluppo – Concetti base per la programmazione • La piattaforma Arduino può essere utilizzata per realizzare payload funzionali per UAV di classe micro – La lezione e le successive forniscono concetti base per lo sviluppo applicativoLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 2
  • 3. Concetti generali • La piattaforma Arduino consiste di due componenti essenziali – Scheda hardware dotata di microprocessore – Ambiente di sviluppo • Le schede Arduino sono basate su processori della famiglia Atmega • L’ambiente di sviluppo dedicato e liberamente scaricabile consente un facile approccio alla programmazione • Le schede Arduino si basano su una architettura semplice molto utile a fini didattici • E’ possibile integrare nell’ambiente di sviluppo con facilità librerie sviluppate anche da terzi che estendono le funzionalità originali della schedaLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 3
  • 4. Schede Arduino: Arduino UNO • Basata su Atmega 328 (memoria flash da 32KB) – Processore a 8bit, clock 16MHz • 2KB di RAM integrati • 1KB EEPROM • 14 pin digitali (input/output) di cui 6 possono essere usati in PWM – PWM => pulse width modulation => per esempio, pliotaggio servomotori • 5 ingressi analogici => lettura di sensori di temperatura, pressione... • Porta USB • Ulteriori informazioni disponibili qui: http://arduino.cc/en/Reference/HomePageLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 4
  • 5. Arduino UNO: interfacce seriali • La porta USB è l’unica interfaccia seriale presente sulla scheda Arduino UNO • La stessa porta seriale è accessibile alternativamente tramite due pin negli header della scheda – I pin 1 e 0 marcati TX e RX servono a questo • I pin che “rilanciano” la seriale operano in logica TTL 5V – Occorre tenerne conto quando si realizzano interfacce verso altri dispositivi – Es. dispositivi TTL 1.8V o TTL 3.3VLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 5
  • 6. Schede Arduino: Arduino Mega 2560 • La scheda Arduino Mega 2560 rappresenta una versione evoluta della Arduino UNO – Più interfacce, più memoria • Basata sul processore Atmega 2560 (memoria flash da 256 KB) – 16 MHz, 8 bit • 4 interfacce seriali hardware (TTL 5V) • Analog to Digital Converter (ADC) con tensione di riferimento configurabile • 54 pin di I/O digitale (di cui output 14 PWM), 16 pin analogici • RAM: 8 KB, EEPROM: 4 KBLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 6
  • 7. Ambiente di sviluppo • L’ambiente di sviluppo è un tool grafico che permette di programmare le schede Arduino • I programmi utente (detti sketch) sono realizzati in linguaggio C e possono sfruttare le librerie dedicate per utilizzare le funzionalità dell’hardware – Semplice da programmare – Si possono riadattare programmi già esistenti • La programmazione avviene direttamente grazie alla interfaccia USB • L’ambiente di sviluppo è disponibile per tutti i principali sistemi operativi – Windows, Mac OS e LinuxLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 7
  • 8. Ambiente di sviluppo: interfaccia Tasto di compilazione: compila il codice Terminale seriale: usato solitamente per scopo di Debug permette di vedere i byte inviati dalla scheda sulla porta USB e di inviare a propria volta dei byte Tasto di upload: compila e carica il codice sulla scheda Arduino collegata Finestra di codice: qui l’utente scrive il codice da far eseguire alla schedaFinestra degli eventi:qui vengono forniteinformazioni su errori osuccesso nella varieoperazioni(compilazione o uploadfallito) Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 8
  • 9. Programmazione Arduino: concetti base (1/2) • Le schede Arduino sono programmabili utilizzando un linguaggio basato su C/C++ – Viene effettuato un link con le librerie AVR libc prima dell’upload – Manuale della libreria AVR libc => http://www.nongnu.org/avr-libc/user-manual/index.html – Reference di programmazione Arduino => http://www.arduino.cc/en/Reference/HomePage • Ogni programma eseguito su Arduino si divide in due sezioni: – Setup – Loop • Sono entrambe funzioni • La funzione “setup” viene eseguita una sola volta alla inizializzazione della scheda • La funzione “loop” viene invece eseguita in ciclo continuo e rappresenta la funzione svolta dalla schedaLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 9
  • 10. Programmazione Arduino: concetti base (2/2) • Essendo basato su C/C++, il linguaggio di programmazione Arduino ne eredita i costrutti base: – if, else – for – while – switch, case – do, while • Sono supportati i seguenti tipi elementari, fra cui: – char – byte, valore senza segno su 1 byte – int (signed e unsigned su 2 byte) – long (interi su 4 byte, signed e unsigned)Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 10
  • 11. Piattaforma Arduino: pin digitali • I pin digitali possono essere utilizzati sia come input che come output – Possono essere usati per comandare dispositivi ON/OFF • Led.. – Possono essere utilizzati per leggere segnali digitali esterni • Quando si vuole utilizzare un pin digitale occorre: – Prima di tutto inizializzarlo • Istruzione “pinmode” nella funzione setup • Specifica se input o output – Quindi se ne può leggere o settare il valore, a seconda di come è stato inizializzato • digitalRead(pin_number) • digitalWrite(pin_number) • Queste funzioni fanno parte della libreria base di Arduino e non è richiesta alcuna inclusione tramite il comando “#include”Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 11
  • 12. Piattaforma Arduino: pin digitali, esempio • Da http://arduino.cc/en/Reference/DigitalReadLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 12
  • 13. Piattaforma Arduino: pin analogici • I pin analogici vengono comunemente utilizzati per interfacciare una scheda Arduino a un sensore analogico • I sensori utilizzati normalmente producono una variazione di tensione proporzionale alla grandezza misurata • I pin analogici, a differenza dei digitali non devono essere inizializzati • Semplicemente: – Si legge il valore mediante l’istruzione analogRead(pin_number) – Si imposta il valore mediante l’istruzione analogWrite(pin_number)Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 13
  • 14. Considerazioni sui pin analogici • Ogni scheda Arduino contiene un convertitore ADC (analog digital converter) a 10 bit – 6 canali sulla scheda Arduino base, 16 sulla scheda Arduino Mega • L’ADC converte un livello di tensione compreso tra 0 e 5V in un valore numerico compreso tra 0 e 1023 (210-1 = 1023) – Operazione eseguita a ogni invocazione di analogRead() • La risoluzione per unità è quindi: 5 = 0, 0049 ≅ 50mV 1024 • Tuttavia questo valore di risoluzione è valido solamente se il sensore collegato ha una dinamica [0,5V] • Altrimenti occorre cambiare la tensione di riferimento utilizzando l’istruzione analogReference() – Con questa istruzione è possibile ad esempio impostare una tensione di riferimento a 2.5V (per sensori con dinamica [0, 2.5]V) – In questo modo i 210=1024 valori generati dall’ADC a 10 bit saranno mappati uniformemente su valori di tensione nell’intervallo [0, 2.5]VLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 14
  • 15. AnalogReference() • La funzione AnalogReference consente di cambiare il valore di riferimento della tensione per l’ADC • Ha in ingresso un parmetro che può essere impostato a: – DEFAULT => 5V per le schede Arduino usate nel corso – INTERNAL => solo su Arduino uno (Atmega 328) imposta la tensione di riferimento a 1.1V – INTERNAL1V1 => riferimento a 1.1V (solo Arduino Mega) – INTERNAL2V56 => riferimento a 2.56V (solo Arduino Mega) – EXTERNAL => tensione di riferimento sul pin AREF (fra 0 e 5V)Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 15
  • 16. Interfacce seriali • L’interfaccia seriale permette all’Arduino di comunicare con dispositivi esterni – PC, dispositivi come GPS, moduli per schede SD card ecc • Tutte le schede Arduino dispongono di almeno una interfaccia seriale – Porta USB pin digitali TX/RX • Per utilizzare la porta seriale occorre: – Inizializzarla invocando l’istruzione “Serial.begin” nella funzione setup() – All’interno della funzione loop: • Se si desidera scrivere sulla porta seriale si utilizza la funzione Serial.write(<dati da inviare>) – I dati potranno essere una stringa o una variabile – I dati passati come parametro all’istruzione saranno inviati al dispositivo collegato all’Arduino tramite seriale • Se si desidera leggere occorre utilizzare un paradigma più complesso che sarà discusso nel seguitoLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 16
  • 17. Interfacce seriali: lettura • Ogni scheda Arduino possiede un buffer di ingresso sulla porta seriale – I dati vengono accodati su questo buffer non appena sono ricevuti – La dimensione è di 128 byte • Quando i dati sono ricevuti vengono memorizzati nel buffer, in attesa che i programma utente li richiede, o che vengano sovrascritti da altri dati • La procedura di lettura si svolge quindi solitamente in due fasi • All’interno del loop: – Si esegue una chiamata alla funzione “Serial.available()” • Questa funzione restituisce il numero di byte memorizzati nel buffer di ingresso – Se il numero di byte nel buffer è maggiore di zero, si esegue la lettura invocando l’istruzione “Serial.read()”Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 17
  • 18. Lettura da interfaccia seriale: esempio • Da http://arduino.cc/en/Serial/Read:Lezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 18
  • 19. Arduino Mega: gestione interfacce seriali • Le schede Arduino Mega si distinguono dalle altre anche per la presenza di 4 porte seriali hardware invece di una sola • Sono indicate rispettivamente come: – Serial1, Serial2,Serial3 • Sono gestite esattamente come la seriale di default: – Es.: Serial1.read() Serial1.available() • ATTENZIONE: benchè tutte le seriali sono gestite allo stesso modo, la porta “zero” (Serial), si distingue per il comportamento alla connessione – Connettendo un dispositivo alla porta USB, l’Arduino si riavvia – Questo comportamento è legato al fatto che la scheda deve poter essere programmata via USB – Per poter caricare nuovo software, l’Arduino deve per forza riavviarsiLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 19
  • 20. www.csp.it rd.csp.it CSP ICT Innovation Livio Torrero livio.torrero@csp.it Registered and Central Offices Environment Park - Laboratori A1 via Livorno 60 - 10144 Torino Operational Offices Villa Gualino - Viale Settimio Severo 63 10133 Torino Tel +39 011 4815111 Fax +39 011 4815001 E-mail: marketing@csp.itLezione 2 - piattaforma Arduino per applicazioni UAV: concetti base 20