MQTT 单片机移植与远程监控/控制

项目已公开于gitee。访问 jc-io 以了解详情


项目主要内容:

  1. 在ESP8266MOD(ESP12F)以及STM32 MCU上实现MQTT协议(分别使用了pubsubclient 和paho-mqtt库)
  2. 统一传感器数据上传接口
  3. 在单片机上实现简易终端, 可通过mqtt下发指令完成复杂功能

下载

通过以下指令克隆jc-io项目

git clone https://gitee.com/eglwang/jc-io.git
cd jc-io
git submodule init
git submodule update

使用

jc-io项目运行于ESP8266单片机, 使用platformIO(arduino)平台开发
jc-st运行于STM32单片机,测试时为STM32G491,使用HAL库+FREERTOS V2开发

以下介绍 jc-io 项目的使用。

首次使用-配置

在VSCode中安装platformIO插件,打开jc-io文件夹
直接编译,如提示缺少某些库文件则下载到 lib文件夹
下载程序至 Node MCU, 按 Ctrl+Alt+S 打开串口监视器

首次使用时,设备将进行初始化,包括建立文件系统,创建配置文件,注册设备(需要连接到网络)等

format begin
format done
[scanning]:
..................[timeout]
[scanning]:
..................[timeout]
max try time exceed

在开机后设备将自动搜索可用Wi-Fi接入点,不过大概率找不到,此时需要自己手动输入。

  1. 在串口监视器中键入_ate=1后回车(输入按键时没有现象),此步将开启串口回显功能
  2. 输入slp 0回车,关闭定时休眠(设备默认会在5秒后休眠)
  3. 输入 wifi [ssid] [password]连接WiFi,此处将ssid于password 替换掉
    如果连接WiFi成功,设备应该会自动注册,输出类似于下面的信息
no config file, regist now
chip ID:xxxxxx
.........
Connected to server, start registing, this may takes a bit long time.
==========
{"ok": 0, "msg": "ok", "username": "xxxxxxxxxxx", "password": "xxxxxxxxxxxxxx", "time": "2022/3/20 18:17:20", "dev": "xxxxx"}
==========

