Differenze tra le versioni di "Robot Rover Arduino Giacomino"
(serata 2/11) |
(aggiunto listato di prova) |
||
| Riga 32: | Riga 32: | ||
==Progettazione== | ==Progettazione== | ||
| + | |||
| + | ===Sviluppo=== | ||
| + | *Saldature | ||
| + | Per le saldature effettuate sui motori DC, è stato necessario rinforzare le basi delle saldature con una punta di colla a caldo per evitare che eventuali strappi potessero danneggiare i circuiti. | ||
===Programmazione=== | ===Programmazione=== | ||
*La programmazione è attualmente in corso; | *La programmazione è attualmente in corso; | ||
| − | Il codice di progetto, totalmente open-source, che viene scritto in | + | Il codice di progetto, totalmente open-source, che viene scritto in C++ tramite il programma dedicato di Arduino, (programma scaricabile dal sito [http://arduino.cc Arduino]), verrà pubblicato su questo sito in modo che ognuno sia libero di scaricare, modificare e usare il codice per il proprio progetto. |
| + | |||
| + | Per controllare la Motor Shield è necessario utilizzare la relativa [https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master libreria] scritta da Adafruit. | ||
| + | |||
| + | ====Listato di testing==== | ||
| + | <pre> | ||
| + | #include <AFMotor.h> | ||
| + | |||
| + | // Due motori | ||
| + | AF_DCMotor motorsx(1); | ||
| + | AF_DCMotor motordx(2); | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); // comunicazione seriale | ||
| + | |||
| + | // Motori spenti | ||
| + | motorsx.run(RELEASE); | ||
| + | motordx.run(RELEASE); | ||
| + | |||
| + | } | ||
| − | === | + | void loop() { |
| − | + | ||
| − | + | if (Serial.available() > 0) { | |
| + | byte velocita; | ||
| + | // legge il comando | ||
| + | char motore = Serial.read(); | ||
| + | // legge la velocità e la trasforma in intero | ||
| + | velocita = Serial.parseInt(); | ||
| + | |||
| + | switch (motore) { | ||
| + | // Comando sul motore destro | ||
| + | case 'd': | ||
| + | if (velocita == 0) { | ||
| + | motordx.run(RELEASE); | ||
| + | } | ||
| + | else { | ||
| + | motordx.run(FORWARD); | ||
| + | motordx.setSpeed(velocita); | ||
| + | } | ||
| + | break; | ||
| + | // Comando sul motore sinistro | ||
| + | case 's': | ||
| + | if (velocita == 0) { | ||
| + | motorsx.run(RELEASE); | ||
| + | } | ||
| + | else { | ||
| + | motorsx.run(FORWARD); | ||
| + | motorsx.setSpeed(velocita); | ||
| + | } | ||
| + | break; | ||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| + | delay(10); | ||
| + | } | ||
| + | |||
| + | </pre> | ||
==Foto Gallery== | ==Foto Gallery== | ||
Versione delle 22:26, 9 nov 2015
A seguito dei corsi base di Arduino tenuti sia presso l'ASEV di Empoli che al GOLEM, si è costituito un gruppo "open hardware" con l'intenzione di sviluppare progetti applicativi.
Per il primo lavoro c'è stata convergenza d'intenti sulla realizzazione di un robot rover.
Lista dei materiali
Elettronici
- Scheda "arduino uno";
- Scheda "motor shields adafruit";
La scelta di una shield dedicata ottimizza la gestione dei motori e comprime costi e tempi di lavorazione.
- Sensore ad ultrasuoni;
E' stato preferito questo tipo di sensore ad uno all'infrarosso perché non risente del colore e della eventuale trasparenza degli ostacoli.
Elettrici
- 2 motori con riduzione 48:1;
La riduzione assicura maggior coppia e stabilità in caso di pendenza;
Batteria metal idruro 9V 800 mAh;
Questo tipo di batteria permette di ottimizzare il dimensionamento dello chassis trovando alloggio tra i due motori.
- Batterie x4 AAA Eneloop NiMh da 1.2v l'una (per un totale di 4.8v)
Le Batterie sono state saldate e collegate fra di loro dentro lo chassis, come le precedenti. Queste però entrano in maniera più ottimale e sono più durature per il nostro progetto.
Meccanici
- Telaio in alluminio;
Inizialmente era stato pensato un telaio intagliato a laser, che per varie questioni, fra le quali la disponibilità di tempo, non è stato possibile realizzare. Rimane comunque un progetto per una stampa in laser cut.
Il telaio è quindi diviso fra un tubo quadro che sostiene ai lati i due motori, tramite due barre di ferro e una lastra di metallo avvitata sopra il tutto, opportunamente isolata con della gomma, sopra la quale sono installate le schede di Arduino e la motor shield adafruit.
- Ruote gommate in legno;
Anche per le ruote, che erano state pensate originariamente intagliate in alluminio, alla fine sono state realizzate in legno con il battistrada intagliato, nel quale è stato poi inserito un anello di gomma (o-ring) per una maggiore aderenza.
- Dado cieco per terzo punto di appoggio anteriore;
Purtroppo le alternative erano troppo costose o troppo ingombranti. Rimane comunque l'opportunità di ottimizzare il tutto in futuro.
- Bulloneria varia;
Progettazione
Sviluppo
- Saldature
Per le saldature effettuate sui motori DC, è stato necessario rinforzare le basi delle saldature con una punta di colla a caldo per evitare che eventuali strappi potessero danneggiare i circuiti.
Programmazione
- La programmazione è attualmente in corso;
Il codice di progetto, totalmente open-source, che viene scritto in C++ tramite il programma dedicato di Arduino, (programma scaricabile dal sito Arduino), verrà pubblicato su questo sito in modo che ognuno sia libero di scaricare, modificare e usare il codice per il proprio progetto.
Per controllare la Motor Shield è necessario utilizzare la relativa libreria scritta da Adafruit.
Listato di testing
#include <AFMotor.h>
// Due motori
AF_DCMotor motorsx(1);
AF_DCMotor motordx(2);
void setup() {
Serial.begin(9600); // comunicazione seriale
// Motori spenti
motorsx.run(RELEASE);
motordx.run(RELEASE);
}
void loop() {
if (Serial.available() > 0) {
byte velocita;
// legge il comando
char motore = Serial.read();
// legge la velocità e la trasforma in intero
velocita = Serial.parseInt();
switch (motore) {
// Comando sul motore destro
case 'd':
if (velocita == 0) {
motordx.run(RELEASE);
}
else {
motordx.run(FORWARD);
motordx.setSpeed(velocita);
}
break;
// Comando sul motore sinistro
case 's':
if (velocita == 0) {
motorsx.run(RELEASE);
}
else {
motorsx.run(FORWARD);
motorsx.setSpeed(velocita);
}
break;
}
}
delay(10);
}
Foto Gallery
Appunti scritti da PinPas, ri-editato da Giulio e Massimo Romagnoli.