内容简介:
本期的SensorTile.box是一款集成超多传感器的物联网盒子,主控采用低功耗STM32L4R9,运行频率为120 MHz的ARM Cortex-M4,这是一款非常优秀的低功耗MCU。同时在盒子里面还内置了蓝牙4.2模块。
SensorTile.box有多种开发方案,资料也是非常的多,其他我就不一一介绍了,今天主要和大家分享利用SensorTile.box来实现比较简单的云端数据可视化。
盒子功能介绍:
SensorTile.box可以实现以下应用
- 专为皮带定位而优化的计步器
- 支持云AI学习的婴儿哭泣检测
- 气压计/环境监测
- 车辆/货物追踪
- 振动监测
- 指南针和倾角计
- 传感器数据记录器
SensorTile.box上集成了大量的传感器
- 数字温度传感器(STTS751)
- 6轴惯性测量单元(LSM6DSOX)
- 3轴加速度计(LIS2DW12和LIS3DHH)
- 3轴磁力计(LIS2MDL)
- 高度计/压力传感器(LPS22HH)
- 麦克风/音频传感器(MP23ABS1)
- 湿度传感器(HTS221)
本期任务要求:
此次我做的是任务二:
搭建可随身携带的环境监测系统,记录一段时间的环境数据,并导出查看(要求解释数据的变化)
我认为导出有点繁琐,那能不能实现不通过内部的SD卡从而实现实时数据的可视化呢?
今天给大家介绍一款基于node.js的物联网可视化开发平台-Node-red。
Node-red介绍(地址:ip+1880)
这个项目是由IBM新兴技术服务团队构建的可视化物联网编排工具,可基于浏览器的流程编辑器连接设备、服务器和 API 应用。
此外他是一个可视化的项目,后台使用的是NodeJS语言,提供了Web页面,来编写Flow。经常玩智能家居的朋友,一定听说过或者操作过Homeassistant,Homeassistant国内也有不错的讨论社区,他可以实现智能家居的云端或者本地化运行,极大的增加智能家居的可玩性。Node-RED可以担任智能家居的自动化大脑,他可以实现数据的采集,判断和执行。你可以通过树莓派,R2S等基于linux的设备通过命令来安装Nodered。
Node-RED平台的特点
- 可视化,直接在浏览器拖拽创建Flow
- 平台可使用模块丰富
- 支持http,mqtt,websocket,tcp,utp协议
- 使用Nodejs事件驱动的非阻塞模型,非常适合在低成本硬件运行
- 完全开源,可以自主开发
安装云端环境
安装Node-red
本期我已树莓派4B为例安装Nodered。
你可以通过官网的教程来进行搭建,非常的简单。
官网地址:https://nodered.org/
如何安装呢?
你可以直接使用一键安装的命令进行安装。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
如果你对安装过程有疑问,可以访问官网安装建议:https://nodered.org/docs/getting-started/raspberrypi
Docker环境可以使用:
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
如果你对安装过程有疑问,可以访问官网的docker安装环境地址:https://nodered.org/docs/getting-started/docker
推荐大家依照自己熟悉的安装环境来操作。
介绍EMQ—Mqtt服务器(地址:ip+18083)
安装完毕后我们还需要一个MQTT的服务器,这里推荐大家一个开源的MQTT服务器平台。
EMQ官网:https://www.emqx.cn/products/broker
EMQ X Broker 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器。
安装EMQ
因为树莓派的环境是基于Debian的,所以我这里采用官网提供的Debian安装命令进行安装,如果你想用其他系统或者环境,推荐访问:https://www.emqx.cn/downloads#broker
Debian环境
下载命令:
wget https://www.emqx.cn/downloads/broker/v4.3.3/emqx-debian10-4.3.3-amd64.deb
安装命令
sudo apt install ./emqx-debian10-4.3.3-amd64.deb
运行
sudo emqx start
Docker环境可以使用:
docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:4.3.3
现在我们安装好了Nodered和mqtt服务器,那接下来给大家带来系统框图,更好理解本次教程的框架。
云端所需要的工具我们做好了之后, 开始从传感层开始吧。
使用ST BLE Senor APP制作一个带有环境监测的传感器:
1.创建环境监测固件。
2.选择温度,湿度,气压传感器并生成固件。
3.上传制作好的固件。
使用ST BLE Senor APP自带的MQTT客户端。
1.手机端连接我们的SensorTile.box,点击Cloud Logging。
2.这里我们点击最后一个Generic MQTT(通用的MQTT)。
3.输入我们的MQTT地址(本地可以通过路由器后台查看)端口号:1883。
4.这里的用户我们需要去本地的EMQ-MQTT服务端去创建。
5.进入到EMQ后台,点击左侧菜单栏的最下面:通用-用户-新建用户,输入我们的用户名和密码(这里我们作为发送的客户端账户)。
6.在手机端输入我们的MQTT账户和密码即可。
7.点击Connet连接到我们本地端(因为我们使用的是本地的服务器所以手机WiFi要连接到路由器上)。
Nodered采集信息
1.我们先到MQTT服务器上新建一个订阅的MQTT账号。
2.用户名要和手机的MQTT区别开来(例如:mqtt-nodered)。
3.登录到Nodered的后台,在作业的Flow中找到mqtt in这个控件。
4.新建一个MQTT类型,输入我们本地飞mqtt地址和端口要(与前面一致)。
5.返回之后,输入我们的主题。
Temperature | 主题:温度 |
Humidity | 主题:湿度 |
Pressure | 主题:气压 |
Battery | 主题:电量 |
6.制作好MQTT的订阅消息,我们接下来使用Function控件来提取温度、湿度、气压、电量的数值。
7.每个代码块对应我们要获取的数据函数(这里是三个控件的整理,如有疑问以视频为主)。
//温度
t=JSON.parse(msg.payload);
node.log(typeof t);
msg.payload=t.Temperature.toFixed(2);
return msg;
//湿度
h=JSON.parse(msg.payload);
node.log(typeof h);
msg.payload=h.Humidity.toFixed(2);
return msg;
//气压
p=JSON.parse(msg.payload);
node.log(typeof p);
msg.payload=p.Pressure.toFixed(2);
return msg;
8.为了让数据显示出来。我们在拖动下面的dashboard 一个gauge,y一个chart控件(请参考视频步骤)。
9.点击界面右上角的部署,然后打开nodered的前端UI界面(地址:http://(主机ip)+:1880/ui)就可以看到我们的温度,湿度,气压的数据了。
如果你正在使用Homeasstant,完全可以使用这样的方式来获取SensorTile.box的传感数据, 这样它不仅仅是一个传感器盒子这么简单。
教程操作部分较多,推荐大家观看视频进行操作!
Noed-red部分参考代码详见附件:
附件说明:
stm32box.json 存放homeassistant配置文件的 stm32box.json存放nodered配置文件的,全选也可以直接导入到nodered中(导入在nodered界面右上角,三横杠-导入,粘贴即可)
活动心得:
SensorTile.box的玩法多种多样,今天我给大家带来不一样的方式来实现数据记录。通过此案例,给大家介绍了SensorTile.box和Nodered平台,希望这篇文章对你有所启发。感谢硬禾学堂和得捷电子举办的FunPack第九期的活动。每一期的板子都不一样的开发方式和乐趣。