CoroFence Thermaldetektor: PIR-Sensor & IoT-Integration mit Panasonic GridEye
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Panasonic GridEye (AMG8833/AMG885x) | 1 |
| PIR-Bewegungsmelder (Reichweite ca. 7 m) | 1 |
| Summer (Buzzer) | 1 |
| RGB-LED | 1 |
| Arduino Nano 33 IoT | 1 |
| LiPo-Akku 3,7 V (wiederaufladbar) | 1 |
| Kunststoffgehäuse (Abzweigdose) | 1 |
Apps und Onlinedienste
- Arduino IDE
- DasData Maker Data Storage Channel (Cloud-Logging)
Über dieses Projekt
Aktuelle Pandemie-Lage
WHO empfiehlt: Händewaschen, Husten-/Nies-Etikette, Abstand halten. An Flughäfen werden thermische Scanner eingesetzt, um fiebernde Reisende zu detektieren.
Selbstbau-Thermaldetektor
Idee: Ein kompakter, batteriebetriebener Thermalscanner für Hauseingang, Labor, Büro oder Shuttle. Er warnt vor Personen mit erhöhter Körpertemperatur, bevor man in Kontakt kommt.
Eingangs-Sensoren
Panasonic GridEye
8×8 Thermopile-Array (64 Pixel), berührungslose Flächen-Temperaturmessung, 60° Sichtwinkel, I²C, 1/10 fps, Interrupt-Funktion. Ideal für Personenerkennung auf 1,5–5 m.
- Abmessungen: 11,6 × 4,3 × 8,0 mm
- Betriebsspannung: 3,3 V oder 5 V
- Messbereich: -20 °C bis 100 °C
- Sichtfeld: 60°
- Auflösung: 8×8 Pixel
- I²C Fast Mode
- Bildrate: 1 oder 10 fps
PIR-Sensor
Erkennt Bewegung bis ca. 10 m (typisch 5–12 m). Pyroelektrisches Element detektiert IR-Änderungen. Dient als Trigger: Thermalkamera nur bei Bewegung aktivieren → Stromsparen.
Gehäuse & Aufbau
Sensoren in einer Abzweigdose montieren: GridEye und PIR nach außen gerichtet, Elektronik innen.
Visuelle & akustische Ausgabe
- RGB-LED: Farbkodierte Temperaturanzeige (Blau=kalt → Rot=heiß).
- Summer: Alarmton bei > 37 °C.
Farb-Logik (Beispiel)
if (tempC < 16) setColor(0, 0, 255); // Blau
else if (tempC < 20) setColor(80, 0, 80); // Cyan
else if (tempC < 24) setColor(0, 255, 255); // Aqua
else if (tempC < 28) setColor(0, 255, 0); // Grün
else if (tempC < 37) setColor(255, 255, 0); // Gelb
else if (tempC < 39) setColor(255, 20, 20); // Magenta
else { setColor(255, 0, 0); tone(buzzPin, 1000); } // Rot + Alarm
Test mit Bügeleisen
Zur Validierung des Hochtemperaturalarms diente ein Dampfbügeleisen (zufällig beim Haushalt entdeckt).
Daten-Visualisierung & Cloud
Live-Daten per Serial an Node.js-Terminal oder direkt an DasData-Plattform. Geplant: Erweiterte Modellierung & Alarmierung.
Code (Arduino / C++)
#include <Wire.h>
#include <SparkFun_GridEYE_Arduino_Library.h>
GridEYE grideye;
String heatData;
int ledState = 0;
unsigned long meetime = 0;
uint16_t seconds = 3142;
int bluePin = 8, greenPin = 9, redPin = 10, buzzPin = 11;
int inputPin = 12; // PIR
int pirState = LOW;
int val = 0;
float tempC = 0;
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() {
// Serielle Steuerung (optional)
if (Serial.available() > 0) {
char c = Serial.read();
ledState = (c == '1') ? 1 : 0;
}
val = digitalRead(inputPin);
if (val == HIGH) {
if (pirState == LOW) {
meetime = millis();
Serial.println("Bewegung erkannt!");
pirState = HIGH;
getHeatmap();
// Farb-Logik wie oben
if (tempC < 16) setColor(0, 0, 255);
else if (tempC < 16) setColor(80, 0, 80); // Bug im Original: <16 doppelt
else if (tempC < 20) setColor(0, 255, 255);
else if (tempC < 24) setColor(0, 255, 0);
else if (tempC < 28) setColor(255, 255, 0);
else if (tempC < 37) setColor(255, 20, 20);
else { setColor(255, 0, 0); tone(buzzPin, 1000); }
Serial.println(heatData);
delay(1500);
}
} else {
if (pirState == HIGH) {
noTone(buzzPin);
Serial.println("Bewegung beendet!");
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("Hohe Temperatur!");
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);
}
GitHub: https://github.com/dasdata/coronafence
Schaltplan

Herstellungsprozess
- Individuelle 4×4 Tic-Tac-Toe Visitenkarten-Platine – Design, Bau und Programmierung
- Multi-Position Temperatursensor-System für Smart-Home-Integration
- DIY Lötkolben-Controller für 862D+ – Präzision & Zuverlässigkeit
- MotionSense: Smarte Einbruchserkennung mit Arduino & ESP8266
- 3D-Drucker Brandschutz: Intelligentes Sensorsicherheitssystem
- Web-fähigen IoT-Messer mit Arduino, Yaler und IFTTT bauen
- Arduino-basierte abstoßende Magnetschwebung: Einfache Schaltung & DIY-Anleitung
- Fortgeschrittener ferngesteuerter Greifer-Roboter für präzises Handling
- Hochleistungs-Datenlogger für Arduino-Wetterballons
- ArduFarmBot Teil 2: IoT-Fernsteuerungsstation für Tomatenzucht