Table of Contents

Danger Detector

Ștefan Laurențiu

Grupa 334CC
Mail: steflaurentiu@gmail.com

Introducere

Proiectul propus constă în implementarea unui sistem ce detectează “pericolul” constituit de obiecte ce se apropie de µC(poate fi extins să detecteze în jurul unui anumit obiect de valoare, conectând evident µC-ul la obiectul dorit), folosind mai multe mecanisme ce vor fi detaliate ulterior pentru a semnala acest lucru.

Ca principală sursă de inspirație în conceperea proiectului a fost un proiect mai ușor de realizat, și anume unul de afișare a distanței obiectului cel mai apropiat de µC, care folosește la bază tot un senzor ultrasonic(exemplu la [1]). De la acela, am găsit un proiect mai interesant și anume Car Parking Sensor System(exemplu la [2]), la care am mai modificat puțin și am obținut ideea pe care o prezint acum.

Descriere generală

Pentru realizarea detecției, voi folosi 4 senzori ultrasonici, fiecare “păzind” una din cele 4 direcții. În funcție de distanța minimă astfel detectată, dacă aceasta este sub 10 cm, se va aprinde un LED galben de avertizare, iar sub 5 cm va începe să scoată un zgomot de alarmă buzzer-ul și LED-ul de pe µC de lângă cel de Power își va alterna starea o dată cu sunetul buzzer-ului.

Schema bloc

De precizat că inițial mi-am dorit să folosesc un număr mare de LED-uri(10), dar în timpul implementării proiectului am observat că scrisul pe LCD se vedea din ce în ce mai șters(scădea curentul care trece prin acesta) cum creștea numărul de LED-uri, și am lăsat doar un LED adițional pentru avertizare, respectiv LED-ul roșu de pe µC pentru alarma de pericol.

Hardware Design

Schema electrică

De menționat că în cadrul schemei electrice am arătat numai modul în care se leagă interfața I2C a LCD-ului cu µC, iar LCD-ul efectiv nu a mai fost desenat întrucât doar intefața acestuia este folosită pentru interfațarea cu circuitul.

Plăcuța este alimentată la 5V întrucât atât senzorii, cât și buzzer-ul pasiv și ecranul LCD se alimentează la această valoare.

Lista de piese

Denumire Cantitate
Kit-ul cu componentele de baza 1
Ecran LCD cu interfață I2C 1
Buzzer pasiv 5V 1
LED 10
Rezistor 1K Ω 10
Senzor Ultrasonic HC-SR04 4
Breadboard HQ (830 points) 1
Cablu Albastru USB AM la BM 1
Fire Colorate Mamă-Mamă (10p) 15 cm 40
Fire Colorate Tată-Tată (10p, 20 cm) 40

Software Design

Mediul de dezvoltare

Din punct de vedere al implementării software al proiectului, pentru dezvoltarea acestuia am folosit sistemul de operare Ubuntu 18 editorul Sublime Text. Pentru compilarea fișierelor sursă am folosit propriul fișier Makefile din linie de comandă. Pentru încărcarea fișierului executabil .hex am folosit executabilul bootloadHID din linie de comandă.

Precizări implementare

Am atașat mai jos o arhivă cu sursele folosite și cu un fișier README în care este descris modul în care am realizat implementare Software a proiectului.

Pentru afișarea pe LCD-ul folosit cu interfață I2C, am folosit o bibliotecă deja implementată și doar am apelat funcțiile necesare(luminare backlight, mutare cursor respectiv afișare string).

Am încercat să mai reduc din codul duplicat asociat senzorilor însă nu am putut abstractiza logica codului folosind de exemplu vectori de 4 elemente având regiștrii asociați fiecărui senzor, deoarece regiștrii nu pot fi accesați decât în mod direct în cod, indicând cel mai probabil un fel de mecanism de Memory Mapped I/O.

Rezultate obținute

Mai jos am atașat un scurt video demonstrativ, respectiv câteva poze cu rezultatul final:


Jurnal

22.04.2019 - Tema proiectului, lista de piese și schema bloc (Milestone 1)
05.05.2019 - Schema electrică (Milestone 3)
17.05.2019 - Începere montare Hardware a circuitului
18.05.2019 - Implementare Software și verificare separată pe componente
19.05.2019 - Montare mare parte din componentele Hardware
22.05.2019 - Finalizare parte Hardware și Software
23.05.2019 - Update schemă electrică, update listă de piese, organizare cod
24.05.2019 - Update wiki(pe 23 a căzut server-ul cs.curs și nu am mai putut modifica seara)

Concluzii

Proiectul a fost unul foarte interesant, unic în felul său având în vedere că toate temele de până acum au fost doar software/pe foaie. Pentru o persoană care nu are cine știe ce cunoștințe de electronică, însă este pasionată și de partea asta mai hardware, mă declar mulțumit cu ceea ce am obținut. Pot spune că am înțeles mai bine multe concepte studiate la acest curs și este foarte posibil să mă mai lovesc în viitor de acestea pe plan profesional.

Totuși, inițial mi-am propus să am mai multe LED-uri care să lumineze în funcție de cât de aproape se află cel mai apropiat obiect. Acest plan a căzut pe parcursul implementării proiectului datorită consumului de curent necesar al LCD-ului și deoarece am considerat că afișarea pe LCD este mai importantă decât aprinderea unor LED-uri.

Recunosc că proiectul obținut nu are cel mai frumos design și se mai putea lucra la asta, cum ar fi ca senzorii să fie fixați sau să îmi organizez tot proiectul pe o placă/cutie, însă nu mă consider foarte priceput la lucrurile practice și am ales calea mai ușoară din punctul asta de vedere. Se poate considera acest aspect ca o posibilă îmbunătățire a proiectului.

Download

Codul sursă, fișierul README și fișierul Makefile:
334cc_stefanlaurentiu_proiectpm.zip

Bibliografie/Resurse

[1]: Distance Measurement System
[2]: Car Parking Sensor System
[3]: Schemă consultată pentru a vedea corespondența între pini și întreruperile pe care le generează + documentație timer
[4]: Datasheet ATmega
[5]: Laboratoare PM

Această pagină în format PDF