OCTOMBRIE, 2013 NR. 5 PREţ: 10 LEI
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
COMPEC Prezintă DesignSpark Un portal care vă dă posibilitatea să consultaţi şi să scrieţi recenzii la produse şi aplicaţii, să faceţi schimb de cunoştinţe şi să descărcaţi instrumente gratuite de design. Aveţi posibilitatea să încărcaţi propriul proiect şi să colaboraţi cu cei ce activează în domeniul dvs. de proiectare. DesignSpark PCB este primul software de proiectare electronică cu adevărat gratuit. Dezvoltat de către RS Components şi Allied Electronics pentru a permite inginerilor să proiecteze rapid şi uşor produse de excepţie, DesignSpark PCB a câştigat multiple premii de la lansarea sa din 2010, existând peste 200.000 de activări la momentul actual. DesignShare reprezintă o colecţie de proiecte open-source postate de către membri şi partenerii DesignSpark. Dacă aveţi un proiect pe care doriţi să îl faceţi public, dacă doriţi să colaboraţi cu alţii la un anumit proiect sau dacă doar doriţi să descărcaţi un proiect deja dezvoltat, atunci puteţi accesa baza de proiecte.
DesignSpark Mechanical Cel mai nou software creat pentru proiecte 3D DesignSpark Mechanical este un software de proiectare revoluţionar, disponibil doar la RS Components. Graţie puterii de modelare directă, DesignSpark Mechanical vă permite să creaţi şi să modificaţi rapid proiecte 3D. Este primul instrument de acest tip disponibil gratuit, oferind specialiştilor o alternativă reală de proiectare. DesignSpark Mechanical este disponibil cu caracteristici care vă economisesc timpul destinat proiectării pentru a vă sprijini în a proiecta mai uşor, mai rapid şi mai creativ. n n
n n n
Caracteristici: Creare de proiecte pe foi de lucru ce pot fi dimensionate în detaliu Eliminarea timpilor de aşteptare în activitatea de retuşare şi modificare a proiectelor dezvoltate, fără a fi nevoiţi să aşteptaţi ca departamentul CAD să recreeze proiectul conform specificaţiilor voastre. Librărie 3D de componente, dezvoltată specific de către RS Components Creare de geometrii în mod facil cu un mod intuitiv de modelare bazată pe gesturi, fără a fi nevoie să fiţi un expert CAD Unealtă complet gratuită, fără licenţe sau restricţii de utilizare
Motive pentru care să alegeţi DesignSpark Mechanical 1. Renunţaţi la proiectarea pe hârtie sau la pachetele de software de proiectare 2D învechite, proiectaţi-vă singuri carcasa, PCB-ul şi modelul solid într-un mediu de proiectare 3D. 2. Uşor de învăţat. DesignSpark Mechanical este caracterizat de o modelare CAD directă, intuitivă şi puternică, în sensul că orice inginer poate crea o geometrie liberă de constrângeri parametrice – nu este nevoie să fiţi un expert CAD ca să utilizaţi DesignSpark Mechanical. 3. Accesarea componentelor cheie. Combinaţi creaţiile dvs. cu componente din librăria 3D dezvoltată de către RS Components şi Allied Electronics. 4. Economisiţi timp. Modificaţi doar în câteva secunde proiectul dvs., nefiind nevoit să apelaţi la un specialist CAD. 5. Este gratuit. Nu aveţi nevoie de licenţă pentru a utiliza DesignSpark Mechanical. Puteţi începe imediat să proiectaţi într-un pachet de proiectare complet, fără constrângeri. De la un simplu model 3D...
...la un proiect 3D. Aurocon COMPEC SRL www.compec.ro www.designspark.com
3
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Sumar
DESIGN HOBBY 3 COMPEC Prezintă DesignSpark
Un portal care vă dă posibilitatea să consultaţi şi să scrieţi recenzii la produse şi aplicaţii, să faceţi schimb de cunoştinţe şi să descărcaţi instrumente gratuite de design.
6 În umbra Marii Curse - Semiconductoare discrete moderne de la Diotec. Asistăm cu respiraţia tăiată la cursa producătorilor din domeniul circuitelor integrate. Procesoarele sunt tot mai rapide şi mai eficiente, oferind totodată un consum de energie din ce în ce mai mic. Mai puţin atrag însă atenţia elementele semiconductoare discrete – diode şi punţi redresoare, care sunt şi ele în schimbare pentru a răspunde aşteptărilor pieţei şi clienţilor.
8 Persistence of vision Persistence of vision (“persistenţa viziunii” sau PoV, pe scurt) este efectul optic de mişcare continuă produs de retină în momentul în care sunt văzute imagini statice într-o secvenţă rapidă. Această situaţie se datorează unei transmisii chimice a nervilor, acest histerezis biochimic fiind mult mai lent decât viteza luminii.
Revista Electronica Azi Hobby poate fi cumpărată de la partenerii noştri: Direct de la magazinele: CONEX ELECTRONIC - Bucureşti Str. Maica Domnului nr. 48, Sector 2 Tel.: 021-242.22.06 office@conexelectronic.ro vinzari@conexelectronic.ro www.conexelectronic.ro
13 Câştigaţi un kit ROBOT FSLBOT de la Freescale Semiconductor! 14 Cub cu LED-uri (II) În numărul precedent am prezentat modul în care poate fi construit un cub cu LED-uri de dimensiune mică. Rezultatul obținut ne-a încântat şi totodată motivat să trecem la pasul următor, la construirea unui cub mai mare, pentru a putea realiza jocuri de lumini mai complexe şi mai interesante.
22 Liste Android (IV)
Sau online de la: O’BOYLE - Timişoara Tel. +40 256-201346 office@oboyle.ro www.oboyle.ro
În aplicațiile realizate, un element important, adesea utilizat, îl reprezintă listele. Sub platforma Android, acestea sunt implementate folosind modelul MVC (Model View Controller).
26 Kit relee controlabile radio cu 2 şi 4 relee 27 Priză cu temporizator digital, Goobay
Câştigaţi cu Electronica Azi Hobby
28 Panoul solar inteligent În societatea de astăzi poluarea reprezintă o problemă majoră și oamenii încearcă să găsească soluții eficiente pentru combaterea acesteia. Spre deosebire de sursele de energie ce folosesc hidrocarburi, cele bazate pe energie regenerabilă sunt inepuizabile și nu dăunează mediului. Din categoria sistemelor bazate pe energie regenerabilă fac parte și panourile solare.
34 ZenWheels Micro Car - Maşinuţe şi Android Am avut la începutul verii ocazia să îmi cadă în mână o maşinuţă tare simpatică, ZenWheels Micro Car de la Plantraco. Seamănă cu o jucărie pentru copii, o găseşti în diferite culori şi poate fi controlată printr-o aplicaţie Android gratuită direct de pe telefon sau tabletă. Pe jumătate în joacă, pe jumătate serios , am scris propria mea aplicaţie Android pentru a mă juca cu maşinuţa.
Trimiteţi la redacţie proiectul unei aplicaţii practice şi aveţi şansa de a câştiga un sistem de evaluare şi dezvoltare Atmel EVK1100 (ATEVK1100) pentru microcontrolerul AT32UC3A0.
Colaboratori la această ediţie: Revista Electronica Azi - HOBBY apare de 6 ori pe an.
Management Director General - Ionela Ganea Director Editorial - Gabriel Neagu Director Economic - Ioana Paraschiv Publicitate - Irina Ganea Redacţie:
Revista este publicată numai în format tipărit. Preţul revistei este de 10 Lei. Preţul unui abonament pe 1 an de zile (6 apariţii) este de 60 Lei / abonament. 2013© Toate drepturile rezervate.
office@electronica-azi.ro www.electronica-azi.ro
EURO STANDARD PRESS 2000 srl Tel.: +40 (0) 31 8059955 Mobil: 0722 707-254 office@esp2000.ro www.esp2000.ro
O parte din articolele prezentate în această ediţie au fost realizate de către tinerii pasionaţi din cadrul laboratoarelor:
CUI: RO3998003 J03/1371/1993 Tiparul executat la Tipografia Everest
4
ROBOLAB - wonderbots.cs.pub.ro
Ing. Emil Floroiu - emilfloroiu@gmail.com Ing. Daniel Rosner - daniel.rosner@cs.pub.ro Ing. Răzvan Tataroiu - razvan.tataroiu@cs.pub.ro Ing. Dan Tudose - dan.tudose@cs.pub.ro Alexandru-Viorel Pălăcean - palacean_alexandru@yahoo.com Cristian Berceanu - cristi92b@gmail.com Alexandra Marinescu - alexa.alyas@gmail.com Alexandru Radovici - alexandru@ipworkshop.ro Ioana Culic - ioana@ipworkshop.ro Vladimir Oltean - olteanv@gmail.com Iulian Calciu - iuliancalciu@gmail.com Alexandra Ştefănescu - s.alexandra.stefanescu@gmail.com Georgiana Diana Ciocîrdel - georgiana_diana.ciocirdel@cti.pub.ro Ana Bărar - ana.barar@yahoo.com Alexandru Aungurencei - alex.aungurencei@gmail.com Cititorii interesaţi de achiziţionarea circuitelor imprimate PCB ale montajelor “Kit didactic Titan32” şi “Kit robot DragonFLY” sunt rugaţi să se adreseze redacţiei noastre. De asemenea, prin intermediul redacţiei noastre, circuitele aplicaţiilor menţionate mai sus pot fi achiziţionate complet echipate.
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
În umbra Marii Curse. Semiconductoare discrete moderne de la Diotec. Asistăm cu respiraţia tăiată la cursa producătorilor din domeniul circuitelor integrate. Procesoarele sunt tot mai rapide şi mai eficiente, oferind totodată un consum de energie din ce în ce mai mic. Mai puţin atrag însă atenţia elementele semiconductoare discrete – diode şi punţi redresoare, care sunt şi ele în schimbare pentru a răspunde aşteptărilor pieţei şi clienţilor. În acest sens, un bun exemplu pot fi produsele firmei germane Diotec. Această companie, de mai bine de treizeci de ani, s-a specializat într-un domeniu destul de îngust – diode de protecţie şi de semnal, precum şi diode şi punţi redresoare. Bogata sa experienţă permite atât producţia de elemente standard de înaltă calitate, precum şi realizarea de comenzi individuale, în funcţie de necesităţile clienţilor. Diotec are fabrici atât în Europa (Germania şi Slovenia), cât şi în Asia (China şi India), iar majoritatea, adică peste 70% din producţie, ajunge pe piaţa europeană. Jumătate dintre clienţi sunt firme OEM – producători care folosesc componentele firmei pentru realizarea propriilor echipamente. Beneficiari principali sunt firme din domenii ca: iluminat, telecomunicaţii, surse de energie, industrie şi energii alternative (solară şi eoliană). Diodele Diodele sunt unele dintre cele mai populare elemente semiconductoare. Practic, este greu să ne imaginăm vreun echipament care să nu aibă în structura sa măcar o singură diodă. Deşi principiul de funcţionare al diodei este banal de simplu – conducţia curentului doar într-o direcţie – posibilităţile de utilizare sunt surprinzător de multe. Diodele redresează curentul, stabilizează tensiunea, limitează supratensiunile… şi acestea sunt doar câteva funcţii dintr-o listă foarte lungă. Sigur că Diotec are în oferta sa şi diodele cele mai clasice, vândute de fiecare producător.
6
Însă ceea ce o diferenţiază este mare diversitate a versiunilor şi carcaselor disponibile. De exemplu, dioda standard tipică, având parametrii de 1000V/1A este oferită, bineînţeles, în carcasa clasică din plastic DO-41 (1N4007), dar poate fi achiziţionată şi în versiunea ultrafast (UF4007 , trr =50ns – 100ns) şi în versiunile SMD: • SL1M – carcasă foarte mică SOD-123FL (1,8mm × 2,8mm, înălţime maximă 1,3mm) • GL1M – carcasă miniatură MiniMelf (DO213AA, φ1,3mm), poate înlocui elementele din carcasa SOD-87 • M7 – versiune economică în carcasă LowCost SMA (2,7mm × 4,2mm × 2,2mm) • S1M – în carcasă DO-214AC (SMA – 2,7mm × 4,5mm × 2,2mm), diodele în această carcasă sunt disponibile cu tensiuni inverse de până la 2000V (S1Y) • SM4007 – în carcasă DO-213AB (Melf, , φ2,5mm), diodele în această carcasă sunt caracterizate de cel mai mare curent în impuls de până la 44A (8,3 ms) Dintre celelalte propuneri interesante de diode, merită menţionate şi diodele Zener cu putere de până la 3W (SMD în carcasă DO214AB/SMC) sau cu o putere de până la 5W în cazul diodelor cu terminale axiale (în carcasă φ8×7,7mm). Această din urmă carcasă este folosită şi la realizarea diodelor redresoare cu
un curent de conducţie de până la 25A, a diodelor cu barieră Shottky cu un curent de conducţie de până la 30A şi a diodelor de protecţie (transil) cu o putere de până la 5000W. Cheia succesului în acest caz a reprezentat-o utilizarea unei secţiuni puţin mai mari a terminalelor (φ1,6mm în loc de φ1,2mm), datorită căreia a putut fi eficientizată evacuarea căldurii din structura P-N. Sunt disponibile şi matrice de diode cu anod comun sau catod comun (max. 8 diode), diode fixate prin presare (carcasă de tipul Press-fit), diode în carcase tip pastilă sau cu tranzistoare, montate atât prin inserţie (TOxxx), cât şi SMD (D2PAK). O soluţie interesantă o reprezintă combinaţia, în aceeaşi carcasă SMD (Melf) a unei diode de blocare cu o diodă TVS (din gama TGLxxx), destinată soluţiilor PowerLED. Un accent special este pus de Diotec pe diodele cu o tensiune de conducţie joasă (“LowVf”), care îmbină avantajele diodelor redresoare (o tensiune inversă ridicată) cu dioda Shottky (tensiune de conducţie joasă). Zona lor de acţiune o reprezintă dispozitivele solare, unde limitarea pierderilor de putere este deosebit de importantă. Fapt interesant, în oferta firmei găsim şi diode de înaltă tensiune SMD de până la 2300V, carcase cu terminale axiale pentru tensiuni de până la 18 000V (0,2A), dar şi diode cu o tensiune de lucru de până la 24000V şi un curent de conducţie de până la 4A.
COMPONENTE ACTIVE Punţi redresoare În această grupă de produse Diotec deţine şi soluţii clasice, dar este lider în domeniul caracterizat pe scurt prin deviza “Mai mic, mai uşor, cu putere mai mare”. În practică, acest lucru se traduce prin miniaturizarea elementelor cu menţinerea posibilităţii, mai mari decât la concurenţă, de conducţie a curentului şi cu păstrarea grijii pentru un preţ redus şi soluţii de protecţie a mediului (ROHS). Au anunţat această tendinţă punţile în carcasa standard DIL4 cu pas de 5,1mm, un curent de conducţie de max. 1A şi o tensiune de lucru de max. 1000V.
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
monofazate plate clasice cu curenţi de funcţionare de la 2A la 12A, destinate unei tensiuni de max. 1000V şi punţi pătrate cu terminale cu sârmă pentru montare pe PCB (prin inserţie) sau cu terminale cu conectori. Acestea din urmă sunt populare printre producătorii diferitelor aparate electrocasnice, pentru care sunt foarte importante rapiditatea şi simplitatea montajului. Reţineţi că o aplicare a unei sarcini complete pe punţi, până la parametrii de catalog, este posibilă doar după dotarea acestora cu un radiator adecvat sau după montarea acestuia pe scheletul echipamentului, fapt practicat adesea în industria aparatelor electrocasnice.
Punţile trifazate pătrate, disponibile în versiuni cu curentul de 15A, 25A sau 35A, sunt realizate doar cu terminale cu conectori în standardul 6,3mm. Valoarea adăugată Articolul de faţă prezintă şi angajamentul firmei Diotec de dezvoltare a produselor sale, precum şi reacţiile sale rapide la nevoile pieţei. În afară de înalta calitate a elementelor, merită atenţie şi suportul oferit de producător. Pe pagina de internet a acestuia putem găsi multe informaţii şi documente utile. Se află la dispoziţia celor interesaţi tabele uşor de consultat, care conţin parametrii produselor, în care poate fi găsit rapid elementul căutat. Diotec pune la dispoziţie şi fişe de catalog detaliate ale diferitelor produse, în care pot fi găsite diferite exemple de aplicaţii, care sunt o sursă utilă de inspiraţie pentru constructori. Cu siguranţă se va dovedi utilă fişa cu înlocuitorii pentru diferitele tipuri de carcase şi procedura detaliată de lipire. Un asemenea volum bogat şi precis de cunoştinţe pus la dispoziţie de către producător este, din păcate, rar întâlnit, iar prezenţa lui este deosebit de folositoare pentru utilizatori şi, mai mult, reprezintă o bună dovadă a înaltei clase a firmei. Produsele marca Diotec sunt disponibile şi la TME, de la elemente individuale disponibile în depozit, trecând prin cantităţile medii cumpărate în magazinul online, până la marile
Următorul pas a fost apariţia punţilor DIL4 cu structuri din diode rapide şi Shottky. Aşteptările pieţei au forţat evoluţia acestor produse. Mai întâi a apărut puntea în carcasă SO-DIL SLIM (montare SMD, înălţime de numai 2,5mm), iar apoi în carcasă ABS (pas 4mm, înălţime 1,5mm), MiniDil SLIM (carcasă apropiată de TO269AA, pas 2,54mm). Următoarea etapă au constituit-o punţile MYSxx cu carcasă MicroDIL şi dimensiunile 3×3mm, înălţime de doar 1,8mm şi pas de 1,27mm. Sunt unele dintre cele mai mici punţi redresoare din lume, care funcţionează cu 0,5A şi o tensiune de până la 800V max. Apariţia lor o datorăm dezvoltării tehnologiei de iluminare cu LED, în care, într-un spaţiu mic, limitat de dimensiunile impuse de norme (de exemplu într-un bec), trebuie montat sistemul de alimentare şi control al LED-urilor. Calitatea produselor marca Diotec poate fi atestată de parametrii acestora, puţin mai buni decât ai concurenţei, de exemplu în puntea rotundă clasică φ9×5mm curentul de conducţie este de max. 2A, în timp ce concurenţa oferă, în majoritate, max. 1,8A. Sigur că în oferta firmei găsim şi punţile
Ultima grupă o reprezintă punţile trifazate cu tensiuni de lucru de până la 1600V. Sunt disponibile modele plate de 35×25×4mm cu curenţi de până la 20A (versiune polarizare B: +~~-) sau 25A (versiune polarizare A:-~~+).
loturi cotate individual pentru fiecare client, alături de suportul tehnic. Informaţii detaliate: www.tme.ro Autor: Arkadiusz Węglewski
7
KIT ROBOT
Câştigaţi un kit
ROBOT FSLBOT de la Freescale Semiconductor! Freescale Semiconductor împreună cu revista Electronica Azi HOBBY oferă cititorilor şansa de a câştiga un kit robot FSLBOT care funcţionează pe baza plăcii TWR-MECH şi este destinat pentru dezvoltarea de aplicaţii simple de mecatronică precum şi pentru înţelegerea modului cum operează platforma de dezvoltare TWR-MECH - Tower Mechatronics. Acesta este proiectat special pentru a fi utilizat și programat cu RobotSEE - un limbaj de programare la fel de simplu ca limbajul BASIC. Utilizatorii mai avansați însă, pot utiliza limbaje de programare mai performante precum CodeWarrior și Freescale Tower System.
TWR-MECH
FSLBOT
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Acest set de instrumente permite utilizatorilor să se familiarizeze cu ştiinţa care combină mecanica, electronica, și software-ul pentru a realiza un sistem embedded avansat. Kit-ul include patru actuatoare controlate PWM, picioare metalice și placa Tower System Mechatronics care conţine un accelerometru cu 3 axe şi un senzor de atingere cu 12 canale. Prin construirea kitului, puteți experimenta tot ce poate face un robot biped care dispune de 4 grade de libertate. Placa TWR-MECH este parte a sistemului Freescale Tower Sytem care reprezintă o platformă de dezvoltare modulară ce permite prototipare rapidă și re-utilizarea uneltelor cu ajutorul unui hardware reconfigurabil. Proiectaţi la un nivel superior începând să construiţi de azi propriul vostru Tower System. Placa Tower System Mechatronics este programabilă în C/C++ folosind CodeWarrior și conţine de asemenea o unealtă de programare flash - OSBDM. Pentru prototipare rapidă sau pentru utilizatori care nu au experienţă în proiectarea în C/C++, placa Tower System Mechatronics este însoţită de Robot Vision Toolkit și RobotSee (la fel de simplu ca BASIC, dar cu performanţe apropiate de C). Placa Tower System Mechatronics combină puterea de calcul pe 32 de biți cu senzori și controlul actuatoarelor realizând un sistem embedded complet alimentat de la o baterie existentă pe placă. Tower System Mechatronics dispune de un microcontroler ColdFire pe 32 de biți, 64K RAM, 512K flash și suportă întreaga gamă de senzori Xtrinsic Freescale prin intermediul cardurilor fiică de tip plug-in. Platforma poate opera direct cu până la opt actuatoare (controlate PWM) prin intermediul a 8 conectoare standard cu 3-pini. Aplicaţii: Robot Mobil (cu alimentare de la baterie), Braţ Robotic, aplicaţii de automatizare, aplicaţii de conectivitate (cu sau fără fir), aplicaţii de control al motoarelor. Kit-ul conţine • Placă TWR-MECH echipată cu MCU MCF52259 pe 32-biţi • 4 actuatoare controlate PWM • Mecanică robot și hardware-ul asociat • Instrucţiuni de asamblare ale robotului • Ghid de utilizare • Quick Start Ghid
Pentru a avea şansa de a câştiga kit-ul robot Freescale FSLBOT, trimiteţi la redacţie proiectul unei aplicaţii practice. Articolul propus spre publicare trebuie să conţină următoarele elemente: • Introducere (~ 50 cuvinte) • Conţinut (~ 1000 cuvinte) • Poză autor şi poză pentru aplicaţia propusă • Diagrame (schemă electronică, detalii, circuit PCB).
CONCURS
Termen limită de înscriere la concurs: 30.11.2013. Câştigătorul va fi anunţat în revista din luna Decembrie – Electronica Azi - Hobby nr. 6.
13
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
În numărul precedent am prezentat modul în care poate fi construit un cub cu LED-uri de dimensiune mică. Rezultatul obținut ne-a încântat şi totodată motivat să trecem la pasul următor, la construirea unui cub mai mare, pentru a putea realiza jocuri de lumini mai complexe şi mai interesante. Proiectul de față a fost realizat în cadrul laboratorului InGeAr din cadrul Facultății de Automatică și Calculatoare, respectiv Facultatea Energetică – Universitatea POLITEHNICA din București în perioada Școlii de Vară EAP 2013. Autori: Alexandru-Viorel Pălăcean - palacean_alexandru@yahoo.com Cristian Berceanu - cristi92b@gmail.com Construirea cubului Pentru proiectul actual am considerat că un cub de dimensiune 7×7×7 este suficient de mare pentru a afișa jocurile de lumină dorite. Cubul este format din 7 matrice (niveluri) suprapuse a câte 49 de LED-uri fiecare. LED-urile dintr-o matrice sunt lipite între ele cu anodul la comun, iar apoi, nivelurile sunt suprapuse și se lipesc, pe coloană, catozii între ei. Lipirea se face 14
exact ca și la cubul din proiectul precedent. În final se obțin 56 fire de comandă: 49 de catozi (câte unul de la fiecare coloană) și 7 anozi (câte unul de la fiecare nivel). Ajungând la un număr de 56 de fire de comandă ne lovim de o problemă destul de mare: microcontrolerul folosit de noi (ATMEGA32) nu are suficienți pini de intrare/ieșire. Cubul de dimensiune 4×4×4 avea nevoie de 20 de fire de comandă, iar
microcontrolerul ATMEGA32 oferă 32 pini de intrare/ieșire, un număr suficient în acel caz. Problema numărului insuficient de pini poate să apară în orice aplicație în care se utilizează microcontrolere. Din fericire, există mai multe posibile rezolvări. Alegerea soluției optime Pentru rezolvarea acestui tip de problemă se alege o metodă potrivită circuitului care
CUB CU LED-uri trebuie proiectat. Fiecare metodă are avantajele și dezavantajele sale. Astfel, putem enumera câteva opțiuni: • Alegerea unui microcontroler cu număr suficient de mare de pini I/O • Folosirea mai multor microcontrolere care comunică între ele • Utilizarea demultiplexoarelor • Folosirea unui cip integrat de control al LED-urilor • Utilizarea registrelor de deplasare (Shift Register) Alegerea unui microcontroler potrivit pentru numărul de fire de comandă poate reprezenta o soluție rapidă și eficientă în unele situații. Cu toate acestea, există aplicații în care numărul de fire de comandă este mult prea mare și nu se găsește niciun microcontroler potrivit. Acestea pot fi și scumpe și mai greu de procurat. Folosirea mai multor microcontrolere nu reprezintă o soluție elegantă în cazul aplicațiilor de complexitate redusă. Costul final al montajului crește, iar realizarea comunicării între microcontrolere necesită un timp destul de mare de implementare. Demultiplexoarele sunt dispozitive ce conectează o intrare la mai multe ieșiri, pe rând, în funcție de informația primită pe portul de selecție. De exemplu, în cazul nostru, se poate folosi un demultiplexor cu o intrare, 8 ieșiri și 3 pini de selecție. Cele 8 ieșiri le-am conecta la firele de comandă ale cubului, iar intrarea împreună cu cei 3 pini de selecție (în total 4 pini) i-am conecta la microcontroler. În felul acesta, în loc să folosim 8 pini ai microcontrolerului, folosim doar 4. Folosirea unui cip integrat de control al LED-urilor reprezintă o soluție rapidă și eficientă. Cu toate acestea, prețul unui astfel de cip este mare și nu ne-ar ajuta să învațăm lucruri noi. Registrele de deplasare (Shift Register) sunt formate din circuite flip-flop (bistabili) cascadate ce au semnalul de ceas comun (clock). Modul în care acești bistabili sunt conectați între ei conduce la existența mai multor tipuri de registre de deplasare, dintre care cele mai importante sunt: cu intrare paralelă și ieșire serială (PISO), cu intrare serială și ieșire paralelă (SIPO). În cazul registrului de deplasare cu intrare serială și ieșire paralelă, ieșirea fiecărui bistabil este conectată la intrarea următorului, ceea ce permite ca un bit introdus în registrul de deplasare să fie mutat la următoarea poziție imediat ce un alt bit ajunge la intrarea circuitului.
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
În imaginea de mai sus este reprezentată schema unui registru de deplasare de 4 biți de tip SIPO. Pentru a exemplifica modul de funcționare al acestuia să presupunem că dorim să avem la ieșire 1010. Introducem cu fiecare bătaie de ceas câte un bit prin pinul Data In. Începem cu 0 cel mai din dreapta. Punem valoarea 0 la pinul Data In și executăm o bătaie de ceas (trecere a semnalului clock din 0 logic în 1 logic). Bitul 0 se va stoca în primul bistabil (cel mai din stânga), deci la Q1 vom avea 0. Aceeași valoare o vom avea acum și la intrarea celui de-al doilea bistabil (deoarece ieșirea primului bistabil este conectată la intrarea celui de-al doilea). Acum, vrem să introducem bitul 1. Punem valoarea 1 la pinul Data In și executam o nouă bătaie de ceas. În acest moment, valoarea 0 stocată în primul bistabil va fi memorată în cel de-al doilea (al doilea bistabil avea valoarea 0 la intrare și în urma clock-ului, o memorează, o trimite la ieșire (Q2), dar și la intrarea celui de-al treilea bistabil), iar în primul bistabil se stochează valoarea 1 și este trimisă la Q1. Același procedeu se repetă și pentru următorii 2 biți, ajungându-se ca la ieșire (Q1 Q2 Q3 Q4) să avem 1010. Registrele de deplasare au diverse capacități (4, 8, 16 biți etc). Un mare avantaj al acestora este că pot fi înseriate, adică ieșirea unui registru de deplasare să fie conectată la intrarea altuia. Teoretic, în cazul nostru, am avea nevoie doar de 2 pini (Data In și Clock) pentru a putea comanda toate firele cubului cu LED-uri. Acest lucru constituie un avantaj major al folosirii registrelor de deplasare față de celelalte metode prezentate anterior.
Pentru acest proiect, noi am ales să utilizăm registre de deplasare, dar nu înseriate, ci conectate fiecare separat la microcontroler pentru a ușura modul de programare. Realizarea schemei de comandă Circuitul de comandă a cubului este distribuit pe 3 plăci: 1. Placa pe care este lipit cubul 2. Placa principală, cu partea electronică de comandă 3. Placa cu afișaj şi butoane pentru selectarea jocurilor de lumini
Ü
15
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Ü Placa pe care este lipit cubul
Această placă conține traseele ce fac legătura dintre cubul cu LED-uri și placa principală de comandă. În schema plăcii se pot distinge două sectoare distincte: a) traseele pentru comanda catozilor b) traseele pentru comanda anozilor Zona de comandă a celor 49 catozi este formată din 7 părți identice (c). Fiecare din aceste părți conține un conector de tip PINHEADER cu 7 contacte pentru legătura cu placa electronică principală, rezistori de 330Ω cu rolul de a limita curentul prin LEDuri pentru a împiedica arderea acestora și contactele de tip WIREPAD, unde sunt lipite coloanele cubului. Partea de comandă a anozilor conține doar un conector de tip PINHEADER cu 7 contacte și tot atâtea WIREPAD-uri pentru lipirea firelor ce vin de la fiecare nivel al cubului (fiecare anod).
b) circuitul de comandă al catozilor c) circuitul de comandă al anozilor
La unul dintre acești conectori se va lega placa pentru controlul jocurilor de lumini.
Microcontrolerul, conectorii I/O și alimentarea
3) Circuitul acestei aplicaţii este proiectat să fie alimentat cu o tensiune de 5V. De
1) În această parte a schemei se află microcontrolerul, de această dată varianta SMD ATMEGA324P, un cristal de cuarț de 20MHz cu rolul de a crește frecvenţa de operare a microcontrolerului, circuitul de RESET, format din buton, condensator și un rezistor de PULL-UP (RESET-ul este activ în pragul de 0 logic, iar rezistorul asigură o tensiune în pragul de 1 logic atâta vreme cât butonul nu este apăsat). Mai este prezent un conector de tip PINHEADER cu 2 contacte, conectat în paralel cu butonul de RESET, pentru a putea activa aceasta funcție și de pe un dispozitiv auxiliar (dacă există).
data aceasta, nu am mai folosit un stabilizator de tensiune ca la cubul precedent, ci alimentăm placa cu tensiunea necesară direct dintr-o sursă externă. Pentru aceasta, am folosit o mufă Jack de alimentare și un comutator ON/OFF. Starea de funcționare a circuitului este indicată cu ajutorul unui LED plasat în apropierea comutatorului. Pentru a elimina componentele parazite din tensiunea de alimentare, am plasat în circuit condensatori de filtrare de 100nF, cât mai aproape de microcontroler.
Layout
Placa principală de comandă Placa electronică de comandă a cubului este împărțită în 3 mari zone: a) microcontrolerul, conectorii I/O și alimentarea
16
2) Zona conectorilor I/O: aici se găsesc conectorul pentru interfața ISP (pentru programare) și alți doi conectori cu câte 10 pini pentru eventuala conectare a altor plăcuțe.
Circuitul de comandă al catozilor Cei 49 de catozi ai cubului sunt comandați prin intermediul a 7 blocuri formate dintrun registru de deplasare şi un driver de LED-uri. Fiecare registru controlează un număr de 7 catozi.
CUB CU LED-uri
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
avea și toate cele 49 de LED-uri dintr-un nivel aprinse simultan, dar şi pentru viteza mare de comutație din starea de blocare în starea de conducție.
În această figură este prezentat unul din cele 7 blocuri de comandă a catozilor. Acest bloc este format dintr-un integrat 74HC595 cu funcția de registru de deplasare şi cu condensator de filtrare pe alimentare, un driver de LED-uri ULN2003A şi un conector PINHEADER cu 7 contacte pentru legătura cu placa pe care este lipit cubul. Integratul 74HC595 este un registru de 8 biți (deci cu 8 ieșiri) cu intrare serială şi ieșire paralelă. Noi am folosit doar 7 dintre ieșiri pentru simplificarea schemei și a programului. Pinii notați QA -> QH reprezintă ieșirea paralelă a integratului, QH* este pinul final de ieșire (în cazul în care se dorește înserierea acestor cip-uri, acest pin se conectează la cel de intrare serială a următorului integrat). Mai sunt prezente următoarele contacte: SER - intrarea serială, SCK – intrarea semnalului de ceas al registrului de stocare, SCL – Master RESET, activ pe 0 logic, RCK – intrarea semnalului de ceas al registrului de deplasare, G – Output Enable, activ pe 0 logic. Pentru trimiterea comenzilor de la microcontroler la cub prin intermediului registrului de deplasare sunt necesare următoarele etape: scrierea celor 7 biți în registrul de deplasare, bit cu bit şi apoi transferarea lor în registrul de stocare pentru a fi mai apoi trimiși în paralel la ieșire. Pentru scrierea unui bit în registrul de deplasare se furnizează 0 sau 1 logic la pinul SER (intrare), iar apoi se execută un semnal de ceas pe pinul RCK.
Dacă se repetă această procedură, bitul existent va fi deplasat şi va fi scris un altul lângă el. După ce toți cei 7 biți au fost scriși în registrul de deplasare, pentru a-i transfera la ieșire este necesar un semnal de ceas pe pinul SCK. Pinul Output Enable trebuie să fie setat low (0 logic) pentru a fi activ, iar Master RESET high (1 logic) pentru a fi inactiv. Dacă se dorește golirea registrelor, acest pin se alimentează în pragul 1 logic. Toate cele 7 integrate cu rol de registru de deplasare din schemă, au pinii RCK, SCK, SCL şi G legate împreună la microcontroler, doar cei de intrare sunt separați. Așadar, pentru comanda catozilor sunt folosiți în total 11 pini ai microcontrolerului. Cel de-al doilea integrat din bloc este driverul de LED-uri ULN2003A. Acesta este format din 7 canale, fiecare canal având o pereche de tranzistoare în conexiune Darlington. Integratul suportă un curent de 500mA prin fiecare canal, o valoare suficientă pentru proiectul nostru.
Se poate observa același integrat cu rol de registru de deplasare 74HC595. Am folosit doar 7 din cele 8 ieșiri ale sale pentru că doar atâtea niveluri avem de comandat. Pinul de intrare serială este conectat separat la un pin al microcontrolerului, în timp ce restul pinilor (RCK, SCK, SCL, G) sunt legați în paralel cu cei ai registrelor de deplasare ai circuitului de comandă al catozilor. În acest fel, numărului de pini folosiți pentru comandarea cubului i se mai adăugă unul singur, ajungându-se la un total de 12. Prin folosirea acestei metode de implementare, am asigurat o funcționare corespunzătoare a proiectului, dar ne-am și încadrat în numărul de pini disponibili ai microcontrolerului.
Cele 7 ieșiri ale registrului de deplasare dintr-un bloc sunt conectate la intrările driver-ului ULN2003A pentru ca mai apoi, ieșirile acestuia să fie conectate prin intermediul conectorului PINHEADER la placa principală. Fiecare coloană corespunde unui canal al driver-ului de LED-uri. Circuitul de comandă al anozilor Circuitul de comandă al anozilor este oarecum asemănător cu cel al catozilor deoarece se folosește tot de un registru de deplasare. De data aceasta nu am mai folosit integratul ULN2003A ci 7 tranzistori Mosfet cu canal P, model IRF9630. Aceștia sunt capabili să conducă un curent de până la 4A. Am optat pentru acest model de tranzistor pentru capacitățile sale deosebite: curent de conducție mare, necesar în cazul nostru pentru că putem
Tranzistorul are poarta conectată la pinul de ieșire al registrului de deplasare prin intermediul unui rezistor de limitare al curentului și în același timp la Vcc (Vdd) printr-un rezistor de pull up. Sursa tranzistorului este conectată la Vcc (Vdd), iar drena la conectorul PINHEADER ce face legătura cu placa pe care este lipit cubul. Fiecare pin al acestui conector corespunde drenei unuia dintre cei 7 tranzistori ai circuitului de comandă al anozilor. Ü
17
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Ü Layout-ul plăcii principale de comandă
Deoarece placa are un număr destul de mare de componente și o dimensiune limitată, timpul dedicat proiectării layoutului a fost destul de mare. În plus, pentru a economisi și mai mult spațiu am folosit o variantă SMD a microcontrolerului ATMEGA32, mai precis ATMEGA324P. Acesta are 40 de pini, câte 10 pe fiecare latură. Lipirea acestui microcontroler necesită răbdare multă și atenție sporită. Cu toate acestea, rezultatul este pe măsura efortului. Placa are un aspect mai plăcut și este mai aerisită.
sau dezactivează o funcție și un circuit numărător (Counter 0-9) ce furnizează la ieșire 4 biți. Acești biți sunt interpretați ca și cod BCD de către un convertor BCD - afișaj cu 7 segmente (BCD to 7 segment decoder), care afișează pe un mic display cifra corespunzătoare. Incrementarea numărului de pe afișaj sau resetarea acestuia se realizează cu ajutorul a două butoane. Integratul 555 din schema 1 este conectat în modul bistabil și oferă la ieșire pe pinul Q, 0 sau 1 logic în funcție de starea în care se află. Trecerea dintr-o stare în alta se face prin apăsarea unui buton fără reținere.
Schema 2 conține integratul CD4518N, un counter cu ieșire pe 4 biți, capabil să numere de la 0 la 9. Acest integrat are 3 pini principali de control: CLOCK, ENABLE, RESET. La alimentarea circuitului, acesta începe să numere pornind de la 0. Pentru a incrementa valoarea, pinul ENABLE trebuie să aibă valoarea 1 logic, iar CLOCK să primească un semnal potrivit (trecere din 0 în 1 logic și revenire în 0 logic). Pentru a reseta counter-ul, pinul RESET trebuie pus la 1 logic. Pentru aceste operații de incrementare și resetare sunt folosite două butoane fără reținere (Push button). Ieșirea circuitului integrat este legată la intrarea decodorului BCD, dar și la placa principală, la microcontroler, prin intermediul unor rezistori de limitare a curentului. Partea de decodare a semnalului BCD pentru afișarea pe un display cu 7 segmente (schema 3) este asigurată de integratul CD4543N. Cei 4 biți primiți de la counter sunt prelucrați și afișați în format zecimal. Cip-ul are 3 pini importanți: LATCH DISABLE ce trebuie conectat la Vcc, PHASE și BLANKING ce trebuie legați la GND pentru funcționarea corectă. Ieșirile acestuia sunt conectate la un afișaj cu catod comun prin intermediul unor rezistori de 330Ω pentru limitarea curentului.
Placa cu afișaj și butoane pentru selectarea jocurilor de lumini Această placă oferă utilizatorului posibilitatea de a schimba jocul de lumini curent al cubului și de a activa sau dezactiva o funcție specială. Circuitul acestei plăci se bazează pe un integrat 555 în mod bistabil ce activează
18
Starea de 1 logic la ieșire este semnalizată cu ajutorul unui LED. Când circuitul oferă 0 logic, LED-ul este stins. Ieșirea circuitului este conectată și la placa principală (la microcontroler) printr-un conector Pinheader și un rezistor.
Conectorul Pinheader (schema 4) are rolul de a face legătura cu placa principală. Primii 4 pini sunt legați la ieșirea circuitului numărător, al 5-lea la ieșirea circuitului bistabil cu 555, iar ultimii 2 pini sunt legați la Vcc și GND pentru a alimenta placa cu afișaj direct din placa principală. Microcontrolerul citește cei 4 biți ai numărătorului și în felul acesta execută
CUB CU LED-uri jocul de lumini cu numărul egal cu cel afișat pe display. În cazul activării butonului circuitului bistabil, programul va rula o funcție special scrisă, independentă de cele 10 jocuri (0-9) posibile. Layout-ul plăcii cu display
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Programul și implementarea jocurilor de lumini Am ales “C” ca limbaj de programare pentru acest proiect, iar microcontrolerul a fost programat prin intermediul Atmel Studio 6 și al programatorului AVRISP MKII. Primele lucruri pe care le-am făcut la scrierea programului au fost definirea unor funcții pentru modificarea porturilor și redenumirea variabilelor PORTx și DDRx pentru portabilitatea codului (ex: dacă refacem schema, să nu fim nevoiți să modificăm întregul program): #defineF_CPU20000000 #include<avr/io.h> #include<util/delay.h>
La proiectarea layout-ului acestei plăci s-a ținut cont de necesitatea unor dimensiuni reduse și de poziționarea butoanelor. Butoanele au fost amplasate pe lateralul plăcii pentru a ușura accesul la ele. Este recomandată folosirea unui afișaj luminos, pentru a putea fi citit cu ușurință și în condiții de lumină ambientală puternică.
#definesetHigh(port,pin)port|=(1<<pin) #definesetLow(port,pin)port&=~(1<<pin) #definetoggle(port,pin)port^=(1<<pin) #definecheck(port,pin)((port&(1<<pin))!=0) #defineDATA_PORTPORTA #defineDATA_DDRDDRA #defineCONTROL_PORTPORTB #defineCONTROL_DDRDDRB #defineSCKPB0//shift clock #defineSCLPB1//master reset, active-low (clear)
#defineRCKPB2//latch clock (latch) #defineBLANKPB3//active-low, output enable(blank) Programul conține două structuri asemănătoare, CUBE și REG_DATA: typedefstructcube{ uint8_tp[8]; }CUBE; typedefstructreg_data{ uint8_tarray[8]; }REG_DATA; Am folosit tipul REG_DATA pentru memorarea biților ce trebuiesc introduși în registre, iar în tipul CUBE am memorat, în primele 7 elemente ale vectorului, valorile asociate fiecărei linii (între 0 și 127) și în ultimul element, o valoare asociată nivelurilor de LED-uri, active în logică negativă, de asemenea cu valori cuprinse între 0 și 127. Pentru a face conversia între tipul CUBE și REG_DATA am definit următoarea funcție: REG_DATAcube2reg_data(CUBEx) { REG_DATAy;
Ü
19
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Ü
uint8_tt,i,j; for(i=0;i<8;i++) { t=0; for( j=0;j<8;j++) { if(check(x.p[ j],i)) setHigh(t,j); } y.array[i]=t; } returny; } Pentru a economisi timp și instrucțiuni, am folosit doar primele 7 ieșiri din registrele de deplasare, atât la crearea schemei cât și la scrierea programului. În continuare, vom defini funcțiile necesare manipulării registrelor de deplasare:
setHigh(CONTROL_PORT,SCL); } //funcția pentru ștergerea memoriei registrelor de deplasare și a celor de memorare voidclear_all() { clear_shift_reg(); update_storage_reg(); } //funcția pentru a dezactiva ieșirile tuturor registrelor voidblank_enable() { setLow(CONTROL_PORT,BLANK); }
//funcția pentru iniţializarea registrelor, trebuie apelată la pornirea microcontrolerului
//funcția pentru a activa ieșirile tuturor registrelor voidblank_disable() { setHigh(CONTROL_PORT,BLANK); }
voidinit_74HC595() { DATA_DDR=0xff; CONTROL_DDR=0xff; setHigh(CONTROL_PORT,SCL); setLow(CONTROL_PORT,BLANK); }
//funcția pentru a scrie un singur bit în toate registrele de deplasare voidwrite_bit(uint8_tdata)//8 * 1bit { DATA_PORT=data; SCK_pulse(); }
//funcția pentru trimiterea unui semnal de ceas registrelor de deplasare voidSCK_pulse() { setHigh(CONTROL_PORT,SCK); setLow(CONTROL_PORT,SCK); }
//funcția pentru a scrie 7 biți în toate registrele de deplasare voidwrite_7bits(REG_DATAdata) { uint8_ti; for(i=0;i<7;i++) { write_bit(data.array[i]); } }
//funcția pentru trimiterea unui semnal de ceas registrelor de memorare voidRCK_pulse() { setHigh(CONTROL_PORT,RCK); setLow(CONTROL_PORT,RCK); } //funcția pentru updatarea registrelor de memorare, o vom folosi după introducerea biților în registrele de deplasare voidupdate_storage_reg() { RCK_pulse(); } //funcția pentru ștergerea memoriei registrelor de deplasare voidclear_shift_reg() { setLow(CONTROL_PORT,SCL); 20
//funcția pentru a scrie 8 biți în toate registrele de deplasare voidwrite_byte(REG_DATAdata) { uint8_ti; for(i=0;i<8;i++) { write_bit(data.array[i]); } } Schimbarea jocurilor de lumini se poate realiza prin următoarele două funcții: intread_display() { intdisplay; intx,y,z,t;
if((PINC&(1<<0))) elsex=0;
x=1;
if((PINC&(1<<1))) elsey=0;
y=1;
if((PINC&(1<<2))) elsez=0;
z=1;
if((PINC&(1<<3))) elset=0;
t=1;
display=x+(2*y)+(4*z)+(8*t); if((PINC&(1<<4))==0) returndisplay; else return10; } intcheck_display(intx) { if(read_display()!=x) return1; else return0; } Exemplu de joc de lumini: voidmode_00() { inti,n=8; CUBEx[]={ {0x7f,0x00,0x7f,0x00,0x7f,0x00,0x7f,0xff^0x01}, {0x00,0x7f,0x00,0x7f,0x00,0x7f,0x00,0xff^0x02}, {0x7f,0x00,0x7f,0x00,0x7f,0x00,0x7f,0xff^0x04}, {0x00,0x7f,0x00,0x7f,0x00,0x7f,0x00,0xff^0x08}, {0x7f,0x00,0x7f,0x00,0x7f,0x00,0x7f,0xff^0x10}, {0x00,0x7f,0x00,0x7f,0x00,0x7f,0x00,0xff^0x20}, {0x7f,0x00,0x7f,0x00,0x7f,0x00,0x7f,0xff^0x40}, {0x00,0x7f,0x00,0x7f,0x00,0x7f,0x00,0xff^0x80} }; while(check_display(1)!=1) { for(i=0;i<n;i++) { write_7bits(cube2reg_data(x[i])); update_storage_reg(); _delay_ms(250); } } } Cubul cu LED-uri a fost un proiect interesant de realizat deoarece a necesitat cunoștințe de electronică și programare, răbdare și atenție. Chiar dacă cere destul de multă muncă, spectacolul oferit de jocurile de lumini este pe măsura efortului depus. n
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Minitechnicus, lumea pasionaţilor de electronică
Kit relee controlabile radio cu 2 şi 4 relee Prin intermediul acestor kit-uri cu relee controlabile prin unde radio, se pot realiza diverse acţionări electrice comandate de la distanţă prin telecomandă: pentru porţi, uşi de garaje, jaluzele electrice, panouri de aerisire, alte automatizări. Releele, care au capacitatea de comutare de 24V/5A, funcţionează în 2 moduri: continuu sau puls, programabile independent în funcţie de aplicaţia destinată. Fiecare kit este însoţit de o telecomandă cu 2 sau 4 butoane şi poate controla 2 sau 4 dispozitive (în funcţie de numărul de relee). Pentru fiecare kit vă putem oferi telecomenzi suplimentare.
• • • • • • • • •
Date tehnice: Tensiune de operare: 12V Modulare ASK (Amplitude Shift Keying) Frecvenţa ISM: 433MHz Distanţă aproximativă:100m Temperatura de operare: -20 … 60°C Capacitatea de comutare: 24V/5A Modul de operare: continuu sau puls, programabil dintr-un jumper pentru fiecare releu Dimensiuni (L×W×H): telecomandă - 57×38×13 mm, placă - 86×60×22 mm Accesorii: telecomandă cu 2 butoane şi telecomandă cu 4 butoane
Tel. +40 256-201346 Mail office@oboyle.ro Web www.oboyle.ro 26
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Minitechnicus, lumea pasionaţilor de electronică
Priză cu temporizator digital, Goobay Această priză cu temporizator digital este ideală pentru programarea unor sarcini ca de exemplu închiderea sau deschiderea unor cortine, pornirea sau oprirea acceso-
riilor unui acvariu, închiderea sau deschiderea unor panouri, pornirea sau oprirea unei instalaţii de irigat gradina etc. Se pot desemna sarcini zilnice sau săptămânale.
Afişajul digital facilitează programarea prizei în 16 combinaţii diferite de programe. Priza suportă o putere maximă de 3500W/16A.
Tel. +40 256-201346 Mail office@oboyle.ro Web www.oboyle.ro 27
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
Am avut la începutul verii ocazia să îmi cadă în mână o maşinuţă tare simpatică, ZenWheels Micro Car de la Plantraco. Seamănă cu o jucărie pentru copii, o găseşti în diferite culori şi poate fi controlată printr-o aplicaţie Android gratuită direct de pe telefon sau tabletă. Pe jumătate în joacă, pe jumătate serios (ca task pentru Şcoala de Vară din cadrul laboratorului Robolab, Facultatea de Automatică şi Calculatoare la care am participat), am scris propria mea aplicaţie Android pentru a mă juca cu maşinuţa.
Autor: Georgiana Diana Ciocîrdel - georgiana_diana.ciocirdel@cti.pub.ro Maşinuţa celor de la ZenWheels măsoară în lungime 5cm şi jumătate, iar în înălţime are aproximativ 2cm şi jumătate. Am ataşat articolului o poză cu “organele interne” ale maşinuţei. Pentru alimentare, se foloseşte o baterie LiPo, astfel încât, pentru 30 de minute de încărcare cu ajutorul unui cablu micro USB, profităm în medie cam de 30-40 de minute de joacă. Şi ce mai joacă … pe lângă condusul propriu-zis şi încercarea de a parca lateral cu spatele (nici în viaţa reală nu îmi iese prea bine, ce-i drept), maşinuţa beneficiază de faruri (faza lungă şi faza scurtă), sirenă (cu 3 melodii diferite), semnalizator pe fiecare parte, avarii şi (o, da!) claxonează! Lăsând la o parte stilul colocvial, care face articolul să sune ca o reclamă (off topic, maşinuţa costă doar 89.99$ - un chilipir, nu?), trebuie să adaug şi câteva detalii tehnice. Maşinuţa poate fi controlată prin Bluetooth. După cum se observă şi în schemă, jucăria dispune de un modul de Bluetooth de la Microchip, RN42N-APL. Comunicarea se realizează destul de simplu între piesa în cauză şi orice dispozitiv ce conţine, la rândul său, un modul de Bluetooth, prin portul serial. Astfel, fiecare “acţiune” a maşinuţei 34
este reprezentată printr-un cod de patru octeţi, înregistrat de modulul de Bluetooth. Decodificarea se realizează cu microcontrolerul PIC24H de la Microchip. Aplicatia Android pe care am scris-o pentru maşinuţă este realizată în Java şi se bazează pe un model pus la dispoziţie de
kit-ul de dezvoltare al celor de la Android (BluetoothChat). Aplicaţia se poate folosi, deci, pentru orice dispozitiv ce rulează Android (minimum API level 8). Aplicaţia execută următorii paşi: 0) Pentru a realiza transmisia de date între telefon/tabletă şi maşinuţă, trebuie mai întâi ca dispozitivul Android şi modulul Bluetooth al maşinuţei să se afle în starea paired. 1) În momentul deschiderii, este identificat modulul Bluetooth de bază al dispozitivului pe care se rulează aplicaţia. Codul Java instanţiază un obiect al clasei Bluetooth Adapter, pe care îl foloseşte ulterior pe tot parcursul programului. În cazul în care modulul de Bluetooth al aparatului nu este pornit, codul are grijă să rezolve problema. 2) Următorul pas în realizarea conexiunii este deschiderea unui socket de Bluetooth între dispozitiv şi modulul Bluetooth al maşinuţei, folosind UUID-ul celui din urmă. UUID se traduce prin Universally Unique Identifier, un identificator de 128 biţi, cu şanse extrem de mari să fie unic în raza de acţiune a transmisiilor Bluetooth de care vorbim aici şi care ne garantează că mesajul de 4 octeţi pe care îl
ZENWHEELS MICRO CAR vom transmite prin acest socket va fi recepţionat şi interpretat doar de maşinuţa noastră. Protocolul ce va fi folosit la “schimbul” de date este RFCOMM, un port virtual pentru transport binar serial de date. 3) Am deschis socket-ul, deci totul este perfect. Acum putem să începem să transmitem ce date dorim.
Cred că este momentul să detaliez un pic aceste semnale de 32 de biţi despre care am tot pomenit. Maşinuţa poate realiza o groază de nebunii, să vireze, să claxoneze, să meargă faţă-spate, cu viteză mai mare sau mai mică, în funcţie de ce i se transmite prin socket. Să zicem că aş vrea să merg înainte. Pentru aceasta, am la dispoziţie 64 de viteze, codate în hexazecimal, între 0x8200 şi 0x823F. Transmiţând unul dintre aceste coduri prin Bluetooth, voi obţine mişcarea spre înainte a maşinuţei. Ceea ce deosebeşte aplicaţia mea de cea “clasică” este faptul că eu am abordat metoda tilting pentru a determina mişcarea faţă/spate sau virarea stânga/dreapta a maşinuţei. Pentru aceasta, am folosit senzorii de tip TYPE_ACCELEROMETER ai telefonului/tabletei. Accelerometrul dispozitivului Android va descompune pe cele trei axe, Ox, Oy şi Oz vectorul acceleraţie gravitaţională, în funcţie de orientarea dispozitivului în mâna mea. După nenumărate teste, am decis să folosesc valorile de pe axa Ox pentru viteze (am considerat toate cele 64 de viteze faţă şi cele 64 de viteze spate ca un singur vector de viteze) şi Oy pentru viraje (similar ca şi la viteze, vectorul de
Electronica Azi HOBBY • Octombrie, 2013 • Nr. 5
viraje conţine 128 de poziţii). Să nu uităm, că telefonul trebuie ţinut în poziţie orizontală în tot acest timp (am considerat că aşa ar fi şi normal pentru un joc). Ca să nu mai lungesc vorba, am ataşat o bucată din codul folosit pentru înaintarea sau retragerea maşinuţei:
având grijă să deschid un nou Thread de fiecare dată când se doreşte semnalizarea sau pornirea avariilor. Claxonul rămâne cel mai amuzant, totuşi.
if(- INIT_Y + yValue > 0) { steer = (int) Math.min((- INIT_Y + yValue) * 12.4, codes.STEER_RIGHT.length - 1); byte[] send = ByteBuffer.allocate(4).putInt (codes.STEER_RIGHT[steer]).array(); mBtSS.write(send); } else { steer = (int) Math.min(Math.abs(- INIT_Y + yValue) * 12.4, codes.STEER_LEFT.length - 1); byte[] send = ByteBuffer.allocate(4).putInt (codes.STEER_LEFT[steer]).array(); mBtSS.write(send); }
Similar, se pot transmite şi coduri pentru ca maşinuţa să claxoneze, să îşi aprindă farurile sau să semnalizeze avariile. De precizat faptul că, în cazul avariei sau semnalizării (“în cazul schimbării direcţiei de deplasare a automobilului”, citând codul rutier), este necesară
iniţierea unui nou Thread, pentru a nu ne suprapune cu user interface, în Runnable-ul căruia vom transmite la distanţe egale de 0.4 secunde codurile pentru aprinderea LEDurilor pe faţă şi pe spate, după care codurile pentru stingerea lor. E simplu, nu? Ce mi se pare, ca sa zic aşa, marveilleux, este faptul că maşinuţa poate fi controlată cu orice dispozitiv cu modul Bluetooth şi prin orice limbaj de programare ce deţine un stack de Bluetooth decent. Astfel, am experimentat un pic şi cu Python şi interfaţa Qt direct de pe laptop şi totul a mers formidable. Paşii urmaţi au fost aceiaşi: modulele de Bluetooth ale maşinuţei şi laptopului sunt paired, se deschide un socket de comunicare RFCOMM, se transmite mesajul hexazecimal pentru diverse acţiuni,
Pentru aplicaţii Android, recomand, din nou, modelul propus de kit-ul de dezvoltare, BluetoothChat.
În cazul în care scrierea unei aplicaţii software pentru maşinuţă nu prezintă interes deosebit pentru deţinător, aceasta poate fi folosită şi doar pentru joacă. Ea vine la pachet cu 10 jaloane şi un jeton magnetic care face maşinuţa să claxoneze fericită de fiecare dată când automobilul trece pe deasupra. n Distracţie plăcută! Referinţe: http://zenwheels.com/zenwheels-micro-car22/zenwheels-micro-car-green.html http://www.microchip.com/stellent/idcplg?Id cService=SS_GET_PAGE&nodeId=1406&d DocName=en560432 http://www.rcgroups.com/forums/showthrea d.php?t=1781802 Google Images 35