如果注册成功则表明设备已经在服务器完成注册,并且申请到了一套连接到MQTT代理的配置。输出中的 chip ID 即设备的ID号,也是MAC地址,设别唯一,之后将用到。

  1. 登录Canary,如果没有可点击登录窗口的圆形图标注册或者访问注册页面。
  2. 打开My应用,点击左下角的“+”图标,输入设备ID(即之前输出的Chip ID,确认,完成设备添加。刷新页面,如果无误应该可以看到存在新加入的设备。

在设备完成初始化后配置信息将保存在本地,之后不需要再重新配置

传感器配置

jc-io内置了一些传感器的驱动,如果你手头恰好有这些传感器,那么你无需写一行代码即可直接使用。

DHT11 温湿度传感器

默认情况下设备将添加一个DHT11传感器,并配置在D21管脚,如果你有一个DHT11,可将其连接到D2管脚。

如果你发现你的设备已经休眠,不要奇怪,这可能是因为设备多次尝试读取DHT11数据失败而触发故障机制进入休眠。没关系,重启设备在D2管脚接上一个DHT11传感器即可。

如果你需要更改DHT11管脚,首次键入sensor -,之后键入sensor dht11:d5更改管脚,d5为D5管脚,可自定义。

如果你需要让配置持久生效,需要将指令保存到本地的配置文件中,执行这一功能的指令是 file , 你可以键入file -h查看用例。
例如,如果你需要更改默认的传感器配置,输入以下内容

file -d sensor
file sensor dht11:d5

第一条指令删除配置文件中以sensor开头的行。
第二条指令则向配置文件写入“sensor dht11:d5”,设备将在下一次启动时执行这条指令以在D5管脚上建立一个DHT11传感器对象,或者你可以使用load指令重新加载配置文件使其立即生效。

BMP280 大气压-温度传感器

除了DHT11传感器外,jc-io还内置了BMP280传感器以及通用的ADC传感器。BMP280连接方式为

CS       --> VCC
SDO     --> VCC
SDA     --> SD3
SCL     --> SD2

使用I2C通信,设备地址MLB位为1
配置指令为 sensor bmp

通用模拟量传感器

而对于一般输出模拟信号的传感器,使用ADC对信号采样(A0管脚),指令为sensor adc:[label],其中“label”是采样数据的名称,你可以设置为你所使用传感器的类型或者其他有意义的值,该项数据的值是0-1023,对应电压从0-Vcc。如果不巧你使用的传感器输出的电压是负逻辑,那你可以使用 sensor nadc:[label]来配置,该类型的传感器对象输出值是Val=10234−ValadcVal= 10234-Val_{adc}Val=10234−Valadc​

设置传感器采样速率

如果你需要更改传感器的采样速率(默认为1分钟每次),你可以使用以下指令

rep 600

这条指令的意思为设置600秒读一次传感器数据,此外如果你设置了定时休眠,那么每次休眠的时间也将会改成600秒以维持采样率不变。

数据查看

如果你已经添加了设备,并且设备上传了数据,那么恭喜你

你现在可以在[Scope应用](https://glwang.site/scope/)中查询你的传感器数据了。

下图给出了Scope的一个样例,例子中查询一天中大气压的变化。


  1. 本文所用的管脚均值ESP12F/E或Node MCU上所标注的管脚,非GPIO管脚号 ↩︎

基于MQTT协议的远程监控-控制系统——ESP/STM32 MCUs 实现相关推荐

  1. STM32F103代码远程升级(五)基于MQTT协议WiFi远程升级代码的实现

    文章目录 一.WiFi模块的选用与介绍 二.ESP8266的固件擦除与烧写 1.ESP8266 Flash擦除工具的安装与使用. 2.ESP8266固件烧写 (1)在线获取固件文件 (2)获取SDK ...

  2. 基于MQTT协议的WZ指令开发V3.0版本支持onenet

    title: 基于MQTT协议的WZ指令开发V3.0版本支持onenet tags: WZ指令 date: 2019-02-18 10:53:00 视频讲解:(V3.0版本)-https://www. ...

  3. 服务器监控报警系统软件设计,基于E—mail的远程监控系统报警软件设计.doc

    基于E-mail的远程监控系统报警软件设计 基于E-mail的远程监控系统报警软件设计 基于E-mail的远程监控系统报警软件设计 报警系统是远程监控系统的重要组成部分,实现的关键在于如何对监控对象指 ...

  4. 基于单片机的粮仓远程监控系统的设计

    1绪论 1.1 课题研究背景及意义 中国自古以来就是一个大国,地大物博,特别是新中国成立以来,粮食的产量屡创新高,但是中国也是一个人口大国,人口达14亿位居世界第一[1].我国以占世界不到10%的耕地 ...

  5. 电信运营商基于 MQTT 协议 构建千万级 IoT 设备管理平台

    MQTT 是用于物联网的标准消息传递协议.它被设计为一种非常轻量级的发布/订阅消息传送,非常适合以较小的代码占用量和网络带宽连接远程设备.MQTT 协议具有以下特点: 轻巧高效:MQTT 客户端非常小 ...

  6. 先睹为快:基于OPC协议的远程IO模块

    钡铼技术近日发布的基于OPC协议的远程IO模块让工业物联更简单! OPC基金会发布的OPC UA协议是新一代工业物联网通信协议,逐步被众多设备制造商采用. 那么基于OPC UA协议的IO模块,直接解决 ...

  7. 基于MQTT协议实现微信小程序控制树莓派

    基于MQTT协议实现微信小程序控制树莓派 在我的github上有源码,大家可以直接下载来用 https://github.com/yjc-123/-MQTT- ,这里给大家说一下实现的过程. 小程序端 ...

  8. 基于LORA SX1278的温度监控控制系统开发设计-硬件方案设计

    本文的目的是设计一款基于lora无线通信的温度温度采集或者接收终端.首先进行硬件部分设计,完成的结果如下图: 结构分解: 为什么要用LORA,LORA的优势和缺点是什么: LORA是semtech公司 ...

  9. 组态基于DTU实现机床远程监控系统

    1 概 述 随着物联网各种技术快速发展,各物联网远程监测应用场景也应用而生,以空压机为例:空压机是一种空气压缩和气体输送设备,广泛运用于矿山.机械.电子.医疗等各行业.空压机常规都是需要人在现场监测和 ...

最新文章

  1. C# tips ---值类型的装箱和拆箱
  2. android 自定义搜索框edittext,Android编程自定义搜索框实现方法【附demo源码下载】...
  3. LeetCode-剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  4. data source from bit.ly
  5. 学习Web前端技术,掌握JavaScript这门语言是必须的
  6. System.Net.Mail 简介 收藏
  7. 【日常积累】hr标签的属性及样式
  8. python作图——线型图,饼形图
  9. cousins什么意思_cousin是什么意思_cousin的翻译_音标_读音_用法_例句_爱词霸在线词典...
  10. 呆呆带你手撸一个思维导图-基础篇
  11. linux常用命令 cp命令的使用和介绍
  12. 如何将数据进行数据可视化展现?
  13. 太空射击第13课: 爆炸效果
  14. c印记(二):lw_oopc简介
  15. 如何使用ROS 控制桌面机械手Dobot魔术师?
  16. 比较叶绿体基因组提供海草适应性进化新见解
  17. 计算机系统使用显示器需配有,在计算机系统中,使用显示器一般需配有( )。...
  18. IBM AIX操作系统
  19. 电子科技大学计算机科学与技术评级,电子科技大学2020年分专业录取分数与2021年报考建议...
  20. 《软件工程》第三章——软件设计综述

热门文章

  1. 逻辑学试题库及答案-辛苦整理-最全版本
  2. NB-IoT和LoRa在电力无线专网中的应用
  3. android代码流分析工具,视频码流分析工具(Elecard StreamAnalyzer)下载 v4.0.171116 官方版 - 比克尔下载...
  4. 无视Win11 TPM/英特尔芯片等配置,强制升级Win11
  5. 一个农民工混迹于 IT 行业多年后的泣血总结
  6. ubuntu10.04 下通过usb在真机调试android程序的设置
  7. 强烈推荐脑图软件 xmind
  8. 解决U盘出现exe文件
  9. 计算机考研学校难度排行榜,计算机考研难度排行榜新鲜出炉 - 深圳远途教育
  10. Android 水波纹效果实现并且适配API21以下