Concurs : Robot Comandat RC

 

Acest articol este publicat in cadrul concursului Robofun 2012. Daca iti place si vrei sa castige unul dintre cele 10 premii, ofera-i un vot apasand butonul “Like” de mai jos.

 

Robot comandat RC

Aspecte tehnice

Youtube:

 Proiectul de fata este un proiect relativ simplu ce are ca scop in principiu transmiterea unor variabile prin modulele RC de transmisie si receptie. In functie de aceste date receptate robotul se va pune in miscare. Robotului ii pot fi adaugate multe imbunatatiri, el fiind deocamdata in faza de dezvoltare. Un senzor pentru evitarea obstacolelor, face din el sa fie semiautonom, si totodata comandat, insa pentru a facilita intelegerea proiectului nu am mai adaugat senzorul.

Asa zisa telecomanda este compusa dintr-un transmitator radio, un Arduino pro mini si un joystick impreuna cu shieldul pentru acesta, toate acestea gasindu-se pe http://www.robofun.ro.

IMG 0001

IMG 0045

De cealalta parte robotul este creat din kitul magician robot de pe www.robofun.ro, care contine cadrul pentru robot, motoarele de current continuu, driverul de motoare, si un Arduino Uno. Pentru a putea reutiliza calurile brick folosite, pentru conectarea lor am folosit un breadboard.

IMG 0072

Conectarea cablurilor pentru Arduino Pro Mini se face la portul 12 pentru transmitator, respectiv porturile analogice A0 si A2 pentru citirea celor doua potensiometre de la joystick.

Pentru Arduino Uno se folosesc portul 11 pentru conectarea receptorului , respective doua porturi digitale 8 si 7, pentru aprinderea a doua leduri.

IMG 0060

Aspectele Software

Pentru transmisie se foloseste biblioteca VirtualWire, care poate transmite un sir de octeti.

Partea de transmisie:

#include <VirtualWire.h>

void setup()

{

vw_set_ptt_inverted(true); // Required for DR3100

vw_setup(2000); // Bits per sec

}

void loop()

{

char axis[6]; //declaram un vector pentru transmiterea a maxim 6 octeti, in caz

// ca vrem sa mai introducem si alti octeti

int x=analogRead(2);// se citesc datele de la cele doua potensiometre ale joystickului

int y=analogRead(0);

Serial.print(x); //le afisam pentru a vedea valorile

Serial.print(” “);

Serial.println(y);

byte lowerByte1 = (x & 0xFF); // facem din cei 10 biti pe care I are o varibila

byte upperByte1=(x >>8); //doi octeti

byte lowerByte2 = (y & 0xFF);

byte upperByte2=(y >>8);

axis[0]=lowerByte1; //initializam componentele vectorului cu cei 4 octeti rezultati

axis[1]=upperByte1;

axis[2]=lowerByte2;

axis[3]=upperByte2;

{

vw_send((uint8_t *)axis, sizeof(axis)); //transmitem vectorul ce contine octetii, precum

//si dimensiunea sa

vw_wait_tx(); // Wait until the whole message is gone

digitalWrite(13, false);

}

}

De asemenea pentru a recepta datele folosim functiile aflate in libraria VirtualWire.

Partea de receptie

#include <VirtualWire.h>

unsigned long timer; //cream un mic timer pentru aprinderea ledurilor

boolean ledon=true;

int M1_1 = 3; //declaram pinii pentru cele doua motoare ale robotului

int M1_2 = 5;

int M2_1 = 6;

int M2_2 = 9;

void setup()

{

pinMode(7,OUTPUT); //declararea celor doua leduri la porturile 8,7

pinMode(8,OUTPUT);

pinMode(M1_1, OUTPUT); //declararea pinilor pentru motoare ca output

pinMode(M1_2, OUTPUT);

pinMode(M2_2, OUTPUT);

pinMode(M2_1, OUTPUT);

vw_setup(2000); // setarea vitezei de transmisie precum inceperea sa

vw_rx_start();

}

