Een Snel, Betrouwbare Brandsdetectiesysteem Bouwen met Samsung SAMIIO, Arduino UNO & Raspberry Pi
Deze tutorial begeleidt u door het maken van een compact IoT-brandsdetectiesysteem dat vlamsensor-metingen naar Samsung SAMIIO streamt via WebSockets, met een Arduino UNO en Raspberry Pi.
We zullen een simpele, off-the-shelf IR-vlamsensor gebruiken, een lichtgewicht sketch uploaden naar de Arduino, en een Node.js-script draaien op de Raspberry Pi dat de data naar SAMI doorstuurt.
Vereisten
Voor deze tutorial moet u bekend zijn met de basis SAMI-API's.
Architectuur
Het onderstaande diagram illustreert de high-level flow:
- Raspberry Pi met netwerkconnectiviteit
- Arduino UNO met een breadboard
- IR-vlamsensor
- USB & voedingskabels, plus breadboard-bedrading
Softwarecomponenten:
- Arduino-sketch draaiend op de UNO
- Node.js-script draaiend op de Raspberry Pi
Als u geen Raspberry Pi heeft, kunt u de stappen nog steeds volgen. Verbind de Arduino met een computer met internettoegang en draai het Node.js-script op die machine in plaats daarvan.
Stap 1: Een Nieuw Apparaattype Maken en Verbinden
- Meld u aan bij de SAMI Developer Portal. Als u geen Samsung-account heeft, maak er nu een aan.
- Klik op "+ New Device Type".
- Noem het apparaattype "Flame Sensor" en geef een unieke identifier zoals "com.example.iot.flame".
- Klik op "Create Device Type" en ga naar de device types-pagina.
Maak nu een Manifest voor het "Flame Sensor"-apparaattype.
- In de linkerkolom, klik op "Flame Sensor".
- Navigeer naar "Manifest" en klik op "+ New Version".
- Voer onFire in als Field Name en kies Boolean als Data Type.
- Klik op "Save" en vervolgens "Next: Actions".
- Sla Actions over voor deze tutorial en klik op "Save New Manifest".
Een Simple Manifest wordt automatisch goedgekeurd. Publiceer dit apparaattype niet, omdat het uitsluitend bedoeld is voor tutorial-doeleinden.
Ten slotte, koppel een nieuwe Flame Sensor-apparaat via de User Portal:
- Meld u aan bij de SAMI User Portal.
- Op het dashboard, klik om een nieuw apparaat te koppelen.
- Kies het "Flame Sensor"-apparaattype dat u zojuist creëerde.
- Klik op "Connect Device…". U keert terug naar het dashboard.
- Klik op het instellingen-icoon van het toegevoegde apparaat. In de pop-up, selecteer "GENERATE DEVICE TOKEN…".
- Kopieer het apparaat-ID en apparaat-token die getoond worden – u heeft ze in de code nodig.
Stap 2: De Arduino Instellen
Bedraad de IR-vlamsensor naar de Arduino zoals getoond in het diagram hierboven. Upload vervolgens de volgende sketch (read_flame_sensor.ino) met de Arduino IDE. De sketch leest de sensor elke 5 seconden (aanpasbaar) en stuurt de digitale waarde naar de seriële poort. In SAMI betekent "0" vuur gedetecteerd; "1" betekent geen vuur.
/* read_flame_sensor.ino */ // Vertraging tussen reads const int delayBetweenReads = 5000; // 5 seconden // Vlamsensor-pin const int flameDigitalPinIn = 2; void setup() { // Initialiseer seriële communicatie op 9600 baud Serial.begin(9600); pinMode(flameDigitalPinIn, INPUT); } void loop() { // HIGH (1) = geen vuur, LOW (0) = vuur gedetecteerd int flameDigitalReading = digitalRead(flameDigitalPinIn); Serial.println(String(flameDigitalReading)); delay(delayBetweenReads); }
Stap 3: De Raspberry Pi Instellen
Sluit de Raspberry Pi aan op een monitor, muis, en toetsenbord. Zorg dat het een werkende Ethernet- of Wi‑Fi-verbinding heeft en dat de OS up-to-date is:
- $ sudo apt-get update
- $ sudo apt-get upgrade
Als Node.js nog niet geïnstalleerd is, installeer de ARM-compatibele versie en voeg de vereiste pakketten toe via npm:
- $ npm install serialport
- $ npm install ws
Sluit de seriële poort van de Arduino aan op een USB-poort van de Raspberry Pi.
Download het Node.js-script (send_data_to_sami.js) en vervang de placeholder-waarden voor device_id en device_token met de credentials die u eerder kopieerde.
/* 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'); /** * Haalt de huidige tijd in milliseconden op */ function getTimeMillis(){ return parseInt(Date.now().toString()); } // WebSocket-verbinding tot stand brengen en apparaat registreren 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)); } });
Eenmaal het script draait, worden uw vlamsensor-metingen in realtime naar SAMI gestreamd.
Voor meer detail, raadpleeg de volledige tutorial: Make a fire detector in minutes with Samsung SAMIIO, Arduino UNO and Raspberry Pi.
Productieproces
- Een Budget-vriendelijke Raspberry Pi Babyhuil-detector Bouwen – DIY Handleiding
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Een Robot Bouwen met Raspberry Pi en Python: Een Complete Gids
- Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
- Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
- Bestuur Je Roomba Create 2 Met Arduino En Android: Stapsgewijze Handleiding
- Afbeeldingen Weergeven op een 1,17-inch TFT LCD met Arduino UNO
- Arduino & MPU6050: Precieze Servomotor Besturing met SG90 & MG996R
- u-blox LEA‑6H GPS Module: Arduino & Python Integratie Handleiding
- Spraakherkenning & Synthese Meesteren op Arduino Due
- Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding