Chirac Alexandru-Stefan - Ceas cu alarma si stropitor de apa

Introducere

Proiectul meu constă într-un ceas digital cu alarmă, dar cu un mic “twist”: o stropitoare cu apă. Ceasul este dotat cu un recipient care, în momentul declanșării alarmei, nu doar că face zgomot, ci stropește și apă pe fața studentului care refuză să se trezească pentru cursul de la ora 8 dimineața.

Ideea a pornit dintr-o nevoie personală. De-a lungul anilor, am observat că alarmele clasice nu mai au efect asupra mea – le pot ignora cu ușurință chiar și la volum maxim. Am încercat și ceasuri digitale performante, care reușeau să trezească toată casa, dar nu și pe mine. Așa mi-a venit ideea unui dispozitiv care să mă stropească cu apă – o metodă mult mai eficientă de a mă trezi dimineața decât sunetele stridente ale unei alarme.

Consider că acest proiect este cu adevărat util. Cunosc numeroase persoane care au ratat evenimente importante pentru că nu s-au putut trezi la timp. Un astfel de dispozitiv ar putea preveni aceste situații cu succes.

Descriere generală

Ceasul afiseaza in timp real ora curenta pe ecran. In momentul apasarii butonului i se permite utilizatorului introducerea orei la care doreste sa se declanseze alarma. Cand aceasta se declanseaza, buzzerul incepe sa sune timp de un minut, iar spray-ul incepe sa arunce cu apa, fiind declansat de servomotor.

Hardware Design

Piese:

  • ARDUINO UNO
  • Tastatura Matriceala
  • Modul Neo 6M
  • Buton
  • ecran LCD
  • servomotor
  • buzzer

Software Design

Mediu de dezvoltare: Arduino IDE
Librarii si surse 3rd-party:
  1. LiquidCrystal_I2C: Utilizata in comunicarea cu ecranul LCD
  1. Keypad: Utilizata pentru folosirea tastaturii matriceale
  1. SoftwareSerial, TinyGPSPlus: Utilizate pentru folosirea modulului de GPS NEO-6M
Algoritmi:
  1. Configurare GPS, LCD, timere, intreruperi, tastatura matriciala
  2. Functionalitate principala: Afisare ora curenta
  3. Rutina de intrerupere: Se seteaza un flag ce pune ceasul in modul de introducere alarma
  4. Modul de introducere alarma: Asteapta ora si minutul activarii alarmei, pe care le stocheaza in memorie
  5. Modul alarma: Actioneaza buzzerul si servoul
Functii implementate:
  1. startBuzzerPWM(): activeaza pinul 11 ca output si seteaza frecventa buzzerului la 8kHZ
    void startBuzzerPWM() {
      DDRB |= (1 << PB3);
    
      TCCR2A = (1 << COM2A0) | (1 << WGM21) | (1 << WGM20);
      TCCR2B = (1 << WGM22) | (1 << CS21);
    
      OCR2A = 249;
    }
  2. stopBuzzerPWM(): dezactiveaza buzzerul
    void stopBuzzerPWM() {
      TCCR2A = 0;
      TCCR2B = 0;
      PORTB &= ~(1 << PB3);
    }
  3. setupInterrupt(): activeaza pinul 3 si intreruperea INT1 pe Falling Edge
    void setupInterrupt() {
      DDRD &= ~(1 << PD3);
      PORTD |= (1 << PD3); 
    
      EICRA |= (1 << ISC11);
      EIMSK |= (1 << INT1);
    }
  4. setupServo(): activeaza pinul 10 si timerul 2 cu prescaler de 8
    void setupServo() {
      DDRB |= (1 << PB2);
    
      TCCR1A = 0;
      TCCR1B = 0;
      TCNT1 = 0;
      TCCR1A |= (1 << COM1B1) | (1 << WGM11);
      TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11);
      ICR1 = 40000;
    
      OCR1B = 5000;
    }
  5. Rutina de intrerupere: seteaza un flag pe true, care activeaza modul de introducere alarma
    ISR(INT1_vect) {
      unsigned long t = millis();
      if (t - lastInterruptTime > 300) {
        buttonPressed = true;
        lastInterruptTime = t;
      }
    }
  6. loop(): functia principala care se ocupa de afisarea timpului in modul normal
  7. setAlarm(): functia ce asteapta ora alarmei si o retine in memorie
  8. triggerAlarm(): functia ce activeaza buzzerul si servoul

Rezultate Obţinute

Concluzii

Proiectul a fost finalizat cu succes. Se afla intr-o forma functionala cu precizarea ca, din cauza limitarilor modulului de GPS, in spatii inchise acesta nu poate capta ora curenta, ducand la un behaviour nefavorabil: nu se mai face sincronizarea cu UTC si ora ramane blocata la 03:00.

Download

Bibliografie/Resurse

pm/prj2025/vstoica/alexandru.chirac.txt · Last modified: 2025/05/30 05:35 by alexandru.chirac
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0