This is an old revision of the document!


Smart Temperature Alarm

Prezentarea pe scurt a proiectului:

  • Proiectul presupune implementarea unei alarme inteligente de temperatura, care afiseaza valoarea sa in timp real si atentioneaza utilizatorul daca a fost depasita limita maxima admisa de utilizator.

Descriere generală

Prezentarea proiectului:

  • Proiectul presupune implementarea unei alarme de temperatura care atentioneaza utilizatorul atunci cand temperatura din proximitatea device-ului depaseste limita maxima admisa, pe care utilizatorul o va introduce printr-un keypad (sau valoarea default, daca utilizatorul nu doreste sa modifice aceasta limita)
  • Aceasta are scopul de a alarma vizual si sonor utilizatorul, atunci cand se depaseste temperatura maxima admisa, dar afiseaza si temperatura in timp real, cu ajutorul unui ecran LCD.
  • Acest device este inspirat de produsele similare existente pe piata, care au scopul de a monitoriza si atentiona asupra temperaturii dintr-o incapere. Cazurile practice de utilizare se regasesc in alimentatie publica, domeniul medical, farmaceutic, chimic etc. Toate aceste domenii au in comun necesitatea de a mentine anumite produse la limite foarte stricte de temperatura.

Hardware Design

Listă componente:

  • 2 x Arduino UNO R3
  • LCD 1602 I2C
  • 4×4 Keypad
  • Senzor de temperatura
  • Buzzer Piezo
  • Tranzistor NPN
  • LED
  • Rezistori
  • Fire

 Schema in Tinkercad

 Schema in Tinkercad

Software Design

Descrierea software a aplicaţiei:

Aplicatia utilizeaza 2 Arduino Uno, care comunica prin I2C. Fiecare are rolul sau: * Slave-ul primeste temperatura de la Master si o afiseaza pe LCD. * Master-ul reprezinta efectiv alarma de temperatura.

Slave Source Code #include <LiquidCrystal.h> #include <Wire.h>

The slave address to which this master will send data #define I2C_SLAVE_ADDRESS 0x09 The byte variable in which I2C reads from the master are performed int i; signed int aux; int temp; const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {

  lcd.begin(16, 2);
  lcd.print("Buna ziua!");
Wire.begin(I2C_SLAVE_ADDRESS);

}

void receiveEvent(int numBytes) {

  i = 3;
  temp = 0;
  while (0 <= i) {
      aux = Wire.read();
      if (aux > 127) {
        aux = aux - 256;
      }
    temp = temp + pow(10, i) * aux;
      i--;
  }

}

void loop() {

  Wire.onReceive(receiveEvent);
  if (temp != 0) {
      lcd.clear();
    lcd.print("Temp refresh");
    delay(500);
      lcd.clear();
    lcd.print(temp / 100);
    lcd.print(".");
  lcd.print(abs(temp % 100));
    lcd.print(" grade C");
      delay(5000);
  }

}

pm/prj2023/alexau/smart-temperature-alarm.1685177705.txt.gz · Last modified: 2023/05/27 11:55 by andrei_stefan.fotin
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