Autorul poate fi contactat la adresa: ioanamoraru14@gmail.com
Proiectul presupune realizarea unei semnalizări pentru bicicletă sau trotinetă. Voi folosi un accelerometru pentru a detecta mișcările ghidonului bicicletei într-o anumită direcție și în acel moment matricea de LED-uri va semnaliza direcția de mișcare detectată. În plus, se va aprinde o lumină pentru frână atunci când ghidonul se înclină în față.
Această idee a pornit de la cațiva prieteni care merg des pe bicicletă și au simțit necesitatea unei astfel de semnalizări similară cu cea a autoturismelor pentru a le crește siguranța în trafic.
Accelerometrul va trimite date cu privire la poziție către microcontroller, iar apoi acesta va acționa matricea cu LED-uri. În plus, tot microcontroller-ul va trimite ecranului LCD informații despre direcția de deplasare astfel încât cel care conduce să fie informat asupra a ce se semnalizează. Ecranul va avea rol informativ pentru a ști dacă se semnalizează ceva la acel moment și în caz afirmativ, ce anume.
Lista piese:
Schema electrica
Mediu de dezvoltare: Am scris cod C în editorul de text Visual Studio Code și am creat un Makefile cu care compilez codul pentru placuță.
Bootloader: HID Boot Flash
Biblioteci: biblioteca pentru MAX7219, transcrisa pentru AVR (era pentu Arduino), biblioteca pentru accelerometru MPU6050 și biblioteca pentru LCD din laborator cu mici modificări la conectarea pinilor și aprinderea luminii de background a LCD-ului. Ecranul de la laborator nu avea aceasta lumină.
Modificări Header LCD
// Portul pe care conectam pinii de date ai LCD-ului #define LcdDATA_DDR DDRC #define LcdDATA_PORT PORTC #define LcdDATA_PIN PINC // Pinii de date ai LCD-ului #define LcdD4 PC6 #define LcdD5 PC5 #define LcdD6 PC4 #define LcdD7 PC3 // Portul pe care conectam pinii de control ai LCD-ului #define LcdCTRL_DDR DDRA #define LcdCTRL_PORT PORTA #define LcdCTRL_PIN PINA // Pinii de control ai LCD-ului #define LcdRS PA5 #define LcdRW PA6 #define LcdE PA7
Cu ajutorul bibliotecii pentru accelerometrul MPU6050, microcontrollerul preia datele de la acesta și le încadrează pentru o anumită direcție de mișcare. Această direcție este redată pe ecranul LCD folosind funcțiile din fișierele de la laborator și pe matricea de LED-uri sub forma de săgeți animate. În plus față de biblioteca pentru modulul cu matrice de LED-uri MAX7219, am creat niste funcții care resetează matricea și crează animații pentru săgețile de semnalizare.
Video demonstrativ al proiectului: https://youtu.be/7wavvEmD7z4
Cea mai dificilă parte a proiectului a fost realizarea animației luminoase. Mai întai am încercat să realizez acest lucru folosind un inel de LED-uri RGB WS2812, dar nu am reușit să adaptez biblioteca Arduino FastLED.h pentru a putea fi folosită cu microconrollerul Atmega324A pe care îl are plăcuța mea. Astfel, am înlocuit inelul de LED-uri cu un modul cu matrice de LED-uri MAX7219 cu care mi-a fost mai ușor să realizez partea software.
În final, proiectul a ieșit aproape cum mi-am dorit. Cu siguranță ar putea fi îmbunătățite multe aspecte, dar eu sunt mulțumită de rezultat.
Arhivă moraruioana_bikeblinker.zip
Datasheets:
Biblioteci: