® ARDUINO ROBOT AAR MANUALE: AAR-04 © AREXX Engineering - V1506 -1-
Indice 1..Descrizione del Robot AAR.......................................... 5 1.1..La Famiglia ARDUINO Robotics.....................................5 1.2..Caratteristiche:..........................................................5 1.3..Precauzioni ...............................................................6 2..ARDUINO Descrizione Generale................................... 7 2.1..Chi è e cosa fa ARDUINO?............................................7 2.2..Microcontrollori!...............................
Indice figure Fig.1 - AAR PCB...................................................................11 Fig.2 - .Collegamento del porta batteria....................................16 Fig.3 - .IDE di Arduino...........................................................17 Fig.4 - .Apertura Sketch “Blink”...............................................18 Fig.5 - .Listato programma “Blink”...........................................19 Fig.6 - .Selezione scheda Arduino per robot AAR........................20 Fig.7 - .
Simboli Questo manuale fornisce i seguenti simboli: Il simbolo “Attention!” è usato per attirare l’attenzione su dettagli importanti. La mancanza di rispetto di queste precauzioni può danneggiare o distruggere il robot e/o componenti aggiuntivi e inoltre puoi mettere a rischio la tua salute e quella di altre persone! Il simbolo “Information” è usato per attirare l’attenzione su utili suggerimenti o informazioni di fondo. In questo caso l’informazione è da considerarsi “utile ma non necessaria”.
1. Descrizione del Robot AAR 1.1. La Famiglia ARDUINO Robotics Arduino è una piattaforma open-source per lo sviluppo di prototipi elettronici. Questa piattaforma ci fornisce un microcontrollore con incluse le periferiche ed il software necessario. alla sua programmazione. La piattaforma “Arduino” è stata progettata per imparare nel modo più semplice possibile la moderna elettronica per la robotica, la programmazione per il controllo di attuatori e l’uso di sensori.
1.3. Precauzioni 1. Attenzione! Prima di dare tensione a qualsiasi terminale devi leggere questo manuale. Collegamenti errati posso danneggiare l’hardware. 2. Attenzione! Controlla con attenzione le funzioni di ogni connettore dello schema. Controlla con attenzione il cablaggio del circuito elettrico. Collegamenti errati posso danneggiare i moduli. Rispetta la corretta polarità dei cavi d’alimentazione. Invertire i cavi di alimentazione danneggia l’hardware. 3.
2. ARDUINO Descrizione Generale 2.1. Chi è e cosa fa ARDUINO? Arduino è una scheda a microcontrollore tipo “open source”, la quale fornisce un approccio facile alla programmazione, ai microcontrollori e ai progetti interattivi per artisti, disegnatori, hobbisti ed altri. La piattaforma di Arduino è basata sui microcontrollori ATmega168 o ATmega328 di Atmel.
2.2. Microcontrollori! 2.2.1 Applicazioni Un microcontrollore (a volte abbreviato in µC, uC o MCU) è un piccolo computer integrato in un piccolo chip il quale contiene il processore, la memoria e le periferiche programmabili di I/O. Sul chip risiedono la memoria programma e una piccola quantità di memoria dati (RAM).
2.3. Consumo di energia e velocità Alcuni microcontrollori, per bassi consumi energetici (milliwatts o microwatts), possono funzionare a frequenze di clock più basse di 4 Khz.
Il sistema Arduino fornisce circa 32Kbytes di memoria flash per i suoi programmi “sketches” , i quali possono esser programmati in linguaggio C. 2.5. Architettura d’interfacciamento Normalmente i microcontrollori contengono decine di ingressi e uscite di uso generico (GPIO). I pins di tipo GPIO possono essere configurati tramite software sia come ingressi che come uscita. Quando i pins GPIO sono configurati come ingressi tramite essi è possibile leggere segnali provenienti da sensori o da segnali esterni.
3. ARDUINO ROBOT Fig.1 - AAR PCB 3.1. LEDS DI ARDUINO ROBOT LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
3.2. Circuito stampato di ARDUINO ROBOT Vedi le corrispondenze in fig.: AAR PCB 1) Connettore di collegamento del porta batteria. (Fai attenzione alla corretta polarità!) 2) Interruttore di On/Off del robot. 3) LED di stato: segnala che il robot e alimentato da tensione esterna. 4) Nel caso in cui tu stia utilizzando delle batterie ricaricabili devi chiudere questo ponticello, in questo modo il robot sarà alimentato con un valore di tensione corretto.
3.3. Informazioni di base per AAR Nella parte frontale si trova l’interfaccia USB realizzata con un integrato tipo FT232. Quest’integrato converte il segnale USB in un segnale tipo RS232 il quale può essere elaborato dal processore ATMEGA328 (si trova nella parte destra della posizione frontale). Sulla parte opposta si trovano l’interruttore ON/OFF, il connettore di alimentazione JP3 e l’integrato IC2 , controllo motore.
3.4. Informazioni di base per Software Arduino Il software Arduino appartiene alla categoria Open Source ed è disponibile universalmente per tutti, inclusi i codici sorgenti della programmazione della piattaforma. La piattaforma di programmazione di Arduino è stata fornita di un editor di testo, una finestra messaggi ed una console per il codice. La piattaforma di programmazione può comunicare direttamente con AAR permettendo un facile trasferimento del programma all’interno del processore.
4. Si parte! 4.1. Scaricare ed installare il software di Arduino Installa il software di Arduino (versione 1) presente sul CD, siamo sicuri che funziona. In seguito potrai andare sul sito di Arduino e scaricare l’ultima versione disponibile. IMPORTANTE: Usando versioni diverse di Arduino o di applicazioni si potrebbero avere problemi. Alcune volte, dopo aver aggiornato il software di Arduino, occorre modificare il proprio applicativo altrimenti potrebbe non funzionare! 4.2.
4.4. Installazione delle batterie Il robot è stato disegnato per essere alimentato con 4 batterie da 1.5 Volt tipo AAA. Se preferisci utilizzare batterie ricaricabili devi chiudere il jumper JP4. Le batterie ricaricabili hanno infatti una tensione inferiore rispetto a quelle alcaline (1.2 Volt)(vedi fig. 1, numero 4). ATTENZIONE! L’inserzione del jumper JP4 elimina il diodo che previene l’inversione di polarità dell’alimentatore.
4.5. Programmazione del Robot con Programmi Arduino. Collega il robot al PC tramite il cavo USB. Collegando il robot ad una porta USB il sistema Arduino non ha bisogno di una batteria extra o di un alimentatore La tensione richiesta verrà fornita dal connettore USB del PC. ATTENZIONE: Il robot si attiva sempre nel momento in cui viene collegato al PC. L’interruttore di alimentazione ON/OFF ed il LED5 funzionano solo nel caso in cui siano utilizzate le batterie.
4.6. Selezionare un programma Arduino Partiamo ora con il caricare nel robot un semplice programma chiamato “Blink”. Questo programma farà lampeggiare continuamente il led LED14 del robot. Carica il programma cercandolo nel software Arduino tramite il comando di menù: File>Esempi>01.Basics>Blink vedi Fig.4 Fig.
si aprirà una finestra simile a quella di Fig.5 Fig.5 - Listato programma “Blink” In questa pagina ora sarà possibile editare o modificare lo sketch appena caricato.
4.7. Selezionare la scheda Arduino A questo punto occorre selezionare il tipo di scheda della serie Arduino corrisponedente a quella che si trova sul robot. Sul robot si trova una scheda simile a: “Arduino Duemilanove con processore ATmega328” oppure “Nanow/Atmega328” Dalla barra strumenti selezionare: Strumenti-->Scheda->Arduino Duemilanove come in Fig.6 Fig.
4.8. Selezione della Porta Seriale A questo punto occorre definire la porta COM corretta per la comunicazione tra PC ed il robot. L’interfaccia COM corretta (o porta COM) normalmente è maggiore di COM3 (COM1 e COM2 sono già in uso). Per selezionare l’interfaccia COM apri il menù alla voce: Strumenti>Porta>COMx (vedi fig. 7) Fig.7 - Selezione porta COM In questo caso la porta com utilizzata è la COM10.
4.9. Compilare lo Sketch Dopo aver terminato di scrivere il programma occorre verificare se non ci sono errori di compilazione o di sintassi. Occorre ricordare che il compilatore non corregge errori comportamentali o malfuzionamento. Per eseguire la verifica occorre fare click sul pulsante di verifica oppure dalla barra strumenti scegliere: Sketch -> Verifica e Compila vedi Fig.8 Fig.8 - Operazione di verifica dello Sketch Se la verifica termina senza errori verrà visualizzato un messaggio come in Fig.
4.10. Caricamento dello Sketch nel robot Se la verifica è andata a buon fine (Fig.9) allora si può trasferire lo sketch al robot facendo click con il pulsante del mouse sul pulsante di invio oppure dalla barra strumenti occorre scegliere: Sketch ->Carica vedi Fig.10 Fig.10 - Pulsante di invio dello sketch nel robot Nel momento in cui inizierà il trasferimento dello sketch dal PC al Robot, nella finestra messaggi, Fig.
Fig.12 - Caricamento dello sketch completato A questo punto il LED14 inizierà a lampeggiare lentamente. Ora è possibile scollegare il robot dal PC, rimuovere il cavo USB, collegare il porta batteria, facendo attenzione alla coretta polarizzazione del connettore, ed avviare il robot. Per ulteriori informazioni e per scaricare gli aggiornamenti ti consigliamo di visitare uno dei forum all’indirizzo internet: www.arexxx.com www.roboternetz.
4.11. Risoluzione dei problemi In caso di problemi di mal funzionamento occorre effettuare alcune verifiche. 1) Verificare che la tensione di alimentazione proveniente dalla USB sia sufficiente per alimentare il robot. Questo test può essere eseguito togliendo le batterie e chiudendo il jumper JP4, il led POWER LED dovrebbe accendersi. Fig.
Problema: nessun collegamento con il Robot. Verificare che i leds LED3 e LED4 lampeggino lentamente quando si collega il robot con il PC tramite USB Tramite il pannello di controllo (Fig. 13) verifica che il robot sia collegato con il PC. Il collegamento è effettuato tramite convertitore usb-seriale della FTDI. Accertati che siano stati installati i driver corretti. Questa connessione, nel pannello di controllo, è sotto la voce “USB SERIAL PORT”.
4.12. Autotest della scheda. Dal menu comandi scegli: “File-->Apri” e seleziona lo sketch che si trova su CD: “Examples--> Selftestv1_0-->Selftestv1_0.ino” Fig.14 - Carica lo sketch nel robot Fai click sul pulsante “carica” indicato dalla freccia in Fig.14 oppure nel menù comandi seleziona: “Sketch --> Carica” In questo modo, se non ci sono errori di compilazione e se il robot è collegato al pc, lo sketch verrà caricato nella memoria del robot.
Nella barra dei menù seleziona: “Strumenti --> Monitor seriale” si aprirà la seguente pagina: Fig.15 - Finestra terminale di Arduino La finestra di Fig.15 rappresenta il terminale di Arduino. Da questa finestra è possibile inviare stringhe seriali ad Arduino e dallo stesso riceverne. In questo caso all’interno della finestra sono visibili 5 comandi di test che possono essere eseguiti per verificare l’hardware del robot.
5. Kits di espansione per scheda AAR 5.1. Kits ASURO di espansione per Arduino Robot. Sulla scheda AAR si trovano alcuni connettori per moduli di espansione. Questi connettori sono compatibili con quelli del robot ASURO di AREXX (un kit robotico che può essere programmato in linguaggio C). Questo significa che è possibile utilizzare per AAR tutti i kits di AREXX ASURO. Sul CD si trovano alcuni programmi di esempio per Arduino, in questo modo è possibile utilizzare direttamente i kit di espansione.
6. Configurazione Kits di Espansione di ASURO. ARX-ULT10 Kit ultrasuoni AREXX Utilizza il programma di esempio che si trova sul CD: Examples\AAR_ULTRA\AAR_ULTRA\ AAR_ULTRA.ino Con questo programma di esempio il robot arretra quando incontra un ostacolo. ARX-SNK20 AREXX SNAKE VISION (PYRO) KIT Utilizza il programma di esempio che si trova sul CD: Examples\AAR_SNAKE\AAR_SNAKE\AAR_SNAKE.ino Con quest’esempio il robot insegue corpi caldi.
ARX-MNSP55 Kit cerca metalli AREXX Utilizza i programmi di esempio che si trovano su CD: Examples\AAR_MINE\ AAR_MINE1\AAR_MINE1.ino oppure Examples\AAR_MINE\ AAR_MINE2\AAR_MINE2.ino Con questo esempio il robot può trovare metalli. ARX-APC220 Fig.17 - RP6v2 Programmatore USB con APC 220 AREXX WIRELESS KIT Utilizza il programma di esempio che si trova su CD: Examples\AAR_APC220\ AAR_INO_SRC\ AAR_INO_SRC.ino Sul PC devi installare il programma Visual Basic: Examples\AAR_APC220\ AAR_VB_Software\Setup.
7. Programma ANDROID ARX-BT3 AREXX BLUETOOTH KIT Il nostro modulo ARX-BT03 permette di controllare il robot AAR tramite Bluetooth utilizzando un’applicazione ANDROID. Dal CD AREXX_AAR_0214 apri la cartella: Android_App\AAR_APP ed installa nel tuo dispositivo il programma: BLUETOOTH_AAR.APK subito dopo installa sul robot il programma: AAR_SRC_Bluetooth\AAR_SRC_Bluetooth.
Circuiti elettronici tipo Ponte H Un Ponte H è un circuito elettronico che permette di invertire la polarità di un dispositivo (come, ad esempio, un motore in Corrente Continua) tramite quattro interruttori. Questi Ponti-H vengono spesso utilizzati nei robots per controllare i due sensi di rotazione del motore.
Nello stadio pilota è possibile identificare il motore in corrente continua M. Il circuito di preamplificazione del driver è simulato dalla resistenza R14. Questa resistenza mantiene a 0V le basi dei transistor TR6 e TR5, e questa è la condizione per la quale solo la parte di destra del circuito conduce corrente. In questa situazione solo i transistors TR8, TR5 e TR9 conducono corrente mentre tutti gli altri sono interdetti.
I 3 volt di alimentazione sono la condizione ideale per un robot alimentato da un pacco batteria di sole due celle. I transistors PNP purtroppo non possono essere integrati in un chip come il L293D. Un integrato ha altri vantaggi come l’affidabilità, la protezione contro un cablaggio fatto male ed inoltre riduce le dimensioni ed il peso. Per questa ragione abbiamo deciso di usare l’integrato L293D il quale racchiude al suo interno un doppio ponte H in grado di controllare contemporaneamente due motori DC.
8. Odometria Questo capitolo è stato destinato ad interessanti contetti applicativi del robot AAR. Le idee si riferiscono a studi ed a progetti specifici. Probabilmente lo sviluppo di tale software ci appassionerà alla programmazione dei microcontrollori. 8.1. Ricercatori di linea, amanti e nemici dei colori Sensori sensibili alla luce ci permetteranno di programmare i robots come ricercatori di linea, amanti o nemici dei colori.
8.3. Ricercatori di linea complessi I robots ricercatori ed inseguitori di linea normalmente hanno bisogno di una sorgente luminosa come un LED e di una o più coppie di sensori fotocellule. Questi dispositivi permettono al sistema di identificare una linea e di seguirne la traccia. Inizialmente il robot abbisogna di una speciale routine di ricerca per trovare la linea. L’algoritmo può consistere nel seguire un percorso a spirale con un raggio che aumenta progressivamente rispetto al punto di partenza.
I programmatori esperti sono consapevoli della complessità e dei requisiti che richiede un programma che deve risolvere i problemi di un robot che insegue una linea che dipende da colori e suoni. I programmatori dovranno allora scrivere un programma di tipo gerarchico dipendente da numerose funzioni. Il concetto di programmazione modulare e strutturata ci permette di scrivere un software complesso, ma affidabile, in grado di risolvere l’attività richiesta.
9. Programmare un Bootloader ATTENZIONE! Per eseguire in modo corretto quanto descritto da questo capitolo occorre esperienza di programmazione! Sarai in grado di trasferire un Arduino-bootloader nel microcontrollore, per esempio, con l’aiuto della scheda STK500. Per poter trasferire qualsiasi programma, scritto in ambiente di linguaggio Arduino, nel microcontrollore Atmega questo deve essere stato precedentemente programmato con un programma speciale chiamato “Bootloader”.
APPENDICE - 40 -
A. Elenco componenti Componente Valore C1 C2 C3 C4 C6 C7 C8 C9 C11 C12 C13 C14 C15 C16 C17 C19 D1 D2 IC1 IC2 IC3 IC4 IC5 JP1 JP2 JP3 JP4 JP5 SV2 T1 T2 T3 T4 U$1 U$2 U$3 U$4 X1 LED1 LED2 LED3 LED4 LED5 LED6 18pF 18pF 0.
Componente Valore Contenitore LED8 LED9 LED10 LED11 LED12 LED13 LED14 LED16 LED17 LED18 Q1 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29/C3 R31 R32 S1 S2 SV1 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDCHIP-LED0805 LEDIRL80A CRYSTALHC49UP R-US_R0805 R-US_R
RD R27 RD LED11 RD LED10 220 R18 220 R19 R14 IC5 R5 JP1 MOTOR1 M1 C14 0,1uf C13 0,1uf R15 IC4 R28 LED8 MOTOR2 JP2 M2 RIGHT LED18 T4 T3 LED6 BAT MBR0520 ELECTRONI CS + X1 JP3 1 S2 D1 R16 LEFT C12 0,1uf C15 0,1uf LED17 R3 LED16 C7 470uf IC1 2 LED5 D2 C19 470uf 680 RXD gn R8 LED4 3,3V C16 Q1 470u C17 PD6 4,7uf R29 1k SDA MISO MOSI C9 R4 SCL INT0 SCK ISP LED14 R26 JP5 AREXX ARDUINO ROBOT C2 18pF C1 18pF 16mhz IC3 SET AUX TXD EN RXD GND VCC
RD R27 RD LED11 RD LED10 220 R18 220 R19 R14 IC5 R5 JP1 MOTOR1 M1 C14 0,1uf C13 0,1uf R15 IC4 R28 LED8 MOTOR2 JP2 M2 RIGHT LED18 T4 T3 LED6 BAT MBR0520 ELECTRONI CS + X1 JP3 1 S2 D1 R16 LEFT C12 0,1uf C15 0,1uf LED17 R3 LED16 C7 470uf IC1 2 LED5 D2 C16 Q1 18pF 470u C17 PD6 4,7uf R29 1k SDA MISO MOSI C9 R4 SCL INT0 SCK ISP LED14 R26 JP5 AREXX ARDUINO ROBOT C2 18pF C1 16mhz IC3 SET AUX TXD EN RXD GND VCC R22 R20 ATMEGA328P-AU R32 R31 TACT
GND 1 2 3V3 C9 4,7uf 470uf C1 18pF C2 18pF R13 VCC JP3 C16 10k 1k R29 C4 0,1uf Q1 16mhz RESET VCC R6 3 5 21 18 20 4 6 8 7 29 1k LED5 4,8V Bl 2 1 JP4 ATmega328P ATMEGA328P-AU GND1 GND2 GND/ANALOG DIGITAL_8 DIGITAL_9(PWM) DIGITAL_10(PWM) DIGITAL_11(PWM) DIGITAL_12 DIGITAL_13 DIGITAL_0(RX) DIGITAL_1(TX) DIGITAL_2 DIGITAL_3(PWM) DIGITAL_4 DIGITAL_5(PWM) DIGITAL_6(PWM) DIGITAL_7 ANALOG_0 ANALOG_1 ANALOG_2 ANALOG_3 ANALOG_4 ANALOG_5 ANALOG_6 ANALOG_7 Arduino VCC/ANALOG ANALOG_R
E.