void loop()

{

digitalWrite(7,ledon);

digitalWrite(8,!ledon);

if(millis()>timer)

{digitalWrite(7,ledon);

digitalWrite(8,!ledon);

ledon= !ledon;

timer=millis()+500; //pana ain acest punct este un mic programel pentru aprinderea //celor doua leduri

}

{

byte temp[VW_MAX_MESSAGE_LEN];

byte templen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(temp, &templen)) //daca s-a receptat sirul de octeti

{

int x,y;

digitalWrite(13, true);

x= (temp[1] << 8 ) | temp[0]; //vom reface valorile transmise

y= (temp[3] << 8 ) | temp[2];

if (y>1000) //si in functie de ele vom face posibila miscarea robotului

{

analogWrite(M1_1,0);

analogWrite(M1_2,255);

analogWrite(M2_1,0);

analogWrite(M2_2,255);

}

else if (y<40)

{analogWrite(M1_1,150);

analogWrite(M1_2,0);

analogWrite(M2_1,255);

analogWrite(M2_2,0);

}

else if (x>1000)

{analogWrite(M1_1,0);

analogWrite(M1_2,255);

analogWrite(M2_1,255);

analogWrite(M2_2,0);

}

else if (x<40)

{analogWrite(M1_1,255);

analogWrite(M1_2,0);

analogWrite(M2_1,0);

analogWrite(M2_2,255);

}

else

{analogWrite(M1_1,0);

analogWrite(M1_2,0);

analogWrite(M2_1,0);

analogWrite(M2_2,0);

}

}

}

}

 

Acest articol este publicat in cadrul concursului Robofun 2012. Daca iti place si vrei sa castige unul dintre cele 10 premii, ofera-i un vot apasand butonul “Like” de mai jos.

 

Produse noi la ROBOFUN.RO

Shield Pini cu Surub pentru Arduino

 

 

http://www.robofun.ro/shield-pini-surub-arduino  


NunChuck WII + Conector Arduino

 

 

http://www.robofun.ro/index.php?route=product/product&product_id=672  


iRacer

 

http://www.robofun.ro/platforma-bluetooth-telefon-mobil  


Shield 4 Relee pentru Arduino (I2C)

 

http://www.robofun.ro/shield-4-relee-arduino-i2c  


Cutie pentru Arduino

 

http://www.robofun.ro/arduino-box  

 


Arduino Leonardo

 

http://www.robofun.ro/arduino-leonardo  


Arduino Leonardo, fara pini

 

http://www.robofun.ro/arduino-leonardo-no-pin  

 

Cine vine sa se bata cu mine ?

Evident, sa se bata cu mine in roboti. Mai exact, marti de la 19:30, in cadrul intalnirii Tehnorama vom avea concurs de sumo robotic. Avem la dispozitie 10 roboti identici, gata asamblati si echipati cu baterii LIPO, care te asteapta sa-i programezi ca sa poata intra in ring. Fiecare participant va avea la dispozitie cateva ore ca sa-si programeze robotul, iar apoi vom pune robotii in ring si le vom da voie sa se desfasoare.

Fiecare robot este prevazut cu senzori si cu o placa Arduino UNO. Astfel, dispune de senzori de linie, capabili sa detecteze marginea ringului, si are la dispozitie 3 senzori de distanta cu ajutorul carora vede adversarul. Obiectivul este sa iti scoti adversarul din ring, in timp ce robotul tau ramane in ring. Mai jos am pus un film cu un concurs de sumo robotic, ca sa iti dai seama mai clar despre ce este vorba :

Pe tot parcursul programarii robotului noi vom fi alaturi de tine, astfel incat in mod sigur vei reusi sa intri in ring.

Cei 10 roboti sunt de tipul Magician , fiecare avand montata si extinderea pentru sumo .

Daca te hotarasti sa vii, lasa te rog un comentariu, ca sa iti rezerv un robot.

 

