CoroFence: Detector Térmico Avanzado con Sensor PIR e Integración IoT
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Panasonic GridEye (AMG8833) - array térmico 8x8 | 1 |
| Sensor PIR (alcance ~7 m) | 1 |
| Buzzer | 1 |
| LED RGB | 1 |
| Arduino Nano 33 IoT | 1 |
| Batería LiPo recargable 3.7V | 1 |
| Caja estanca (junction box) | 1 |
Aplicaciones y servicios online
- Arduino IDE
- DasData Maker Data Storage Channel (plataforma IoT)
Sobre el proyecto
Contexto: Crisis pandémica global
La OMS recomienda lavado de manos, mascarillas, distancia social. En aeropuertos se usan escáneres térmicos para detectar posibles infectados.
Detector térmico casero
Idea: construir una cámara térmica desplegable fuera de casa/laboratorio/oficina para monitorizar temperatura de quienes se acercan, manteniéndote en zona segura.
Sensores de entrada
GridEye (Panasonic AMG8833)
Array termopila 8x8 (64 píxeles) sin contacto. Mide temperatura de área completa con lente de silicio 60°. Interfaz I²C, 1 o 10 fps. Rango -20°C a 100°C. Dimensiones 11.6×4.3×8.0 mm. Ideal para detección humana a 1.5-5 m.
Sensor PIR
Detecta movimiento humano ~10 m (rango real 5-12 m). Activa la cámara térmica solo cuando hay presencia, ahorrando energía.
Salidas visuales y sonoras
- LED RGB: feedback instantáneo de temperatura (azul=frío, verde=normal, amarillo=precaución, rojo=alarma).
- Buzzer: alarma sonora si temperatura >37°C.
Pruebas finales
Temperatura normal + presencia → luz verde.
Test de alarma: usar plancha de vapor para simular fiebre → luz roja + buzzer.
Integración IoT
Datos enviados a plataforma DasData para visualización en tiempo real y modelado futuro. Ver stream en dasdata.co/camera/
Código principal (coronafence.ino)
#include <Wire.h>
#include <SparkFun_GridEYE_Arduino_Library.h>
GridEYE grideye;
String heatData;
int ledState;
unsigned long meetime;
uint16_t seconds = 3142;
int bluePin = 8, greenPin = 9, redPin = 10, buzzPin = 11;
int inputPin = 12; // PIR
int pirState = LOW, val = 0;
float tempC;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(buzzPin, OUTPUT);
pinMode(inputPin, INPUT);
Wire.begin();
grideye.begin();
Serial.begin(115200);
}
void loop() {
// Control remoto opcional por serie
if (Serial.available() > 0) {
char c = Serial.read();
ledState = (c == '1') ? 1 : 0;
}
val = digitalRead(inputPin);
if (val == HIGH) { // Movimiento detectado
if (pirState == LOW) {
meetime = millis();
Serial.println("Movimiento detectado!");
pirState = HIGH;
getHeatmap();
// LED RGB según temperatura máxima
if (tempC < 16) setColor(0, 0, 255); // Azul
else if (tempC < 20) setColor(80, 0, 80); // Cian
else if (tempC < 24) setColor(0, 255, 255); // Agua
else if (tempC < 28) setColor(0, 255, 0); // Verde
else if (tempC < 37) setColor(255, 255, 0); // Amarillo
else if (tempC < 38) setColor(255, 20, 20); // Magenta
else setColor(255, 0, 0); // Rojo + alarma
Serial.println(heatData);
delay(1500);
}
} else { // Sin movimiento
if (pirState == HIGH) {
noTone(buzzPin);
Serial.println("Movimiento finalizado!");
setColor(0, 0, 0);
meetime = 0;
pirState = LOW;
}
}
}
void getHeatmap() {
heatData = "";
float previousVal = 0;
for (unsigned char i = 0; i < 64; i++) {
tempC = grideye.getPixelTemperature(i);
heatData += String(tempC) + ",";
if (previousVal > 37) {
Serial.println("¡Temperatura alta!");
setColor(255, 0, 0);
tone(buzzPin, 1000);
}
previousVal = tempC;
}
Serial.println();
}
void setColor(int red, int green, int blue) {
#ifdef COMMON_ANODE
red = 255 - red; green = 255 - green; blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Repositorio
Código para Arduino IDE, Visual Studio 2019, NodeJS: github.com/dasdata/coronafence
Esquemático
Ver imagen adjunta: conexiones I²C (A4/A5), PIR en D12, LED RGB en D8-D10 (PWM), buzzer en D11, alimentación LiPo a 3.3V/5V según placa.
Proceso de manufactura
- Tarjeta de visita PCB 4×4 Tic Tac Toe personalizada – Guía de diseño, construcción y código
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Controlador DIY para soldador 862D+ — Precisión y fiabilidad
- MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
- Prevención de Incendios en Impresoras 3D: Sistema de Seguridad con Sensor Inteligente
- Crear un medidor IoT web con Arduino, Yaler e IFTTT
- Levitación magnética repulsiva con Arduino: Circuito simple y guía DIY
- Robot pinza controlado remotamente para manipulación de precisión
- Registrador de Datos de Alto Rendimiento para Globo Meteorológico con Arduino
- ArduFarmBot Parte 2: Estación de Control IoT Remota para Cultivos
- Reloj flip Arduino con matriz LED 8×8: proyecto DIY de reloj en tiempo real