This shows you the differences between two versions of the page.
pm:prj2023:ndrogeanu:rfidbasedalarmclock [2023/05/15 11:52] lavinia.barbu1512 [Introducere] |
pm:prj2023:ndrogeanu:rfidbasedalarmclock [2023/05/30 11:30] (current) lavinia.barbu1512 [Software Design] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 💤 Alarm Clock based on RFID 💤 ====== | + | ====== 💤 Alarma de ceas cu sistem RFID 💤 ====== |
Nume : //Barbu Lavinia-Mihaela//\\ | Nume : //Barbu Lavinia-Mihaela//\\ | ||
Grupă : //334CC// | Grupă : //334CC// | ||
Line 5: | Line 5: | ||
<note> | <note> | ||
- | Proiectul constă în implementarea unui sistem de alarmă de ceas bazat pe un sistem de închidere RFID. Scopul sistemului este de a oferi o modalitate simplă și sigură de a vă trezi la timp dimineața și de a vă ajuta să vă odihniți bine în timpul nopții și de a oferi utilizatorului un ceas cu alarmă util și atractiv, care să permită personalizarea alarmei în funcție de preferințe. Ideea a pornit de la nevoia de a avea un sistem de alarmă inteligent care să ofere mai mult decât un simplu sunet de alarmă obișnuit. Sistemul oferă o gamă largă de caracteristici personalizabile, precum setarea timpului de somn și a tonului de alarmă, toate controlate de la distanță cu ajutorul unei telecomenzi. Cred că sistemul de alarmă cu închidere RFID este util pentru toți cei care doresc să se trezească odihniți și să aibă un început de zi bun. Acesta oferă o soluție convenabilă și sigură pentru a vă trezi dimineața. | + | Proiectul constă în implementarea unui sistem de alarmă de ceas bazat pe un sistem de închidere RFID. Scopul sistemului este de a oferi o modalitate simplă și sigură de a vă trezi la timp dimineața și de a vă ajuta să vă odihniți bine în timpul nopții și de a oferi utilizatorului un ceas cu alarmă util și atractiv, care să permită personalizarea alarmei în funcție de preferințe. |
+ | |||
+ | Ideea a pornit de la nevoia de a avea un sistem de alarmă inteligent care să ofere mai mult decât un simplu sunet de alarmă obișnuit. Sistemul oferă o gamă largă de caracteristici personalizabile, precum setarea timpului de somn și a tonului de alarmă, toate controlate de la distanță cu ajutorul unei telecomenzi. Cred că sistemul de alarmă cu închidere RFID este util pentru toți cei care doresc să se trezească odihniți și să aibă un început de zi bun. Acesta oferă o soluție convenabilă și sigură pentru a vă trezi dimineața. | ||
</note> | </note> | ||
Line 11: | Line 13: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Sistemul pornește în momentul în care modulul IR primește semnalul de la telecomanda și setează timpul de somn. Dat fiind faptul ca sistemul folosește un display cu 4 cifre și 7 segmente timpul setat poate fi reprezentat de ore și minute sau de minute și secunde. O dată ce timpul a fost setat începe să numere invers timpul de somn și afișează timpul rămas pe display. După ce timpul ajunge la 0, sistemul începe a reda o melodie aleasă de utilizator și LED-urile încep să lumineze. Pentru a opri melodia, utilizatorul trebuie să plaseze cardul RFID pe cititor, astfel încât fiind detectat cardul, sistemul să oprească soneria. | + | <note tip> |
+ | Sistemul pornește în momentul în care modulul IR primește semnalul de la telecomanda și setează timpul de somn. Dat fiind faptul ca sistemul folosește un display cu 4 cifre și 7 segmente timpul setat poate fi reprezentat de ore și minute sau de minute și secunde. Afișajul începe inițial cu 4 liniuțe ( — —: — — ). Pe măsură ce setați ora folosind telecomanda IR, puteți vedea numerele afișate unul câte unul. O dată ce timpul a fost setat începe să numere invers timpul de somn și afișează timpul rămas pe display. Acest lucru ajută când vă treziți în miezul nopții și doriți să știți câte ore mai aveți de dormit. Știu cât de mult contează acele câteva minute în plus. 😉 După ce timpul ajunge la 0, sistemul începe a reda o melodie aleasă de utilizator. În plus, există 3 LED-uri care clipesc la tonul melodiei. Acest lucru ajută la localizarea poziției modulului RFID necesară pentru a opri soneria. Utilizatorul trebuie să plaseze cardul RFID pe cititor, astfel încât fiind detectat cardul, sistemul să oprească soneria. | ||
+ | </note> | ||
{{:pm:prj2023:ndrogeanu:schema_bloc_alarma.drawio.png?400|}} | {{:pm:prj2023:ndrogeanu:schema_bloc_alarma.drawio.png?400|}} | ||
Line 20: | Line 24: | ||
**Lista componentelor:** | **Lista componentelor:** | ||
- | * Arduino UNO R3 ATM328p | + | * Arduino ATmega2560 |
* Sistem RFID | * Sistem RFID | ||
* Telecomanda IR | * Telecomanda IR | ||
Line 29: | Line 33: | ||
* Display de 4 cifre pe 7 segmente | * Display de 4 cifre pe 7 segmente | ||
* Breadboard | * Breadboard | ||
+ | * Tranzistoare 2N2222 | ||
+ | * Rezistente 220Ω | ||
+ | |||
+ | === Schema electrica === | ||
+ | |||
+ | {{ :pm:prj2023:ndrogeanu:schema-electrica-alarma.png.jpg?400 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 35: | Line 45: | ||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * **mediu de dezvoltare**: Arduino IDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * **librării**: |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * SPI.h: pentru comunicarea utilizând protocolul de comunicație serială sincronă SPI |
- | * (etapa 3) surse şi funcţii implementate | + | * MFRC522.h: pentru a interacționa cu modulul RFID bazat pe cipul MFRC522 |
+ | * IRremote.h: pentru a controla dispozitivele infraroșu (IR Receiver & Remote) | ||
+ | * **Schemă bloc**: diagrams.net | ||
+ | * **Design circuit**: TinkerCad | ||
</note> | </note> | ||
+ | |||
+ | Codul a fost realizat astfel: | ||
+ | |||
+ | **Definiții**: | ||
+ | |||
+ | Diverse note muzicale sunt definite cu valorile lor de frecvență corespunzătoare pentru redarea melodiei Mario. | ||
+ | Sunt definiti pini pentru cititorul RFID, buzzerul pasiv, afișajul cu 7 segmente și receptorul IR. | ||
+ | |||
+ | **Variabile globale**: Variabile pentru stocarea timpului de alarmă, timpului curent, vitezei melodiei, luminozității afișajului, etc. | ||
+ | |||
+ | **Funcția de setup()**: | ||
+ | |||
+ | * Inițializează comunicarea serială, busul SPI, cititorul RFID MFRC522 și receptorul IR. | ||
+ | * Setează modurile de pin pentru buzzer, indicatorul LED, afișajul cu 7 segmente și pini de cifre. | ||
+ | |||
+ | **Funcția de loop()**: | ||
+ | |||
+ | * Afișează timpul de alarmă setat pe afișajul cu 7 segmente. | ||
+ | * Ascultă semnalele IR folosind receptorul IR pentru a seta timpul de alarmă. | ||
+ | * Când butonul "power" de pe telecomanda IR este apăsat, setează timpul de alarmă în funcție de semnalul IR primit. | ||
+ | * Când butonul "stop" de pe telecomanda IR este apăsat, pornește numărătoarea inversă a alarmei. | ||
+ | * În interiorul buclei de numărătoare inversă a alarmei, verifică dacă timpul a expirat sau dacă cititorul RFID detectează o carte. | ||
+ | * Dacă timpul a expirat, redă melodia temei Mario folosind buzzerul pasiv. | ||
+ | * Dacă cititorul RFID detectează o carte, întrerupe numărătoarea inversă a alarmei până când cartea este îndepărtată. | ||
+ | |||
+ | **Funcții ajutătoare**: | ||
+ | |||
+ | * translateIR() - Traduce semnalul IR primit într-o funcție specifică. | ||
+ | * Display() și Display_once() - Funcții pentru afișarea valorilor de timp pe afișajul cu 7 segmente. | ||
+ | * timeToNum() - Converteste orele și minutele într-un număr de 4 cifre în scopuri de afișare. | ||
+ | * convert() - Converteste cifrele individuale din semnalul IR în valorile lor întregi corespunzătoare. | ||
+ | * buzz() - Redă o notă muzicală specifică pe buzzerul pasiv pentru o durată dată. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{:pm:prj2023:ndrogeanu:whatsapp_image_2023-05-29_at_22.46.47.jpeg?300|}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2023:ndrogeanu:whatsapp_image_2023-05-29_at_22.46.46_1_.jpeg?500|}} |
- | </note> | + | {{:pm:prj2023:ndrogeanu:whatsapp_image_2023-05-29_at_22.46.47_1_.jpeg?300|}} |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost un proiect interesant de unde am invatat foarte multe lucruri. Sunt extrem de încântată că proiectul a atins obiectivele pe care mi le-am propus de la bun început. În plus, am dobândit mult mai multă experiență cu mediul de dezvoltare Arduino. ^_^ | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | În arhiva atașată se poate găsi și un demo. 8-) |
- | + | {{:pm:prj2023:ndrogeanu:alarmadeceas.zip|}} | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
</note> | </note> | ||
Line 60: | Line 105: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | - 22.04.2023 - Stabilirea temei proiectului |
+ | - 30.04.2023 - Comandarea componentelor | ||
+ | - 07.05.2023 - Completare milestone 1 | ||
+ | - 21.05.2023 - Adaugare schema electrica | ||
+ | - 28.05.2023 - Completare parte de software + Finalizare pagina wiki | ||
</note> | </note> | ||
Line 66: | Line 115: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | https://www.instructables.com/Interfacing-RFID-RC522-With-Arduino-MEGA-a-Simple-/ |
+ | https://www.circuitbasics.com/arduino-7-segment-display-tutorial/ | ||
+ | http://www.handsontec.com/dataspecs/RC522.pdf | ||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |