Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:avaduva:ceasalarma [2021/05/19 16:41]
roxana.scurtu
pm:prj2021:avaduva:ceasalarma [2021/06/02 18:03] (current)
roxana.scurtu
Line 1: Line 1:
 https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​ceasalarma https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​ceasalarma
-Autor: Roxana Daniela Scurtu 
  
-==INTRODUCERE==+ 
 +  *Autor: Roxana Daniela Scurtu 
 + 
 +==INTRODUCERE:==
  
 Am ales sa fac un ceas cu alarma bazat pe arduino, folosind si un buzzer(pt alarma -sunet), un display care afiseaza ora, si o baterie (optional). Am ales sa fac un ceas cu alarma bazat pe arduino, folosind si un buzzer(pt alarma -sunet), un display care afiseaza ora, si o baterie (optional).
 Alarma se poate seta prin intermediul unor butoane, iar pe lcd va fi afisata data si ora aleasa pentru alarma. Alarma se poate seta prin intermediul unor butoane, iar pe lcd va fi afisata data si ora aleasa pentru alarma.
 +
 +
 +==DESCRIERE GENERALA:==
 +Atasat la placuta arduino avem un display pe care ni se va afisa ora/data preluate prin intermediul rtc-ului, iar alarma(in cate ore va porni) se va seta prin intermediul celor 4 butoane atasate breadboard-ului.
 +
  
  
 ==COMPONENTE FOLOSITE:== ==COMPONENTE FOLOSITE:==
