Concurs : Tableta Android (Evolio) multitouch pe post de midi controller

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

http://www.facebook.com/v/2442445715359

1. Compilat driver serial pl2303 pentru Linux/Android 2.3.1 + rutat tableta
2. Scris aplicatie Android(java) pentru control MIDI
3. Adaptor chinezesc USB-SERIAL cu pl2303
4. Convertor de nivel MAX232
5. Programat AtMega8u2 cu firmaware de HID MIDI cu LUFA for MOCO
6. Play!
Tableta trimite si primeste comenzi MIDI biderectional catre programe de muzica(sinteza/sequencere)- Ableton/Reason/Fm8 etc

Concurs : Animatronic Hand

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

Ceea ce se poate observa din filmuletul de pe YouTube este un proiect de licenta la Universitarea din Petrosani, specializarea Automatica, anul acesta, elaborat de  Matei Paul  si coordonat de Bogdan Sochirca.

Este doar prima faza dintr-un proiect care sper sa continue in viitor. In caz ca va place da-ti va rugam un LIKE pe YouTube. Toate componentele sunt cumparate de pe www.robofun.ro.

S-au folosit 5 “bending sensor” pentru manusa, un arduino si 5 servo motoare.

Au fost mai multe incercari “esuate” care au dus la final la cea ce se poate observa .

 

Concurs : Robotul EVA

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

In cele ce urmeaza va voi prezenta robotelul pe care l-am realizat pentru fetita mea si care a fost botezat EVA.

Principala functie a acestui robot este de a purta in mod interactiv mici conversatii cu ajutorul unor mesaje pre-inregistrate si a butoanelor plasate pe piept. Pentru a-i conferi si ceva mobilitate, i-am adaugat ulterior un sasiu Tamiya plus rotile aferente si vor urma si senzorii necesari urmaririi unei linii.

Partea de redare a sunetului este formata dintr-un MP3_Trigger legat la un amplificator audio si doua difuzoare, provenite dintr-o pereche de boxe de calculator.  MP3_Trigger-ul este comandat serial de catre un modul Arduino.

Luminile sunt de asemenea comandate de catre Arduino prin intermediul unor tranzistoare NPN.

Pentru ochi am folosit doua LED-uri albastre peste care am lipit doua discuri de plexiglas slefuite pentru a obtine o iluminare cat mai uniforma. LED-urile corespunzatoare gurii sunt comandate de catre pinul 11 PWM, intensitatea luminoasa a LED-urilor modificandu-se cat timp robotul “vorbeste”. Toate LED-urile sunt alimentate la tensiunea de 5V si sunt inseriate cu rezistente de 120 ohmi pentru limitarea curentului.

Butoanele de comanda sunt push butoane luminate fiecare de cate un LED.

Corpul este taiat dintr-un tub de PVC de diametru 110mm si inaltime 170mm.

Capul l-am realizat din polistiren extrudat, lipit pe mai multe straturi, taiat si slefuit. Dupa finisajele finale, am vopsit totul in rosu, cu vopsea care nu ataca polistirenul.

Alimentarea intregului robot se realizeaza dintr-un acumulator LiPo cu 2 celule in serie (7.4V, 1300mA). Aceasta tensiune este aplicata direct pe mufa jack a modulului Arduino si in paralel pe un stabilizator de tensiune de 5V de unde sunt alimentate LED-urile si motoarele.

 

Daca este nevoie de lamuriri suplimentare, va stau la dispozitie.

O zi frumoasa,
-=Seba=-

Concurs : Masinuta care evita obstacole

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

http://www.youtube.com/watch?v=IyoUK2oicLk

 

 

Pentru acest proiect am folosit urmatoarele :

