Robot Autonom (line Follower)

Proiect de licență

Robot autonom (Line follower) / Controlat wireless

Cuprins

Memoriu justificativ

Rezumat

CAPITOLUL 1 STUDIUL PRIVIND STADIUL ROBOȚILOR MOBILI

Scurt istoric. Definiții

Structura roboților mobili

Tipuri de roboți mobili

Utilizări ale roboților mobili

CAPITOLUL 2 SISTEME DE PROCESARE UTILIZATE (MICROCONTROLERE)

Generalități despre microprocesoare și microcontrolere

Aplicații cu microcontrolere

Clasificări și arhitecturi constructive

Tipuri de memorie folosite în microcontrolere

Sistemul de intrări-ieșiri

Limbaje de programare și compilatoare

CAPITOLUL 3 METODE DE COMUNICARE WIRELESS

Comunicații în infraroșu

Comunicații prin Bluetooth

Principalele caracteristici ale standardului Bluetooth / IEEE 802.15.1

Clasele de putere / acoperire și securitatea Bluetooth

Stivă de protocoale Bluetooth

Descoperirea dispozitivelor Bluetooth

Versiuni în evoluția Bluetooth

CAPITOLUL 4 REALIZAREA PRACTICĂ A ROBOTULUI MOBIL

Implementare Hardware

Placă de dezvoltare cu microcontroler ATmega328P

Sistem senzorial

Senzori de linie QRE1113

Senzor Sharp de distanță

Metode de comunicare

Motoare de curent continuu

Implementare Software

Codul pentru ghidarea cu senzor IR

Codul pentru ghidarea wireless cu Bluetooth

Concluzii

Anexe

Bibliografie

Memoriu justificativ

Studiile din domeniul roboticii arată că pentru implementarea conceptelor din domenii precum inteligența artificială trebuie construite arhitecturi modulare, scalabile și eficiente, atât pentru componentele hardware ale robotului, cât și pentru platformele software care sunt utilizate.

Tema actualului proiect de diplomă vizează să aplice eficient elementele unității mecanice, în scopul dezvoltării platformei de comunicații cu elemente de soft care să ofere un mediu favorabil și fiabil potențialelor aplicații.

Datorită nevoii tot mai ridicate de transmitere fiabilă a datelor cu viteze mari, tehnologiile performante utilizate în prezent în diverse domenii ale comunicațiilor au pătruns și în roboții mobili. Astfel robotul pe care încerc să-l dezvolt conține ca suport de comunicații tehnologia Bluetooth.

Odată creat robotul, cu suport de comunicații performant oferit de Bluetooth, se pune problema dezvoltării unui mediu soft adecvat, care să permită comunicarea datelor și executarea aplicațiilor în condiții de viteză și fiabilitate optimizabile.

Pe această linie proiectul își propune studiul și elaborarea unor elemente soft care să permită abordarea mai eficientă a sistemului de comunicație PC-robot mobil, vizând realizarea optimă a proceselor de comandă, achiziție de date și execuție.

Majoritatea roboților din zilele noastre funcționează controlați de microcontrolere. Cu cât robotul este construit să realizeze mai multe funcții, cu atât microcontrolerul care îl comandă trebuie să fie mai performant. La rândul lui, pentru a reuși să comande un robot, microcontrolerul trebuie să fie programat. Acesta poate fi programat atât în limbaj de asamblare, cât și în limbaj de nivel înalt , unul dintre acestea fiind limbajul C. Astăzi cele mai multe companii utilizează pentru programare limbajul C.

Folosind limbajul C, mi-am propus să studiez și să implementez programul pentru funcționarea unui model de robot care urmărește un traseu și în afara traseului poate fi controlat wireless și evita coliziunea cu obstacolele. Pentru urmărirea traseului se folosesc doi senzori de linie, iar pentru evitarea obstacolelor se folosește un senzor Sharp de distanță.

Rezumat

Această lucrare prezintă modul de proiectare și realizare a unui robot mobil echipat cu microcontroler ATmega328P și diferiți senzori, aducând o contribuție la dezvoltarea bazei teoretice și practice de studiu a microcontroalerelor Atmel și a posibilităților nelimitate de dezvoltare de aplicații în domeniul roboticii.

În primul capitol am făcut un studiu privind stadiul roboților mobili, urmărind aspecte legate de structura acestora, tipurile de roboți care există în acest moment dezvoltați și utilizarea lor în viața reală.

În capitolul al doilea am făcut o descriere a sistemului de procesare utilizat reprezentat de microcontroler, în care am prezentat aplicațiile la care pot fi utilizate microcontrolerele, o clasficare a tipurilor de microcontrolere și structura acestora.

Capitolul trei prezintă metode de comunicare wireless și în special date despre tehnologia Bluetooth de care m-am folosit în realizarea părții practice a acestui proiect. Am prezentat principalele caracteristici ale acestei tehnologii și versiunile dezvoltate de-a lungul anilor.

Capitolul al patrulea corespunde părții practice a acestei lucrări. Acesta prezintă, pe rând, diferitele componente ale sistemului inteligent de ghidare a robotului mobil. Microcontrolerul, senzorii de linie și de distanță, motorul, driverul pentru motoare precum și mediul de programare folosit pentru construcția acestui proiect, se regăsesc în acest capitol. Tot aici se prezintă schema bloc a proiectului.

Lucrarea se încheie cu prezentarea concluziilor.

CAPITOLUL 1 STUDIUL PRIVIND STADIUL ROBOȚILOR MOBILI

Scurt istoric. Definiții

Termenul de „robotics” (în traducere liberă robotica) se referă la știința ce se ocupă de studiul și utilizarea roboților. Acest termen a fost folosit pentru prima dată de scriitorul și omul de știintă american de origine rusă, Isaac Asimotov, într-o povestioară numită „Runaround” în anul 1950.

Primii roboți s-au numit Unimates și au apărut în anii ’50, fiind dezvoltați de George Devol și Joe Engelberg. Acesta din urmă a format Unimation și a fost primul care a vândut roboți, fiind considerat de unii „părintele roboticii”.

Conform enciclopediei Webster, un robot este „un dispozitiv automat, care execută funcții normale atribuite oamenilor, sau o mașină cu asemănare de om”.

În timp ce această definiție ar putea fi satisfăcatoare pentru unii dintre noi, nu este însă neapărat și completă. O altă definiție a fost dată de institutul de robotică din America în anul 1979. Conform acestei definiții, un robot este „o mașină reprogramabilă, multifuncțională, creată pentru a muta diverse materiale, bucăți, unelte sau alte dispozitive specializate prin diverse mișcări programate, pentru realizarea unei varietăți mari de sarcini”.

O definiție mai scurtă și larg acceptată la ora actuală este urmatoarea: un robot este un sistem inteligent care interacționează cu mediul fizic înconjurător, prin intermediul unor senzori și efectori.

Modul de interacțiune clasic al unui robot constă din trei pași :

→Robotul “simte” mediul înconjurător, adică primește informații despre mediu prin senzorii lui;

→ Robotul planifică ce să facă în continuare, construind un model al lumii înconjurătoare, bineînțeles luând în calcul atât obiectivele pe termen scurt (detectarea unui obstacol), cât și cele pe termen lung (deplasarea până într-un anumit punct);

→ Robotul își pune în aplicare planul prin intermediul efectorilor.

Acest model a fost predominant în timpul anilor ’80. Odată cu simplitatea oferită de acest model, intervin și anumite probleme care trebuie luate în calcul. Una din aceste probleme este faptul că rigiditatea acestui model îl face foarte lent. La fiecare iterație a acestui algoritm, trebuie realizate toate operațiile din nou, și anume: citirea senzorilor, modelarea lumii înconjurătoare, planificarea operațiilor viitoare, respectiv realizarea acestora.

Figura 1.1 Modul de interacțiune clasic al unui robot

În anul 1986 o nouă arhitectură este propusă de Brooks, prezentându-se un set de nivele (layere), fiecare nivel conținând un program de control care este capabil să interacționeze direct cu mediul înconjurător.

Figura 1.2 Modul de interacțiune propus de Brooks

Pentru a modela lumea înconjurătoare este necesar ca un robot să adune date prin intermediul senzorilor de-a lungul unei perioade de timp. Orice tip de senzor este predispus la erori.

Prin prisma acestei definiții, s-ar putea spune că și omul este un robot. Omul „interacționează” cu lumea înconjurătoare prin intermediul unor senzori și a unor efectori, reprezentate în lumea biologică de terminații nervoase respectiv mușchi. Bineînțeles, diferența cea mai semnificativă între robot și om, este că robotul a fost creat de om și nu invers.

O prezentare sumară a unor asemănări între “caracteristicile” unei persoane umane și ale unui model de robot, este redată în tabelul următor:

Figura 1.3 Asemănări între om și robot

Structura roboților mobili

Un robot mobil poate fi descris ca un robot care trebuie să se deplaseze într-un anumit mediu, fără ajutorul unui operator uman și să execute anumite sarcini date de acesta. Deci principala caracteristică este mobilitatea.

Roboții mobili au întrebuințări multiple. De-a lungul timpului au existat și există roboți mobili cu funcții diverse, de la aspirator pentru casă la explorator spațial, de la vehicul ghidat automat folosit în industrie la robot didactic folosit doar pentru scopuri stiințifice.

Un robot mobil este alcătuit dintr-o serie de componente, unele de natură fizică (hardware), iar altele de natură logică, computațională (software). Din punct de vedere al componentelor hardware, un robot mobil poate fi considerat ca o colecție de sisteme pentru:

Locomoție și acțiune – modalitatea prin care robotul se mișcă în mediul său ambiant;

Sesizare prin sistem senzorial – modalitate prin care robotul măsoară proprietățile lui și ale mediului înconjurător;

Procesare – modalitate prin care robotul procesează și ia decizii în legatură cu informațiile primite de la sistemul senzorial;

Comunicare – modalitate prin care robotul comunică și cu alți roboți sau cu un operator din mediu.

În ceea ce privește locomoția și acțiunea, pentru a se putea deplasa în mediul ambiant și a executa anumite acțiuni prin intermediul organelor sale mobile, roboții mobili au nevoie de anumite componente electro-mecanice care să le permită o mișcare precisă, bazate pe transformarea energiei electrice în energie mecanică de către motoare și servomotoare specifice.

Printre aceste componente, cele mai reprezentative sunt:

Motoare, servomotoare, electromagneți;

Angrenaje, sisteme de transmisie;

Roți, șenile, picioare, perne de aer sau perne magnetice, elice.

Tipuri de roboți

Dezvoltarea explozivă a tehnologiilor, incluzând în primul rând pe cele electronice, a determinat utilizarea roboților în majoritatea industriilor. Astfel există atât de multe tipuri de roboți folosiți pentru diverse servicii, încât o enumerare a tuturor tipurilor acestora ar fi aproape imposibilă.

O clasificare aproximativă a celor mai întâlnite tipuri de roboți ar putea fi:

Androizi, roboți construiți ca să mimeze comportamentul și înfățișarea umană;

Roboți statici, roboți folosiți în diverse fabrici și laboratoare ca de exemplu brațe robot;

Roboți mobili, roboți care se deplasează într-un anumit mediu fără intervenție umană și realizează anumite obiective;

Roboți autonomi, roboți care își îndeplinesc sarcinile fără intervenție din partea unui operator uman și își obțin energia necesară funcționării din mediul înconjurător;

Tele-roboți, care sunt ghidați prin dispozitive gen telecomandă de un operator uman;

Linii autonome de producție în fabrici, sunt tot un fel de roboți, chiar dacă nu sunt mobili, deoarece au toate facilitățile definiției noastre.

Dintre toate aceste tipuri menționate mai sus, în proiect se studiază roboții mobili, de aceea ori de câte ori se va face referire la termenul de robot, se va înțelege de fapt un robot mobil.

Utilizari ale robotilor mobili

Utilizarile pentru care sunt conceputi robotii mobili sunt dintre cele mai diverse. Multi roboti din zona micro isi gasesc utilizarea in medicina, fiind capabili sa suturor tipurilor acestora ar fi aproape imposibilă.

