//Importación libreria sensor DHT
#include "DHT.h"
//Importación librerias RC522
#include <SPI.h>
#include <MFRC522.h>
//Importación librerias simular RFID
#include<SoftwareSerial.h>
#include<LiquidCrystal.h>
//Pin de conexión sensor DHT
#define DHTPIN 2
//Selector de tipo de sensor DHT
#define DHTTYPE DHT11
//Pin de conexión sensor PIR
#define PIRPIN 3
#define SS_PIN 10
#define RST_PIN 5
//Iniciación puertos DHT
DHT dht(DHTPIN, DHTTYPE);
//Iniciación puertos RFID
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
//Comunicación serial
Serial.begin(9600);
//Iniciar sensor DHT
dht.begin();
//Iniciar PIR
pinMode(PIRPIN, INPUT);
//Iniciar SPI bus
SPI.begin();
//Iniciar MRFC522
rfid.PCD_Init();
}
void loop() {
iniciarDHT();
iniciarPIR();
iniciarRC();
}
void iniciarDHT() {
//Tiempo de refresco 5 segundos
delay(5000);
//Lectura humedad
float hum = dht.readHumidity();
//Lectura temperatura
float temp = dht.readTemperature();
// Calcular el índice de calor en grados centígrados
float hic = dht.computeHeatIndex(temp, hum, false);
if (isnan(hum) || isnan(temp)){
Serial.println("Error de obtención de datos en el sensor DHT11");
return;
}
Serial.print("Humedad: ");
Serial.print(hum);
Serial.println(" %\t");
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.println(" *C ");
Serial.print("Índice de calor: ");
Serial.print(hic);
Serial.println(" *C ");
}
void iniciarPIR() {
delay(2000);
if (digitalRead(PIRPIN) == HIGH){
Serial.println("Movimiento detectado!");
}
}
void iniciarRC() {
if (rfid.PICC_IsNewCardPresent()) { // new tag is available
if (rfid.PICC_ReadCardSerial()) { // NUID has been readed
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
//Serial.print("RFID/NFC Tag Type: ");
//Serial.println(rfid.PICC_GetTypeName(piccType));
// print NUID in Serial Monitor in the hex format
Serial.print("UID:");
for (int i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
rfid.PICC_HaltA(); // halt PICC
rfid.PCD_StopCrypto1(); // stop encryption on PCD
}
}
}