-  * Arduino UNO  
-  * DS 1307 RTC Module 
-  * 3 butoane ​ 
-  * 3.16X2 LCD Display ​ 
-  * Buzzer ​ 
-  * Rezistente 
-  * Fire de legatura. 
  
 +^ Nume componenta ^ Cantitate ^ Valori ^
 +| Arduino UNO | 1 |  |
 +| DS 1307 RTC Module |1 |   |
 +| Buton  | 4 | | 
 +| 3.16X2 LCD Display | 1|  |
 +| Buzzer pasiv | 1 | 5V | 
 +| Rezistente | 4 | 1K |
 +| Fire mama-tata | 10 |  |
 +| Fire tata-tata | 10 | |
 +
 +
 +
 +
 +Majoritate componentelor au fost achizitionate de pe site-ul : https://​cleste.ro/​
 +Componentele care nu au fost disponibile sau de care nu mi-am dat seama ca am nevoie in momentul plasarii comenzii au fost achizitionate dintr-un magazin fizicde electronice:​ ELWEST Magazin - sector2
 + 
 +==SCHEMA BLOC:==
 +
 +{{:​pm:​prj2021:​avaduva:​blank_diagram.png?​550|}}
 +
 +**Update:
 +N-am mai foosit baterie, cum am decis initial si am conectat prin usb placuta la pc-ul meu 
 +
 + 
 +==SCHEMA ELECTRICA:​==
 +*
 +*
 +*
 +{{:​pm:​prj2021:​avaduva:​schema_ro.png?​550|}}
 +*
 +*
 +*
 +==Cum functioneaza?​==
 +Am folosit un Breadboard, pentru ca nu aveam pe placuta suficienti pini pentru toate componentele.
 +Prin intermediul modulului RTC- real time clock preiau ora si data exacta, folosindu-ma de libraria DS1302
 +LCD-ul ales de mine are modulul I2C integrat, l-as fi putut folosi si pe cel fara modul integrat, dar doar pe acesta l-am mai gasit disponibil.
 +Interfata I2C are 4 pini, i am conectat direct la arduiono.
 +By default LCD-ul afiseaza ora si data exacta pe care le ia prin intermediul modulului RTC.
 +In momentul in care doresc sa setez alarma, apas pe primul buton si imi va intra in modul de setare al alarmei, afisandu-mi pe display :
 +hour= ? , min=? pe care le pot seta de pe al 2-lea si al 3-lea buton.Prin intermediul celui de-al 4-lea buton ies din modul de setare al alarmei si voi avea alarma setata.
 +Daca de exemplu am setat alarma in 3h 5m, cand se va scurge timpul, buzzer ul se va activa printr-un feedback sonor.
 +
 +
 +
 +
 +{{:​pm:​prj2021:​avaduva:​20210601_155151.jpg?​550|}}
 +
 +
 +
 +
 +
 +==SOFTWARE DESIGN:==
 +
 +<​code>​
 +
 +
 +//am inclus biblioteca 12C si cea pt rtc(DS1302.h)
 +
 +#include <​Wire.h>​
 +#include <​LiquidCrystal_I2C.h>​
 +
 +// Set the LCD address to 0x27 for a 16 chars and 2 line display
 +LiquidCrystal_I2C lcd(0x3F, 16, 2);
 +#include <​DS1302.h>​
 +int Hour;
 +int Min;
 +
 +//am setat pinii - in functie de cum i am pus eu pe placuta
 +int pset = 8; // pushbutton for setting alarm
 +int phour = 9; // pushbutton for hour
 +int pmin = 10; // pushbutton for minutes
 +int pexit = 11; // pushbutton for exit of set alarm
 +int buzzer = 6;
 +int h;
 +int m;
 +
 +//Am definit starea butoanelor ​
 +
 +
 +int buttonforset = 0; // pushbutton state for setting alarm
 +int buttonforhour = 0; // pushbutton state for hour
 +int buttonformin = 0;// pushbutton state for minutes
 +int buttonforexit = 0; // pushbutton state for exit of set alarm
 +int activate=0;
 + Time t;
 +
 +// Init the DS1302
 +//pinii de pe placuta
 +
 +DS1302 rtc(2, 3, 4);
 +
 +void setup()
 +{
 + ​pinMode(pset,​ INPUT);
 + ​pinMode(phour,​ INPUT);
 + ​pinMode(pmin,​ INPUT);
 + ​pinMode(pexit,​ INPUT);
 + // Set the clock to run-mode, and disable the write protection
 + ​rtc.halt(false);​
 + ​rtc.writeProtect(false);​
 +
 + // Setup LCD to 16x2 characters
 + ​lcd.begin();​
 +
 +// le putem decomenta daca vrem sa folosim valorile deja existente in DS1302
 + //​rtc.setDOW(SATURDAY);​ // Set Day-of-Week to FRIDAY
 + //​rtc.setTime(10,​ 0, 0); // Set the time to 12:00:00 (24hr format)
 + //​rtc.setDate(11,​ 11, 2017); // Set the date to August 6th, 2010
 +}
 +
 +void loop()
 +{
 + if (activate == 0) {
 +
 +// Display time on the right conrner upper line
 + ​lcd.setCursor(0,​ 0);
 + ​lcd.print("​Time:​ ");
 + ​lcd.setCursor(6,​ 0);
 + ​lcd.print(rtc.getTimeStr());​
 + 
 + // Display abbreviated Day-of-Week in the lower left corner
 + //​lcd.setCursor(0,​ 1);
 + //​lcd.print(rtc.getDOWStr(FORMAT_SHORT));​
 + 
 + // Display date in the lower right corner
 + ​lcd.setCursor(0,​ 1);
 + ​lcd.print("​Date:​ ");
 + ​lcd.setCursor(6,​ 1);
 + ​lcd.print(rtc.getDateStr());​
 + t = rtc.getTime();​
 + Hour = t.hour;
 + Min = t.min;
 + ​buttonforset = digitalRead(pset);​
 + } // setting button pressed
 + if (buttonforset == HIGH) {
 + ​activate =1;
 + ​lcd.clear();​ }
 + ​while(activate== 1){
 + ​lcd.setCursor(0,​0);​
 + ​lcd.print("​Set Alarm"​);​
 + ​lcd.setCursor(0,​1);​
 + ​lcd.print("​Hour= ");
 + ​lcd.setCursor(9,​1);​
 + ​lcd.print("​Min= ");
 + ​buttonforhour = digitalRead(phour);​ // set hour for alarm
 + if (buttonforhour == HIGH){
 + h++;
 + ​lcd.setCursor(5,​1);​
 + ​lcd.print(h);​
 + if (h>​23){ ​
 + h=0;
 + ​lcd.clear();​ }
 + ​delay(100); ​
 + }
 + ​buttonformin = digitalRead(pmin);​ // set minutes for alarm
 + if (buttonformin == HIGH){
 + m++;
 + ​lcd.setCursor(13,​1);​
 + ​lcd.print(m);​
 + if (m>59){
 + ​m=0; ​
 + ​lcd.clear();​}
 + ​delay(100); ​
 + }
 +
 +lcd.setCursor(5,​1);​
 + ​lcd.print(h);​
 + ​lcd.setCursor(13,​1);​
 + ​lcd.print(m);​
 + ​buttonforexit = digitalRead(pexit);​ // exit from set alarm mode
 + if (buttonforexit == HIGH){
 + ​activate = 0;
 + ​lcd.clear();​
 +   }
 + }
 + 
 + if (Hour== h && Min== m) {
 + ​tone(6,​400,​300);​}
 + delay (500);
 +}
 +
 +</​code>​
 +
 +==REZULTATE==
 +[[https://​www.youtube.com/​watch?​v=0oWU8FnWFjw|rezultat clip]]
  
-SCHEMA BLOC:+==CONCLUZII== 
 +A fostun proiect interesant, singurele probleme pe care le-am intampinat au fost cu arduino- programul instalat, avand diferite probleme cu fisierele si cu setarile, dar ciecuitul si codul nu mi-au dat batai de cap.
  
-{{:pm:​prj2021:​avaduva:​blank_diagram.png?​200|}}+==BIBLIOGRAFIE== 
 +[[pm:​prj2021:​avaduva:​ceasalarma|lpdfproiect]]
  
 +https://​github.com/​fdebrabander/​Arduino-LiquidCrystal-I2C-library
 +https://​www.arduino.cc/​reference/​en/​libraries/​ds3231/​
 +https://​howtomechatronics.com/​tutorials/​arduino/​arduino-ds3231-real-time-clock-tutorial/​
  
pm/prj2021/avaduva/ceasalarma.1621431718.txt.gz · Last modified: 2021/05/19 16:41 by roxana.scurtu
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