O clasificare aproximativă a celor mai întâlnite tipuri de roboți ar putea fi:

Androizi, roboți construiți ca să mimeze comportamentul și înfățișarea umană;

Roboți statici, roboți folosiți în diverse fabrici și laboratoare ca de exemplu brațe robot;

Roboți mobili, roboți care se deplasează într-un anumit mediu fără intervenție umană și realizează anumite obiective;

Roboți autonomi, roboți care își îndeplinesc sarcinile fără intervenție din partea unui operator uman și își obțin energia necesară funcționării din mediul înconjurător;

Tele-roboți, care sunt ghidați prin dispozitive gen telecomandă de un operator uman;

Linii autonome de producție în fabrici, sunt tot un fel de roboți, chiar dacă nu sunt mobili, deoarece au toate facilitățile definiției noastre.

Dintre toate aceste tipuri menționate mai sus, în proiect se studiază roboții mobili, de aceea ori de câte ori se va face referire la termenul de robot, se va înțelege de fapt un robot mobil.

Utilizari ale robotilor mobili

Utilizarile pentru care sunt conceputi robotii mobili sunt dintre cele mai diverse. Multi roboti din zona micro isi gasesc utilizarea in medicina, fiind capabili sa se deplaseze de-a lungul vaselor si tuburilor corpului omenesc, in scopul investigatiilor, interventiilor chirurgicale, dozarii si distribuirii de medicamente. La fel de spectaculoase sunt si utilizarile macrorobotilor:

In domeniul industrial robotii mobili sunt reprezentati de AGV-uri (Automated-Guided Vehicles), vehicule pe roti, cu ghidare automată, care transportă si manipulează piese, constituind o alternativă flexibila la benzile de montaj;

In domeniul agricol exista tractoare si masini agricole fara pilot, capabile sa execute singure lucrarile pe suprafetele pentru care au fost programate, iar in domeniul forestier robotii mobili pot escalada copacii inalti;

In domeniul militar este luată in considerare de catre armata Americana inlocuirea soldatilor combatant cu roboti, pentru a reduce riscul pierderilor umane in lupta; roboți mobili ingenioși si robuști sunt aruncați in clădiri și incinte din zone de conflict, în scopuri de investigare si anihilare a inamicului;

Una dintre cele mai utile si economice utilizări ale robotilor mobili o reprezintă inspectarea conductelor de combustibili gazoși și lichizi și a canalelor de canalizare;

In domeniul distractiv și recreativ există roboți-jucării, roboți pentru competiții;

In domeniul serviciilor există posibilităti deosebit de largi de implementare; sunt roboți pentru deservirea bolnavilor în spitale, ajutorarea persoanelor cu diferite handicapuri, ghidarea și informarea publicului în muzee, aspirarea si curățirea incăperilor, spălarea geamurilor și a pereților clădirilor;

In domeniul securității multe operații de inspectare și dezamorsare a unor obiecte și bagaje suspecte sunt executate de roboți;

In domeniul operatiilor de salvare roboții sunt utilizați pentru salvarea victimelor unor calamnitați: cutremure, incendii și inundații.

CAPITOLUL 2 SISTEME DE PROCESARE UTILIZATE (MICROCONTROLERE)

2.1 Generalități despre microprocesoare și microcontrolere

În general se poate considera că și controlerele fac parte din familia largă a calculatoarelor, fiind o structură electronică destinată controlului unui proces sau, mai general, unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția operatorului uman.

Primele controlere au fost realizate în tehnologii pur analogice, folosind componente electronice discrete și componente electromecanice (de exemplu releele). Cele care fac apel la tehnica numerică modernă au fost realizate inițial pe baza logicii cablate și a unei electronici analogice uneori complexe, motiv pentru care „străluceau” prin dimensiuni mari, consum energetic pe măsură și, nu de puține ori, o fiabilitate care lăsa de dorit.

Pe măsură ce procesul de miniaturizare a continuat, a fost posibil ca majoritatea componentelor necesare realizării unei astfel de structuri să fie încorporate (integrate) la nivelul unui singur microcircuit (cip). Astfel că un microcontroler ar putea fi descris ca fiind și o soluție a problemei controlului cu ajutorul unui singur dispozitiv integrat.

O definiție, cu un sens foarte larg de cuprindere, ar fi aceea că un microcontroler este un microcircuit care încorporează o unitate centrală (CPU) și o memorie împreună cu resurse care îi permit interacțiunea cu mediul exterior.

Resursele integrate la nivelul microcontrolerului ar trebui să includă, cel puțin, următoarele componente:

unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem;

o memorie locală tip ROM / PROM / EPROM / FLASH și eventual una de tip RAM;

un sistem de întreruperi;

I/O – intrări / ieșiri numerice (de tip port paralel);

un port serial de tip asincron și / sau sincron, programabil;

un sistem de timere-temporizatoare / numărătoare programabile.

Este posibil ca la acestea să fie adaugate caracteristici specifice sarcinii de control care trebuie îndeplinite:

un sistem de conversie analog numerică (una sau mai multe intrări analogice);

un sistem de conversie numeric analogic și / sau ieșiri PWM (cu modulare în durată);

un comparator analogic;

memorie de date nevolatilă de tip EEPROM;

facilități suplimentare pentru sistemul de temporizare / numărare (captare și comparare);

facilități pentru optimizarea consumului propriu.

Un microcontroler tipic mai are, la nivelul unității centrale, facilități de prelucrare a informației la nivel de bit, de acces direct și ușor la intrări / ieșiri și un mecanism de prelucrare a întreruperilor rapid și eficient.

Utilizarea unui microcontroler constituie o soluție prin care se poate reduce dramatic numărul componentelor electronice precum și costul proiectării și al dezvolării unui produs.

Utilizarea unui microcontroler, oricât de evoluat, nu elimină unele componente ale interfeței cu mediul exterior (atunci când ele sunt necesare): subsisteme de prelucrare analogică (amplificare, redresare, filtrare, protecție-limitare), elemente pentru realizarea izolării galvanice (optocuploare, transformatoare), elemente de comutăție de putere (tranzistoare de putere, relee electromecanice sau statice).

În figura următoare se prezintă ca exemplu o structură tipică de microcontroler:

Figura 2.1 Schita microcontroler pe 8 biți cu arhitectura RISC

Memorie program (Flash) – pentru memorarea unui program scris. Pentru că memoria ce este facută în tehnologia FLASH poate fi programată și ștearsă mai mult decât odată, aceasta face microcontrolerul potrivit pentru dezvoltarea de componență;

EEPROM – memorie de date ce trebuie să fie salvate când nu mai este alimentare. Este în mod uzual folosită pentru memorarea de date importante ce nu trebuie pierdute dacă sursa de alimentare se întrerupe dintr-o dată. De exemplu, o astfel de dată este o temperatură prestabilită în regulatoarele de temperatură. Dacă în timpul întreruperii alimentării această dată se pierde, va trebui să facem ajustarea încă o dată la revenirea alimentării. Astfel componenta noastră pierde în privința auto-menținerii;

RAM – memorie de date folosită de un program în timpul executării sale. În RAM sunt memorate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la întreruperea sursei de alimentare;

Portul A și Portul B sunt conexiuni fizice între microcontroler și lumea de afară;

Timer-ul liber (Free-run) este un registru de 8 biți în interiorul microcontrolerului ce lucrează independent de program. La fiecare al patrulea impuls de ceas al oscilatorului își incrementează valoarea lui până ce atinge maximul (255), și apoi începe să numere tot din nou de la zero;

Unitatea de procesare centrala are rolul unui element de conectivitate între celelalte blocuri ale microcontrolerului. Coordonează lucrul altor blocuri și execută programul utilizatorului.

Aplicații cu microcontrolere

Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme incapsulate-integrate („embedded systems”), la care existența unui sistem de calcul încorporat este (aproape) transparentă pentru utilizator.

Pentru că utilizarea lor este de foarte multe ori sinonimă cu ideea de control, microcontrolerele sunt utilizate masiv în robotică și mecatronică. Conceptul de mecatronică este până la urmă legat în totalitate de utilizarea microcontrolerelor.

Automatizarea procesului de fabricație-producție este un alt mare beneficiar. Indiferent de natura procesului automatizat sarcinile specifice pot fi eventual distribuite la un număr mare de microcontrolere integrate într-un sistem unic prin intermediul uneia sau mai multe magistrale.

Printre numeroasele domenii unde utilizarea microcontrolerelor este practic un standard industrial se pot menționa: în industria de automobile (controlul aprinderii, motorului, climatizare, diagnoză, sisteme de alarmă), în așa zisa electronică de consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale) în industria aerospațială, în mijloacele moderne de măsurare – instrumentație (aparate de masură, senzori și traductoare inteligente), la realizarea de periferice pentru calculatoare, în medicină.

Figura 2.2 Robotul Johnnie

Robotul Johnnie, este un robot umanoid destul de simplu, construit la Universitatea Tehnică din Munchen în 1998, utilizează 5 microcontrolere, conectate prin intermediul unei magistrale CAN la un calculator PC.

Ca exemple din industria de automobile, numai la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de microcontrolere.

Un număr foarte mare de microcontrolere sunt folosite și de așa zisele jucării inteligente, din care „capetele de serie” cele mai cunoscute sunt cei doi roboți, unul canin și unul umanoid: AIBO și ASIMO (Honda). Asimo folosește 26 de microcontrolere numai pentru controlul individual al celor 26 de elemente de acționare inteligente (motoare).

Figura 2.3 Roboți AIBO și ASIMO

Clasificări și arhitecturi constructive

La ora actuală există un număr extrem de mare de tipuri constructive de microcontrolere. Un criteriu de clasificare care se poate aplica întotdeauna este lungimea (dimensiunea) cuvântului de date. În funcție de puterea de calcul dorită și de alte caracteristici se pot alege variante având dimensiunea cuvântului de 4,8,16 sau 32 de biți. Toate microcontrolerele se realizează la ora actuală în tehnologie CMOS . Se pot realiza astfel structuri cu o mare densitate de integrare, cu un consum redus (care va depinde de frecvența de lucru), permițând eventual alimentarea de la baterie.

Logica internă este statică (total sau în cea mai mare parte) permițând astfel, în anumite condiții, micșorarea frecvenței de ceas sau chiar oprirea ceasului în ideea optimizării consumului. Tehnologia este caracterizată de o imunitate mai mare la perturbații, esențială într-un mare număr de aplicații specifice. Se realizează variante pentru domeniu extins la temperaturi de funcționare (de ex.- 40 +85 0C).

Arhitectura unității centrale de calcul (CPU) este unul din elementele cele mai importante care trebuie avut în vedere în analiza oricarui sistem de calcul. Principalele concepte sunt:

Arhitecturi de tip „von Neumann”

Cele mai multe microcontrolere sunt realizate pe baza acestei arhitecturi de sistem. Microcontrolerele bazate pe această arhitectură au o unitate centrală (CPU) caracterizată de existența unui singur spațiu de memorie utilizat pentru memorarea atât a codului instrucțiunilor cât și a datelor ce fac obiectul prelucrării.

Arhitecturi de tip „Harvard”

La această arhitectură există spații de memorie separate pentru program și date. În consecință ar trebui să existe și magistrale separate (de adrese și date) pentru codul instrucțiunilor și respectiv pentru date. Este arhitectura standard pentru procesoarele numerice de semnal (DSP).

Figura 2.4 Arhitecturile Harvard și von-Neumann

Arhitectura Harvard este un concept mai nou decat von-Neumann. S-a născut din nevoia de mărire a vitezei microcontrolerului. În arhitectura Harvard, bus-ul de date și bus-ul de adrese sunt separate. Astfel este posibil un mare debit de date prin unitatea de procesare centrală, și bineînțeles, o viteză mai mare de lucru. Microcontrolerele cu arhitectura Harvard sunt de asemenea numite „microcontrolere RISC”. Microcontrolerele cu arhitectura von-Neumann sunt numite „microcontrolere CISC”.

CISC (Compex Instruction Set Computer)

