Differences

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

Link to this comparison view

pm:prj2022:sionescu:sportwatch [2022/05/11 12:05]
eduard_adiel.dinu
pm:prj2022:sionescu:sportwatch [2022/06/02 16:19] (current)
eduard_adiel.dinu
Line 5: Line 5:
  
 ===== Introducere ===== ===== Introducere =====
 +<note tip>
  Proiectul consta in implementarea unui ceas de tip SportWatch.  Proiectul consta in implementarea unui ceas de tip SportWatch.
-Acesta contine integrat un senzor de luat pulsul ​si o alarma pentru sport. +Acesta contine integrat un senzor de luat temperatura si unul pentru puls si o alarma pentru sport. 
-Alarma va suna timp de 30 secunde ​in caz ca nu este oprita.+Alarma va suna timp de 30 secunde, iar un LED se va aprinde daca senzorul detecteaza o temperatura prea ridicata si un alt LED pentru puls. 
 +</​note>​
 ===== Descriere generală ===== ===== Descriere generală =====
  
 +<note tip>
 + In schema de mai jos se poate observa inputul si outputul proiectului legat la ARDUINO. Exista 2 inputuri : citirea facuta de senzor si timpul configurat de noi.\\
  
- In schema de mai jos se poate observa inputul si outputul proiectului legat la ARDUINO. Exista 2 inputuri ​citirea facuta ​de pulsometru si intreruperea data de un buton, care are rolul de a opri alarma.\\+ Sunt 3 iesiri ​sunetul facut de Buzzer cand trebuie sa sune alarma la o anumita oraLED-ul ​care se va aprinde cu rosu daca temperatura este in zona de pericol, Ora, minutul si secunda afisata pe ecran.\\ 
 +</​note>​ 
 +{{:​pm:​prj2022:​sionescu:​dinueduardadiel335cadiagram.png?​400|}}
  
- Sunt 4 iesiri : sunetul facut de Buzzer cand trebuie sa sune alarma la o anumita ora, LED-ul care se va aprinde cu rosu daca pulsul este in zona de pericol, Ora, minutul si secunda afisata pe ecran si Pulsul citit de senzor.\\ 
- 
-{{:​pm:​prj2022:​sionescu:​dinuadiel335cadiagrama.png?​400|}}\\ 
 ===== Hardware Design ===== ===== Hardware Design =====
 +<note tip>
  Piesele necesare sunt :  Piesele necesare sunt :
  1. Arduino  1. Arduino
Line 23: Line 26:
  3. 1 Buzzer  3. 1 Buzzer
  4. 1 ecran LCD  4. 1 ecran LCD
- 5. 1 senzor de puls + 5. 1 senzor de temperatura TMP36 
- 6. 1 buton + 6. 1 LED 
- 7. rezistente ​+ 7. rezistente ​
  8. fire  8. fire
 +        9. Potentiometru
 +        10. Senzor de puls
  
- Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda, dar si Pulsul rezultat.+ 
 + Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda. 
 +</​note>​ 
 +{{:​pm:​prj2022:​sionescu:​dinueduardadiel335caschemaelectrica.pdf|}}
  
 ===== Software Design ===== ===== Software Design =====
 +<note tip>
 + In prima faza, proiectul este implementat in tinkercad etapa de software(codarea). Dupa ce testarea proiectului in Tinkercad se termina cu success, se implementeaza fizic.
  
