亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

树莓派 + Arduino UNO + 三星 SAMI 极速构建火灾检测系统

教程概述

本教程指导你创建一个紧凑的物联网火灾检测系统,通过 WebSocket 将火焰传感器读数流式传输到三星 SAMI,使用 Arduino UNO 和树莓派。

我们将采用简单的现成红外火焰传感器,向 Arduino 上传轻量级草图,在树莓派上运行 Node.js 脚本将数据转发给 SAMI。

前置知识

本教程假设你熟悉基本 SAMI API。

系统架构

下图说明高层流程:

软件组件:

立即下载软件包。

若无树莓派,也可照做。将 Arduino 连接到有网络的电脑,在该机器运行 Node.js 脚本即可。

步骤 1:创建并连接新设备类型

  1. 登录 SAMI 开发者门户。无三星账号请先注册。
  2. 点击 “+ New Device Type”。
  3. 命名设备类型为 “Flame Sensor”,分配唯一标识符如 “com.example.iot.flame”。
  4. 点击 “Create Device Type” 进入设备类型页面。

现在为 “Flame Sensor” 设备类型创建 Manifest。

  1. 左栏点击 “Flame Sensor”。
  2. 导航到 “Manifest” 点击 “+ New Version”。
  3. 字段名输入 onFire,数据类型选 Boolean。
  4. 点击 “Save” 然后 “Next: Actions”。
  5. 本教程跳过 Actions,点击 “Save New Manifest”。

Simple Manifest 自动批准。请勿发布此设备类型,仅供教程用途。

最后通过用户门户连接新 Flame Sensor 设备:

  1. 登录 SAMI 用户门户。
  2. 仪表盘点击连接新设备。
  3. 选择刚创建的 “Flame Sensor” 设备类型。
  4. 点击 “Connect Device…”,返回仪表盘。
  5. 点击新增设备的设置图标。弹窗中选 “GENERATE DEVICE TOKEN…”。
  6. 复制显示的设备 ID 和设备令牌——代码中需要。

步骤 2:配置 Arduino

按上图将红外火焰传感器接到 Arduino。然后用 Arduino IDE 上传以下草图(read_flame_sensor.ino)。草图每 5 秒(可调)读取传感器并将数字值发送到串口。在 SAMI 中,“0”表示检测到火焰;“1”表示无火焰。

/* read_flame_sensor.ino */
// 读取间隔
const int delayBetweenReads = 5000; // 5 秒
// 火焰探测器引脚
const int flameDigitalPinIn = 2;

void setup() {
    // 初始化串口通信 9600 波特
    Serial.begin(9600);
    pinMode(flameDigitalPinIn, INPUT);
}

void loop() {
    // HIGH (1) = 无火,LOW (0) = 检测到火
    int flameDigitalReading = digitalRead(flameDigitalPinIn);
    Serial.println(String(flameDigitalReading));
    delay(delayBetweenReads);
}

步骤 3:配置树莓派

将树莓派连接显示器、鼠标、键盘。确保有可用以太网或 Wi‑Fi 且系统最新:

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

若未装 Node.js,安装 ARM 兼容版并通过 npm 添加依赖:

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

将 Arduino 串口通过 USB 连到树莓派。

下载 Node.js 脚本(send_data_to_sami.js),将 device_id 和 device_token 占位符替换为前面复制的凭据。

/* 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');

/** 获取当前毫秒时间戳 */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

// 建立 WebSocket 连接并注册设备
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));
    }
});

脚本运行后,火焰传感器读数将实时流式传输到 SAMI。

更多详情请参考完整教程:Make a fire detector in minutes with Samsung SAMIIO, Arduino UNO and Raspberry Pi。

制造工艺

  1. 树莓派低成本婴儿啼哭检测器 DIY 指南:Prota OS + Philips Hue + Volumio
  2. 树莓派自动化气雾栽培系统:湿度传感器智能控制
  3. 树莓派与Python构建机器人:完整指南
  4. Arduino与树莓派构建互联网控制视频流机器人完整指南
  5. 自制 Arduino 伊斯兰祷告时间实时时钟
  6. Arduino + Android 蓝牙控制 Roomba Create 2 扫地机器人完整指南
  7. Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
  8. Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
  9. u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
  10. 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
  11. Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
  12. 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目