This shows you the differences between two versions of the page.
pm:prj2023:ndrogeanu:rfidbasedalarmclock [2023/05/15 11:59] 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 14: | Line 14: | ||
<note tip> | <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. 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. | + | 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> | </note> | ||
Line 24: | Line 24: | ||
**Lista componentelor:** | **Lista componentelor:** | ||
- | * Arduino UNO R3 ATM328p | + | * Arduino ATmega2560 |
* Sistem RFID | * Sistem RFID | ||
* Telecomanda IR | * Telecomanda IR | ||
Line 33: | 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 39: | 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 64: | 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 70: | 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> |