用三星 SAMIIO、Arduino UNO 和 Raspberry Pi 在几分钟内制作一个火灾探测器
让我们构建一个物联网设备,使用 SAMI 的 WebSockets 将火焰传感器数据发送到 SAMI。物联网设备由现成的传感器、Arduino UNO 和 Raspberry Pi 组成。
在这个实现中,简单清单用于快速创建新的设备类型。然后您就可以轻松地将物联网设备连接到 SAMI,并开始从设备向 SAMI 发送传感器数据。
先决条件
”'对于本教程,您应该熟悉 基本 SAMI API。 ”'
架构
下面的紫色图显示了高级架构:
我们使用以下硬件组件:
- 具有网络连接的 Raspberry Pi
- 带有面包板的 Arduino UNO
- 红外火焰传感器
- USB 和电源线,以及面包板布线
我们将编写以下软件:
- 在 Arduino 上运行的 Sketch 程序
- 在 Raspberry Pi 上运行的 Node.js 脚本
立即下载软件。
”'如果您没有 Raspberry Pi,您仍然可以完成本教程。将 Arduino UNO 连接到具有 Internet 连接的计算机,然后在计算机上运行 Node.js 脚本,而不是在 Raspberry Pi 上运行。”
第 1 步:创建并连接新的设备类型
转到开发者门户以创建私有设备类型。
- 首先,登录 SAMI 开发人员门户。如果您没有三星帐户,可以在这一步创建一个。
- 点击“+ 新设备类型”。
- 将此设备类型命名为“火焰传感器”并为其指定唯一名称,例如“com.example.iot.flame”。
- 点击“创建设备类型”。这将创建设备类型并带您进入设备类型页面。
现在让我们为我们的“火焰传感器”设备类型创建一个清单。
- 点击左栏中的“火焰传感器”。
- 点击“清单”,然后点击“+新版本”。
- 输入“onFire”作为字段名称,输入“Boolean”作为数据类型。
- 点击“保存”,然后点击“下一步:操作”。
- 绕过本教程的操作并点击“保存新清单”。
”'一个简单的清单被自动批准。请勿发布此设备类型,因为它仅用于教程目的。”'
最后去用户门户连接一个新的火焰传感器设备:
- 登录 SAMI 用户门户。
- 在仪表板上,单击以连接新设备。
- 选择您刚刚创建的“火焰传感器”设备类型。
- 点击“连接设备...”。您将被带回仪表板。
- 点击您刚刚添加的设备的设置图标。在弹出窗口中,点击“生成设备令牌...”。
- 复制此屏幕上的设备 ID 和设备令牌。您将在代码中使用这些。
第 2 步:设置 Arduino
现在让我们将传感器连接到 Arduino。
两个传感器的接线方式如上图所示。
接下来,上传 Sketch 程序 (read_flame_sensor.ino ) 使用 Arduino IDE 连接到 Arduino UNO。此代码从 IR 火焰传感器读取一个数字值,然后每 5 秒将其发送到串行端口(您可以稍后在代码中更改此参数,因为 SAMI 对每天的消息数量有速率限制)。对于数字读数,“0”表示检测到火灾,“1”表示没有火灾。
这是read_flame_sensor.ino .代码很简单。
//读取之间的延迟
const int delayBetweenReads =5000;//5s
// 对于火焰检测器 senso const intflameDigitalPinIn =2;
无效设置(){
// 初始化串行通信@9600 波特:
Serial.begin(9600);
pinMode(flameDigitalPinIn, INPUT);
}
void loop() {
// HIGH(1) 表示没有检测到火灾
// LOW (0) 表示检测到火灾
intflameDigitalReading =digitalRead(flameDigitalPinIn); Serial.println(String(flameDigitalReading));
延迟(延迟之间读取);
}
第 3 步:设置树莓派
将您的 Raspberry Pi 连接到显示器、鼠标和键盘。确保以太网或 WiFi 连接正常工作,并确保操作系统是最新的:
- $ sudo apt-get 更新
- $ sudo apt-get 升级
如果尚未安装,请为 ARM 安装 Node.js,然后添加包 serialport 和 ws 通过 npm:
- $ npm install serialport
- $ npm install ws
现在将Arduino的串口连接到Raspberry Pi上的USB。
最后,下载 Node.js 代码(send_data_to_sami.js ) 到树莓派。将代码中的占位符替换为您从用户门户收集的设备令牌和设备 ID。
Node.js 代码也在下面给出。它在 Raspberry Pi 和 SAMI 之间建立了双向 WebSocket 连接。 WebSocket 连接打开后,register() 方法向 WebSocket 注册设备。代码每次从串口读取一个数据点,然后封装成消息,通过WebSocket发送给SAMI。
var webSocketUrl =“wss://api.samsungsami.io/v1.1/websocket?ack=true”;
var device_id =“”; var device_token =“”;
var isWebSocketReady =false; var ws =null;
var serialport =require(“serialport”)
var SerialPort =serialport.SerialPort;
var sp =new SerialPort(“/dev/ttyACM0”, {
波特率:9600,
解析器:serialport.parsers.readline(“\n”)
});
var WebSocket =require('ws');
/**
* 以毫秒为单位获取当前时间
*/
函数 getTimeMillis(){
返回 parseInt(Date.now().toString());
}
更多细节:用三星 SAMIIO、Arduino UNO 和 Raspberry Pi 在几分钟内制作一个火灾探测器
制造工艺
- 使用 Raspberry Pi 的简单 DIY 婴儿哭闹检测器
- 带有 Raspberry Pi 和湿度传感器的 Aeroponics
- 使用 Raspberry Pi 和 Python 构建机器人
- 使用 Arduino 和 Raspberry Pi 构建您的 Internet 控制的视频流机器人
- 带有伊斯兰祈祷时间的 Arduino 时钟
- 使用 Arduino 和 Android 设备控制 Roomba 机器人
- 使用 Arduino UNO 在 LCD TFT 屏幕上显示图像!
- 使用 Arduino 和 MPU6050 控制伺服电机
- u-blox LEA-6H 02 GPS 模块,带有 Arduino 和 Python
- 使用 Arduino 进行语音识别和合成
- 使用 Arduino Uno 控制 LED 矩阵
- 4x4x4 LED 立方体,带有 Arduino Uno 和 1sheeld