Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Onderdelen en benodigdheden

Onderdeel Aantal
Panasonic GridEye 1
PIR-sensor, 7m 1
Buzzer 1
LED, RGB 1
Arduino Nano 33 IoT 1
Herlaadbare batterij, 3.7V 1
Kunststof behuizing, afdoos 1

Apps en online diensten

  • Arduino IDE
  • DasData Maker Data Storage Channel

Over dit project

Huidige mondiale pandemie-crisis

Zoals de Wereldgezondheidsorganisatie (WHO) aanbeveelt om infectiespreiding te voorkomen: "regelmatig handen wassen, mond en neus bedekken bij hoesten en niezen, vlees en eieren goed gaar koken. Vermijd nauw contact met iemand die symptomen van respiratoire ziekte vertoont zoals hoesten en niezen".

Het is een gangbare praktijk geworden op luchthavens om thermische scanners te hebben om mogelijke geïnfecteerde reizigers te detecteren.

Zelfgemaakte thermische detector

Terwijl we gedwongen zijn om ons werk op afstand voort te zetten als beschermingslaag in de huidige situatie, moeten we contact met anderen vermijden tot de situatie onder controle is.

Het hoofddoel is een thermische camera-detector te bouwen die eenvoudig buiten je huis/lab/kantoor/shuttle geïmplementeerd kan worden, zodat je beschermd bent in je veilige zone.

Invoersensoren

  • Grid Eye

"In tegenstelling tot conventionele thermische sensoren die alleen de temperatuur van een bepaald contactpunt meten, kan Grid-EYE, gebaseerd op Panasonic's MEMS-technologie, de temperatuur van het hele gespecificeerde gebied zonder contact meten; met andere woorden, het is een 'contactloze thermopile-array sensor'. 64 pixels leveren nauwkeurige temperatuurmeting over een kijkhoek van 60° door een siliciumlens. Grid-EYE gebruikt een I²C-communicatieinterface, wat temperatuurmeting mogelijk maakt met snelheden van 1 of 10 frames/sec. Een interrupt-functie is ook beschikbaar."

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie
  • Afmetingen: 11,6 x 4,3 x 8,0mm (L x H x B)
  • Werks spanning: 3,3V of 5,0V (afhankelijk van P/N)
  • Temperatuurmeetbereik: -20°C tot 100°C (afhankelijk van P/N)
  • Kijkveld (FoV): 60°
  • Aantal pixels: 64 (verticaal 8 x horizontaal 8)
  • Externe interface: I²C (snelle modus)
  • Frame rate: 10 frames/sec of 1 frame/sec

Wat deze sensor perfect maakt voor mensendetectie vanaf 1,5 meter en een doelwit op 5/7 meter.

  • PIR

We hebben ook een trigger nodig omdat we de thermische camera willen activeren wanneer beweging gedetecteerd wordt. Een PIR-sensor is daarvoor de perfecte keuze.

"PIR-sensor detecteert een mens die zich binnen ongeveer 10m van de sensor beweegt. Dit is een gemiddelde waarde, de daadwerkelijke detectiebereik ligt tussen 5m en 12m. PIR-sensoren zijn fundamenteel gemaakt van een pyro-elektrische sensor, die infraroodstraling kan detecteren. Voor tal van essentiële projecten of items die moeten ontdekken wanneer een persoon een gebied binnenkomt of verlaat. PIR-sensoren zijn geweldig, ze zijn plat, laag-energetisch, hebben een wijd lensbereik, en zijn eenvoudig te interfaccen."

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Alles samenvoegen zoals hieronder:

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Visuele & geluidsoutput

  • RGB LED

We willen direct temperatuursfeedback met een eenvoudige RGB LED die geprogrammeerd is om kleuren te tonen zoals we ze in de thermische camera zien.

  • Buzzer

Wanneer de temperatuur boven de normale 37°C stijgt, activeren we een geluidsalarm om je te waarschuwen voor mogelijke gevaren.

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie
CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Eindtesten

Terwijl de temperatuur normaal is en aanwezigheid gedetecteerd wordt, tonen we een groen licht.

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie
// Verschillende kleuren kunnen ingesteld worden
if (tempC < 16) {
  setColor(0, 0, 255); // blauw
} else if (tempC < 15) {  // Let op: deze conditie is onbereikbaar (<16 voldoet al)
  setColor(80, 0, 80); // cyaan
} else if (tempC < 20) {
  setColor(0, 255, 255); // aqua
} else if (tempC < 24) {
  setColor(0, 255, 0); // groen
} else if (tempC < 28) {
  setColor(255, 255, 0); // geel
} else if (tempC < 37) {
  setColor(255, 20, 20); // magenta
} else if (tempC < 38) {
  setColor(255, 255, 0); // geel
} else if (tempC < 39) {
  setColor(255, 0, 0); // rood
}

