Cristi-Alexandru VASILE - Bluetooth controlled mood lamp

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in implementarea unui dispozitiv de tip mood lamp (lampa multicolora cu 16 milioane de culori) ce poate fi comandat prin Bluetooth prin intermediul aplicatiei Android MyLamp. Acesta dispune de mai multe moduri de functionare (selectare culoare, joc de culori, fade, strobe, etc.) Scopul acestuia este unul atat estetic cat si recreativ, facilitand schimbarea luminii ambientale.

Descriere generală

  • Schema bloc

?nolink&500

Utilizatorul se conecteaza la lampa prin intermediul unei aplicatii Android si a modulului Bluetooth HC-05. Comenzile se dau deci pe interfata seriala apoi se aprinde modulul LED RGB din microcontroller dupa cum este comandat.

Hardware Design

Lista materialelor
Componenta Cantitate Distribuitor Pret/bucata (lei) Total (lei)
Componente alimentare 12V 1 Comet - 6.68
Modul Bluetooth HC-05 1 Optimus Digital 30 30
Rezistente (diverse valori) 400 Optimus Digital - 15
Tranzistoare NPN capabile sa conduca 500mA 4 Optimus Digital 0.95 3.8
Fire mama – mama 20 cm 40 Optimus Digital - 19.5
Bareta de 40 pini tata 1 Optimus Digital 0.99 0.99
Placa de test 1 Optimus Digital 6.95 6.95
LED RGBW 3W 1 Comet 42 42
Total: 128.92

Schema electrica:

Cablaj final:

O problema pe care am intalnit-o a fost incercarea de a modifica baud rate-ul cu care transmite modului HC-05 serial. Acest lucru l-am facut printr-un Arduino, folositu-ma de tutorialul de la [4]. Deoarece acesta era setat pe 9600 bps, comenzile nu erau transmise indeajuns de rapid la microcontroller si se putea observa un lag la schimbarea foarte rapida a culorilor. Cand a trebuit sa modific baud rate-ul, am observat cu o oarecare stupoare ca HC-05 si ATmega324 nu au foarte multe valori comune (poate 4), si a trebuit sa o gasesc pe cea mai mare comuna dintre cele 4.

Software Design

Proiectul a fost scris in Sublime Text si compilat cu ajutorul compilatorului avr-g++. La partea de microcontroller, ATmega324 primeste comenzi pe interfata seriala de la Dispozitivul cu Android (via modulul Bluetooth) si le interpreteaza:

  • red[x] - seteaza intensitatea LED-ului rosu la valoarea [x]
  • green[x] - seteaza intensitatea LED-ului verde la valoarea [x]
  • blue[x] - seteaza intensitatea LED-ului albastru la valoarea [x]
  • rgb[x][y][z] - seteaza valorile ledurilor rosu, verde si albastru la valorile [x], [y] si [z]
  • white - schimba starea LED-ului alb (ON/OFF)
  • chill[x][y][z][t] - seteaza mod-ul chill, in care microcontroller-ul primeste un seed ([x]) si o culoare ([y][z][t]) si genreaza cu acel seed culori catre care converge incet, pentru a genera un efect placut de gradient

Implementarea primirii de comenzi se face folosind intreruperea de primire a USART0 de pe ATmega324 iar aprinderea LED-urilor se face folosind timerele t0 si t2 (pe 8 biti), pe canalele OC0A, OC0B si OC2A.

La partea de aplicatie Android, am folosit Holo ColorPicker. Acesta accepta un obiect de tip OnColorChangeListener care este notificat in momentul schimbarii culorii si se face un callback care trimite culoarea in formatul precizat mai sus catre microcontroller. Alte facilitati sunt modificarea intensitatii culorii curente prin bar-ul atasat, sau trecerea in modul Bulb(lumina alba) sau chill (joc lent de lumini).

Rezultate Obţinute

Proiectul este functional, am adaugat acestuia chiar mai multe functionalitati decat speram initial. Am intampinat probleme cu LED-urile pentru ca nu erau indeajuns de puternice, insa in final totul a fost ok.

Am obtinut asa cum am precizat in descriere un dispozitiv decorativ, foarte usor de folosit prin aplicatia atasata care creaza o ambianta placuta intr-o camera de zi. Acesta poate fi folosit atat ca un Mood Lamp cat si ca o veioza obisnuita ce ofera lumina alba.

Concluzii

Putem interfata foarte usor dispozitive embedded prin stabilirea unui protocol coerent de comunicatie si a unui set de comenzi. Nu am intampinat probleme la implementarea software, mi s-a parut chiar foarte interesant si nu am avut set-back-uri majore (singura problema am avut-o cu circuitul cu LED-urile RGBW dar s-a rezolvat usor in final). De asemena am mai intampinat bug-uri in programarea microcontroller-ului, care diminuau intensitatea LED-urilor.

Download

mylamp.zip - Codul de pe ATmega + proiectul in Android Studio

mylamp_android_apk.zip - Aplicatia MyLamp

Bibliografie/Resurse

pm/prj2016/avoinescu/mood-lamp-bluetooth.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0