-Fotodiode de emisie receptie
-2 relee de 5v
-2 condensatori de 100 uF(timer 1 si 2)
-2 tranzistori C1815
-1R x 6.2M(ptr fototranzistor serie)
-2R x 47Ohm
-2R x 53K(timer 1)
-1R x 47k(timer 2)
-2R x 10K
-1R x 150Ohm(pentru fotodioda de emisie sa nu se arda)
-Timer HCF40988E
-2 Led-uri 5mm
-Un rulment
-2 motorase din jucarii cu transmisii melc-roata dintata ca sa mai reduca din viteza
-2 rotite de jucarie infasurate cu tzichi 🙂
-4 distantiere care separa mecanica de elctronica
– 2 placi perforate 50×70 mm
-200mm cablu net
-sir de pini cu papuci
-Toggle switch
-Baterie Nokia

Cum functioneaza: Fotodioda de emisie,emite unde infrarosii in mod constant cat timp masinuta se misca.Cand ajunge fata in fata cu un obstacol ,undele se reflecta si ajung in fototranzistor sau fotodioda de receptie.fototranzistorul se leaga in serie cu R6.2MOhm -si intre aceasta rezistenta si fototranz se lipeste un fir care intra in timer(regula divizorului de tensiune,gasiti pe net).Cand exista obstacol tensiunea din acest fir creste sau devine logic 1…in acest moment timerul isi face treaba si numara secundele(mentionez ca acest circuit integrat are 2 timere si le-am folosit pe amandoua,dar se poate folosi si unul singur) Numarul secundelor este dat de Nr.sec = 0.7 * val rezistenta * val condensator.

timer 1 are intarziere de : 0.7*100uF*53K = 3.7 secunde
timer 2 are intarziere de: 0.7*100uF*47K =3.3 secunde

In timp ce intarzierea are loc o tensiune din timer (si din timer 1 si din 2 – deci 2 pini din circuitul integrat) intra in cele 2 tranzistoare care actioneaza cele 2 relee inversand polaritatea de la motoare(deci incepe sa mearga cu spatele).Cand timer 2 termina de numarat releul revine la normal si roata (nu stiu care :)-una din ele) revine la rotatia pentru inainte,in timp de ce timer 1 mai numara fapt care determina schimbarea directiei de deplasare. Led-urile sunt folosite pentru a determina care dintre relee este actionat. Fototranzistorii functioneaza pe baza de fotoni deci sunt sensibili la lumina,din aceasta cauza este intuneric.

Concurs : Robot Arm MB1

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

Robotul pe care urmeaza sa vi-l prezint in continuare  a fost conceput pentru un concurs national de practica. Initial era numai radio comandat  dar ulterior am decis sa fac un pas mare inainte si am facut un mic programel in Arduino.

Nu este cel mai bun program sau cel mai perfectionat pentru ca eu nu am deloc experienta in domeniul acesta, si ca sa nu vorbim si de bugetul relativ redus si timpul (aproximativ o luna).

Si acum gata cu cuvintele in vant sa trecem direct la el.

Cateva informatii tehnice.

 Are 2 moduri de functionare :

-Automat(arduino)

-Radiocomanda

 

Este construit in jurul platformei de dezvoltare Arduino.

 

Ca parte mecanica contine :

-1 servomotor standard de 11kg/cm

-4 servomotoare standard de 7kg/cm

-1 servomotor nano de 2,5kg/cm (pentru griper)

Sasiul este confectionat din Acrilic(plexiglas). Este proiectat in Corel Draw si ulterior taiat cu laserul.

Un videoclip cu robotelul in actiune

Voi reveni cu mai multe amanunte despre  acest proiect, dar daca aveti intrebari sau  comentari le astept cu drag.

Concurs : Alcooltest 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 36 de voturi.

Salutare! Numele meu este Valentin Popescu si sunt absolvent al Facultatii de Matematica-Informatica din cadrul UVT. In facultate am devenit din ce in ce mai pasionat de electronica si in cele din urma am decis ca e momentul sa-mi cumpar o placa Arduino dupa ce lucrasem cu una in cadrul unui proiect. Multumesc domnului Viorel Spinu pentru tot suportul oferit.

