Autorul poate fi contactat la adresa: Login pentru adresa
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.
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.
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.
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:
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).
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.
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.
mylamp.zip - Codul de pe ATmega + proiectul in Android Studio
mylamp_android_apk.zip - Aplicatia MyLamp