- In prima fazaproiectul ​este implementat ​in tinkercad ​in etapa de hardware(legarea pieselor)Dupa aceea se trece la etapa de software(codarea). Dupa ce testarea proiectului ​in Tinkercad se termina cu success, se implementeaza fizic.+S-a folosit LiquidCrystal pentru LCD. Functiile folosite sunt :  
 +tonesetcursor, print, analogread, digitalWrite. 
 +Am definit functii ajutatoare : 
 +1.ConfigClock si ConfigAlarm : seteaza parametrii interni(de la ce ora, minut, secunda incepe ceasul sa afiseze respectiv cand este alarma) 
 +2.toneBuzzer : apeleaza functia tone cu o perioada data parametru, o frecventa si un pin preselectat. 
 +3. temperature:​ verifica daca senzorul detecteaza o temperatura prea ridicata pentru a face sport, caz in care aprinde LED ul.  
 +4. Check Alarm: verifica daca timpul curent coincide cu alarma, ​in caz afirmativ porneste buzzer ul timp de 30 secunde.\\ 
 +{{:​pm:​prj2022:​sionescu:​dinueduardadiel335caproiect.png?​400|}} 
 +</​note>​ 
 +Cod :  
 +<​code>​ 
 +#include <​LiquidCrystal.h>​ 
 +LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
 +#include <​PulseSensorPlayground.h>    
 +int button; 
 +int h=1; 
 +int m=45; 
 +int s=00; 
 +int flag=1; //PM 
 +int sensePin = A0; //This is the Arduino Pin that will read the sensor output 
 +int sensorInput;​ //The variable we will use to store the sensor input 
 +double temp; //The variable we will use to store temperature ​in degrees. 
 +int alarmMin = 21; 
 +int alarmHour = 19; 
 +int TempLED = 8; 
 +int PulseLED = 10;
  
 +void showPulse(int value) {
 +  lcd.print("​Pulse : ");
 +  int res = 0;
 +  value = value / 100;
 +  if(value <= 0)
 +    value = 0;
 +  while(value)
 +  {
 +    res = res * 10 + value % 10;
 +    value /= 10; 
 +  }
 +  ​
 +  while(res > 0) {
 +    char c = '​0'​ + res % 10;
 +  lcd.print(c);​
 +  res /= 10;
 +  }
 +  if(res == 0)
 +  lcd.print("​0"​);​
 +}
 +void configClock(int hour, int mins, int secs) {
 +  h = hour;
 +  m = mins;
 +  s = secs;
 +}
 +void configAlarm(int alarmH, int alarmM) {
 +  alarmMin = alarmM;
 +  alarmHour = alarmH;
 +}
 +
 +void setup() {
 +  Serial.begin(9600);​
 +  lcd.begin(16,​ 2);
 +  pinMode(7, OUTPUT);
 +  pinMode(6, INPUT);
 +  pinMode(TempLED,​ OUTPUT);
 +  pinMode(PulseLED,​ OUTPUT);
 +  configClock(21,​32,​50);​
 +  configAlarm(21,​33);​
 +}
 +void temperature() {
 +  sensorInput = analogRead(A0); ​
 +  temp = (double)sensorInput / 1024; //find percentage of input reading
 +  temp = temp * 5; //multiply by 5V to get voltage
 +  temp-= 0.5;
 +  temp = temp * 100; //Convert to degrees
 +  Serial.println(temp);​
 +  if(temp > 10) {
 +    digitalWrite(TempLED,​ HIGH);
 +  }
 +  else digitalWrite(TempLED,​ LOW); 
 +}
 +
 +void pulse() {
 + ​int ​ sensorPulse = analogRead(A1);​
 + ​Serial.println(sensorPulse);​
 +  showPulse(sensorPulse);​
 +  if(sensorPulse > 750)
 +  {
 +    digitalWrite(PulseLED,​ HIGH);
 +  }
 +  else digitalWrite(PulseLED,​ LOW);
 +}
 +
 +void toneBuzzer(int duration) {
 +  tone(7, 220, duration);
 +}
 +void checkAlarm(int min, int hour, int sec) {
 +  if(min == alarmMin && hour == alarmHour && sec < 30)
 +    toneBuzzer(1000);//​1 sec
 +}
 +void loop() {
 +  temperature();​
 +  ​
 + ​lcd.setCursor(0,​0);​
 + ​lcd.print("​Time ");
 + ​if(h<​10)lcd.print("​0"​);​
 + ​lcd.print(h);​
 + ​lcd.print(":"​);​
 + ​if(m<​10) lcd.print("​0"​);​
 + ​lcd.print(m);​
 + ​lcd.print(":"​);​
 + ​if(s<​10) lcd.print("​0"​);​
 + ​lcd.print(s);​
 +   ​if(flag==0) lcd.print("​ AM");
 + ​if(flag==1) lcd.print("​ PM");
 + ​lcd.setCursor(0,​1);//​ for Line 2
 +
 + ​delay(987);​
 +  temperature();​
 +  pulse();
 +  s=s+1;
 + ​if(s==60){
 +  s=0;
 +  m=m+1;
 + }
 + ​if(m==60)
 + {
 +  m=0;
 +  h=h+1;
 + }
 + ​if(h==13)
 + {
 +  h=1;
 +  flag=flag+1;​
 +
 +  if(flag==2)flag=0;​
 + }
 +  checkAlarm(m,​ h, s);
 +  ​
 +}
 +</​code>​
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
- ----+<note tip> 
 + Ecranul LCD afiseaza cu succes timpul cu precizie, LED urile se lumineaza in caz de pericol, iar alarma suna corespunzator. 
 +</​note>​ 
 ===== Concluzii ===== ===== Concluzii =====
 +
 +<note tip>
  Consider ca proiectul este important deoarece foloseste in scop didactic cunostinte de intreruperi,​ senzori.  Consider ca proiectul este important deoarece foloseste in scop didactic cunostinte de intreruperi,​ senzori.
 +</​note>​
  
 ===== Jurnal ===== ===== Jurnal =====
 +<note tip>
 +        Main intai am rezolvat partea de afisaj timp.
 +        Apoi am rezolvat partea de alarma.
 +        In final am facut partea de senzor de temperatura si puls, alaturi iluminarea LED urilor.
 +      ​
 +</​note>​
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +
 https://​create.arduino.cc/​projecthub/​munir03125344286/​add-buzzer-to-arduino-bf010b https://​create.arduino.cc/​projecthub/​munir03125344286/​add-buzzer-to-arduino-bf010b
 +https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​
 +https://​learn.adafruit.com/​tmp36-temperature-sensor/​using-a-temp-sensor
 +https://​www.arduino.cc/​en/​Tutorial/​LibraryExamples/​LiquidCrystalSetCursor
 +https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal/​
  
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/sionescu/sportwatch.1652259925.txt.gz · Last modified: 2022/05/11 12:05 by eduard_adiel.dinu
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