This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:bianca.scirtocea [2025/05/20 16:07] bianca.scirtocea [Software Design] |
pm:prj2025:rnedelcu:bianca.scirtocea [2025/05/27 22:53] (current) bianca.scirtocea [Hardware Design] |
||
---|---|---|---|
Line 85: | Line 85: | ||
!!! In cadrul schemei am folosit o baterie pentru alimentare, iar proiectul momentan este alimentat prin intermediul laptopului. | !!! In cadrul schemei am folosit o baterie pentru alimentare, iar proiectul momentan este alimentat prin intermediul laptopului. | ||
+ | |||
+ | |||
+ | **Proiectul cu tot cu carcasa** | ||
+ | |||
+ | {{:pm:prj2025:rnedelcu:b.jpeg?300|}} | ||
Line 99: | Line 104: | ||
- DHT.h - Pentru lucrul cu senzorul DHT22 (temperatură și umiditate). | - DHT.h - Pentru lucrul cu senzorul DHT22 (temperatură și umiditate). | ||
- | ****Algoritmi și structuri implementate** | + | **Algoritmi și structuri implementate** |
- | - ** Afișare oră, dată, temperatură ** | + | |
- | - - Se utilizează modulul RTC (rtc.now()). | + | - ** Afișare oră, dată, temperatură ** |
+ | - Se utilizează modulul RTC (rtc.now()). | ||
- Se afișează în format 12h sau 24h, configurabil. | - Se afișează în format 12h sau 24h, configurabil. | ||
- | - Afișare temperatură obținută de la DHT22. | + | - Afișare temperatură obținută de la DHT22. |
- | | + | - ** Moduri de operare prin buton multifuncțional (buttonModeAlarmPin) ** - Toggle între moduri: |
- | - ** Moduri de operare prin buton multifuncțional (buttonModeAlarmPin) ** - Toggle între moduri: | + | - Modul normal |
- | - Modul normal | + | - Modul de setare alarmă |
- | - Modul de setare alarmă | + | - Modul de setare dată |
- | - Modul de setare dată | + | - Comutare între 12h și 24h |
- | - Comutare între 12h și 24h | + | - ** Setarea orei și alarmei cu 3 butoane separate:** |
- | + | - buttonHourPin – modifică ora | |
- | - ** Setarea orei și alarmei cu 3 butoane separate:** | + | - buttonMinutePin – modifică minutul |
- | - buttonHourPin – modifică ora | + | - buttonSecondPin – modifică secunda |
- | - buttonMinutePin – modifică minutul | + | - ** Verificare alarmă (checkAlarm())** |
- | - buttonSecondPin – modifică secunda | + | - Compară ora actuală cu valorile setate. |
+ | - Dacă sunt egale și alarma este activată → se pornește o melodie și un LED. | ||
+ | - ** Alarma** | ||
+ | - Redă o melodie aleatorie din 3 variante (Twinkle Star, Happy Birthday, Jingle Bells). | ||
+ | - Se folosește tone() pe pinul buzzer. | ||
+ | - LED-ul pentru alarmă clipește sincron cu notele. | ||
+ | - Se poate opri manual cu un buton. | ||
+ | - ** Setarea datei** | ||
+ | * Se pot incrementa ziua, luna și anul, ținând cont de numărul de zile în lună și anii bisecți. | ||
+ | - ** Anti-rebound pentru butoane** | ||
+ | * Se folosește un algoritm simplu de debounce bazat pe millis() și un delay de 200ms. | ||
- | - ** Verificare alarmă (checkAlarm())** | ||
- | • Compară ora actuală cu valorile setate. | ||
- | • Dacă sunt egale și alarma este activată → se pornește o melodie și un LED. | ||
- | - ** Alarma** | ||
- | • Redă o melodie aleatorie din 3 variante (Twinkle Star, Happy Birthday, Jingle Bells). | ||
- | • Se folosește tone() pe pinul buzzer. | ||
- | • LED-ul pentru alarmă clipește sincron cu notele. | ||
- | • Se poate opri manual cu un buton. | ||
- | - ** Setarea datei** | ||
- | - Se pot incrementa ziua, luna și anul, ținând cont de numărul de zile în lună și anii bisecți. | ||
- | - ** Anti-rebound pentru butoane** | + | **STRUCTURA GENERALĂ A CODULUI** |
- | Se folosește un algoritm simplu de debounce bazat pe millis() și un delay de 200ms. | + | |
+ | Firmware-ul este structurat astfel: | ||
+ | * Inițializare componente hardware și variabile globale | ||
+ | * Loop principal (loop()): gestionează modurile de funcționare | ||
+ | * Funcții de afișare (LCD) | ||
+ | * Funcții pentru setarea timpului/datei/alarmei | ||
+ | * Funcții pentru alarmă (sunet și LED) | ||
+ | * Funcții auxiliare (conversii, formate, ani bisecți etc.) | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | În urma implementării proiectului, am obținut un sistem funcțional care îndeplinește următoarele cerințe: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | 🔹 Afișarea corectă a orei, datei și temperaturii pe un ecran LCD 16x2 cu interfață I2C; |
+ | |||
+ | 🔹 Comutare între format 12h și 24h pentru ora afișată; | ||
+ | |||
+ | 🔹 Setare manuală a datei și a alarmei folosind 4 butoane; | ||
+ | |||
+ | 🔹 Alarmă activă cu melodii aleatorii redată printr-un buzzer și semnalizată vizual printr-un LED; | ||
+ | |||
+ | 🔹 Funcție de oprire a alarmei prin apăsarea unui buton dedicat; | ||
+ | |||
+ | 🔹 Feedback vizual pe ecran pentru fiecare mod de funcționare, inclusiv modul de setare a alarmei și datei; | ||
+ | |||
+ | 🔹 Implementarea corectă a debounce-ului software pentru a preveni multiple declanșări false ale butoanelor; | ||
+ | |||
+ | 🔹 Trecerea automată între moduri (afișare, setare alarmă, setare dată) printr-un buton multifuncțional. | ||
+ | |||
+ | |||
+ | |||
+ | Link videoclip youtube: | ||
+ | |||
+ | https://youtube.com/shorts/8U7rqjtlfug?si=eXz-076XvNCoucfd | ||
+ | |||
+ | (In cadrul acestui videoclip, proiectul nu se afla la varianta lui finala, intre timp am modificat modalitatea de a suna a buzzerului. I-am adăugat acestuia posibilitatea de a suna cu una din trei melodii alese de mine pe frecvente, frecvente care se transmit și către led astfel încât să clipească concomitent cu ritmul melodiei. ) | ||
+ | |||
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 150: | Line 189: | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | 🔹 Configurare inițială |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | Am început cu conectarea componentelor principale: modulul RTC DS3231, senzorul de temperatură DHT22, LCD-ul I2C și butoanele. Am întâmpinat dificultăți în conectarea firelor pe breadboard – unele jumpere nu făceau contact corect, iar alimentarea era instabilă. A fost nevoie să schimb mai multe fire pentru a obține conexiuni stabile. |
- | </note> | + | |
- | ===== Bibliografie/Resurse ===== | + | 🔹 Probleme hardware neașteptate |
+ | Am ars un LED (care semnala activarea alarmei) deoarece l-am conectat fără rezistență de limitare. A fost o lecție bună privind protejarea componentelor și calculul corect al curentului. Am înlocuit componenta și am inclus un rezistor de 220Ω. | ||
- | <note> | + | 🔹 Debugging RTC |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | Inițial, ora nu se seta corect. După mai multe încercări de a regla ora din cod, am descoperit că bateria de backup de pe modulul RTC era descărcată. După ce am înlocuit-o, modulul a început să rețină corect ora și data, chiar și după resetări. |
- | </note> | + | |
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | 🔹 Implementare alarmă și testarea sunetului |
+ | Am integrat partea de alarmă și redare melodii. A fost o provocare sincronizarea buzzerului cu LED-ul și testarea fără a deranja vecinii. De asemenea, m-am asigurat că oprirea alarmei funcționează fiabil – adăugând debounce corect pentru buton. | ||
+ | |||
+ | 🔹 Finalizare și testare completă | ||
+ | Am testat toate scenariile: schimbarea orei, comutare 12h/24h, afișare temperatură, setarea și declanșarea alarmei. Toate funcțiile au fost verificate și funcționează stabil. Am făcut și un mic stres-test, simulând resetări și reporniri pentru a verifica persistența funcționării RTC-ului. | ||
+ | ===== Bibliografie/Resurse ===== | ||
+ | * https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf | ||
+ | * https://docs.arduino.cc/hardware/uno-rev3/ | ||
+ | * https://github.com/adafruit/RTClib | ||
+ | * https://docs.arduino.cc/libraries/liquidcrystal-i2c/ | ||
+ | * https://github.com/adafruit/DHT-sensor-library | ||
+ | * https://projecthub.arduino.cc/tmekinyan/playing-popular-songs-with-arduino-and-a-buzzer-546f4a |