Unul dintre proiectele pe care le-am realizat este un etulotest pe care l-am facut folosind un senzor MQ-3 care poate fi achizitionat de la RoboFUN

De ce ai nevoie?

 

  • Arduino
  • 7 rezistente de 10KOhmi
  • senzor MQ-3
  • breadboard
  • fire conectare

Cablaj

Senzorul de gaz MQ-3 are 6 picioruse dispuse simetric (3 stanga, 3 dreapta). Piciorusele din partea dreapta vor fi legate la +5V iar in partea stanga, primul piciorus se va conecta la portul analog de pe care se vor citi date (0-5), piciorusul din mijloc se va conecta la GND, iar ultimul piciorus tot la GND dar pe cablaj se va pune o rezistenta de 10KOhmi. (vezi imaginea) ATENTIE!

  • folositi acelasi pin de GND pentru conectarea senzorului
  • puteti alege oricare 3 picioruse ca apartinand partii din stanga sau dreapta, conteaza sa faceti cablajul corect

Pentru afla cantitatea de alcool in aerul expirat vom folosi 6 leduri ce se vor aprinde treptat conform cantitatii. Ledurile vor fi legate la pinii digitali ai placii Arduino (pinii 2,3,4,5,6,7) si cu rezistente de 10K pentru GND. Eu am folosit un breadboard mini (vezi imaginile)

Coding

Mai jos aveti programul necesar pentru a folosi etilotestul. Am folosit exemplul barrGraph celor de Arduino pentru a realiza aprinderea ledurilor in stil bara. Functia map() “transforma” valorile citite de la senzor in numarul de leduri ce vor fi aprinse.

 

const int analogIn = 0;
const int nrLeduri = 10;    // numar de leduri
int leduri[] = {
7,6,5,4,3,2 //ordinea ledurilor
};

void setup() {

for (int led = 0; led < nrLeduri; led++) {
pinMode(leduri[led], OUTPUT);
 }
}

void loop() {

int dateSenzor = analogRead(analogIn);
int nivelLeduri = map(dateSenzor, 500, 1023, 0, nrLeduri);

for (int led = 0; led < nrLeduri; led++) {

if (led < nivelLeduri) {
digitalWrite(leduri[led], HIGH);
}

else {
digitalWrite(leduri[led], LOW);
  }
 }
}

Concurs : Comunicatie punct-la-punct cu module XBee

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

Am achizitionat nu demult de la robofun doua module XBee S2.

Documentatia de fabrica e suficient de seaca, astfel incat reuseste sa puna pe ganduri pana si un profesionist. De aceea vin cu niste idei care, poate clarifica unele ciudatenii, sau eventual vor atarna in balanta in momentul deciziei de a utiliza asemenea module.

Modulele de comunicatie XBee au fost concepute pentru comunicatii de viteza mica pe distante scurte (100m), medii (3km) sau mari (40km) in retele de senzori. Utilizarea lor, evident, nu se limiteaza doar la senzori.

Functioneaza pe benzile de frecventa ISM, cu licenta libera: 2.4GHz, 868MHz.

Viteza maxima de comunicatie variaza intre 10kbiti/secunda (kbps) si 65Mbps in functie de distanta si banda utilizata.

Modulele comercializate de robofun sunt de doua tipuri:

  1. S2 (2mW): cu antena chip sau cu antena bastonacestea intra in categoria modulelor pentru comunicatii la distante mici (120m), cu viteze de pana la 250kbps.
  2. S2B PRO (50mW): cu bataie de pana la 1.5km si viteze de pana la 250kbps.

Varianta S2B PRO este evident mai scumpa.

Necesarul de putere pentru o buna functionare este de cca.132mW (40mA@3,3V) pentru S2 si cca.386mW (117mA@3,3V) pentru S2B.

Modulele se pot configura sa functioneze in retele de diverse topologii, dar cu doua module in traista un utilizator nu prea se poate aventura, decat la o comunicatie punct-la-punct.