Aproape toate microcontrolerele au la bază realizării CPU conceptul CISC. Aceasta înseamnă un set uzual de peste 80 de instrucțiuni, multe din ele foarte puternice și specializate. De obicei multe din aceste instrucțiuni sunt foarte diferite între ele: unele operează numai cu anumite spații de adrese sau registre, altele permit numai anumite moduri de adresare.

RISC (Reduced Instruction Set Computer)

Este un concept de realizare a CPU care a început să fie utilizat cu succes de ceva timp și la realizarea microcontrolerelor. Prin implementarea unui set de instrucțiuni care se pot executa foarte rapid și eficient, se obține o reducere a complexității microcircuitului, suprafața disponibilizată putând fi utilizată în alte scopuri.

2.4 Tipuri de memorie folosite în microcontrolere

În afară de memoria locală de tip RAM, de dimensiuni relativ reduse, implementată ca atare sau existente sub forma unui set de registre și destinată memorării datelor (variabilelor), mai există o serie de aspecte specifice, marea majoritate a acestora fiind legată de implementarea fizică a memoriei de program (și eventual a unei părți a memoriei de date) cu ajutorul unor memorii nevolatile. Clasic, memoria de program era implementată într-o variantă de tip ROM: EPROM pentru dezvoltare și producție pe scară mică/medie sau mask-ROM pentru producție de masă.

Principalele concepte noi aparute de-a lungul timpului în legatură cu implementarea memoriei program sau date sunt enumerate mai jos:

OTP – majoritatea producătorilor oferă variante de microcontrolere la care memoria locală de program este de tip OTP (One Time Programmable), practic o memorie PROM identică intern cu varianta EPROM, dar fără fereastră de cuart pentru ștergere. Aceste variante pot fi utilizate ca o alternativă pentru o producție limitată, până în momentul testării și valiării finale a codului, moment în care pot fi comandate variantele(mask) ROM propriu-zise, cele mai economice pentru o producție de masă.

Flash EPROM – este o soluție mai bună decât EPROM – ul propriu-zis atunci când este necesar un volum mare de memorie program (nevolatilă). Mai rapidă și cu un număr garantat suficient de mare (x10000) de cicluri de programare (de ștergere / scriere), este caracterizată și prin modalități mai flexibile de programare. Este utilizată numai ca memorie de program.

EPROM – multe microcontrolere au și o memorie de acest tip, de dimensiune limitată, destinată memorării unui număr limitat de parametri (memorie de date) care eventual trebuie modificați din timp în timp. Este o memorie relativ lentă (la scriere), dar cu un număr de cicluri de ștergere / scriere mai mare ca FLASH- ul (x100000).

NOVRAM (RAM nevolatil) – realizat prin alimentarea locală (baterie, acumulator) a unui masiv RAM CMOS atunci când este necesar un volum mare de memorie de program și date nevolatilă. Este mult mai rapidă decât toate celelalte tipuri și fără limitări ca număr de cicluri.

Programarea „In System” (ISP- In System Programming) – folosirea unor memorii nevolatile de tip FLASH face posibilă și „programarea” unui astfel de microcontroler fără a-l scoate din sistemul în care este încorporat (programare on-line, In System Programming). Programarea se face de regulă prin intermediul unei interfețe seriale dedicate de tip ISP (poate avea nume diferite) sau a unei interfețe standard JTAG. Există microcontrolere la care această programare se poate face prin intermediul portului serial asincron sau al interfeței CAN (Controller Area Network).

Bootloader – multe din microcontrolerele recente la care memoria de program este de tip FLASH au și facilitatea (au de fapt instrucțiuni dedicate acestui scop) de a putea și scrie în această memorie de program fără a utiliza un circuit de programare extern. Astfel în microcontroler poate exista permanent (rezident) un cod de mici dimensiuni (denumit și bootloader) care pur și simplu va încărca prin intermediul portului serial (este doar un exemplu) codul utilizator sau constantele pe care acesta vrea eventual să le actulizeze. Bootloader-ul este și cel care lansează în execuție programul utilizat după încărcarea acestuia.

Protejarea codului – protejarea codului program dintr-o memorie locală nevolatilă împotriva accesului neautorizat (la citire – deoarece pirateria soft există și aici) este oferită ca o opțiune la variantele FLASH, EPROM sau OTP. Codul poate fi protejat atât la citire cât și la scriere. Este eliminată astfel posibilitatea de a se realiza, în acest caz, de patch-uri (alterări cu un anumit scop) ale codului original. La variantele mask – ROM propriu-zis protecția este de cele mai multe ori implicită.

Memoria externa de program sau date – marea majoritate a familiilor de microcontrolere permit și utilizarea de memorie externă de program (tipic ROM) sau date (tipic RAM). Aceasta presupune existența și utilizarea unor magistrale externe de adrese și date. Conexiunile externe necesare pentru acestea sunt disponibile ca funcții alternative ale pinilor. Din păcate, în această situație numărul de conexiuni exterioare disponibile pentru interfața cu exteriorul se reduce dramatic, reducând mult din versatilitatea microcontrolerului.

Sistemul de intrări-ieșiri

Toate microcontrolerele au un număr oarecare de intrări / ieșiri numerice organizate sub forma unor porturi I/O. Conexiunile exterioare sunt bidirecționale sau unidirecționale, unele sunt multifuncționale (se oferă funcții alternative pe același pin), unele pot avea o capacitate sporită de a absorbi curent.

În afară de acest set de intrări/ieșiri de uz general, pentru interfața cu mediul exterior se oferă o serie de alte facilități importante de intrare/ieșire cum ar fi:

UART (Universal Asynchronous Receiver Transmitter) este un port serial bidirecțional destinat implementării unui protocol clasic de comunicație asincron.

USART (Universal Synchronous Asynchronous Receiver Transmitter) este un port similar, dar care permite implementarea și a unui protocol sincron cu obținerea unor viteze mai mari de comunicație. SCI (Serial Communications Interface) este un circuit de tip UART îmbunătățit, definit și utilizat de firma Freescale(Motorola).

LIN (Local Interconnect Network) reprezintă o implementare particulară a unui protocol de comunicație asincron, utilizată în industria de automobile ca o alternativă de mică viteză dar cu preț scăzut pentru magistrală și protocolul CAN .

Porturi seriale sincrone dedicate – sunt destinate transferului serial de date de mare viteză cu unele periferice specializate (sisteme de afișare, convertoare analog-numerice) sau care permit conectarea într-o rețea de comunicație. Presupun existența, împreună cu datele, a unui semnal de ceas (implicit sau explicit) pentru sincronizarea acestora. Implică și implementarea unor protocoale mai mult sau mai puțin complexe de transfer al informației, fiind de fapt vorba de o magistrală serială.

Există câteva implementări răspândite (sunt prezentate în ordinea crescătoare a complexității):

→SPI (Serial Peripheral Interface) este un port serial sincron definit de firma Motorola;

→Microwire / Microwire Plus este o interfață serială bidirecțională sincronă definită și utilizată de firma National Semiconductors;

→I2C (Inter Integrated Circuits bus) este o interfață serială bidirecțională (pe numai 2 fire), dezvoltată de Philips, destinată aplicațiilor de 8 biți. Există și multe circuite "periferice" care sunt prevăzute cu o astfel de interfață. Este cunoscută și sub denumirea TWI (Two Wire Interface);

→CAN (Controller Area Network) proprietate intelectuală a firmei Bosch, foarte utilizat în Europa și Japonia, oarecum similar ca funcționalitate lui SAE J1850 care este utilizat în America de Nord (SAE -Society of Automotive Engineers), este un standard (o magistrală și un protocol) de comunicație serială sincronă utilizat în industria de automobile, permițând interconectarea într-o rețea a diverselor componente inteligente (senzori, elemente de execuție, indicatoare, ) omniprezente într-un automobil modern.

În ultimul timp magistrala CAN a început să fie utilizată și în alte domenii decât industria de automobile (automatizări industriale, robotică, acționări electrice).

Conectivitate Ethernet/Web – implică existența unor resurse care să permită integrarea cu ușurință într-o rețea de tip Ethernet, pentru a face posibilă, în final, implementarea unui protocol TCP/IP (a unei stive TCP/IP). Resursele respective pot fi de natură software (stivă soft) care presupun o viteză de prelucrare (putere de calcul) a CPU suficient de mare pentru a nu afecta vizibil operarea propriu-zisă a controlerului, sau hardware (stivă hardware). Pe baza acestei stive se poate realiza o conectivitate tip HTTP, FTP, STMP, POP3.

Conectivitate USB – magistrala serială USB (Universal Serial Bus) a fost creată pentru conectarea cu ușurință a diverselor periferice la un calculator PC (cu rolul de gazdă – host). Conexiunea permite și furnizarea tensiunii de alimentare. Varianta USB 1.1 permite atingerea unei rate de transfer maxime a datelor de 12Mbytes/sec, iar varianta USB 2.0 a unei rate maxime de cca. 480MBytes/sec.

Conectivitate Wireless – se referă la existența unor resurse hardware și/sau software care să permită integrarea cu ușurință și la un preț de cost avantajos într-o rețea de tip wireless, pentru a face posibilă, în final, implementarea unui protocol (a stivei aferente protocolului). Exemplele cele mai cunoscute de astfel de rețele, protocoale și stive sunt Bluetooth (IEEE 802.15.1) și Zigbee (IEEE 802.15.4).

Convertoarele Analog Numerice (CAN, ADC)

Convertoarele utilizate fac parte de regulă dintr-un sistem de achiziție de date, existând și un multiplexor analogic cu mai multe canale de intrare. Rezoluția disponibilă este tipic de 8, 10 sau 12 biți, uneori cu precizia (rezoluția adevărată) corespunzătoare unui număr mai mic de biți.

Convertoarele Numeric Analogice (CNA, DAC)

Cea mai răspândită tehnică de conversie numeric analogică folosită este bazată pe modulația în factor de umplere (PWM – Pulse Width Modulation). Există unul sau mai multe canale pe care se poate genera un tren de impulsuri cu factor de umplere programabil (de la 0 la 100%).

2.6 Limbaje de programare și compilatoare

Limbajul mașină (instrucțiunile mașină) este singura formă de reprezentare a informației pe care un microcontroler o "înțelege".

Din păcate această formă de reprezentare a informației este total nepractică pentru un programator, care va utiliza cel puțin un limbaj de asamblare, în care o instrucțiune are drept corespondent o instrucțiune în limbaj mașină (excepție fac macroinstrucțiunile disponibile la unele asambloare).

Un program în limbaj de asamblare este rapid și compact. Aceasta nu înseamnă că un astfel de program, prost scris, nu poate fi lent și de mari dimensiuni, programatorul având controlul total pentru execuția programului și gestiunea resurselor.

Limbajul de asamblare este primul care trebuie învățat, chiar sumar, atunci când dorim să proiectăm o aplicație hard/soft cu un anume microcontroler , el permițând înțelegerea arhitecturii acestuia și utilizarea ei eficientă.

Un compilator combină ușurința în programare oferită de un interpreter (de fapt de limbajul de nivel înalt) cu o viteză mai mare de execuție a codului. Pentru aceasta programul, în limbaj de nivel înalt, este translatat (tradus) direct în limbaj mașină sau în limbaj de asamblare (urmând a fi apoi asamblat). Codul mașină rezultat are dimensiuni relativ mari (dar mai mici decât cel interpretat) și este executat direct, ca un tot, de microcontroler. De regulă codul generat poate fi optimizat fie ca dimensiune, fie ca timp de execuție.

Se pot enumera compilatoare pentru limbajele: C, BASIC, Pascal, Forth.

Cele mai populare și utilizate sunt cele pentru limbajul C, un limbaj universal folosit atât pentru super computere, cât și de microcontrolerele de 4 biți. Este un limbaj puternic și flexibil, care deși de nivel înalt, poate permite și accesul direct la resursele sistemului de calcul. Un program bine scris generează un cod rapid și compact. Totuși, de multe ori, porțiuni critice din punct de vedere al vitezei de execuție, trebuie încă scrise în limbaj de asamblare. Există numeroase implementări, pentru majoritatea familiilor de microcontrolere. Cu anumite limitări legate de arhitectură și mai ales resursele microcontrolerului, asigură portabilitatea unei aplicații scrisă pentru un anumit tip (familie) de microcontroler la un alt tip (familie).

