This is an old revision of the document!
Ceas inteligent cu alarmă și senzori de mediu
Introducere
Proiectul meu constă în realizarea unui ceas electronic multifuncțional care îmi va oferi informații despre ora curentă, data calendaristică, temperatura mediului înconjurător și funcționalitate de alarmă.
Ce face: Afișează ora, data, temperatura, permite setarea orei/datei, a formatului de afișare 12/24 ore și a unei alarme programabile, care alege random dintr-o serie de melodii cum sa sune.
Scop: Crearea unui dispozitiv funcțional, independent, care combină elemente hardware și software pentru a oferi funcționalitățile unui ceas digital modern, demonstrând în același timp capacitatea de integrare a diferitelor tehnologii și protocoale de comunicație.
Ideea de pornire: Totul a început din nevoia de a avea un ceas digital în cameră, dar cu funcționalități extinse.
Utilitate: Acest proiect rezolvă problema dependenței de telefon pentru verificarea orei și a temperaturii. Mulți dintre noi ne uităm la telefon înainte de culcare și dimineața, ceea ce poate afecta somnul și concentrarea. Ceasul meu oferă aceste informații esențiale fără distragerea atenției și tentația de a verifica notificările sau social media. În plus, funcția de alarmă personalizabilă îmbunătățește rutina zilnică, fiind adaptată nevoilor specifice ale utilizatorului, spre deosebire de soluțiile comerciale care oferă opțiuni limitate.
Descriere generală
Funcționalități:
Afișarea și setarea orei
Ora curentă este obținută de la modulul RTC și afișată pe ecranul LCD.
Formatul orei poate fi setat în mod 12 ore (AM/PM) sau 24 ore prin intermediul butoanelor.
Setarea orei se face prin intermediul celor trei butoane.
Afișarea datei și a temperaturii
Data calendaristică este obținută de la modulul RTC și afișată pe ecranul LCD.
Temperatura este citită de la senzorul DHT22 și afișată pe ecranul LCD.
Actualizarea informațiilor se face automat la intervale regulate de timp.
Sistem de alarmă programabil
Setarea alarmei se face prin interfața cu butoane, permițând configurarea orei exacte.
Semnalul sonor este generat de buzzer atunci când ora curentă coincide cu ora alarmei.
Interfață cu utilizatorul
Navigare prin meniuri folosind butoanele pentru setarea diverselor parametri.
Feedback vizual prin intermediul LED-urilor pentru confirmarea acțiunilor.
Laboratoare folosite:
Laboratorul 0 (GPIO) - utilizat pentru configurarea butoanelor și LED-urilor, formând interfața fizică prin care utilizatorul interacționează cu ceasul pentru setarea orei și alarmei.
Laboratorul 2 (Întreruperi) - implementate pentru detectarea apăsărilor butoanelor cu funcționalitate de debounce, asigurând o citire precisă a comenzilor utilizatorului și pentru declanșarea alarmei la momentul programat.
Laboratorul 4 (ADC) - folosit pentru citirea valorilor de la senzorul de temperatură și convertirea lor în valori de temperatură afișabile pe ecran.
Laboratorul 6 (I2C) - utilizat pentru comunicarea cu modulul RTC și cu ecranul LCD I2C, permițând transferul eficient al datelor.
Module Hardware:
Unitate de procesare - Arduino UNO bazat pe microcontrollerul ATmega328p
Afișare - Display LCD cu interfață I2C pentru afișarea informațiilor
Cronometrare precisă - Modul RTC (Real-Time Clock) DS1307 pentru menținerea timpului
Senzori - Senzor de temperatură DHT22 pentru măsurarea parametrilor de mediu
Interfață utilizator - Trei butoane pentru setarea orei, datei și controlul alarmei
Feedback - Buzzer pentru alarmă și LED-uri pentru indicatori vizuali
Alimentare - Baterie/acumulator pentru funcționare independentă
Module Software:
Control display - Gestionarea afișării informațiilor pe LCD
Procesare timp - Citirea și procesarea datelor de la modulul RTC
Interfață utilizator - Interpretarea intrărilor de la butoane și actualizarea stării sistemului
Managementul temperaturii - Citirea și procesarea datelor de la senzorul de temperatură
Sistem alarmă - Gestionarea alarmei programabile
Management energetic - Optimizarea consumului de energie
Interacțiunea între module se realizează astfel:
Microcontrollerul comunică cu RTC și LCD-ul prin protocolul I2C
Senzorii și butoanele sunt interfațate prin pini
Modulul de procesare timp actualizează periodic informațiile afișate pe display
Interfața utilizator interpretează apăsările butoanelor și modifică setările
Sistemul de alarmă verifică continuu ora curentă și declanșează alarma la momentul programat
Schema bloc:
Hardware Design
Listă de componente:
Arduino UNO - Unitatea centrală de procesare
Display LCD I2C (16×2 caractere) - Afișarea informațiilor
Modul RTC - Menținerea timpului precis
Senzor de temperatură - Măsurarea temperaturii ambientale
Buzzer Activ - Sonerie pentru alarmă
Butoane tactile - Interfața utilizator pentru setări
Breadboard
Fire de conexiune - Realizarea conexiunilor
Rezistențe 330Ω - Limitare curent pentru LED-uri
Rezistențe 4.7kΩ - Pull-up pentru butoane
LED-uri cu catod comun (verde, roșu) - Indicatori vizuali
Schema electrica realizata in fusion
Componentele hardware conectate
!!! In cadrul schemei am folosit o baterie pentru alimentare, iar proiectul momentan este alimentat prin intermediul laptopului.
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Mediu de dezvoltare utilizat
Aplicația este scrisă în Arduino C++. Mediul de dezvoltare folosit este Arduino IDE.
Librării și surse third-party utilizate
Aplicația folosește mai multe librării externe:
Wire.h - Comunicație I2C. Folosită pentru a comunica cu modulul RTC și LCD.
RTClib.h - Parte din Adafruit RTClib, pentru lucrul cu modulul RTC DS3231 si permite obținerea și setarea timpului.
LiquidCrystal_I2C.h - Pentru afișaj LCD 16×2 cu interfață I2C si permite afișarea textului fără control direct al pinilor LCD.
DHT.h - Pentru lucrul cu senzorul DHT22 (temperatură și umiditate).
Algoritmi și structuri implementate
* Afișare oră, dată, temperatură
* • Se utilizează modulul RTC (rtc.now()).
* • Se afișează în format 12h sau 24h, configurabil.
* • Afișare temperatură obținută de la DHT22.
* Moduri de operare prin buton multifuncțional (buttonModeAlarmPin) - Toggle între moduri:
- Modul normal
- Modul de setare alarmă
- Modul de setare dată
- Comutare între 12h și 24h
* Setarea orei și alarmei cu 3 butoane separate:
- buttonHourPin – modifică ora
- buttonMinutePin – modifică minutul
- buttonSecondPin – modifică secunda
* 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
Se folosește un algoritm simplu de debounce bazat pe millis() și un delay de 200ms.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF