Proiecte Concurs Robofun

Articolele de mai jos sunt proiectele inscrise in cadrul concursului Robofun 2012. Daca iti place unul sau mai multe proiecte, si vrei sa castige dintre cele 10 premii, ofera-i un vot apasand butonul “Like” din pagina proiectului.

Daca vrei sa inscrii si tu proiectul tau pentru luna urmatoare, asteptam un email la contact [at] robofun [dot] ro.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Concurs : Robot Scorpion

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 69 de voturi.

 

 

 

 

Am inceput munca la el din luna august a anului 2010. Totul e facut de mine si de fratele meu, Adi, toata mecanica fiind facuta manual fara scule profesionale, ajutandu-ma doar de un pendulator vertical prins de un suport confectionat de mine cu panza in sus si de o bormasina verticala. Mi-am cumparat si o freza Dremel insa am fost destul de dezamagit de ea deoarece discurile pentru teierea metalului se mananca foarte repede, in sensul ca am reusit cu un singur disc sa tai cam 5cm de tabla, insa Dremelul ma ajutat foarte mult la taierea suruburilor, la slefuit si la taierea formei din interiorul bazei.Am aruncat o gramada de material(tabla 1.5 mm Al) deoarece forta pendulatorului indoaie urat.

Robotul l-am proiectat ca scorpion deoarece ne-am pus ambitia sa facem ceva ce nu s-a mai facut:D. Biped s-a facut, hexapod s-a facut, quadropod s-a facut, am vazut parca si un octopod dar scorpion nu.

Materiale:

* 24x Hs485-HB
* SSC-32 controllerul de servo;
* Arduino Duemilanove;
* PS2 Robot Controller+ PS2 Wireless Controller Receiver;
* acumulator LiPo 5300 mAh;
* tabla 1.5mm Al;
* piulite, suruburi( M3, M4), bara filetata etc.

Astept pareri si idei cu privire la miscari, utilitate, NUME… etc.

Acest “monstru” ruleaza pe ARDUINO.

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 69 de voturi.

Concurs : Robot Autonom

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 617 voturi.

Ma numesc Gidofalvi Norbert si anul trecut am terminat facultatea de mecatronica si robotica din cadrul universitatii Petru-Maior Tg Mures.
Sunt pasionat de electronica, mai ales proiectarea si dezvoltarea robotilor, asta inseamna proiectarea mecanica proiectarea electronica si dezvoltare software.
Cadrul robotului meu a fost proiectat in autocad inventor si taiat din Plexiglas cu o masina CNC.
Prinderea senzorilor de distanta am facut in asa fel incat cele doua senzori din lateral sa fie raglabil, si senzorul din fata este fix.
Robotul este echipat cu:
2 motoare cu reductor
3 senzori de linie
3 senzori de distanta sharp,
O camera whireless
Un servomacanism
O placa arduino uno
O placa driver cu integratul l298
Un system de captarea semnalului de la telecomanda
Un acumulator de 6V pentru alimentarea motoarelor si a senzorilor
O baterie de 9v pentru placa arduino

Pentru capturarea imaginilor si vizualizarea drumul robotului am folosit o camera wireless prins pe un servomecanism care permite o rotire de 180 grade pentru o vizibilitate mai buna.
Camera foloseste ca sursa de alimentare o baterie de 9v si poate sa trimite imagini pana la 150m de la receptor.

Senzor: CMOS Color

Robotul permite sa fie comandat manual cu ajutorul unei telecomanda fara fir, raza de actiune maxima 5m, este foarte usor de manevrat si se poate intra cu el in locuri greu accesibile pentru a face poze sau video.
In final am reausit sa asamblezi componentele si sa fac un robot autonom programabil.
Robotul este capabil sa urmareasaca linia si daca apare un obstacol pe linie ori intoarce ori iese de pe linie si dupa ocolire intoarce pe linie depinde de programare,

Componentele mecanice si electronice

O parte din programul folosit

//obsatacle avoid robot program with 3 Ir distance sensors//

// line thresholds
#define line_center_threshold 400
#define line_left_threshold 200
#define line_right_threshold 200
// obstacle thresholds
#define obstacle_center_threshold 300
#define obstacle_left_threshold 300
#define obstacle_right_threshold 300
// speeds
#define high_speed 150
#define medium_speed 70
#define low_speed 30

int mot1A = 11;
int mot1B = 10;
int mot2A = 6;
int mot2B = 5;
int s0 = 0;
int s1 = 1;
int s2 = 2;
int s3 = 3;
int s4 = 4;
int s5 = 5;
int followline = 1; // 1-follow the line, 0-surround the obstacle
int canswitch = 1; // 1-the followline can be switched, 0-cannot switch
int obstaclepos = 0; // 0-left, 1-right
int linepos = 0; // 0-left, 1-right

