X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
GD32 MCU
[GD32L233C-START 评测] 【GD32L233C-START评测】17. 作品完成之室内环境监控设备
hehung
2022-2-27 16:05
楼主
之前的发帖内容请跳转 [【GD32L233C-START评测】1.开箱 ](https://bbs.eeworld.com.cn/thread-1192136-1-1.html "【GD32L233C-START评测】1.开箱 ") [【GD32L233C-START评测】2.手把手创建新工程](https://bbs.eeworld.com.cn/thread-1192155-1-1.html "【GD32L233C-START评测】2.手把手创建新工程") [ 【GD32L233C-START评测】3.移植FreeRTOS到GD32L233](https://bbs.eeworld.com.cn/thread-1192482-1-1.html " 【GD32L233C-START评测】3.移植FreeRTOS到GD32L233") [ 【GD32L233C-START评测】4. 移植RT-Thread到GD32L233](https://bbs.eeworld.com.cn/thread-1192592-1-1.html " 【GD32L233C-START评测】4. 移植RT-Thread到GD32L233") [【GD32L233C-START评测】5. IIC驱动OLED](https://bbs.eeworld.com.cn/thread-1192898-1-1.html "【GD32L233C-START评测】5. IIC驱动OLED") [ 【GD32L233C-START评测】6. 获取RTC时间并通过OLED显示](https://bbs.eeworld.com.cn/thread-1192907-1-1.html " 【GD32L233C-START评测】6. 获取RTC时间并通过OLED显示") [【GD32L233C-START评测】7. PWM驱动LED](https://bbs.eeworld.com.cn/thread-1193516-1-1.html "【GD32L233C-START评测】7. PWM驱动LED") [【GD32L233C-START评测】8. TRNG真随机数生成](https://bbs.eeworld.com.cn/thread-1193518-1-1.html "【GD32L233C-START评测】8. TRNG真随机数生成") [ 【GD32L233C-START评测】9. CRC检验](https://bbs.eeworld.com.cn/thread-1193662-1-1.html " 【GD32L233C-START评测】9. CRC检验") [【GD32L233C-START评测】10. ADC读取芯片内部温度](https://bbs.eeworld.com.cn/thread-1193760-1-1.html "【GD32L233C-START评测】10. ADC读取芯片内部温度") [ 【GD32L233C-START评测】11.DAC输出电压值_ADC读取外部电压值](https://bbs.eeworld.com.cn/thread-1193765-1-1.html " 【GD32L233C-START评测】11.DAC输出电压值_ADC读取外部电压值") [【GD32L233C-START评测】12. 硬件IIC驱动OLED](https://bbs.eeworld.com.cn/thread-1193778-1-1.html "【GD32L233C-START评测】12. 硬件IIC驱动OLED") [【GD32L233C-START评测】13. CAU加密算法之DES/TDES](https://bbs.eeworld.com.cn/thread-1194132-1-1.html "【GD32L233C-START评测】13. CAU加密算法之DES/TDES") [ 【GD32L233C-START评测】14. CAU加密算法之AES](https://bbs.eeworld.com.cn/thread-1194242-1-1.html " 【GD32L233C-START评测】14. CAU加密算法之AES") [【GD32L233C-START评测】15. flash擦写操作,将FLASH当做EEPROM使用](https://bbs.eeworld.com.cn/thread-1194416-1-1.html "【GD32L233C-START评测】15. flash擦写操作,将FLASH当做EEPROM使用") [ 【GD32L233C-START评测】16. IIC获取x-nucleo-iks01a3板子温湿度以及大气压](https://bbs.eeworld.com.cn/thread-1195070-1-1.html " 【GD32L233C-START评测】16. IIC获取x-nucleo-iks01a3板子温湿度以及大气压") # 前言 使用GD32L233制作了一个室内环境监控装置,使用了嵌入式软件系统RT-Thread。可以实现时间日期显示,温湿度显示,气压显示,可燃气体监控以及蜂鸣器报警等功能,能够对室内环境实时监控,用户可以自行设置可燃气体报警阈值,阈值存储在Flash中,掉电不会丢失。 # 使用板载资源 1. 普通IO输入输出 - 用于LED输出控制以及按键采样输入; 2. PWM - 用于LED呼吸输出以及蜂鸣器输出控制; 3. ADC - 用于可燃气体传感器采样以及模拟按键采样; 4. IIC - 用于温湿度,气压传感器数据采集以及OLED显示控制; 5. RTC - 用于时间输出; 6. FMC - 用于保存可燃气体阈值,上电时读出阈值,设置阈值时保存早指定FLASH地址; 7. 串口 - 用于RT-Thread嵌入式系统的shell; 8. 嵌入式系统RT-Thread。 # 硬件连接以及功能介绍 ## LED功能 本作品使用了两个LED,一个由PWM控制(控制周期性呼吸),一个是普通IO控制(控制周期性闪烁),主要是用于表示环境监控装置是否正常工作。有一个线程专门控制LED呼吸以及闪烁,线程周期是500ms,线程优先级为5。 LED使用了板载的LED1以及LED4: -- LED1作为普通IO口,每500ms翻转一次; -- LED4为PWM控制,呼吸周期为12.5s。 ### 线路连接 **LED1 --> PA7 LED4 --> PC7**
**PC7的端口复用关系如下,使用了Timer2 CH1,复用关系为AF1**:
## 按键功能 按键共有三个,其中一个是板载的按键,位普通IO控制,另两个为外部连接的按键,这两个按键是模拟按键,两个按键接在同一个ADC口上。按键采样程序有单独的线程控制,线程周期是40ms,优先级为3。 ### 数字按键 数字按键为板载按键。**电路连接:PA0**
**定义数字按键为按键1**,模拟按键分别为按键2和按键3。 ### 模拟按键 模拟按键原理图如下,两个按键接在同一个模拟信号上。
实物图:,**定义左边的按键为按键2,右边的按键为按键3**:
通过计算就可以算出来每个按键按下的时候switch端口会采集到的电压。 Switch端电压计算(使用12bit精度): --S1按下:Switch = (3.3V)*[1/(4.7+1)] = 0.58V,转换为12bit精度数字为0.58/3.3 * 4096 ≈ **718.6** --S2按下:Switch = (3.3V)*[2/(4.7+2)] = 0.99V,转换为12bit精度数字为0.99/3.3 * 4096 ≈ **1222.7** 实测结果也如上所示。 硬件连接:**switch连接到PA1, 使用的是ADC_IN1**
## 蜂鸣器 蜂鸣器主要用于报警用,当可燃气体传感器检测到可燃气体超过阈值只有就会报警。使用的是无源蜂鸣器,需要用PWM驱动,人耳能听到的声音频率为20Hz到20kHz,在设置PWM频率的时候要注意保持在这个频率,而且频率不能太高,过高的频率声音很尖锐刺耳,本作品使用的频率为1000Hz,驱动占空比为50%,为最大音量。 蜂鸣器控制有专门的线程,优先级为2. 蜂鸣器根据可燃气体监测的浓度输出两种不同间断的声音,当为一级警报(见可燃气体传感器说明)时,输出声音间断周期为1s;当为二级警报(见可燃气体传感器说明)时,输出声音的间断周期为100ms。 蜂鸣器电路图如下:
实物图:
**BEEP引脚连接到了PA3**. **PA3复用为Timer1 CH3,复用关系为AF1**,如下图.
## 可燃气体传感器MQ-2 可燃气体传感器使用的是MQ2,可以高灵敏度的监测大部分可燃气体以及烟雾,其使用ADC输出监测结果,当检测到的可燃气体(如甲烷)溶度越高,输出的ADC值越大。 软件中使用12bit ADC,然后将采集到的值转换成百分比形式,为0%~100%。 可燃气体检测有专门的线程,优先级为1,因为检测可燃气体为最优任务,线程周期为1s。 可燃气体报警阈值设置了两个,一个为一级阈值,一个为二级阈值,一级阈值对应的浓度较低,只是可能存在可燃气体泄漏;二级阈值对应浓度较高,肯定可燃气体存在泄漏的情况,这两个数值可以使用按键进行设置。 **注意:MQ2的供电电压为5V**,最开始我接的是3.3V导致ADC输出总是为0,为此花了很多时间排查问题。 电路图如下:
实物图:
**ADC引脚连接到了PA2,即ADC_IN2,采样精度为12bit**
## 温度、湿度、气压传感器 - 温度传感器使用的是STTS751,用来采集温度; - 湿度传感器使用的是HTS221,用来采集湿度; - 气压传感器使用的是LPS22HH,用来采集大气压强。 上面的传感器使用的详细介绍请参考我的帖子,这里不在赘述: [【GD32L233C-START评测】16. IIC获取x-nucleo-iks01a3板子温湿度以及大气压](https://bbs.eeworld.com.cn/thread-1195070-1-1.html "【GD32L233C-START评测】16. IIC获取x-nucleo-iks01a3板子温湿度以及大气压") 实物图:
硬件连接:这个三个传感器都使用了IIC控制,使用的IIC接线为: **SCL - PB10 SDA - PB11** ## OLED显示屏 OLED显示屏单色,分辨率为128*64,控制方式为IIC。 ### 功能 1. 时间显示 间隔读出RTC输出的时钟信息并显示出来。 2. 传感器数值显示 显示温度值,湿度值,气压值,可燃气体浓度值。 3. 设置 显示设置界面,用于设置可燃气体报警阈值,初始一级报警阈值为30,二级报警阈值为45;可以调整参数。 4. 设置完成 在设置完成阈值之后会显示这个界面,表示设置成功。 硬件连接: **SCL - PB10 SDA - PB11** ## RTC 使用RTC实时时钟组件来获取当前的时间并在显示屏上显示出来。 可以参考帖子:[【GD32L233C-START评测】6. 获取RTC时间并通过OLED显示](https://bbs.eeworld.com.cn/thread-1192907-1-1.html "【GD32L233C-START评测】6. 获取RTC时间并通过OLED显示") ## FMC flash擦写控制 主要用于将可燃气体的报警阈值写入到FLASH的固定地址中。上电时先从改地址中读取数值,如果全是0xFFFF,表示没有数据写入,读取默认的阈值,一级阈值30,二级阈值45;如果读出来的数值不是0xFFFF,就将读出来的数值装载到一级阈值以及二级阈值的变量中。 当用于通过按键重新设置了阈值之后,擦除指定FLASH page,然后将阈值数据重新写入到指定地址中。 阈值写入地址: **1. 一级阈值:0x0803E000;** **2. 二级阈值:0x0803E001。** 0x0803E000地址对应的FLASH page为62,当用户重新设置了阈值之后,先擦除FLASH的62页,然后再将两个阈值重新入到0x0803E000以及0x0803E001中。 FMC的操作参考帖子:[【GD32L233C-START评测】15. flash擦写操作,将FLASH当做EEPROM使用](https://bbs.eeworld.com.cn/thread-1194416-1-1.html "【GD32L233C-START评测】15. flash擦写操作,将FLASH当做EEPROM使用") # 功能描述 功能是基于OLED显示界面而有所区分的。 ## 上电时 上面时会显示 环境监控仪界面,持续一秒钟。
。 ## 时间显示 时间显示界面会显示从RTC读出来的时间,也会显示日期(年月日)在最下面,左上角显示当前温度,右上角显示当前湿度。
** 在这个界面下按下按键3,可以切换到【环境监控界面】 在这个界面下按下按键2,可以切换到【设置界面】 ** ## 环境监控 环境监控显示传感器读取到的温度,湿度,气压,可燃气体浓度等数据并显示出来。
** 在该界面下,按下按键3可以切换到【设置界面】 在该界面下,按下按键2可以切换到【时间显示界面】 ** ## 设置 设置界面可以对可燃气体的浓度进行设置,在开始进入到这个界面的时候,光标在最下面的【开始】上,表示还没有进入到对阈值的设置逻辑中,如下图。
** 在此界面下,按下按键3可以切换到【时间显示界面】 在此界面下,按下按键2可以切换到【环境监控界面】 在此界面下,按下按键1(短按,时间不超过1s)光标会切换到一级阈值设置处。 ** 当光标在一级阈值设置处,如下图
** 按下按键3阈值+1,当阈值等于二级阈值-1时,再次按下会变为101, 按下按键2阈值-1,当阈值=10时,再次按下会变为二级阈值-1. 按下按键1(短按,时间不超过1s)光标会切换到二级阈值设置处。 ** 当光标在二级阈值设置处。 ** 按下按键3阈值+1,当阈值等于99时,再次按下阈值会变为一级阈值+1或者20, 按下按键2阈值-1,当阈值=20或者等于一级阈值+1时,再次按下会变为99. 按下按键1(短按,时间不超过1s)光标会切换到【确认】上。 ** 当光标在【确认】处。 ** 按键2和按键3将失效。 按键1短按(时间不超过1s),光标会切换到一级阈值设置处 按键1长按(时间超过1s),切换到【设置成功界面】,开始存储新的阈值到FLASH中 ** ## 设置完成 设置完成界面,表示阈值设置成功,新的阈值值已经存入了FLASH中,一秒钟之后退回到【设置界面】。光标处变为【开始】,此时可以按照【设置界面】中的描述来做。
# 显示效果 显示视频在Bilibili中:https://www.bilibili.com/video/BV1pT4y1Q7sc/ [点击跳转](https://www.bilibili.com/video/BV1pT4y1Q7sc/ "点击跳转") # 代码 代码放在了码云中:https://gitee.com/hehung/EnvironmentalMonitoring [点击跳转](https://gitee.com/hehung/EnvironmentalMonitoring "点击跳转")
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
菜鸟求助,红外新手接收问题
先预告下:国民技术寄送的9块板卡到了,太快了,夕发朝拾
单片机、DSP、PLD/EDA的介绍、比较和分析
快到元旦了,很想念学生时代的欢庆聚会
咖啡品位鄙视链(装X指南)
Cyclone III配置文件大小
今年没有年终奖了
定时计数器T0作定时应用技术(二)
求购一块c2000 luanchpad
wince 5中 APP怎样发送iocontrol调用FMD驱动中的FMD_OEMIoControl函数
有六块显示屏的创意立体浏览器
快速发展的电池充电器IC
平头哥RRVB2601测评:开箱、硬件分析与环境搭建
关于.net Compact framework 3.5
求教2812 ECAN问题,解决了重金相谢
三防漆工艺的规范和要求
5.16 EEWORLD春游第二帖——团圆篇
Debug编译通过,Release编译报错,为什么呢?
国内PMP设计公司的现状及其面临的挑战
orangepi zero gpio控制
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复