甲醛是室内一项非常重要的指标,购买一台甲醛监测仪又显得太不划算,今天就来教大家如何使用 TOS_EVB_G0 开发板 + TencentOS-tiny 物联网操作系统,来自制一个简单的甲醛监测仪。
本项目制作的甲醛监测仪可以实时的检测室内甲醛浓度,在 OLED 屏幕上显示具体数值,同时还可以将数据实时上报到腾讯云物联网开发平台 IoT Explorer,用户可以在“腾讯连连”小程序实时查看数据,并通过公众号及时接收告警信息。
本项目所需要的物品清单有:
- TOS_EVB_G0 开发板 x 1
- 英国 Dart 甲醛传感器 x 1
- E53 甲醛传感器底板 x 1
成品组装图(安装各接插件时,请务必参考成品图,不要弄错方向,否则可能烧坏 MCU) 好啦~接下来开始我们的制作!
TOS_EVB_G0 开发板是由腾讯 TencentOS-tiny 团队设计的一款物联网开发板,板载资源如下:
- 主控芯片采用 STM32G070RB,Flash:128KB、RAM:36KB;
- 板载腾讯云定制固件版 ESP8266 WIFI 模组;
- 板载 E53 传感器标准接口,方便连接各种 E53 传感器;
- 板载 0.91'OLED 显示屏幕;
- 板载 8MB SPI Flash,可用于固件升级;
- 板载 CH340 转串口连接,可以使用一根 USB 线连接至电脑,查看串口日志,升级 esp8266 固件,发送 AT 指令
下面是每部分详细的说明。
最小系统部分由电源电路、时钟电路、Boot 电路、复位电路、下载电路组成:
WIFI 部分包括 ESP8266 WIFI 模组供电电路、串口通信电路:
E53 扩展接口供外部传感器连接,包括:一个串口、一个 SPI 接口、一个 IIC 接口、四个普通 GPIO 口、一个 ADC 模拟采集接口,一个 DAC 模拟输出接口,如图:
USB 转串口电路将串口信息转换为 USB 口信号,使得开发板可以直接通过 USB 线连接至 PC,在 PC 上使用串口助手查看日志:
开发板 3v3---> STlink 3.3V 开发板 DIO---> STlink SWDIO 开发板 CLK---> STlink SWCLK 开发板 GND---> STlink GND 请大家参考下图进行连接,千万不要接反接错,以免烧掉 MCU
MDK 即 RealView MDK 或 MDK-ARM(Microcontroller Development kit),是 ARM 公司收购 Keil 公司以后,基于 uVision 界面推出的针对 ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4 等 ARM 处理器的嵌入式软件开发工具。MDK-ARM 集成了业内最领先的技术,包括 uVision4 集成开发环境与 RealView 编译器 RVCT。支持 ARM7、ARM9 和最新的Cortex-M3/M1/M0 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比,RealView 编译器的最新版本可将性能改善超过 20%。
Keil 公司开发的 ARM 开发工具 MDK,是用来开发基于 ARM 核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK 包含了工业标准的 Keil C 编译器、宏汇编器、调试器、实时内核等组件,支持所有基于 ARM 的设备,能帮助工程师按照计划完成项目。
登录 MDK 官网,下载 MDK5 软件,下载地址: http://www2.keil.com/mdk5 或者 https://www.keil.com/download/product/
下载的版本最好在 5.24 以上,本开发教程以 5.24 版本为例,双击 MDK524 应用程序文件,点击 next>>。
打上 I agree 前面的勾勾,即是同意一些安装协议。点击 next>>。
选择安装路径,可以默认也可以安装在我们自己建立的文件夹下。点击 next>>。
这里填写的是我们的一些信息,填写完整后,继续 next>>。
然后等待安装完成即可。
然后会跳出来这个界面,这个我们后面再讲,先点 OK,把弹框都叉掉。
激活 MDK,导入 License,激活 MDK 后便可使用了。
特别提示:一定要输入 License 激活 MDK 软件,建议购买正版 License。
安装完 MDK 后,我们需要安装开发套件中单片机型号对应的 Pack。 安装方式一 登录官网:http://www.keil.com/dd2/pack/
下载 Keil.STM32G0xx_DFP.x.x.x.pack 后安装。
安装方式二 MDK 软件上在线安装
打开软件,在导航栏打开 Pack 安装界面,然后选择 ok 选项。
进入在线安装界面,选着 STM32G0XX Pack,点击 Install 进行安装。
至此,我们开发板的单片机程序开发环境已经搭建完毕,重启 MDK 软件就可以使用了。
前面讲了开发板单片机程序的开发环境的搭建,但是为了将程序烧录到开发板中我们还需要使用仿真器。我们这套开发板选用 ST 公司的 ST-Link V2 仿真器进行开发板程序的烧写和仿真,下面介绍 ST-Link 驱动的安装及环境搭建。 在 ST 官网下载 ST-Link 驱动, https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-link009.html
(驱动有 2 种:32 位电脑系统安装“dpinst_x86”、64 位电脑系统安装“dpinst_amd64”)。
运行对应的驱动,安装 ST-Link V2 驱动程序。安装路径尽量保持默认路径。
安装完成后,将 ST-Link 通过 USB 接口连入电脑。打开“设备管理器”。若看到如下图所示,表示驱动安装成功。
这里提醒 2 点: 1, 各种 windows 版本设备名称和所在设备管理器栏目可能不一样,例如 WIN10 插上 STLINK 后显示的是 STM32 STLINK。 2, 如果设备名称旁边显示的是黄色的叹号,请直接点击设备名称,然后在弹出的界面点击更新设备驱动 至此,ST-Link 驱动已经安装完成。接下来大家只需要在 MDK 工程里面配置一下 ST-Link 即可。
互联网搜索下载 CH340 串口芯片的驱动 安装方法:打开驱动安装程序点击安装即可。
注:若安装失败,请先点击卸载,后点击安装。
工具下载:http://www.daxia.com/download/sscom.rar
安装方法:串口调试助手 sscom5.13.1 是免安装的,解压出压缩包即可直接使用。 根据 PC 和终端之间的连接,选择正确的串行端口。 打开电脑的设备管理器,在端口列表可以看到 PC 与开发板连接的端口号。
我这里显示的是 COM26,所以要在 sscom 工具中选择 COM26,开发板程序波特率设置为 115200,所以我在 sscom 串口工具中选择 115200 波特率。
腾讯云 IoT AT 指令是一套针对使用通讯模组(2G/4G/NB/WIFI)接入腾讯云物联平台的定制 AT 指令集,如果通讯模组实现了该指令集,则设备接入和通讯更为简单,所需代码量更少。ESP8266 作为 IoT 领域使用最广泛的一款 WiFi 芯片/模组,腾讯云在其通用 AT 指令基础上,增加了腾讯云 IoT AT 指令集,形成一个定制的模组固件 QCloud_IoT_AT_ESP8266。
下载链接:https://github.com/TencentCloud/tc-iot-sdk-embedded-for-esp8266
使用 git 下载的命令如下:
git clone https://github.com/TencentCloud/tc-iot-sdk-embedded-for-esp8266.git
使用乐鑫官方下载工具 ESPFlashDownloadTool,下载链接如下:
https://www.espressif.com/zh-hans/support/download/other-tools
点击下载 Flash 下载工具(ESP8266 & ESP32 & ESP32-S2): 下载之后解压即可。
腾讯云 IoT 定制的 AT 模组固件 QCloud_IoT_AT_ESP8266,适用于所有 FLASH 大小为 2MB 或者 2MB 以上的 ESP8266 模组。
AT 串口使用 UART0,默认的 Tx 为 GPIO1,Rx 为 GPIO3。但因为 ESP8266 的 UART0 默认会在上电启动期间输出一些打印,如果打印信息影响设备功能,可在上电期间将 U0TXD(GPIO1)、U0RXD(GPIO3) 分别与 U0RTS (GPIO15),U0CTS(GPIO13) 进行交换,以屏蔽打印。因此提供两个版本的固件:
- 名称包含 UART_1_3 的固件串口使用的 Tx 为 GPIO1,Rx 为 GPIO3。
- 名称包含 UART_15_13 的固件串口使用的 Tx 为 GPIO15,Rx 为 GPIO13。
进入 QCloud_IoT_AT_ESP8266_FW,本文中我们使用第一个固件:
① 将开发板上的 ESP8266 启动引脚配置端子切换到低电平;
② 将开发板上的串口选择端子置于中间,使 ESP8266 直接与 PC 串口连接:
双击工具,运行: 选择开发者模式: 选择 ESP8266 下载工具:
按照图中进行操作: 点击下载之后,按下开发板上的复位键,Flash 下载工具开始下载: 若没有显示,请检查接线端子是否连接正确。
下载完成之后如图: 关闭工具,将 boot 选择引脚拔下,将串口选择端子恢复默认。
注意:完成固件下载后,一定切记将跳线端子恢复到默认状态,默认端子怎么短接可以参考前面完整的组装成品图,否则 wifi 将没法工作,MCU 也没法控制 wifi。
基于 TencentOS Tiny EVB G0 要完成腾讯云 IoT Explorer 对接,需要完成两个部分的工作。 一是:腾讯云 IoT explorer 上完成项目、产品、设备创建、参数配置 二是:基于 TencentOS Tiny 完成应用开发,向腾讯云上报业务数据。
登录腾讯云物联网开发平台,点击新建项目,填写项目名称和简介:
点击项目名称进入到该项目中,点击新建产品: 产品新建成功后,可在产品列表页查看到:
进入产品,点击【数据模板】,点击【导入 JSON】,导入下面的 JSON 代码:
{
"version": "1.0",
"profile": {
"ProductId": "BDDSF87WEA",
"CategoryId": "1"
},
"properties": [
{
"id": "ch20_ppm_value",
"name": "甲醛浓度值",
"desc": "",
"mode": "r",
"define": {
"type": "float",
"min": "0",
"max": "2",
"start": "0",
"step": "0.001",
"unit": "ppm(mg/m3)"
},
"required": false
}
],
"events": [],
"actions": []
}
创建成功之后进入设备,查看到产品 ID、设备名称、设备秘钥:
进入 < TencentOS-tiny\board\TencentOS_tiny_EVB_G0\KEIL\mqtt_iot_explorer_tc_ch20_oled> 目录,打开 TencentOS_tiny.uvprojx 工程。
打开mqtt_iot_explorer_tc_ch20_oled.c
文件编辑,修改要接入 WIFI 的名称和密码(建议使用手机热点,不要有特殊字符):
同样在此文件宏,修改云端配置信息,使用之前在云端查看的信息替换:
点击进入工程配置界面按纽,进入工程配置界面: 选择 Debug 选项,进入仿真器设置界面。
下拉仿真器选择列表,选着 ST-Link Debugger 并勾选右侧 Use,点击 Settings 进入 ST-Link V2 仿真器配置界面。
开发板设计的程序烧录方式为 SW,此处 Unit 选择 ST-Link/V2,且 Port 选择 SW,并确认右侧框内是否检测出 SW 设备,点击<确认>保存配置。 点击确定之后,回到主界面,点击下载按钮:
运行 sscom 软件,打开电脑上开发板对应的串口,比如我选择 COM26,点击【打开串口】: 按下开发板上的复位键,程序开始运行,即可在串口助手中看到系统运行打印的日志:
回到腾讯云物联网开发平台,可以看到设备状态变为【在线】: 点击【设备日志】一栏,可以看到设备上报的甲醛浓度值: 点击【设备属性】一栏,点击【甲醛浓度值】后的【查看】,即可看到甲醛浓度值的历史数据曲线图:
手机端在【微信】搜索【腾讯连连】小程序,首次使用需要进入后点击【我的】->【家庭管理】,添加一个你喜欢的名称即可。
在腾讯云物联网开发平台进入【设备调试】,点击对应设备后的【二维码】:
进入【交互开发】,点击【面板配置】一栏: 在此页面中可以自己根据喜好配置小程序显示面板,如图:
保存之后,在腾讯连连小程序删除设备,重新扫描绑定设备即可生效。
点击左侧【数据开发】一栏,点击【新建数据流】: 填写数据流名称:
添加并设置【设备数据】节点: 添加并设置【过滤节点】: 添加并设置【推送节点】:
在微信关注【腾讯连连】公众号: 关注后,如果有任何告警消息,即可在公众号接收到。
如果仅仅为了测试告警功能,可以先将告警值设较小的值,比如设为 0.070,测试完成之后再恢复国家规定标准 0.80。