Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Schnelles, zuverlässiges Branderkennungssystem mit Samsung SAMI, Arduino UNO & Raspberry Pi

Überblick

Dieses Tutorial führt Sie durch die Erstellung eines kompakten IoT-Branderkennungssystems, das Flammensensor-Daten via WebSockets an Samsung SAMI streamt, unter Nutzung von Arduino UNO und Raspberry Pi.

Wir setzen einen einfachen, handelsüblichen IR-Flammensensor ein, laden einen leichten Sketch auf den Arduino und führen ein Node.js-Skript auf dem Raspberry Pi aus, das die Daten an SAMI weiterleitet.

Voraussetzungen

Für dieses Tutorial sollten Sie mit den grundlegenden SAMI APIs vertraut sein.

Architektur

Das folgende Diagramm veranschaulicht den High-Level-Flow:

Software-Komponenten:

Software herunterladen.

Falls Sie keinen Raspberry Pi haben, können Sie den Arduino an einen Computer mit Internetzugang anschließen und das Node.js-Skript dort ausführen.

Schritt 1: Neuen Gerätetyp erstellen und verbinden

  1. Im SAMI Developer Portal anmelden. Falls kein Samsung-Konto vorhanden, jetzt erstellen.
  2. „+ New Device Type“ klicken.
  3. Gerätetyp „Flame Sensor“ nennen und eindeutige Kennung wie „com.example.iot.flame“ vergeben.
  4. „Create Device Type“ klicken und zur Gerätetyp-Seite weitergehen.

Nun Manifest für den „Flame Sensor“ Gerätetyp erstellen.

  1. In der linken Spalte „Flame Sensor“ anklicken.
  2. Zu „Manifest“ navigieren und „+ New Version“ klicken.
  3. onFire als Feldname und Boolean als Datentyp eingeben.
  4. „Save“ und dann „Next: Actions“ klicken.
  5. Aktionen für dieses Tutorial überspringen und „Save New Manifest“ klicken.

Ein Simple Manifest wird automatisch genehmigt. Diesen Gerätetyp nicht veröffentlichen, da er rein Tutorial-Zwecken dient.

Schließlich neues Flame Sensor Gerät über das User Portal verbinden:

  1. Im SAMI User Portal anmelden.
  2. Im Dashboard auf „Connect new device“ klicken.
  3. Den soeben erstellten „Flame Sensor“ Gerätetyp wählen.
  4. „Connect Device…“ klicken. Zurück zum Dashboard.
  5. Einstellungen-Icon des hinzugefügten Geräts anklicken. Im Popup „GENERATE DEVICE TOKEN…“ wählen.
  6. Device ID und Device Token kopieren – Sie brauchen sie im Code.

Schritt 2: Arduino einrichten

IR-Flammensensor wie im Diagramm gezeigt an den Arduino anschließen. Dann folgenden Sketch (read_flame_sensor.ino) per Arduino IDE hochladen. Der Sketch liest den Sensor alle 5 Sekunden (anpassbar) und sendet den digitalen Wert an den Serial Port. In SAMI bedeutet „0“ Feuer erkannt; „1“ bedeutet kein Feuer.

/* read_flame_sensor.ino */
// Verzögerung zwischen Messungen
const int delayBetweenReads = 5000; // 5 Sekunden
// Flammendetektor Sensor Pin
const int flameDigitalPinIn = 2;

void setup() {
    // Serielle Kommunikation bei 9600 Baud initialisieren
    Serial.begin(9600);
    pinMode(flameDigitalPinIn, INPUT);
}

void loop() {
    // HIGH (1) = kein Feuer, LOW (0) = Feuer erkannt
    int flameDigitalReading = digitalRead(flameDigitalPinIn);
    Serial.println(String(flameDigitalReading));
    delay(delayBetweenReads);
}

Schritt 3: Raspberry Pi einrichten

Raspberry Pi an Monitor, Maus und Tastatur anschließen. Funktionierende Ethernet- oder WLAN-Verbindung und aktuelles OS sicherstellen:

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade

Falls Node.js noch nicht installiert, ARM-kompatible Version installieren und dann nötige Pakete via npm hinzufügen:

  1. $ npm install serialport
  2. $ npm install ws

Arduino Serial Port an USB-Port des Raspberry Pi anschließen.

Node.js-Skript (send_data_to_sami.js) herunterladen und Platzhalter für device_id und device_token mit den zuvor kopierten Credentials ersetzen.

/* send_data_to_sami.js */
var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true";
var device_id = "YOUR_DEVICE_ID";
var device_token = "YOUR_DEVICE_TOKEN";
var isWebSocketReady = false;
var ws = null;
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
    baudrate: 9600,
    parser: serialport.parsers.readline("\n")
});
var WebSocket = require('ws');

/** Aktuelle Zeit in Millisekunden */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

// WebSocket-Verbindung aufbauen und Gerät registrieren
ws = new WebSocket(webSocketUrl, {
    headers: {
        "Authorization": `Bearer ${device_token}`
    }
});
ws.on("open", () => {
    isWebSocketReady = true;
    register();
});

function register() {
    var registerMsg = {
        "topic": "sami/device/register",
        "data": { "deviceId": device_id }
    };
    ws.send(JSON.stringify(registerMsg));
}

sp.on("data", (data) => {
    if (isWebSocketReady) {
        var message = {
            "topic": "sami/device/telemetry",
            "data": { "onFire": data.trim() === "0" }
        };
        ws.send(JSON.stringify(message));
    }
});

Sobald das Skript läuft, werden Ihre Flammensensor-Messwerte in Echtzeit an SAMI gestreamt.

Für weitere Details siehe das vollständige Tutorial: Make a fire detector in minutes with Samsung SAMIIO, Arduino UNO and Raspberry Pi.

Herstellungsprozess

  1. Günstiger Raspberry Pi Babyphone mit Schreierkennung – DIY-Anleitung
  2. Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
  3. Roboter mit Raspberry Pi und Python bauen: Komplette Anleitung
  4. Internet-gesteuerter Video-Streaming-Roboter mit Arduino & Raspberry Pi bauen
  5. Arduino Echtzeituhr für islamische Gebetszeiten bauen
  6. Roomba Create 2 per Arduino & Android steuern – Schritt-für-Schritt
  7. Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
  8. Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
  9. u-blox LEA-6H 02 GPS-Modul: Arduino & Python Integrationsanleitung
  10. Spracherkennung & Sprachsynthese auf Arduino Due meistern