in questi giorni ho costruito un insect robot seguendo le istruzioni sul libro Make: Arduino Bots and Gadgets, utilizzando 2 servi MG995R tower pro, un arduino pro mini 3v3 8 MHz, 1 parallax ping ultrasonic sensor, 1 7805, batterie nimh 8v2. Questo è stato il primo risultato: Arduino Obstacle-Avoider Robot - YouTube. Ho poi modificato le gambe rendendole più rigide e ora va meglio... con un po' di programmazione poi riesce anche, su pavimento liscio, a girare a destra e a sinistra in poco tempo. Ho provato anche a interfacciare il robot con Android via bluetooth, ma i dati dell'accelerometro sono talmente variabili che non si riesce a comandarlo facilmente. Forse questo tipo di controllo sarebbe più adatto per altri tipi di robot.
Ora vorrei tentare qualcosa di diverso, un robot con sei gambe (qualcosa del genere http://letsmakerobots.com/node/16259), e quindi vi faccio qualche domanda:
ho in mente di farlo girare con 12 o 18 servi: come faccio a gestirli tutti contemporaneamente? ho un arduino uno e un arduino pro mini e vorrei sapere se è possibile farli comunicare (http://arduino.cc/en/Tutorial/MasterReader) e utilizzando su entrambi la libreria Servo di arduino, pilotare tutti i servi. googlando ho trovato un po' di servo controller a circa 40-50 euro: ne conoscete uno che mi possa costruire da solo - o a basso costo? (possibilmente interfacciabile con arduino, e quindi utilizzabile con il suo ide)
per il controllo vorrei utilizzare sempre il bluetooth mate silver, e interfacciarlo con android. in questo caso il programma darebbe due modalità: muovere le gambe con l'accelerometro in modo da farlo 'girare su stesso quando è fermo' (non so se rendo l'idea) e muoverlo con dei comandi touch avanti - indietro - sinistra, ecc... per caso il ping, scrivendo in seriale, non fa interferenza con la seriale del bluetooth che comunica con arduino, se sulla stessa scheda? ho settato il baud rate a 57600, posso usare due canali??
per la struttura, cosa posso utilizzare? alluminio? pvc? come lo taglio/modello??
ho in mente di farlo girare con 12 o 18 servi: come faccio a gestirli tutti contemporaneamente? ho un arduino uno e un arduino pro mini e vorrei sapere se è possibile farli comunicare (http://arduino.cc/en/Tutorial/MasterReader) e utilizzando su entrambi la libreria Servo di arduino, pilotare tutti i servi. googlando ho trovato un po' di servo controller a circa 40-50 euro: ne conoscete uno che mi possa costruire da solo - o a basso costo? (possibilmente interfacciabile con arduino, e quindi utilizzabile con il suo ide)
l'atmega 328p (di solito il chip sia sulla mini che sulla UNO) ha 19 pin utilizzabili, esclusi i pin 0 e 1 che li lasciamo per la comunicazione PC. Quindi potresti usare un servo per ogni pin. Semmai il problema diventa la precisione di arduino a gestirli tutti insieme... e qui non so.
Per farli comunicare la via più semplice è usando una seriale virtuale (NewSoftSerial), che in pratica trasforma 2 pin scelti da te in un'altra coppia di TX e RX
edit: come non detto:
The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega
oppure a molto meno di 50€ (circa 15€) si trovano dei servo controller: Serial Servo Controller - ROB-08897 - SparkFun Electronics
se vuoi spendere ancora meno, dal sito sparkfun puoi guardare gli schemi elettrici dei loro prodotti (sono openhardware!) e farteli da te... se ne hai voglia
per il controllo vorrei utilizzare sempre il bluetooth mate silver, e interfacciarlo con android. in questo caso il programma darebbe due modalità: muovere le gambe con l'accelerometro in modo da farlo 'girare su stesso quando è fermo' (non so se rendo l'idea) e muoverlo con dei comandi touch avanti - indietro - sinistra, ecc... per caso il ping, scrivendo in seriale, non fa interferenza con la seriale del bluetooth che comunica con arduino, se sulla stessa scheda? ho settato il baud rate a 57600, posso usare due canali??
la seriale sui pin 0 e 1 conviene lasciarla sempre alla comunicazione lato PC, altrimenti ogni volta devi attaccare e staccare il bluetoot per caricare gli sketch. Quindi puoi usare la NewSoftSerial, se devi solo ricevere allora colleghi solo il pin RX, così anche con 18 servi ci stai dentro.
per la struttura, cosa posso utilizzare? alluminio? pvc? come lo taglio/modello??
eh dipende. dipende principalmente da che servo prendi. Ovviamente la struttura dovrà essere più leggera possibile, altrimenti i servi non la reggerebbero. Sinceramente io andrei di PBC, magari trovi dei "fogli" da 1 o 2 mm di spessore e li tagli con il taglierino o col seghetto. Anche la balsa è morbida da tagliare ma leggera e abbastanza resistente infatti si usa per gli aerei RC.
Se mettessi in comunicazione Arduino Uno con Arduino Pro Mini, attaccando a ciascuno 9 servi + sull'UNO uno o più Ping (per il momento uno) e al Pro Mini il bluetooth mate silver, non capisco come fare in modo che la comunicazione sia bidirezionale. Mi spiego: se devo controllare il robot con un telefono Android, il Pro Mini riceve i dati via bluetooth e gestisce i servi di conseguenza, ma allo stesso tempo devo scrivere sull'UNO e ricevere da questo i dati del Ping. Posso connettere in Ping al pro mini senza creare problemi al bluetooth mate silver?
Per quanto invece riguarda i servo controller, non ho trovato proprio un datasheet, ma ho capito che quello che mi hai indicato tu si comanda in basic, giusto? Ho un 'vecchio' (nel senso che l'ho acquistato da tempo, ma sembra ancora attuale...) motor shield 2A della DFRobot, può essere utilizzato per comandare in pwm i servi o è una pazzia?
Il pvc lo trovo in ferramenta o c'è qualche negozio online a prezzo buono?
ho in mente di farlo girare con 12 o 18 servi: come faccio a gestirli tutti contemporaneamente? ho un arduino uno e un arduino pro mini e vorrei sapere se è possibile farli comunicare (http://arduino.cc/en/Tutorial/MasterReader) e utilizzando su entrambi la libreria Servo di arduino, pilotare tutti i servi. googlando ho trovato un po' di servo controller a circa 40-50 euro: ne conoscete uno che mi possa costruire da solo - o a basso costo? (possibilmente interfacciabile con arduino, e quindi utilizzabile con il suo ide)
Puoi usare questo che pilota 12 servo (Gioblu.com is for sale | HugeDomains). E' I2C, quindi usa solo due pin analogici, quindi ti rimangono i 12 servo digitali dell'arduino per pilotarne 24. Costa 4.5 euro, è difficile trovarne di più economici. Io l'ho usato per un robot-cane con 11 servo e funziona bene.Tra l'altro la spedizione avviene dall'Inghilterra in tempi rapidi.
lorenzo-sat:
3) per la struttura, cosa posso utilizzare? alluminio? pvc? come lo taglio/modello??
Io ormai uso solo pvc espanso. 5mm dove serve un po' di rigidezza, 3mm per i dettagli di poca importanza. Lo taglio con un taglierino e lo foro con una vite. Meglio di così!
però ci vado di persona. Quindi non so se spediscono o simili. Altrimenti se sei lontano devi vedere se nella tua zona ci sono distributori/rivenditori di plastica.
lorenzo-sat:
Intanto grazie mille lesto per la risposta
Se mettessi in comunicazione Arduino Uno con Arduino Pro Mini, attaccando a ciascuno 9 servi + sull'UNO uno o più Ping (per il momento uno) e al Pro Mini il bluetooth mate silver, non capisco come fare in modo che la comunicazione sia bidirezionale. Mi spiego: se devo controllare il robot con un telefono Android, il Pro Mini riceve i dati via bluetooth e gestisce i servi di conseguenza, ma allo stesso tempo devo scrivere sull'UNO e ricevere da questo i dati del Ping. Posso connettere in Ping al pro mini senza creare problemi al bluetooth mate silver?
Per quanto invece riguarda i servo controller, non ho trovato proprio un datasheet, ma ho capito che quello che mi hai indicato tu si comanda in basic, giusto? Ho un 'vecchio' (nel senso che l'ho acquistato da tempo, ma sembra ancora attuale...) motor shield 2A della DFRobot, può essere utilizzato per comandare in pwm i servi o è una pazzia?
Il pvc lo trovo in ferramenta o c'è qualche negozio online a prezzo buono?
Grazie mille,
Lorenzo
ah come ping intendi il sensore ultrasonico?
comunque se vuoi puoi creare una comunicazione i2c o una seriale tra i due arduini, e la comunicazione sarebbe bidirezionale.
la board che ti ho linkato non si programma in basic, ma si comanda usando la seriale. Per comandare un servo usi 3 Byte: il primo è 255 ed indica l'inizio comunicazione, il secondo è il numero del servo in uso, il terzo il valore desiderato. http://www.sparkfun.com/datasheets/Robotics/ssc03a_guide.pdf
il chip postato da alegiaco però mi sembra migliore, l'i2c è più veloce della seriale, c'è già un esempio d'uso con arduino, ed infine regge molti più servo
Ancora meglio questi, vendono anche a privati, prezzi decisamente migliori di Tomea, se necessario possono fare tagli particolari.
Grazie a entrambi!
lesto:
lorenzo-sat:
Intanto grazie mille lesto per la risposta
Se mettessi in comunicazione Arduino Uno con Arduino Pro Mini, attaccando a ciascuno 9 servi + sull'UNO uno o più Ping (per il momento uno) e al Pro Mini il bluetooth mate silver, non capisco come fare in modo che la comunicazione sia bidirezionale. Mi spiego: se devo controllare il robot con un telefono Android, il Pro Mini riceve i dati via bluetooth e gestisce i servi di conseguenza, ma allo stesso tempo devo scrivere sull'UNO e ricevere da questo i dati del Ping. Posso connettere in Ping al pro mini senza creare problemi al bluetooth mate silver?
Per quanto invece riguarda i servo controller, non ho trovato proprio un datasheet, ma ho capito che quello che mi hai indicato tu si comanda in basic, giusto? Ho un 'vecchio' (nel senso che l'ho acquistato da tempo, ma sembra ancora attuale...) motor shield 2A della DFRobot, può essere utilizzato per comandare in pwm i servi o è una pazzia?
Il pvc lo trovo in ferramenta o c'è qualche negozio online a prezzo buono?
Grazie mille,
Lorenzo
ah come ping intendi il sensore ultrasonico?
comunque se vuoi puoi creare una comunicazione i2c o una seriale tra i due arduini, e la comunicazione sarebbe bidirezionale.
la board che ti ho linkato non si programma in basic, ma si comanda usando la seriale. Per comandare un servo usi 3 Byte: il primo è 255 ed indica l'inizio comunicazione, il secondo è il numero del servo in uso, il terzo il valore desiderato. http://www.sparkfun.com/datasheets/Robotics/ssc03a_guide.pdf
il chip postato da alegiaco però mi sembra migliore, l'i2c è più veloce della seriale, c'è già un esempio d'uso con arduino, ed infine regge molti più servo
Sì col ping intendevo il sensore a ultrasuoni, non il ping di rete.
Credo che proverò con il controller i2c.
Non vorrei andare OT ma tornando al discorso dei materiali, io mi trovo bene con il pvc espanso.
Ho provato anche il policarbonato tipo il Lexan, il plexiglass ma non mi sono piaciuti per niente. Si fondono quando li buchi, difficili da tagliare dritti.
Cosa usate per i robottini in alternativa?
alegiaco:
Non vorrei andare OT ma tornando al discorso dei materiali, io mi trovo bene con il pvc espanso.
Il PVC espanso è perfetto per i piccoli/medi robot, se serve maggiore rigidità basta incollare assieme due pezzi da 3, o 5mm, con il tangit.
Questo "bestione" pesa quasi 3 kg ed è largo 40 cm, totalmente realizzato in PVC espanso con meno di 5 ore di lavoro tra taglio, foratura, scassi e assemblaggio dei pezzi.
Di un robot abbastanza complesso in grado di spostarsi senza problemi, con grande precisione, attraverso ambienti sconosciuti tracciandone nel contempo la mappa, è in grado di percorrere una serie di waypoint assegnati anche su distanze di centinaia di metri.
Complessivamente utilizza tre processori a 16 bit (dsPIC33), un processore a 8 bit con USB(PIC18) e una SBC con ARM11 a 600 MHz (Android 3.0 come S.O.), telemetria remota tramite Xbee pro serie 2, connessione WiFi opzionale (USB key) per streaming video tramite camera CMOS con interfaccia parallela direttamente sulla SBC.