Esparduino(wemos)+MQTT+MySQL
注:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。
前言
本项目将会引导大家进入一个新的篇章认识,这个小项目是基于wemos的数据采集和远程控制。由观察所得岭南师范学院信息工程学院物联网俱乐部的成员目前已经对各种云平台掌握得已经很好了,为了进一步让大家更加熟练地掌握物联网项目开发,特抽时间完成了这个小项目帮助大家熟悉项目开发流程。
一、项目介绍
1.1 项目名称
a)基于WeMos的物联网数据传输与远程控制
1.2 项目背景
a)“大智云物”是当前社会主要发展的四个方向,但是随着技术不断的向前发展,各个方向的发展都遇到了一定的瓶颈,正是在这样的背景下,物联网+云、物联网+人工智能、物联网+大数据和物联网+区块链等技术交叉融合的方向应允而出,并且展现出强大的生命力和发展潜能。本项目将会采用众多物联网+云方案中的其中一种,其有着通用性强、便利性高、兼容性好等优点。
1.3 项目设计思路
1)Wemos与传感器进行通讯,如DHT11温湿度传感器采集环境中的温湿度数据
2)Wemos与继电器进行通讯,如通过控制3.3V触发的继电器控制小风扇
3)Wemos与舵机进行通讯 , 如控制5V的SG90的舵机进行旋转(用于模拟打开门锁)
1.4 项目展示效果
a)硬件展示图
b)软件展示图
二、硬件准备
2.1 Wemos D1 R1
2.2 继电器
2.3 SG90舵机
2.4 DHT11温湿度传感器
三、软件准备
3.1 Arduino IDE
a)官方下载地址: http://arduino.cc/en/Main/Software
b)Arduino IDE老版本下载链接:https://www.arduino.cc/en/Main/OldSoftwareReleases#previous
3.2 云服务器(阿里云、腾讯云都可)
3.3 宝塔面板
a)在云服务上安装宝塔面板,参考官方链接:https://www.bt.cn/bbs/thread-19376-1-1.html
b)安装以后请在浏览器打开,地址为一般为:公网ip+8888(端口根据自己情况选,请记得在云服务的安全组或者防火墙打开端口)
3.4 EMQX Broker
a)在云服务上安装EMQX Broker,官方链接:https://www.emqx.cn/downloads
b)在云服务器上和宝塔面板上开放端口,最后采用公网ip+18083(端口自己定)进行访问
c)EMQX管理台(DASHBOARD)展示
四、项目实施
4.1 硬件平台开发
4.1.1 Wemos环境搭建
下载链接:https://download.csdn.net/download/weixin_43271542/16742706
4.1.2 Wemos与外设硬件接线
接线介绍如下:
①DHT11温湿度传感器与Wemos主板
VCC–》5V,GND–》GND,DATA–》D7
②继电器(每种都不一样)与Wemos主板
VCC–》3.3V,GND–》GND,IO–》D8
②SG90舵机与Wemos主板
VCC–》5V,GND–》GND,IO–》D3
4.1.3 烧写代码植入Wemos
a)核心代码展示
下载链接:https://download.csdn.net/download/weixin_43271542/16742878
4.2 软件平台开发
4.2.1 网站编写(HTML)
a)软件准备
b)修改代码里面的相关参数,如ip地址、主题
下载链接:https://download.csdn.net/download/weixin_43271542/16742932
4.2.2 数据库搭建(MySQL)
a)在宝塔面板添加数据库
b)在创建以后,点击管理,再点击SQL,复制我已经写好的SQL语句进去,最后执行,总共需要创建两个表
①action_emqx
CREATE TABLE `temp_hum` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`up_timestamp` timestamp NULL DEFAULT NULL,
`client_id` varchar(32) DEFAULT NULL,
`user_root` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `up_timestamp_client_id` (`up_timestamp`,`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;
②temp_hum
CREATE TABLE `temp_hum` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`up_timestamp` timestamp NULL DEFAULT NULL,
`client_id` varchar(32) DEFAULT NULL,
`temp` float unsigned DEFAULT NULL,
`hum` float unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `up_timestamp_client_id` (`up_timestamp`,`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;
4.2.3 MQTT代理服务器搭建
a)EMQ X Cloud 规则引擎配置
1.资源创建
点击左侧菜单栏规则引擎,找到资源面板,点击新建资源,下拉选择 MySQL 资源类型。填入刚才创建好的 mysql 数据库信息,并点击测试如果出现错误应及时检查数据库配置是否正确。
2.规则测试
点击左侧左侧菜单栏规则引擎,找到规则面板,点击创建,然后输入如下规则匹配 SQL 语句。在下面规则中我们从 temp_hum/emqx 主题读取消息上报时间 up_timestamp、客户端 ID、消息体(Payload),并从消息体中分别读取温度和湿度。
SELECT
timestamp as up_timestamp, clientid as client_id, payload.temp as temp, payload.hum as hum
FROM
"temp_hum/emqx"
如果是action/emqx主题的,语句如下:
SELECT
timestamp as up_timestamp, clientid as client_id, payload.user_root as user_root
FROM
"temp_hum/emqx"
3.添加响应动作
点击左下角添加动作,下拉选择 → 保存数据到 MySQL 选择第一步创建好的资源,并输入以下数据插入 SQL 模板
insert into temp_hum(up_timestamp, client_id, temp, hum) values (FROM_UNIXTIME(${up_timestamp}/1000), ${client_id}, ${temp}, ${hum})
如果是action/emqx主题,请使用以下语句:
insert into action_emqx(up_timestamp, client_id, user_root) values (FROM_UNIXTIME(${up_timestamp}/1000), ${client_id}, ${user_root})
4.点击创建规则,并返回规则列表
5.查看规则监控
6.最后本人的搭建好的成功显示界面截图
4.2.4 使用MQTT.X进行测试
1.使用 MQTT X (opens new window)模拟温湿度数据上报
需要将 broker.emqx.io 替换成已创建的部署连接地址,并添加客户端认证信息,记得点击New Subscription,添加,这样就可以实现收发查看。
4.2.5 网站部署
a)点击宝塔的网站,添加站点
b)域名写公网ip+端口即可(本人用的是6080,需要在云服务器防火墙和宝塔端都打开),数据库选择MySQL,输入账号和密码(在宝塔数据库查看)
c)点击宝塔网站的根目录,上传写好的网站代码,并将主要网站主页改名字为index.html,最后输入公网ip+端口即可访问
五、项目总结
以上是整个项目开发过程,大家有什么意见,欢迎在评论区评价噢!后期还会有更多的项目干货分享,另外自己也准确去实习了,希望自己能找到喜欢的工作。