Referitor la asamblor și compilator, trebuie precizat că pentru acestea codul este obținut cu ajutorul unui mediu integrat de dezvoltare a programelor (IDE-Integrated Development Environment) care conține în mod tipic următoarele componente software: un editor specializat (orientat pe codul sursă), un asamblor/compilator, un editor de legături/locator ("link-editor/locator"), programe de gestiune a unor biblioteci de cod ("librarians"), programe de conversie a formatelor de reprezentare a codului (de exemplu din binar în format Intel HEX sau Motorola S) și, nu în ultimul rând, un simulator și/sau depanător ("debugger").

Codul astfel obținut trebuie încărcat în memoria de program a mașinii țintă unde va rula, fiind de fapt programat într-o memorie de tip (EP)ROM/FLASH sau încărcat direct (uploaded) într-o memorie de tip RAM.

CAPITOLUL 3 METODE DE COMUNICARE WIRELESS

Tehnicile și tehnologiile utilizate în domeniul tehnologiei informației și comunicațiilor (TIC) reprezintă baza dezvoltării societății informaționale și principalul factor de progres tehnico-economic mondial, astfel explicându-se atât diversitatea, dinamica, complexitatea cât și importanța în cadrul global. Tehnicile de comunicație utilizabile pentru transmiterea datelor între un robot mobil și PC restrâng, în majoritatea aplicațiilor specifice, gama tehnologiilor la cele cu o rază de acțiune mobilă dar limitată, care sunt reprezentate de standardele wireless (fără fir), radio sau infraroșu.

Până acum proiectarea sistemelor de comunicație fără fir s-a axat mai mult pe creșterea performanțelor de transmisie prin aer. În acest context atenuarea și interferențele sunt privite ca și zgomote inevitabile unui astfel de mediu de transmisie. Ultimele tendințe au arătat că acum accentul se pune prepondernt pe creșterea eficienței spectrale.

Comunicații în infraroșu

Comunicațiile wireless în infraroșu se referă la propagarea undelor de lumină emisă în banda infraroșu, unde radiața electromagnetică are o lungime de undă mai lungă decât cea a luminii vizibilă, dar mai scurtă decât a undelor radio.

O modalitate de caracterizare a unei conexiuni wireless se face în funcție de tipul legăturii care se stabilește: sistemele punct-la-punct și sistemele cu difuzie.

Cel mai simplu tip de legătură care se poate stabili este cel punct-la-punct . În acest caz, atât transmițătorul cât și receptorul trebuie “să se vadă reciproc”, deci să existe o cale neopturată.

Aceste legături pot fi stabilite temporar pentru a se putea realiza o sesiune de schimburi de date între doi utilizatori sau se poate stabili o legătură permanentă atunci când se folosește o unitate mobilă ca și „base point” în cadrul unei rețele LAN.

Un emițător (T) convertește un semnal electric într-unul optic. LED-ul și dioda semiconductoare laser sunt două dintre cele mai apropiate soluții tehnice pentru acest scop. LED-urile au caracteristici de transmisie care permit un câmp larg de aplicabilitate, în special în cazurile în care se folosesc legăturile indirecte. LED-urile mai au încă un avantaj în fața diodelor semiconductoare laser, și anume că ele protejează ochiul uman.

Receptorul (R) sau detectorul de semnal convertește semnalul optic recepționat de la emițător și îl transpune într-un curent electric. Fotodiodele din siliciu de tip p-i-n sunt cele mai recomandate pentru astfel de aplicații fără fir, ele având o eficiență sporită în această bandă de comunicație precum și un preț destul de bun.

Figura 3.1 Sistem de comunicații in infraroșu

În comunicațiile optice partea de spectru de infraroșu care este folosită este împărțită în câteva benzi bazate pe disponibilitaea surselor de lumină, materiale de transmisie, absorbție și detectori.

Banda C (1530–1565 nm) este banda dominantă pentru rețelele de telecomunicații de distanță lungă, U cu lungimea de undă ultralungă (1625–1675 nm) iar banda O (1260–1360 nm) este banda originală IR (lungimea de undă cea mai scurtă).

Transmisia de date prin IR este o comunicare de rază scurtă între perfericelele calculatorului și asistenți digitali personalizați. Aceste dispozitive se conformează standardului IRDA (Infrared Data Association). Controalele la distanță și dispozitivele IrDa folosesc LED-uri (Light Emitting Diodes) infraroșii pentru a emite radiație infraroșie care este focalizată de o lentilă de plastic într-o rază îngustă. Raza este modulată, pornită sau oprită, pentru a codifica datele. Receptorul folosește o fotodiodă siliconică pentru a converti radiația infraroșie în curent electric.

IrDa (Infrared Data Association) definește specificații fizice pentru standarde de protocale de comunicații pentru schimbul de date prin lumina infraroșie pe distanță mică, pentru utilizarea în PAN-uri (Personal Area Networks).

Standardele IrDa includ o serie largă de specificații și protocoale: IrPHY, IrLAP, IrLMP, IrCOMM, Tiny TP, IrOBEX, IrLAN și IrSimple.

Comunicații prin Bluetooth

Comunicațiile Bluetooth sunt un standard de comunicație pentru dispozitive mobile, standard care se aplică pe distanțe ceva mai mari decât în cazul comunicațiilor în infraroșu.

Sistemul Bluetooth este cel mai adecvat atunci când distanța dintre emițător și receptor este scurtă, rata de transfer este mare, iar puterea consumată trebuie menținută cât mai scăzută.

Ideea ce a dat naștere tehnologiei wireless Bluetooth a apărut în 1994 când compania Ericsson Mobile Communications a decis investigarea fezabilității unei interfețe radio de mică putere și cost redus între telefoanele mobile și accesoriile acestora.

Specificațiile Bluetooth sunt practic acoperite de standardul IEEE 802.15.1 (astfel se justifică termenul „standardul Bluetooth”) și reprezintă una dintre cele mai avansate tehnologii de comunicație fără fir. Cu putere mare de transfer al datelor și consum foarte scăzut de energie, acționând pe distanțe mici, de la 1m pânâ la 100m și numai "indoor", Bluetooth se afirmă ca fiind mijlocul prin care toate echipamentele care ne înconjoară pot interacționa.

Bluetooth prezintă o tehnologie pentru distanțe scurte cu costuri reduse, vizând crearea unor rețele personale (PAN-Personal Area Nework).

Principalele tipuri de aplicații ale Bluetooth sunt:

→controlul wireless al comunicării între telefonul celular și căștile hands free sau car kitul; Această aplicație a devenit cea mai populară.

→rețea wireless între calculatoare într-un spațiu limitat și cerințe mici de lungime de bandă, aici putând include și cazul PC-robot;

→comunicație wireless între dispozitivele de intrare și ieșire ale unui calculator, cele mai întâlnite fiind mouse-ul, tastatura sau imprimantă;

→înlocuirea comunicării tradiționale seriale prin fir în echipamentele de test, receptorul GPS și echipamente medicale;

→pentru controale unde infraroșul era folosit;

→controlul wireless al consolei de jocuri – Nintendo’s Wii și Sony PlayStation 3 folosesc tehnologia Bluetooth pentru consolele lor wireless;

Pentru a putea analiza eficient soluțiile fără fir (wireless), este utilă comparația cu alte tehnologii:

Bluetooth

→ este îndreptată către aplicații de voce și date;

→ operează în spectrul 2.4GHz;

→ funcționează pe o distanța de la 1m la 100 m;

→ este capabilă să treacă prin obiecte solide, este omnidirecțională și nu necesită o poziționare în linie cu celelalte dispozitive pentru conectare;

→ securitatea este și va fi o prioritate în dezvoltare;

→ costul unui chip este mic, nu necesită adrese de rețea, aprobări și celelalte setări pentru o rețea tipică de Internet.

IrDA

→ este folosit pentru a oferi conectivitate wireless pentru dispozitivele care în mod normal folosesc cablu pentru conectare;

→ operează pe distanțe mici (câțiva metri), la viteze între 9600 bps și 16 Mbps;

→ nu poate trece prin obiecte solide și aplicațiile de schimb de date sunt limitate;

→este mai des folosit în sistemele de plată, în controlul la distanță sau pentru sincronizarea a 2 PDA-uri;

Wi-Fi

→ este mai analog rețelei tradiționale de Internet și necesită configurări pentru a împărții resursele , transmite fișiere, realizează legături audio;

→ folosește aceleași frecvențe radio ca și Bluetooth-ul , dar cu un consum de putere mai mare, rezultând o conexiune mai puternică;

→ necesită mai multe configurări, dar este cel mai potrivit pentru o rețea, realizându-se o conexiune mai rapidă, o rază de acțiune mult mai mare și o securitate mai ridicată, dar costul este relativ mare;

Sistemul de comunicație Bluetooth a fost proiectat cu scopul de a conecta mai multe dispozitive pentru a implenta o rețea mică și de aceea protocolul care dictează regulile de comunicație are în vedere o arhitectură de tip master-slave.

Tehnologia wireless Bluetooth reprezintă una dintre cele mai avansate și răspândite tehnologii de comunicație fără fir.

Bluetooth prezintă următoarele avantaje principiale:

→facilitează atât comunicațiile de date cât și pe cele vocale;

→oferă posibilitatea implementării unor rețele ad-hoc și a sincronizării între diverse dispozitive electronice și echipamentele periferice ale computerelor care se află la distanțe de ordinul a zeci de metri;

→asigură soluții pentru comunicații vocale și de date fără cabluri, utilizând alimentări standard low-power, tehnologii de cost redus ce pot fi cu ușurință integrate în orice dispozitiv și deschide calea unei mobilități totale.

Specificațiile Bluetooth definesc capabilități de legături radio pe distanțe scurte (aproximativ 10m) sau opțional pe distanțe medii (aproximativ 20m) pentru transmisii vocale sau de date de capacitate maximă 720kbps pe canal .

Gama de frecvențe de operare o constituie banda nelicențiată industrială, științifică și medicală (ISM) de la 2.4GHz la 2.48Hz, utilizând tehnici de împrăștiere a spectrului (frequency hopping spread spectrum), cu salturi de frecvență ale semnalului duplex de până la 1600 salturi pe secundă. Semnalul execută salturi prin 79 intervale de frecvență de 1MHz, pentru a realiza o bună imunitate la interferențe. Puterea emisă este conform specificațiilor 0dBm (1mW) pentru implementările pentru acoperiri reduse (10m) și maxim 20dBm (100mW) pentru versiunile pentru domenii mai extinse (100m).

Când s-au alcătuit specificațiile radio, un mare accent s-a pus pe posibilitatea implementării design-ului într-un singur chip CMOS, în consecință reducându-se costul, puterea consumată și dimensiunile necesare pentru implementarea în dispozitivele mobile.

Comunicațiile vocale: sunt utilizate până la trei canale vocale sincrone simultan sau un canal care suportă simultan transmisie de date asincronă și transmisie vocală sincronă. Fiecare canal vocal suportă sincron 64kb/s în fiecare sens.

Comunicații de date: un canal de date asincron poate suporta maxim 723.2kbps în sens direct în conexiune asimetrică (și până la 57.6kbps în sens invers), sau 433.9kbps în conexiune simetrică.

Structura master-slave: deorece sistemul de comunicație Bluetooth a fost proiectat cu scopul de a conecta mai multe dispozitive pentru a implementa o rețea de tip LAN, protocolul de sincronizare se bazează pe o structură de tip master-slave.