void setup() {
pinMode(s0, INPUT);
pinMode(s1, INPUT);
pinMode(s2, INPUT);
pinMode(s3, INPUT);
pinMode(s4, INPUT);
pinMode(s5, INPUT);
pinMode(mot1A, OUTPUT);
pinMode(mot1B, OUTPUT);
pinMode(mot2A, OUTPUT);
pinMode(mot2B, OUTPUT);
}

void loop() {

// ANALOG SENSORS READ
int sens0 = analogRead(s0);
int sens1 = analogRead(s1);
int sens2 = analogRead(s2);
int sens3 = analogRead(s3);
int sens4 = analogRead(s4);
int sens5 = analogRead(s5);
//delay( 50 );

// PRIORITY
// line=0, obstacle=0
if ( ( ( sens2 > line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) ) &&
( ( sens3 < obstacle_left_threshold ) && ( sens4 < obstacle_center_threshold ) && ( sens5 < obstacle_right_threshold ) ) )
{
followline = 1;
canswitch = 1;
}
// line=1, obstacle=0
else if ( ( ( sens2 < line_left_threshold ) || ( sens0 < line_center_threshold ) || ( sens1 < line_right_threshold ) ) &&
( ( sens3 < obstacle_left_threshold ) && ( sens4 < obstacle_center_threshold ) && ( sens5 < obstacle_right_threshold ) ) )
{
followline = 1;
canswitch = 1;
}
// line=0, obstacle=1
else if ( ( ( sens2 > line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) ) &&
( ( sens3 > obstacle_left_threshold ) || ( sens4 > obstacle_center_threshold ) || ( sens5 > obstacle_right_threshold ) ) )
{
followline = 0;
canswitch = 1;
}
// line=1, obstacle=1
else if ( ( ( sens2 < line_left_threshold ) || ( sens0 < line_center_threshold ) || ( sens1 < line_right_threshold ) ) &&
( ( sens3 > obstacle_left_threshold ) || ( sens4 > obstacle_center_threshold ) || ( sens5 > obstacle_right_threshold ) ) )
{
if ( canswitch == 1 )
{
if ( followline == 1 )
followline = 0;
else
followline = 1;
canswitch = 0;
}
}

// LINE FOLLOWER
//followline = 1;
// all on line (intersection)
if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// go strait
analogWrite(mot1A, 0);
analogWrite(mot1B, medium_speed);
analogWrite(mot2A, medium_speed);
analogWrite(mot2B, 0);
}
// line to the center-left
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// turn left
analogWrite(mot1A, 0);
analogWrite(mot1B, low_speed);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);
linepos = 0;
}
// line not in center, but both sideways
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// go strait
analogWrite(mot1A, 0);
analogWrite(mot1B, medium_speed);
analogWrite(mot2A, medium_speed);
analogWrite(mot2B, 0);
}
// line only to the left
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// turn left
analogWrite(mot1A, low_speed);
analogWrite(mot1B, 0);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);
linepos = 0;
}
// line to the center-right
else if ( (followline == 1) && ( sens2 > line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// turn right
analogWrite(mot1A, 0);
analogWrite(mot1B, high_speed);
analogWrite(mot2A, low_speed);
analogWrite(mot2B, 0);
linepos = 1;
}
// line only in center
else if ( (followline == 1) && ( sens2 > line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// go strait full speed
analogWrite(mot1A, 0);
analogWrite(mot1B, high_speed);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);

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 617 voturi.

Intalnirile Tehnorama

Ce sunt intalnirile Tehnorama ?

Intalnirile Tehnorama au loc in fiecare marti seara, de la ora 19:00, la Centrul de Creatie Tehnica Pentru Tineret din Soseaua Oltenitei nr 103, etaj 3 (Bucuresti) – este la acelasi etaj si in aceeasi cladire ca si sediul Robofun – sau in cadrul Politehnicii Timisoara (Timisoara) . Participarea este gratuita. Facem schimb de impresii,  discutam despre proiectele pe care le-am facut sau despre cele pe care le vom face,  uneori avem prezentari despre ce e nou si ce e vechi dar ne place, bem bere si ceai, mancam pizza.

Cine poate participa ?

Oricine este pasionat de ceea ce se intampla acolo (vino o data, vezi ce se intampla, si daca iti place mai vii).

Cat costa ?

Nu costa nimic, totul este gratuit. Nu exista consumatie obligatorie sau alte taxe ascunse.

Ce trebuie sa fac ca sa particip ?

Doar sa vii la intalnire, nimic mai mult 🙂 .  Harta locatiei o gasesti mai sus, te asteptam in fiecare marti de la ora 19:00 .

Exista ceva ce nu-mi este clar, cum procedez ?

Da-mi un email la viorel [dot] spinu [at] gmail [dot] com sau suna-ma la 0722 520 406.