Viorel

Concurs : RoboHand

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 856 de voturi, si este castigatorul lunii mai.

 


 

Traim intr-o lume in care majoritatea operatiunilor se fac mecanizat si robotizat.Am realizat acest proiect cu scopul usurarii unor operatiuni inaccesibile sau foarte greu acesibile omului. Am realizat o mana robotica mobila si autonoma ce are capaciatea de a copia integral miscarile unei mâini umane. Acesta mana copie identic miscarile unei maini umane, le poate memora, corecta si repeta aceleasi miscari.

Constructia mecanica a mainii:
Am analizat cu atentie miscarile fiecarui deget uman, precum si pozitia lor.In constructia fiecarui deget am luat ca reper propia-mi mana.Am incercat constructia din diverse materiale, plastic, lemn, silicon(sa torn un mulaj al mainii).Dar cea mai mare problema aparea la articulatii, la flexibilitatea lor, la forta necesara pentru o miscare completa si articulare maxima, revenirea la starea initiala. Dupa multe incercari am ajuns la o formula finala construita din metal si plastic.Am obtinut niste degete minunate, foarte flexibile, ce pot imita aproape perfect degetele umane, ideale pentru proiectul meu.
Creierul proiectului este un microcontrollerul ATMEGA328 ce are o memorie de 32Kb.Acesta se alimenteaza la o tensiune de 5V pe care am stabilizat-o cu ajutorul unui stabilizator LM7805 si pentru buna functionare a microcontrollerului am folosit un filtru de 16KHz, condesatoare, etc.Pentru comanda am construit deasupra microcontrilerului, un modul de comanda si de conexiune pentru senzori si servomotoare.
Manusa e construita astfel incat senzorii sa aiba cea mai buna pozitie pe degete si sa citeasca corect miscarile degetelor.
Pentru a fi usor de folosit, am optat pentru conectica stanardizata atat pentru mana cat si pentru manusa.Astfel, conexiunea dintre cele doua elemente se face printr-un banal cabu de retea.

FUNCTIONALITATE

Mana robotica poate realiza miscarile mainii umane cu ajutorul senzorilor flexibili pozitionati pe mana cu ajutorul unei manusi.Acesti senzori citesc pozitia mainii umane si trimit toate datele foarte precis la creierul acestui brat, adica la pinii analogici a microcontrollerul ATMEGA328.
Dupa ce microcontrollerul a primit datele pozitiei mainii prin porturile analogice acesta comanda individual pentru fiecare deget, prin impulsuri modulate 5 servomotoare ce au un cuplu de 3.8Kg/cm fiecare.Acestea sunt conectate la 5 pini digitali ai microcontrollerului si sunt alimentate la o tensiune electrica de 5V curent continuu.Miscarea acestora e direct proportional cu pozitia mainii.
Butoanele de pe modulul de comanda pot inregistra si transmite miscari prestabilite.
Aceste miscari pot fi inregistrate vectorial in memoria eprom a microconrolerului, chiar corectate si repetate ca miscari identice.
Transmiterea miscarilor de la senzorii mainii poate fi facuta si prin intermediul retelei internet sau a unor module de emisie – receptie, a datelor.

INTREBUINTARI

Acesta mana este autonoma, poate fi atasat unui robot si se poate folosi in medii neaccesibile omului (medii cu virusi, medii chimice etc) pentru diferite operatiuni.
Prin intermediul modulelor de emisie receptie, sau a internetului, acest brat poate fi coordonat de la mare distanta.
Acesta poate veni si in ajutorul celor care au diferite probleme cu unul dintre membrele superioare.

AVANTAJE

Este un mecanism mobil avand un acumulator cu tensiunea electrica totala de 6V avand un curent electric de 1800mA.O tensiune si un curent ce nu reprezinta nici un pericol pentru cei ce folosesc acest brat.

 

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 856 de voturi, si este castigatorul lunii mai.