Fiecare dispozitiv Bluetooth poate stabili conexiuni cu încă 7 alte dispozitive. Numai o singură conexiune este activă la un moment de timp, restul fiind într-o stare semi-activă. Pe scurt aceste dispozitive au un număr de adresă fix, dar nu au acees la mediul de transmisie decât atunci când le vine rândul sau li se cere să comunice cu un master. Sincronizarea frecvențelor presupune definirea unor intervale de timp de 625 de microsecunde, unde masterul își va transmite pachetele în intervalele de timp cu număr par, iar slave-urile în intervalele de timp cu număr impar.

Unitățile Bluetooth aflate în același domeniu spațial de acțiune radio pot realiza ad-hoc conexiuni punct-la-punct și/sau punct-la-multipunct. Unitățile pot fi adăugate sau deconectate în mod dinamic la rețea. Două sau mai multe unități pot utiliza în comun un canal al unui piconet. Se pot forma mai multe picorețele și acestea se pot lega ad-hoc împreună formând scatternet , pentru a realiza configurații flexibile de comunicații și schimburi de date.

Dacă într-un același domeniu spațial se află mai multe pico-rețele, fiecare lucrează independent și fiecare are acces la întreaga bandă de frecvențe. Fiecare pico-rețea este stabilită pe un canal diferit, cu salt în frecvență. Toți utilizatorii participanți la aceeași pico-rețea sunt sincronizați pe acest canal. Spre deosebire de dispozitivele cu infraroșu (IR), unitățile Bluetooth nu sunt limitate de necesitatea vederii directe între ele.

Pentru a se respecta normele de imunitate la coliziuni între date, un scatternet poate cuprinde până la 10 piconet-uri.

Figura 3.2 Exemple de rețele de tip piconet și scatternet

a) piconet format din două dispozitive

b) piconet format din mai multe dispozitive

c) scatternet constituit din trei piconet-uri

Pentru a se respecta normele de imunitate la coliziuni între date, un scatternet poate cuprinde până la 10 piconet-uri.

Principalele caracteristici ale standardului Bluetooth / IEEE 802.15.1

Legătura între Bluetooth și IEEE s-a făcut prin faptul că primele specificații Bluetooth (1.0) -1999 au devenit baza IEEE Standard 802.15.1-2002 (prin care se ratifică Bluetooth 1.1), consacrând astfel importanța și forța noii tehnologii.

3.3.1 Clasele de putere / acoperire și securitatea Bluetooth

În funcție de puterea maximă emisă s-au standardizat 3 clase principale în care se pot fabrica dispozitivele Bluetooth, acestora corespunzându-le și diferite acoperiri (raze de acțiune) maxime (tabelul de mai jos).

Figura 3.3 Clase Bluetooth

Deoarece semnalele radio pot fi ușor interceptate, dispozitivele Bluetooth au încorporate proceduri de securizare, pentru prevenirea receptorilor rău-intenționați și nevizați de mesaj.

Sunt trei metode de securizare a informației:

Rutina de interpelare pentru autentificare;

Cifrarea fluxului informațional, ca metodă de criptare;

Generarea unor chei de sesiune – aceste chei pot fi oricând schimbate pe parcursul unei conexiuni stabilite.

În algoritmii de securizare sunt utilizate trei entități:

Adresa dispozitivului Bluetooth, care este o entitate publică unică pentru fiecare dispozitiv (această adresă se obține prin procedura Inquire);

Cheie privată specifică utilizatorului , care este o entitate secretă (cheia privată derivă din procedura de inițializare și nu este dezvăluită niciodată);

Un număr aleator , care diferă la fiecare nouă tranzacție. Acest număr este derivat dintr-un proces pseudo-aleator în unitatea Bluetooth.

În plus față de aceste funcții la nivel de legătură, salturile de frecvență și transmisia limitată spațial ajută și ele la prevenirea recepționărilor neautorizate.

Stiva de protocoale Bluetooth

O caracteristică cheie a Bluetooth este aceea de a permite dispozitivelor realizate de diverși producători să lucreze împreună. Pentru acest scop, Bluetooth nu definește doar un sistem radio, ci și o stivă de protocoale pentru ca aplicațiile respective să poată sesiza prezența altor dispozitive Bluetooth, să descopere ce servicii pot acestea oferi și să utilizeze aceste servicii. Stiva de protocoale este definită ca o serie de straturi, deși unele caracteristici nu pot fi delimitate ca aparținând unui anumit strat. În figura de mai jos este evidențiat acest aspect.Profilurile Bluetooth ghidează aplicațiile în utilizarea stivei de protocoale Bluetooth. TCS (Telephony Control Protocol Specification) oferă servicii telefonice.

SDP (Service Discovery Protocol) lasă dispozitivele Bluetooth să descopere ce servicii suportă celelalte dispozitive. RFCOMM oferă o interfață serială asemănătoare cu RS232. L2CAP multiplexează date de la straturile superioare și convertește dimensiunile pachetelor informaționale, după necesități. HCI manipulează comunicațiile între modulul Bluetooth și aplicația gazdă. LM controlează și configurează legăturile cu alte dispozitive. BB/LC controlează legăturile fizice prin radio, asamblează pachetele și controlează salturile în frecvență. Stratul Radio modulează și demodulează datele pentru transmisia și recepția aeriană.

Figura 3. 4 Stiva de protocoale Bluetooth

Descoperirea dispozitivelor Bluetooth

Presupunem că avem de-a-face cu două dispozitive echipate Bluetooth, un telefon celular și un laptop. Celularul este capabil să se comporte ca un modem, folosind profilul Dial-Up Networking și scanează periodic să vadă dacă cineva dorește să-l utilizeze.

Utilizatorul laptop-ului deschide o aplicație care necesită o legătură Bluetooth dial-up. Pentru a utiliza această aplicație, laptop-ul știe că are nevoie să stabilească o legătură Bluetooth cu un dispozitiv ce suportă profilul Dial-Up Networking. Primul pas în stabilirea unei astfel de conexiuni este de a afla ce dispozitive Bluetooth se află în zonă, așa că laptop-ul inițiază o procedură Inquiry pentru a sonda vecinătatea cu alte dispozitive.

Pentru aceasta, laptop-ul transmite o serie de pachete de interogare (inquiry) și eventual telefonul celular răspunde cu un pachet FHS (Frequency Hop Synchronisation). Pachetul FHS conține toate informațiile de care laptop-ul are nevoie pentru crearea unei legături cu celularul. Acesta conține de asemenea și informații despre clasa dispozitivului, informații structurate pe două nivele: părți majore – a fost descoperit un telefon și părți minore – telefonul descoperit este un telefon celular.

În același mod, orice dispozitiv Bluetooth din zonă, care scanează mediul în căutarea de mesaje Inquiry, va răspunde cu un pachet FHS, astfel încât laptop-ul acumulează o listă cu dispozitive.

Ceea ce se întâmplă mai departe depinde de proiectantul aplicației. Laptop-ul poate prezenta utilizatorului o listă a tuturor dispozitivelor descoperite și îl poate lăsa pe acesta să decidă cum să continue; de menționat că în acest stadiu laptop-ul nu-i poate prezenta utilizatorului decât informații referitoare la tipul dispozitivelor descoperite.

Versiuni în evoluția Bluetooth

Numele Bluetooth vine de la Harald I Blåtand ("the blue-toothed"), regele Viking al Danemarcei între anii 940 și 981. Ideea ce a dat naștere tehnologiei wireless Bluetooth a apărut în 1994 când compania Ericsson Mobile Communications a decis investigarea fezabilității unei interfețe radio de mică putere și cost redus între telefoanele mobile și accesoriile acestora.

În februarie 1998 a luat ființă Grupul de Interes Special (SIG). Astăzi Bluetooth SIG include companiile promotoare 3Com, Ericsson, IBM, Intel, Lucent, Microsoft, Motorola, Nokia și Toshiba, și mii de companii – membri asociați sau adoptori.

Inițial misiunea SIG a fost de a monitoriza dezvoltarea tehnologiei radio pentru domenii restrânse și de a crea un standard global deschis, prevenind astfel devenirea acestei tehnologii proprietatea unei singure companii. Acest lucru a avut ca rezultat apariția primei specificații Bluetooth (1.0) 1999.

În martie 2000 IEEE și SIG au convenit crearea unui standard IEEE pe baza versiunii 1.1-Bluetooth.

În 2002 Bluetooth 1.1 este ratificat ca IEEE Standard 802.15.1-2002.

Bluetooth 1.0

Prima versiune Bluetooth (1.0) apare în 1999. Versiunile 1.0 și 1.0B au avut multe probleme și mai mulți producători au avut multe dificultăți în a face produsele interoperabile. Versiunile 1.0 și 1.0B de asemenea au avut prin regula BD_ADDR(Bluetooth Hardware Device Address) o adresă de recunoaștere, ceea ce a creat o imposibilitate a anonimatului la nivelul de protocol, ducând la o încetinire a procesului de introducere a noi servicii în mediul Bluetooth.

Bluetooth 1.1

Multe din erorile descoperite în versiunea 1.0B au fost corectate:

→ a fost adăugat suport pentru canalele necriptate;

→ a fost introdus RSSI (Receiver Signal Strenght Indicator) – Indicator de nivel al semnalului recepționat;

Bluetooth 1.2 (Ratificată ca IEEE Standard 802.15.1-2005)

Această versiune este compatibilă cu 1.1 iar îmbunătățirile majore includ:

→ AFH (Adaptive Frequency Hopping), care îmbunătățește rezistența la interferențele frecvenței radio, evitând utilizarea frecvențelor aglomerate în secvența de salt;

→ viteza da transmitere mai mare (maxim 721 kbit/s);

→ eSCO(extended Syncronius Connections), care îmbunătățește calitatea vocii în conexiunile audio prin permiterea retransmisiei de pachete alterate.

Bluetooth 2.0 (SIG-2004)

Această versiune este compatibilă cu versiunile 1.x. Principala îmbunătățire este introducerea EDR-ului (Enhanced Data Rate) de 3.0 Mbps.

Acest lucru are următoarele efecte:

→ viteza de transmitere de 3 ori mai mare, în unele cazuri de 10 ori mai mare;

→ consum de putere mai mic;

→ lățime de bandă mai mare (important la portabile-PDA, laptop, telefon);

→ îmbunătățirea BER-ul (Bit Error Rate)

→ mai bună gestionare a conexiunii între mai mult de două dispozitive.

Bluetooth 2.1 (SIG-2007)

Compatibilă cu 1.2, iar îmbunătățirile majore includ:

→ perfecționarea procedurii “inquire” (Extended Inquiry Response).

→ reducerea consumului în “low-power mode”

→ permite schimbarea cheilor de criptare (Encryption Pause Resume) în cazul legăturilor lungi peste 23.3 h(one Bluetooth day).

→ crește nivelul de cunoaștere între dispozitivele rețelei (Secure Simple Pairing +Near Field Communication -NFC), ducând la creșterea securității și vitezei de conectare;

Bluetooth 3.0 (SIG-2009)

Specificația 3.0 a fost adoptată de Bluetooth SIG pe 21 aprilie 2009. Principala noutate introdusă este AMP (Alternate MAC/PHY), adică adăugarea lui 802.11 (asociat de regulă cu Wi-Fi) ca un mod de transport de mare viteză. Această extindere mărește considerabil importanța și potențialul Bluetooth (Wi-Fi era principalul competitor tehnic și economic).

CAPITOLUL 4 REALIZAREA PRACTICĂ A ROBOTULUI MOBIL

4.1 Implementare Hardware

Plăcile de dezvoltare conțin tot ceea ce este necesar pentru ca un inginer să se poată familiariza cu microprocesorul ce o dotează și să învețe cum se poate programa. De asemenea, este un mijloc de a folosi un microprocesor pentru a crea rapid prototipuri, a testa programe înainte ca acestea să ajungă în faza de produs. Spre deosebire de calculatoarele de uz general sau computerele personale, o placă de dezvoltare va avea puțin sau deloc hardware dedicat interfeței cu utilizatorul. De cele mai multe ori acceptă software-ul furnizat de utilizator prin interfața de programare. Acesta poate fi descărcat prin intermediul portului serial, paralel sau din memorie flash. În sistemele mai vechi, transferul software-ului se realiza prin intermediul memoriei programabile.