In documentatia fabricantului cel mai tare mi-a placut fraza “No configuration necessary for out-of-box RF communication”, adica “Pentru o comunicatie RF din prima nu este necesara nici o configurare”. Adevarat, daca vorbim de o retea XBee existenta, dar total fals la o prima incercare. Iata de ce.

Reteaua XBee a fost conceputa ca o retea cu mai multe noduri. Nodurile au rol bine determinat si pot fi de trei categorii:

  1. coordonator
  2. router
  3. dispozitiv de capat

Intr-o retea XBee poate exista un singur nod coordonator, mai multe noduri de tip router, restul fiind dispozitive de capat: senzori, afisaje, echipamente de uz casnic, etc. dotate cu asemenea module.

Coordonatorul este raspunzator pentru “construirea” retelei: scaneaza in jurul sau frecventele alocate si se “aseaza” pe un canal liber, isi rezerva o adresa de retea (PAN ID) si aloca adrese celorlalte noduri, care i se vor atasa.

Routerele se pot atasa retelei folosindu-se de adresa retelei, iar dupa aceea se ocupa de rutarea datelor primite, respectiv de atasarea nodurilor tip dispozitiv.

Nodurile tip dispozitiv se pot “agata” de retea prin conectarea la un router.

Modulele comercializate de robofun se livreaza preconfigurate ca routere. In starea de fabrica adresele PAN ID sunt 0, adica nodul odata pornit se poate atasa la orice retea existenta. Aici apare problema incepatorului. Chiar cu doua module pe masa comunicatia nu apare! De ce oare? Pentru ca nu exista inca retea, la care aceste doua noduri sa se agate. Neavand retea, nu vor primi adrese proprii si nu vor functiona. Trebuie sa configuram modulele astfel, incat sa simulam existenta unei retele.

Pentru a configurare vom folosi programul X-CTU. Instalarea dureaza cateva minute bune, pentru ca pe parcursul instalarii se vor descarca si fisierele actualizate ale tuturor modulelor XBee recunoscute de program.

Dupa aceea trebuie sa ne conectam la un XBee de-al nostru. Eu am folosit un breadboard in care am conectat modulul XBee introdus in soclu adaptor, iar soclul l-am conectat la un port USB printr-un modul FTDI de 3,3V

Pentru verificare:

FTDI

XBee

RXI

3 (Tx)

TXO

4 (Rx)

3V3

2 (3V3)

GND

1 (GND)

Pornim programul X-CTU, si daca conexiunile sunt corecte, apare imaginea urmatoare:

Nu vom detalia toate functiile programului, acestea se pot citi la nevoie (!) in documentatie.

Trecem in schimb la ultimul tab: Modem Configuration.

Ecranul e mai mult gol, pentru ca modulul XBee inca nu a fost recunoscut. Apasam butonul Read si rezultatul va fi:

Pentru orientarea in hatisul de informatii vom explica doar cele necesare unei manevre de test, cum ne-am propus:

COD

Detaliere

(0) ID – PAN ID

Adresa retelei la care se doreste conectarea. (Personal Area Network ID). Valoarea 0 inseamna oricare retea accesibila.

(0) OP – Operating PAN ID

Adresa retelei la care s-a conectat. Valoarea 0 insemna nici o retea.

(FFFF) OI – Operating 16-bit PAN ID

Adresa de 16 biti a retelei la care s-a conectat. Valoarea FFFF insemna oricare retea.

(0) CH – Operating Channel

Canalul radio pe care s-a conectat. Valoarea 0 insemna nici un canal

(13A200) SH – Serial Number High

Numarul de serie al modulului (partea superioara a adresei). Valoare unica inscrisa de fabricant.

(407E7145) SL – Serial Number Low

Numarul de serie al modulului (partea inferioara a adresei). Valoare unica inscrisa de fabricant.

(FFFE) MY – 16-bit Network Address

Adresa de 16 biti a modulului in cadrul retelei. Valoarea FFFE inseamna neconectat la retea.

(0) DH – Destination Address High

