Things used in this project
Hardware components
HARDWARE LIST
DFRobot I2C 16x2 Arduino LCD Display Module
Buzzer, Piezo
RGB Diffused Common Anode
Industrial Pushbutton Switch, Push-Pull
Rotary potentiometer (generic)
Through Hole Resistor, 25.5 kohm
HARDWARIO DS18B20 Temperature Sensor 1m
Story
Neste projeto, criamos um circuito onde utilizamos um sensor detemperatura DS18B20, um LED RGB juntamente com um BUZZER como alarme, três potenciômetrospara simular as temperaturas e um botão para parar a leitura do sensor. De acordo com astemperaturas lidas no sensor obteremos as cores do LED RGB que irão variarentre vermelho, verde e azul. Também neste projeto poderemos visualizar osvalores de temperatura e umidade em um display LCD e no monitorserial do IDE do Arduíno.
Schematics
Gerenciador de temperatura de ambientes críticos
Code
Gerenciamento de temperatura de ambientes críticos
C/C++
CODE
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire pino(3);
DallasTemperature barramento(&pino);
DeviceAddress sensor;
const int RED = 10;
const int GREEN = 9;
const int BLUE = 7;
const int POTENC = A5;
const int BUZZER = 8;
const int pinoBotao = 11;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
void rgb();
void setup() {
lcd.begin(16,2);
Serial.begin(9600);
pinMode(pinoBotao, INPUT_PULLUP);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(POTENC, INPUT);
pinMode(BUZZER, OUTPUT);
barramento.begin();
barramento.getAddress(sensor, 0);
}
int val;
int val2;
int Sen;
void loop() {
val = map(analogRead(0), 0, 1023, 5, 15);
val2 = map(analogRead(2),0,1023,16,24);
Sen = map(analogRead(1), 0, 1023, 0, 29);
delay(100);
Serial.println(pinoBotao);
rgb();
delay(100);
}
int contador=0;
void rgb() {
if(digitalRead(pinoBotao) != 0){
contador ++;
if(contador == 1){
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(Sen);
lcd.print(" C ");
lcd.print(val);
lcd.println(" ");
if((Sen < val && Sen > 4) || (Sen>val2 && Sen<24)) {
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN, LOW);
lcd.setCursor(0,1);
lcd.print("WARNING ");
lcd.print(val2);
lcd.print(" ");
digitalWrite(BUZZER, HIGH);
delay(800);
digitalWrite(BUZZER, LOW);
delay(3000);
}
else if(Sen>= val && Sen < val2){
digitalWrite(BLUE, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
lcd.setCursor(0,1);
lcd.print("ACEITAVEL ");
lcd.print(val2);
lcd.print(" ");
delay(1500);
}
else if(Sen <= 4 || Sen >= 25) {
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
lcd.setCursor(0,1);
lcd.print("CRITICO ");
lcd.print(" ");
lcd.print(val2);
lcd.print(" ");
digitalWrite(BUZZER, HIGH);
delay(800);
digitalWrite(BUZZER, LOW);
delay(800);
}
}
if(digitalRead(pinoBotao) ==0){
while(1){
barramento.requestTemperatures();
float temperatura = barramento.getTempC(sensor);
Serial.println(temperatura);
delay(500);
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print(" C ");
lcd.print(val);
lcd.println(" ");
if((temperatura < val && Sen > 4) || (temperatura>val2 && temperatura<24)) {
digitalWrite(BLUE, HIGH);
digitalWrite(RED, LOW);
digitalWrite(GREEN, LOW);
lcd.setCursor(0,1);
lcd.print("WARNING ");
lcd.print(val2);
lcd.print(" ");
digitalWrite(BUZZER, HIGH);
delay(800);
digitalWrite(BUZZER, LOW);
delay(3000);
}
else if(temperatura>= val && temperatura < val2){
digitalWrite(BLUE, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
lcd.setCursor(0,1);
lcd.print("ACEITAVEL ");
lcd.print(val2);
lcd.print(" ");
delay(1500);
}
else if(temperatura <= 4 || temperatura >= 25) {
digitalWrite(BLUE, LOW);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
lcd.setCursor(0,1);
lcd.print("CRITICO ");
lcd.print(val2);
lcd.print(" ");
digitalWrite(BUZZER, HIGH);
delay(800);
digitalWrite(BUZZER, LOW);
delay(800);
}
if(digitalRead(11) != 0){
break;
}
}
}
contador = 0;
}
}
The article was first published in hackster, May 1, 2019
cr: https://www.hackster.io/jucyara_silva/gerenciador-de-temperatura-de-ambientes-criticos-com-alarme-16fa89
author: jucyara_silva
License
All Rights
Reserved
0