Motivul pentru care există aceste dispozitive este că sunt singurele suficient de puternice pentru a oferi un grad ridicat de învățare a modului de funcționare al oricărei familii de microcontrolere. Deoarece se dorește menținerea unor costuri scăzute și plecând de la ideea că dispozitivele vor fi folosite în condiții de laborator, de cele mai multe ori nu sunt dotate cu o carcasă sau sursă proprie de alimentare întrucât sunt șanse mari ca orice inginer care lucrează cu un astfel de dispozitiv să aibă la dispoziție sursa de tensiune de laborator.

Deși la început au fost concepute spre a fi utilizate de ingineri în dezvoltarea produselor, tot mai mulți pasionați de electronică au ajuns să le cumpere, motivul principal fiind costul redus de achiziție. Acestor plăci de dezvoltare li se adaugă periferice necesare, transformându-le în prototipuri ale unor oameni care nu ar avea altă posibilitate de a-și pune ideile în practică.

Figura 4.1 Schema bloc de funcționare a robotului

Funcționare:

Robotul îndeplinește două funcții. În primul rând se deplasează pe un traseu reprezentat de o linie neagră pe un fundal alb. Linia neagră se trasează cu o bandă izolieră. Citirea traiectoriei după care se deplasează robotul se face cu ajutorul senzorului analogic QRE1113 format dintr-un led infraroșu și un fototranzistor sensibil la lumina infraroșie. În al doilea rând robotul poate fi comandat de la distanță prin tastatură și cu ajutorul unui senzor Sharp de distanță medie poate detecta obstacolele pentru a evita coliziunea cu acestea. Cei doi senzori de linie și senzorul de distanță alcătuiesc sistemul senzorial al robotului. Semnalele provenite de la senzori sunt transmise spre procesare Unității centrale, reprezentată de placa de dezvoltare cu microcontroler-ul ATmega328P de la ATMEL. Platforma de dezvoltare reprezintă sistemul de comandă al robotului și conține 14 pini digitali de intrare-ieșire și 6 pini analogici. Pentru acest robot s-au folosit următorii pini analogici: A0, A1, A2 conectați fiecare la pinul de ieșire al fiecărui senzor de linie și la senzorul Sharp și digitali: D3(PWM), D5(PWM), D6(PWM) și D9(PWM) pentru controlul motoarelor de curent continuu.

Semnalele procesate sunt apoi transmise către driver-ul de motoare ce comandă, conform principiului unei punti H, cele două motoare electrice de curent continuu ale robotului.

Placa de dezvoltare cu microcontroler Atmega328P

În acest moment pe piață există o gamă variată de sisteme de dezvoltare bazate pe microcontroler. Am ales să folosesc această placă de dezvoltare datorită avantajelor pe care le prezintă față de celelalte sisteme:

costuri de achiziție reduse

poate fi folosit pe orice sistem de operare (Linux, Windows sau MacOS)

este open source, atât placa de dezvoltare, cât și mediul de programare.

Această placă de dezvoltare este un instrument prin care putem realiza sisteme informatice capabile să perceapă și să controleze lumea înconjurătoare. Acest instrument este open-source și este compus dintr-un mediu de dezvoltare (o varianta de Wiring – platformă folosită pentru procese multimedia) și o placă de dezvoltare cu microcontroler AVR.

Poate fi folosită pentru dezvoltarea de obiecte interactive. Informația este preluată de la o gamă variată de senzori și comutatoare, se procesează în interiorul microcontrolerului AVR și este transmisă către o gamă la fel de variată de lumini, motoare, actuatoare.

Microcontrolerul întâlnit pe această placă de dezvoltare este Atmega328P, un microcontroler ce funcționează cu o magistrală de date de 8 biți, ce are la bază arhitectura redusă a setului de instrucțiuni (RISC). Se urmărește maximizarea performanțelor prin simplificarea setului de instrucțiuni. În locul unei instrucțiuni lungi cu mulți parametri se pot folosi mai multe instrucțiuni de lungime redusă.

Atmega328P are 1KB EEPROM, 2KB SRAM, 23 linii pentru operațiuni de intrare/ieșire, 3 ceasuri/număratoare, interfețe programabile USART, SPI, 6 canale pentru convertor analog-digital cu rezoluția de 10 biți. Acest microcontroler ne oferă posibilitatea de a crea o gamă largă de aplicații. Cele mai dese aplicații, realizate cu această placă de dezvoltare sunt roboții.

Ca elemente componente putem enumera pe scurt: placa de dezvoltare, senzori de distanță, lumina sau alți senzori specifici aplicației, motoare și servomotoare, interfețe de comunicare cu utilizatorul sau computerul. Un robot destul de simplu de construit este cel de light follower. Practic se folosesc două motoare electrice controlate prin PWM-ul de pe placa de dezvoltare, care sunt pornite în funcție de lumina ce cade pe cei doi fotorezistori. Astfel, din sofware, programatorul va decide dacă robotul său va merge către lumină sau va fugi de aceasta. De multe ori, acest tip de robot servește ca platformă de pornire pentru aplicații mult mai complexe, cum ar fi roboți ce se pot deplasa într-un labirint pentru a recupera diverse obiecte, roboți capabili să urmeze o linie (aplicație deja implementată în industria auto pentru a detecta situațiile de schimbare a benzii de mers), roboți capabili să ocolească obstacolele sau să reacționeze la apariția subită a acestora. În ceea ce privește ultima aplicație descrisă, ea face parte din tehnologia implementată în autoturismele de ultimă generație ce mențin o distanță de siguranță față de mașina din față, frânând automat când acea distanță scade sub o anumită limită.

Specificații:

Microcontroler: Atmega328P

Tensiune de lucru: 5V

Tensiune de intrare(recomandat): 7V

Tensiune de intrare limită : 6-20V

Pini digitali: 14(6 PWM output)

Pini analogici: 6

Intensitatea de ieșire: 40mA

Intensitatea de ieșire pe 3.3V: 50 mA

Flash Memory: 32KB (Atmega328P), dintre care 0.5 KB,folositi pentru bootloader

SRAM: 2KB(Atmega328P)

EEPROM: 1KB(Atmega328P)

Clock Speed: 16 MHz

Figura 4.2 Placa de dezvoltare

Intrările analogice sunt folosite pentru citirea semnalelor nondigitale (ex: senzori de temperatură, senzori de lumină, senzori de presiune, umiditate).

Intrările/ieșirile digitale sunt folosite pentru citirea semnalelor digitale (ex: un întrerupător de la un bec poate avea două stări: închis (zero) sau deschis (unu) ).

PWM (Pulse With Modulation) poate fi utilizat pentru a îndeplini o varietate foarte mare de sarcini, de la iluminarea LED până la controlul vitezei motoarelor electrice.

Partea de software a platformei este integrată într-o interfață grafică de tip IDE. Programarea controlerului de pe platforma fizică se face folosind limbajul C. Interfața este multiplatformă, putând rula în Windows, Mac OS și Linux.

Programul poate fi obținut atât ca executabil specific platformei de lucru dar și sub formă de cod sursă pe care îl putem compila conform condițiilor specifice pe care le avem. După instalare interfața principală a programului arată ca în captura de ecran de mai jos:

Figura 4.3 Interfața de programare

Interfața de programare se configurează astfel:

Din meniul Tools → Serial Port se selectează portul C0M folosit de placa de dezvoltare

Figura 4.4 Alegere COM

Din meniul Tools → Board se selectează tipul de placă folosit

Figura 4.5 Alegerea tipului de placă

Zonă meniu:
  Verifică programul pentru erori 
  Încarcă programul în placa de dezvoltare 
  Crează un nou proiect 
  Deschide un proiect 
  Salvează proiectul curent 
  Monitorizare serială – acest buton este folosit pentru comunicarea prin portul serial cu calculatorul

Zona de program este folosită pentru scrierea și editarea programelor, iar în zona compilator vor aparea eventualele erori de compilare.

Figura 4.6 Zona Compilator

Sistem senzorial

Robotul este pus în situația de a desfășura acțiuni similare cu cele ale operatorului uman, ceea ce determină existența unor dispozitive prin care să se culeagă informații din mediul de lucru, care să realizeze interacțiunea robotului cu mediul înconjurător cu ajutorul unor caracteristici ale mediului sau ale obiectelor din mediu. Este nevoie de o unitate centrală care să prelucreze în timp real informația senzorială, să o transforme într-o formă utilă pentru sistemul de comanda.

Sistemul senzorial mai este numit și sistem de măsurare, asigurând măsurarea unor mărimi fizice și perceperea unor modificări semnificative a acestor marimi.

Datorită sistemului senzorial se pot pune în evidență caracteristicile geometrice și chimice ale obiectelor din mediul de lucru. Informațiile culese cu ajutorul sistemului senzorial servesc la construirea unui model al lumii în care evoluează robotul, model în funcție de care acesta își va genera planurile de acțiuni viitoare.

Caracteristicile senzoriale ale unui robot depind foarte mult de gradul său de autonomie, de aplicațiile pentru care a fost proiectat și de tipul mediului de lucru.

Percepția se realizează în două etape:

Conversia proprietăților fizice într-un semnal, de obicei electric

Prelucrarea semnalului în vederea extragerii informației ce ne interesează

Senzorii sunt dispozitive componente ale roboților mobili care pot măsura diferite proprietăți ale mediului din jurul acestora, cum ar fi: temperatura, distanța, rezistența fizică, greutatea, mărimea, etc.

În cel mai general caz, senzorii pot fi grupați în două categorii:

Senzori de stare internă – senzori care oferă informații despre starea internă a robotului mobil, spre exemplu nivelul bateriei, poziția roților sau altor componente;

Senzori de stare externă – senzori care oferă informații despre mediul ambiant în care robotul funcționează. Senzorii de stare externă se mai pot împărți la rândul lor în două categorii: senzori cu contact, mai precis acei senzori care culeg informația din mediu prin atingere (exemplu: senzor "bumper"), respectiv senzori fără contact , care preiau informația din mediu de la distanță (exemplu: cameră video, senzor ultrasonic).

Un senzor poate fi activ sau pasiv. Senzorii activi sunt acei senzori care emit energie în mediu pentru a putea observa anumite caracteristici ale acestuia, spre deosebire de senzorii pasivi care primesc energie din mediu pentru a putea prelua informația.

La modul general, despre toate categoriile de senzori se pot enunța următoarele ipoteze :

→Orice senzor este afectat de interferențe;

→Orice senzor oferă o informație incompletă a mediului în care efectuează măsurătorile;

→Nici un senzor nu poate fi modelat complet.

De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprietăți, cele mai importante fiind:

Sensibilitatea: raportul dintre semnalul de ieșire și semnalul de intrare;

Liniaritatea: exprimă dacă raportul dintre intrare și ieșire este constant;

Intervalul de măsurare: diferența între distanța minimă și maximă măsurabilă;

Timpul de răspuns: timpul necesar pentru ca informația de la intrare să fie observabilă la ieșire;

Acuratețea: diferența între semnalul măsurat și semnalul real;

Repetabilitatea: diferențele între măsurători succesive ale aceleiași entități;

Rezoluția: exprimă cea mai mică unitate de incrementare a semnalului măsurat;

Prețul senzorului;

Puterea de calcul necesară pentru a interpreta rezultatele;

Tipul de semnal la ieșire;

Greutatea, mărimea și cantitatea de energie consumată pentru a face o măsurătoare.

Din punct de vedere tehnologic/funcțional, roboții mobili pot fi dotați cu diverse tipuri de senzori :

Senzori interni:

→Senzori de poziție (Incrementali/Potențiometre);

→Senzori de forță;

→Senzori de detecție în infraroșu;

→Senzori de accelerație;

→Senzori cu efect Hall.

Senzori externi:

→Senzori cu ultrasunete;

→ Senzori de atingere;

→Senzori de forță;

→Senzori de culoare;

→ Senzori de lumină;

→Camere video.

Senzorii din roboții mobili se pot clasifica și independent de gruparea interni-externi, numai pe criteriul funcțional, astfel:

Senzori de distanță – acei senzori care oferă informații despre distanța între senzor și obiectul de măsurat din mediu;

Senzori de poziție – acei senzori care oferă informații despre poziția robotului în termeni absoluți;

Senzori de mediu – acei senzori care oferă informații despre diverse proprietăți și caracteristici ale mediului (exemplu: temperatură, culoare);

Senzori inerțiali – acei senzori care măsoară proprietăți diferențiale ale poziției robotului (exemplu: accelerația).

Caracterizarea generală a senzorilor se poate face pe baza relației (f) dintre proprietățile fizice de interes ale mediului (e) și informația primită de la un senzor (r) ar putea fi modelată prin ecuația :

În principiu, orice model al unui senzor ar trebui să includă și un model intern al zgomotului care poate afecta senzorul în momentul citirii informației. Problema de a recupera informația din mediu din datele primite de la senzor poate fi destul de complexă.

Un senzor este considerat instabil dacă pentru variații mici ale intrării, ieșirea se schimbă radical. În caz general, pentru un senzor cu ieșirea f(e), instabilitatea se referă la:

Orice tip de senzor poate fi afectat de mai multe tipuri de erori. Dintre acestea, cele mai importante sunt erorile incidentale, erorile sistematice și erorile stohastice. Erorile incidentale apar ocazional și pot avea un efect neprevăzut asupra informației, ele provenind în cea mai mare parte de la măsurători efectuate greșit. Erorile sistematice au o influență predictibilă asupra acurateții informației,acestea provenind de la o interpretare greșită a parametrilor în algoritmii de estimare, sau din cauza unor neconcordanțe (incertitudini) în modelare. Erorile stohastice au un caracter aleator, ele diferind de fiecare dată când robotul execută aceeași operație.

Senzori de linie

Senzorul este format din doua componente : un led IR și un fototranzistor sensibil la IR. Led-ul IR emite lumina infraroșie pe suprafață. Foto-tranzistorii vor primi lumina infraroșie reflectată. Dacă nu se reflectă lumina infraroșie, terminalul OUT are voltaj scăzut la măsurare. În cazul primirii de lumină infraroșie trece curent prin fototranzitori în funcție de intensitatea luminii care variază în funcție de distanța de reflexie.

Când aplicăm 5V pe pinul VCC și GND led-ul IR va transmite o lumină infraroșie. În serie cu led-ul IR este plasată o rezistență de 100Ohm pentru a limita curentul. O rezistență de 10KOhm pune pinul de output pe HIGH, dar când lumina emisă de led-ul IR este reflectată înapoi în fototranzistor pinul de output coboară către LOW.

Cu cât fototranzistorul primește mai multă lumină cu atât scade tensiunea de pe pinul de output. Senzorul poate fi folosit pentru o distanță de 0.1 – 1.5 cm. La o tensiune de ieșire de 0.5-5V datele de ieșire variază între 30 și 1023. Este folosit pentru a detecta culoarea suprafeței (albă sau neagră). Astfel pentru suprafața albă valoarea este între 30 și 300 iar pentru suprafața neagră valoarea este între 600 și 950.

Figura 4.7 Senzor de linie

Senzor Sharp de distanță

Senzorul Sharp este folosit special pentru detectarea obstacolelor și evitarea acestora. Prezintă urmatoarele caracteristici tehnice:

Folosește principiul de reflexie al luminii pentru măsurarea distanței

Raza de acțiune este între 15 și 150 cm

Alimentarea se face la o tensiune de 4,5 până la 5V și o intensitate de 33 mA

Tensiunea de ieșire este cuprinsă în intervalul 0.4 – 2.4 V la o alimentare de 5V

Interfața sa prezintă 3 fire : alimentarea (Vcc), masa (GND) și tensiunea de ieșire (Vout) și necesită un conector JST de 3 pini.

Există trei tipuri de astfel de senzori, fiecare eficace pe o anumită zonă din punct de vedere al distanțelor măsurate: senzor de apropiere, eficient pentru măsurători între 3 cm și 40 de cm, senzor de depărtare medie, eficient între 10 cm și 80 cm și senzor de depărtare, eficient între 15 cm și 150 cm.

Prin conexiunea senzorului infraroșu cu convertorul Analog/Digital rezultă datele analogice care sunt convertite în distanțe corecte cu ajutorul softului de programare.

Figura 4.8 Așezarea pinilor și curba caracteristică

Princpiul care stă la baza metodei de măsurare folosite de senzorul Sharp se bazează pe formarea unui triunghi între emițătorul de rază infraroșie, punctul de reflexie și detectorul de infraroșu. Astfel, emițătorul emite un puls de lumina infraroșie. Lumina străbate câmpul vizual și fie lovește un obstacol sau continuă deplasarea. În cazul inexistenței unui obstacol, lumina nu va fi reflectată și nu se va detecta nici un obiect. Dacă lumina se reflectă de pe un obiect, se va întoarce la detector și va creea un triunghi între emițător, punctul de reflexie și detector, ca în figura 4.9.

Figura 4.9 Principiul de măsurare a distanței de către senzorul Sharp

Tabelul cu valori ale senzorului infraroșu

Metode de comunicare

Legatura fizică dintre PC și robot se poate realiza prin cablu USB sau prin conexiune Bluetooth 2.0. Avantajele comunicării prin cablu USB se restrâng la o viteză de transfer superioară și compatibilitate garantată cu PC-ul.

Avantajele conexiunii Bluetooth sunt:

Nu limitează mobilitatea robotului sau raza de acțiune

Robotul se poate conecta la maxim 10 alte dispozitive Bluetooth, fie că sunt roboți sau PC

Comunicația este rezistentă la interferențe radio datorită tehnicii spread spectrum(salt de frecvență)

Este omnidirecțională și nu necesită o poziționare în linie cu celelalte dispozitive pentru conectare

Ca atare pentru dezvoltarea programelor care asigură comunicarea dintre robot și PC am ales conexiunea Bluetooth, printr-un modem Bluetooth de clasa 2. Acest modem este foarte simplu de utilizat, datele scrise pe pinii RX(recepție)/TX(transmitere) fiind disponibile la receptor. Din acest punct de vedere putem considera ca și cum pinii RX/TX ar fi conectați prin fire obișnuite între emițător și receptor. Modemul dispune de un modul de clasa 2 RN-42. Are regulatoare de tensiune pe placă, astfel încât poate fi alimentat între 3.3 și 6V.

Figura 4.10 Modul Bluetooth de clasă 2

Specificații:

Modem Bluetooth de clasa 2

Distanța de transmisie : 10m

Consum : 25 mA

Securitate : Autentificare și criptare

Frecvența : 2.4 ~ 2.524 GHz

Tensiunea de alimentare :3.3-6V

Rata de transfer între 2400 și 115200 bps

Temperatura de operare: -40 ~+70°C

Dispozitivul este configurat cu rata de transfer 9600 bps.

4.1.4 Motoare de curent continuu

În general, sunt similare în construcție cu generatoarele de curent continuu. Ele pot, de fapt să fie descrise ca generatoare care „funcționează invers”. Când curentul trece prin rotorul unui motor, este generat un câmp magnetic care generează o forță electromagnetică și ca rezultat rotorul se rotește. Acțiunea periilor colectoare și a plăcuțelor colectoare este aceeași ca la generator. Rotația rotorului induce un voltaj în bobinajul rotorului. Acest voltaj indus are sens opus voltajului exterior aplicat rotorului. În timp ce motorul se rotește mai rapid, voltajul rezultat este aproape egal cu cel indus. Curentul este mic și viteza motorului va rămâne constantă atâta timp cât asupra sa nu acționează nici o sarcină, sau motorul nu efectuează alt lucru mecanic decât cel efectuat pentru învârtirea rotorului. Când asupra rotorului se aplică o sarcină, voltajul va fi redus și un curent mai mare va putea să treacă prin rotor. Astfel, motorul este capabil să primească mai mult curent de la sursa care îl alimentează și astfel să efectueze mai mul lucru mecanic.

Deoarece viteza rotației controlează trecerea curentului prin rotor, mecanisme speciale trebuie folosite pentru pornirea motoarelor cu curent continuu. Când rotorul se află în repaus, nu are nici o rezistență și dacă voltajul normal este aplicat, va trece un curent mare, ceea ce ar putea avaria periile colectoare sau motorul. Mijloacele obișnuite pentru prevenirea acestor accidente este folosirea în serie a unei rezistențe, la început, împreună cu rotorul, pentru a limita curentul până când motorul începe să dezvolte un curent suficient. Pe parcurs ce motorul prinde viteză, rezistența este redusă treptat.

Viteza cu care un motor de curent continuu funcționează, depinde de puterea câmpului magnetic care acționează asupra rotorului, cât și de curentul rotorului. Cu cât este mai puternic câmpul magnetic, cu atât este mai mică rata rotației necesare să creeze un curent secundar necesar pentru a contracara curentul aplicat. Din acest motiv viteza motoarelor de curent continuu poate fi controlată prin variația câmpului curentului. Motoarele folosite sunt de tip curent continuu.

Figura 4.11 Motoare de curent continuu

Specificații:

Dimensiuni 54.5 × 20 × 13.8 mm

Tensiunea de alimentare 3-6V

Curent : 80 mA(fără sarcină) și 0.8A(blocat)

Cuplu : 1.4 Kg/cm

Pentru a selecta sensul de rotație al motorului se folosește o punte H. Schema punții H este prezentată mai jos:

Figura 4.12 Schema punții H

De obicei, în aplicațiile practice, este nevoie să se comande un motor în ambele sensuri (este și cazul acestui proiect) ceea ce se poate realiza folosind o punte H. Puntea H are numele derivat de la modul obișnuit de desenare a circuitului și este în principiu un circuit cu patru întrerupătoare, ce acționează câte două odată pe diagonală, pentru a schimba sensul de rotație al motorului.

Funcționare punte H:

Pentru puntea H am folosit circuitul integrat L298N. Acest circuit are integrate 2 punti H.

Figura 4.13 Schema circuitului L298N

Deoarece intrarea switch-ului S2 este intrarea switch-ului S1 negată și intrarea switch-ului 4 este intrarea switch-ului 3 negată, pentru a selecta sensul de rotație folosim 2 pini ai microcontroler-ului (PD3 și PD4). Mai folosim încă o ieșire a uC pentru a activa o punte H.

În figura de mai jos se prezintă modul de conectare a pinilor:

Figura 4.14 Modul de conectare a pinilor

Modul de control al circuitului L298N este relativ simplu. El necesită 6 linii de port de la microcontroler care să fie conectate la intrările input1, input2, input3 și input 4 și la cele două terminale „chip enable” pentru fiecare punte H. Există și o altă metodă mai economică din punct de vedere al numărului de pini I/O folosiți de la microcontroler. Această metodă se bazează pe conectarea intrărilor input1, input 2, input3 și input4 pe un bus de 2 linii de comandă, lucru ce se materializează prin conectarea input 1 și input 4 pe același pin al microcontrolerului și input 2 cu input 3 similar. Dezavantajele care decurg în urma acestei conexiuni sunt faptul că puntea H nu va fi la fel de flexibilă în comanda motoarelor de curent continuu.

Integratul L298N se alimentează cu două tensiuni (de la două surse). Partea logică a integratului folosește o alimentare compatibilă TTL (+5V pe Vss) iar partea de forță, de alimentare de putere, a motoarelor are intrarea separată Vs. Scopul acestei separări o constituie minimizarea încălzirii. Integratul este protejat termic și se oprește alimentarea în cazul unei încălziri excesive.

Pentru a proteja partea logică de tensiunea indusă de motor se folosesc 4 diode de protecție.

Figura 4.15 Circuitul L298N – diode de protecție

În tabel este arătată configurația stărilor logice pe intrările punții H și starea motoarelor conectate la circuit.

Figura 4.16 Configurația stărilor logice pe intrările punții H

Viteza motorului este controlată prin aplicarea semnalului PWM (Pulse With Modulation).

PWM→generator de semnale dreptunghiulare cu frecvență fixă dar cu factorul de umplere modificat dinamic.