Om het geluidsalarm en rode kleur te testen, gebruik een strijkijzer voor kleding (per ongeluk ontdekt tijdens huishoudelijke taken).

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Leef lang en voorspoedig

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Alternatief kun je de temperatuur bekijken in een NodeJS-interface en de data van je Arduino via seriële verbinding ophalen met deze terminal-applicatie.

Verdere plannen zijn om de dataintegratie met het das-platform uit te breken en te beginnen met modelleren.

Volg live stream op @dasData

https://dasdata.co/camera/

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Blijf veilig waar je ook bent in deze periode in de Galaxie!

Code

coronafence (C/C++)

#include <Wire.h>
#include <SparkFun_GridEYE_Arduino_Library.h>

GridEYE grideye;
String heatData;
int ledState;
unsigned long meetime;
uint16_t seconds = 3142; // max == 65535

int bluePin = 8;
int greenPin = 9;
int redPin = 10;
int buzzPin = 11;
int inputPin = 12; // PIR-sensor input pin
int pirState = LOW; // we starten met aanname geen beweging gedetecteerd
int val = 0;        // variabele voor pin-status lezen
float tempC;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(buzzPin, OUTPUT);
  pinMode(inputPin, INPUT); // sensor als input declareren
  
  // Start favoriete I2C-object
  Wire.begin(); // Bibliotheek gaat ervan uit "Wire" voor I2C, maar je kunt iets anders doorgeven met begin()
  grideye.begin();
  Serial.begin(115200);
}

void loop() {
  char receiveVal;
  if (Serial.available() > 0) {
    receiveVal = Serial.read();
    if (receiveVal == '1') {
      ledState = 1;
    } else {
      ledState = 0;
    }
  }
  
  val = digitalRead(inputPin); // lees input-waarde
  
  if (val == HIGH) { // controleer of input HIGH is
    if (pirState == LOW) {
      meetime = millis();
      Serial.println("Beweging gedetecteerd!");
      // We willen alleen printen bij statusverandering, niet bij staat
      pirState = HIGH;
      getHeatmap();
      
      if (tempC < 16) {
        setColor(0, 0, 255); // blauw
      } else if (tempC < 16) { // onbereikbaar
        setColor(80, 0, 80); // cyaan
      } else if (tempC < 20) {
        setColor(0, 255, 255); // aqua
      } else if (tempC < 24) {
        setColor(0, 255, 0); // groen
      } else if (tempC < 28) {
        setColor(255, 255, 0); // geel
      } else if (tempC < 37) {
        setColor(255, 20, 20); // magenta
      }
      
      Serial.println(heatData);
      delay(1500);
    }
  } else {
    if (pirState == HIGH) {
      // we hebben net uitgezet
      noTone(buzzPin); // Stop geluid...
      Serial.println("Beweging beëindigd!");
      setColor(0, 0, 0); // uit
      meetime = 0;
      // We willen alleen printen bij statusverandering, niet bij staat
      pirState = LOW;
    }
  }
}

void getHeatmap() {
  // Print temperatuurwaarde van elke pixel in graden Celsius
  // gescheiden door komma's
  heatData = "";
  float previousVal = 0;
  
  for (unsigned char i = 0; i < 64; i++) {
    if (previousVal > 37) {
      // we hebben net aangezet
      Serial.println "Hoge temperatuur!");
      setColor(255, 0, 0); // rood
      tone(buzzPin, 1000); // Stuur 1kHz geluidssignaal...
    }
    
    tempC = grideye.getPixelTemperature(i);
    heatData += tempC + String(",");
    previousVal = tempC;
  }
  
  // Einde van elk frame met newline
  Serial.println();
  // Geef Processing tijd om te verwerken
}

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);
}

coronafence

Code voor Arduino IDE, Visual Studio 2019, NodeJS: https://github.com/dasdata/coronafence

Schema's

CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie

Productieproces

  1. Aangepaste 4×4 Boter-Kaas-Eieren Visitekaartje PCB – Ontwerp, Bouw en Code Handleiding
  2. Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
  3. DIY Soldeerbout-controller voor 862D+ — Precisie & Betrouwbaarheid
  4. MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
  5. 3D-Printer Brandpreventie: Slimme Sensor Veiligheidssysteem
  6. Web-IoT Meter Bouwen met Arduino, Yaler en IFTTT
  7. Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
  8. Geavanceerde Remote-gecontrolleerde Gripper Robot voor Precisiehantering
  9. High-Performance Arduino Weerballon Datalogger
  10. ArduFarmBot Deel 2: Een Extern IoT-besturingsstation Bouwen
  11. Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project