Adresa de destinatie a datelor, partea superioara. Valoarea 0 = fara destinatie

(0) DL – Destination Address Low

Adresa de destinatie a datelor, partea inferioara. Valoarea 0 = fara destinatie

Observam ca, unele randuri in ecranul cu aceste date sunt marcate cu verde, altele cu negru. Cele verzi se pot modifica la nevoie 🙂 , iar cele negre sunt doar informative, dar utile.

TOATE DATELE NUMERICE SUNT IN FORMAT HEXADECIMAL.

 

Avand doar doua module XBee la indemana vom proceda la construirea unei retele cu doua noduri. Ca orice retea XBee, va avea nevoie de adresa de retea, iar modulele odata conectate vor avea nevoie de niste adrese de destinatie pentru datele transmise, mai precis destinatia unui modul va fi adresa celuilalt modul si vice-versa. Sa vedem cum stam:

Numarul de serie al fiecarui modul se comporta in cadrul protocolului de comunicatie ZigBee ca o adresa. Daca “invatam” modulele cu adresa celuilalt, avem toate datele necesare ridicarii retelei cu doua noduri.

Cel mai simplu mod de a porni este sa configuram un nod ca un coordonator, acesta urmand sa se ocupe de restul treburilor.

Iata cum arata unul din modulele mele configurat ca si coordonator:

Se poate observa ca, adresa retelei am fortat-o la valoarea hexa 0x123456789ABCDEF, partile High (0x0013A200), respectiv Low (0x407E745) ale adresei de destinatie le-am luat de la modulul celalalt.

Coordonatorul s-a ocupat de construirea adresei de 16 biti (0x3808), de ocuparea canalului radio (0x0F) si de alocarea unei adrese proprii (0x0000). Coordonatorul totdeauna isi rezerva adresa 0x0000 intr-o retea.

Fiecarui nod i se poate atasa si un nume (NI – Node Identifier), care se poate folosi la o adresare mai usoara in cadrul unei retele mari. In exemplu am denumit coordonatorul ca “NODE A”.

Manevra de mai sus am repetat-o si pentru modulul B, cu mici diferente. Nu am modificat valoarea adresei de retea (PAN ID = 0x00), in schimb partile High (0x0013A200), respectiv Low (0x407E751) ale adresei de destinatie le-am luat de la modulul A, adica modulul coordonator.

Se observa ca adresa retelei proaspat construite se repeta si la acest modul, fara sa ne fi atins de aceasta. Mai mult, corespunde si adresa de 16 biti (0x3808), dar difera adresa nodului (0x9C38) in cadrul retelei.

Folosind intr-un nod un XBee cu adaptor + un modul FTDI/USB conectat la calculator, iar in celalalt nod un panou de test echipat cu un procesor mbed si cu al doilea modul XBee am testat comunicatia radio.

Procesorul mbed foloseste un port serial UART prin care preia datele de la XBee si le interpreteaza: daca soseste o cifra intre 1 si 4, atunci isi va comuta starile celor patru LEDuri proprii.

// Test comunicatii XBee cu mbed

#include "mbed.h"

 

Serial XBee(p9,p10); // configurare port serial

 

DigitalOut L1(LED1); // configurare iesiri pentru cele 4 LEDuri
DigitalOut L2(LED2);
DigitalOut L3(LED3);
DigitalOut L4(LED4);

 

unsigned char c; // buffer pentru simbolul citi de la UART

 

int main() {
 while(1) { // pana la infinit ...
 if (XBee.readable()) { // daca avem ceva pe portul serial
 c=XBee.getc(); // preluam un caracter
 XBee.putc(c); // il trimitem inapoi drept confirmare
 switch (c) { // si daca ...
 case '1': L1 = !L1; break; // e 1 -> comuta LED 1
 case '2': L2 = !L2; break; // e 2 -> comuta LED 2
 case '3': L3 = !L3; break; // s.a.m.d.
 case '4': L4 = !L4; break;
 } // switch
 } // if
 } //while
}