Figura 4.17 Principiul de funcționare a unui generator PWM

Figura 4.18 Schema logică a unui circuit PWM

Factorul de umplere (duty cycle) :

τ→ perioada de timp în care funcția este diferită de zero

T→ perioada totală de timp în care funcția este operațională.

Figura 4.19 Factorul de umplere (duty cycle)

În timpul dezvoltării proiectului am întâlnit o problemă la direcția robotului, deoarece unul dintre motoare este mai puternic decât celălalt, astfel robotul nu mergea în linie dreapta.

Prin mai multe încercări am obținut o formulă generală prin care calculez viteza pe care trebuie sa o aplic la o roată în funcție de viteza aplicată pe cealaltă roată.

Figura 4.22 Obținerea formulei generale pentru reglarea direcției

4.2 Implementare software

Pentru a putea fi considerat bun un limbaj de programare trebuie să fie comun, cât mai eficient, de nivel înalt și bine definit. Aceste caracteristici le are limbajul C, el fiind și unul din cele mai folosite limbaje pentru programarea microcontrolerelor. Programarea în C oferă portabilitate programelor, spre deosebire de limbajul assembler. Pentru ca un program în limbaj C să poată fi considerat bun trebuie să îndeplinească următoarele cerințe:

Să nu conțină erori → Programul nu trebuie să conțină erori atât sintactice cât și semantice. Cele sintactice sunt văzute ușor de compilator, dar cele semantice pot fi mult mai subtile. Dacă erorile semantice nu sunt detectate la timp, ele pot cauza erori mai mari în timp, iar detectarea lor ulterioară va fi mult mai dificilă.

Să funcționeze conform cerințelor → După detectarea erorilor sintactice și semantice programul ar trebui să funcționeze corect. Dacă nu funcționează, o cauză importantă este neîntelegerea cerințelor inițiale.

Să fie repetabil → Majoritatea soft-urilor(în special cele embedded) de obicei trebuie să facă același lucru pentru o perioadă lungă de timp și de aceea el trebuie să funcționeze peste o perioadă lungă de timp ca la început.

Să fie lizibil → Codul, după o perioadă de timp, trebuie să poată fi citit și înțeles și de altă persoană, în afară de cel care l-a creat. Pentru ca un program să poată fi înteles și eventual corectat cât mai ușor, el trebuie scris după un anumit „stil”. Pentru limbajul C, în literatură sunt definite multe „stiluri”, dar cele uzuale sunt următoarele:

K&R

if(x){

Statement

Statement

}

Indent

            if(x)

{

Statement

Statement

}

Extended

if(x)

{

Statement

Statement

Cel preferat și utilizat de mine în programarea microcontrolerului este Indent.

Codul pentru ghidarea cu senzor IR

În continuare este prezentat algoritmul după care se iau deciziile de urmărire a liniei cu ajutorul senzorului IR:

(1)Start

Buclă infinită

(2) Interogare senzori

(3) Se compară cele două valori primite de la senzori cu un prag stabilit

(4) În funcție de rezultatul comparării se ia decizia de urmărire a liniei negre

(5) Dacă valorile primite de la senzori semnalează faptul că aceștia sunt deasupra culorii alb (<=100), robotul se deplasează înainte

(6) Dacă un senzor se află pe culoarea alb și unul pe negru viram în direcția corespunzatoare (stânga,dreapta) până când ambii senzori sunt pe alb

(7) Dacă ambii senzori sunt pe alb robotul se deplasează înainte

(8) Programul se continuă cu numărul (3)

Figura 4.20 Diagrama de funcționare a codului care utilizează unitatea de ghidare cu senzor IR

Codul pentru ghidarea wireless cu Bluetooth și senzor Sharp

Mai jos este prezentat algoritmul după care se iau deciziile în controlul robotului de la distanță prin Bluetooth și evitarea obstacolelor de către robot:

(1)Start

Bucla închisă

(2) Se verifică dacă distanța de la senzor la un eventual obiect este mai mare de 20 cm

(3) Se verifică dacă primește comanda de la tastatură

(4) În funcție de comenzile care le primește prin Bluetooth, robotul se deplasează înainte, înapoi, stânga, dreapta

(5) Dacă primește valoarea(ASCII) 56 de la tastatură se deplasează înainte

(6) Dacă primește valoarea(ASCII) 52 de la tastatură se deplasează la stânga

(7) Dacă primește valoarea(ASCII) 54 de la tastatură se deplasează la dreapta

(8) Dacă primește valoarea(ASCII) 53 de la tastatură se deplasează înapoi

(9) Altfel se opresc motoarele

(10) Programul se continuă cu numărul (2)

Figura 4.21 Diagrama de funcționare a codului care utilizează unitatea de ghidare prin Bluetooth și senzorul Sharp

Transmiterea comenzilor de la tastatură către robot se face prin intermediul programului PuTTY, configurându-se cu rata de transfer corespunzătoare modulului Bluetooth pe care îl folosim și C0M-ul corespunzător modulului Bluetooth.

Acest program l-am folosit și pentru citirea datelor de la senzori, în momentul în care am testat senzorii pentru a vedea dacă aceștia lucrează la parametrii normali și în momentul în care a trebuit să fac programul care controlează robotul, pentru a putea pune conditiile necesare.

Concluzii

Unul dintre cele mai importante aspecte în evoluția ființei umane este folosirea uneltelor care să simplifice muncă fizică. În această categorie se înscriu roboții, ei ocupând totuși o poziție privilegiată datorită complexității lor.

Revoluția informatică a marcat saltul de la societatea industrializată la societatea avansat informatizată generând un val de înnoiri în tehnologie și în educație, permițând realizarea roboților.

Roboții oferă beneficii substanțiale muncitorilor, industriilor și implicit țărilor. În situația folosirii în scopuri pașnice, roboții industriali pot influența pozitiv calitatea vieții oamenilor prin înlocuirea acestora în spații periculoase, cu condiții de mediu dăunătoare omului, cu condiții necunoscute de exploatare.

Domeniile de aplicare a tehnicii roboților sunt foarte variate și se lărgesc mereu, ei putând fi utilizați în industrie, transporturi și agricultură, în sfera serviciilor, în cunoașterea oceanului și a spațiului cosmic, în cercetarea științifică.

Odată cu dezvoltarea tehnologiei, cu atât mai mulți roboți sofisticați își vor face apariția în așa fel încât și viața umană va cunoaște o îmbuătățire semnificativă.

Anexe

Adaugarea dispozitivului Bluetooth la calculatorul meu

Calculatorul meu are dispozitiv Bluetooth încorporat, astfel încat a fost necesar doar să instalez driverul compatibil cu sistemul de operare Windows 7 (64 biți), iar apoi să adaug dispozitivul Bluetooth de clasă 2, cu ajutorul căruia să pot controla robotul mobil pe care l-am proiectat.

Din Bluetooth Settings trebuie apăsat Add New Connection și urmatoarea acțiune va fi de căutare a dispozitivelor disponibile.

În momentul în care un dispozitiv este descoperit este afișat și i se adaugă un C0M pentru comunicarea serială. În cazul meu modulul descoperit este RN42-D877 și i s-a alocat pentru comunicarea serială intre PC si robot mobil COM-ul 40.

În Computer Management, în Device Manager la Ports(COM & LPT) putem vedea C0M-ul alocat pentru modulul Bluetooth.

Bibliografie

[1] Curs Senzori si traductoare, Luís Gonçalves

[2] Brian W. Kernigham and Dennis M. Ritchie, The C Programming language

[3] Curs Control Automatic, Paulo Garrido

[4] Philipe Coiffet, La robotique, Principes et aplications, editura Hermes Paris, 1986

[5] Curs Aplicatii wireless industriale, Sef lucr. Dr.ing. Nicolae Lucanu

[6] Teodorescu, Horia Nicolai. Microcontrolere și microsisteme : aplicații / Horia-Nicolai L. Teodorescu. – Iași : Politehnium, 2010;

[7] Wireless Networked Communications, Concepts, Technology and Implementations, Bud Bates

[8] Arduino Robotics, John-David Warren, Josh Adams, and Harald Molle

[9] Bluetooth Operation and Use, McGraw-Hill

[10] Getting Started with Arduino, Massimo Banzi

[11] Making Things Talk, Tom Igoe, First Edition, editura O’Reilly

[12] Michael Barr, Programming Embedded Systems in C and C++, editura O’Reilly,1999

[13] Stan Gh., Roboti industriali, Editura Didactica si Pedagogica, Bucuresti, 2004

[14] Mircea Nitulescu, Roboti mobili, Editura Sitech Craiova

[15] Ion Bogdan, Managementul retelelor de comunicatii mobile, editura Politehnium, Iasi

[16] Jeremy Elson, Mobile Robot Control Arhitectures, 1999

[17] en.wikipedia.org

[18] ro.wikipedia.org

Sursă poze capitolul 1:

http://www.robotics.ucv.ro/flexform/aplicatii/

Sursă poze capitolul 2:

http://en.wikipedia.org/wiki/AIBO

http://en.wikipedia.org/wiki/Asimo

http://www.amm.mw.tum.de/1/research/current-projects/humanoid-robotics/johnnie/

Sursă poze capitolul 3:

http://www.scritube.com/stiinta/informatica/hardware/TehnologiaBluetooth16217202412.php

http://ro.wikipedia.org/wiki/Bluetooth

Sursă poze capitolul 4:

http://www.arduino.cc/

http://www.sparkfun.com/

http://www.robotics.ucv.ro/flexform/aplicatii/m1/Cerbulescu%20Claudia%20-%20Comanda%20motoarelor%20de%20curent%20continuu/

http://www.sparkfun.com/datasheets/Components/General/L298N.pdf

Bibliografie

[1] Curs Senzori si traductoare, Luís Gonçalves

[2] Brian W. Kernigham and Dennis M. Ritchie, The C Programming language

[3] Curs Control Automatic, Paulo Garrido

[4] Philipe Coiffet, La robotique, Principes et aplications, editura Hermes Paris, 1986

[5] Curs Aplicatii wireless industriale, Sef lucr. Dr.ing. Nicolae Lucanu

[6] Teodorescu, Horia Nicolai. Microcontrolere și microsisteme : aplicații / Horia-Nicolai L. Teodorescu. – Iași : Politehnium, 2010;

[7] Wireless Networked Communications, Concepts, Technology and Implementations, Bud Bates

[8] Arduino Robotics, John-David Warren, Josh Adams, and Harald Molle

[9] Bluetooth Operation and Use, McGraw-Hill

[10] Getting Started with Arduino, Massimo Banzi

[11] Making Things Talk, Tom Igoe, First Edition, editura O’Reilly

[12] Michael Barr, Programming Embedded Systems in C and C++, editura O’Reilly,1999

[13] Stan Gh., Roboti industriali, Editura Didactica si Pedagogica, Bucuresti, 2004

[14] Mircea Nitulescu, Roboti mobili, Editura Sitech Craiova

[15] Ion Bogdan, Managementul retelelor de comunicatii mobile, editura Politehnium, Iasi

[16] Jeremy Elson, Mobile Robot Control Arhitectures, 1999

[17] en.wikipedia.org

[18] ro.wikipedia.org

Sursă poze capitolul 1:

http://www.robotics.ucv.ro/flexform/aplicatii/

Sursă poze capitolul 2:

http://en.wikipedia.org/wiki/AIBO

http://en.wikipedia.org/wiki/Asimo

http://www.amm.mw.tum.de/1/research/current-projects/humanoid-robotics/johnnie/

Sursă poze capitolul 3:

http://www.scritube.com/stiinta/informatica/hardware/TehnologiaBluetooth16217202412.php

http://ro.wikipedia.org/wiki/Bluetooth

Sursă poze capitolul 4:

http://www.arduino.cc/

http://www.sparkfun.com/

http://www.robotics.ucv.ro/flexform/aplicatii/m1/Cerbulescu%20Claudia%20-%20Comanda%20motoarelor%20de%20curent%20continuu/

http://www.sparkfun.com/datasheets/Components/General/L298N.pdf

Similar Posts