Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
基于onenet的温湿度智能检测系统
发布于 2023-07-27 02:20:09 浏览:251
订阅该版
[tocm] # RTT夏令营实践作业——基于onenet的温湿度智能检测系统 ## *系统设计流程* ![image-20230726231154899.png](https://oss-club.rt-thread.org/uploads/20230727/bb734c601766b9d68adbdd54c458a4f8.png) 首先通过添加软件包的形式为HMI_borad添加rw007、onenet及AHT10的配置文件,然后更改配置使其顺利联网,之后在onenet平台上上线设备,初步工作完成 ![image-20230726232757301.png](https://oss-club.rt-thread.org/uploads/20230727/5f5299d397fa42ba81ed1f7aef4a7ceb.png.webp) 其次设计RTT系统流程,首先创建优先级较低的线程**entry_tem**使其获取AHT10的实时数据,同时由于采集数据较为波动,采用滑动滤波的方式将数据进一步处理,并完成数据更新 entry_tem代码如下: ```c void hal_entry(void) { rt_kprintf("\nHello RT-Thread!\n"); float humidity, temperature; aht10_device_t dev; /*开启总线*/ const char *i2c_bus_name = "i2c1"; int count=0; rt_thread_mdelay(2000);//等待传感器正常工作 dev = aht10_init(i2c_bus_name);//初始化aht10 if(dev == RT_NULL) { rt_kprintf("The sensor initializes failure"); return 0; } while (1) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); /*循环读取温度和湿度的值*/ humidity = aht10_read_humidity(dev); rt_kprintf("湿度 : %d.%d %%\n ", (int)humidity, (int)(humidity*10)%10); temperature = aht10_read_temperature(dev); rt_kprintf("温度 : %d.%d\n ", (int)temperature, (int)(temperature*10)%10); rt_thread_mdelay(1000); } } ``` > 信号量的使用:在滑动滤波完成之后使标志位flag = 1;当flag = 1时释放信号量 ```c //此处输入信号量相关代码 ``` 滑动滤波算法如下所示: ```c int32 update(int32 data ) { int i = 0; int32 sum = 0; for(i = 0; i <= depth - 2; i++) { buffer_fiter[i] = buffer_fiter[i + 1]; sum += buffer_fiter[i]; } sum += data; buffer_fiter[depth - 1] = data; return sum/depth; } ``` 最后通过创建较高优先级的线程**entry_sent**使其在接受到tem的信号量之后完成数据发送,完成整个温湿度检测装置 ```c static void onenet_upload_entry(void *parameter) { int value = 0; while (1) { value = rand() % 100; if (onenet_mqtt_upload_digit("temperature", value) < 0) { LOG_E("upload has an error, stop uploading"); break; } else { LOG_D("buffer : {\"temperature\":%d}", value); } rt_thread_delay(rt_tick_from_millisecond(5 * 1000)); } } ``` ## 系统演示效果 B站视频链接:[好多bug队](https://www.bilibili.com/video/BV1294y1v749/?buvid=XY1C6571F628501E9C898A3FA3A6E1C9E1209&is_story_h5=false&mid=tPXTdxW0HoGdW%2FmtzGlHnw%3D%3D&plat_id=147&share_from=ugc&share_medium=android&share_plat=android&share_session_id=c1ce403c-072b-4d95-9e95-3790694a8cd5&share_source=QQ&share_tag=s_i×tamp=1690390459&unique_k=gua3rwS&up_id=1844267373&vd_source=9f666e17423fefab685b25d3d46c64d2) ## 系统使用前景 1. **室内环境监测:温湿度检测可用于室内环境监测,例如家庭、办公室、商店和工厂等场所。通过监测温度和湿度,可以调节空调、加湿器或除湿器等设备,提供舒适的室内环境。** 2. **农业和温室:温湿度检测对于农业和温室种植非常重要。合适的温湿度水平有助于植物的生长和发育。通过监测温度和湿度,可以实现自动控制系统,确保植物在适宜的环境条件下生长。** 3. **食品贮存和运输:在食品行业中,温湿度检测对于食品贮存和运输至关重要。恶劣的温湿度条件可能导致食品变质和腐败。监测温度和湿度可以帮助确保食品在安全的条件下保存和运输。** 4. **医疗保健:在医疗保健领域,温湿度检测可用于监测医院、实验室和药品存储区域的环境条件。合适的温湿度水平有助于维持病人的舒适和保持药品的有效性。** 5. **环境监测:温湿度检测在环境监测方面也具有重要作用。通过监测温度和湿度,可以评估气候变化、火灾风险、洪水预警等方面的情况,并采取相应的措施来保护环境和人类安全。**
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
NineDay
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部