Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
空气质量分析仪(2)
发布于 2019-12-02 14:50:44 浏览:1184
订阅该版
* 本帖最后由 zomejy 于 2019-12-2 14:50 编辑 * 本次任务主要实现数据的采集以及用RT-Thread线程跑起来任务相对简单,主要是能够实现温湿度传感器应用、PM2.5 传感器驱动与应用,提高自己的实战水平。 在实现本次任务之前需要学会线程的使用,线程是这周必须掌握的部分,[官网](https://www.rt-thread.org/document/site/programming-manual/thread/thread/)有很详细的线程讲解,这里就不 多做讲解了,话不多说,直接看一下代码。 PM2.5: 各个线程采集代码相似,这里我以我的PM2.5的代码为例粘了出来。 ```#include
void pm25_entry(void *parameter) { int pm25_val; while(1) { rt_thread_mdelay(1000); pm25_val = gp2y_read_pm25( ); if(pm25_val > 0) rt_kprintf("pm2.5 : %d mg/m3
",pm25_val); } } void pm25_init(void) { gp2y_hw_init(); rt_thread_t pm2_5_thread; pm2_5_thread = rt_thread_create("dht_tem", pm25_entry, RT_NULL, 1024, RT_THREAD_PRIORITY_MAX / 2 -1, 20); if (pm2_5_thread != RT_NULL) { rt_thread_startup(pm2_5_thread); } }```下面是PM2.5的驱动,我这款传感器可以直接用ADC采集数据转换,所以就没有挂到senseor框架上, 如果想要了解怎么搭建到serseor框架上可以参考官网的这方面讲解和这个[帖子](https://club.rt-thread.org/ask/question/12132.html)。 驱动如下: ```int gp2y_read_pm25(void) { rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); double pm25_value_f,vol,AD_v; int pm25_value_i; rt_pin_write(LED_PIN, PIN_LOW); rt_hw_us_delay(280); AD_v = rt_adc_read(adc_dev, ADC_channel); rt_hw_us_delay(40); rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(9); rt_hw_us_delay(680); //需要脉宽比0.32ms/10ms的PWM信号驱动传感器中的LED vol = AD_v * (3.0 / 4096); pm25_value_f = (vol * 0.17 - 0.1) * 1000.0; pm25_value_i = (int)(pm25_value_f); return pm25_value_i; } int gp2y_hw_init(void) { adc_dev = (rt_adc_device_t)rt_device_find(ADC_NAME); if(adc_dev == RT_NULL) { rt_kprintf("adc find field
"); } rt_adc_enable(adc_dev,ADC_channel); return RT_EOK; } ``` DHT11: RT-Thread已经包含了很多软件包,软件包里有的配置相对简单。 主要步骤: 1、打开自己的bsp文件夹,进入env; 2、输入menuconfig进入以下目录: ![600,0](https://oss-club.rt-thread.org/uploads/201910/12/103801eyaxx80px0b0yo5o.png) 3、由 menuconfig 配置保存后,使用 pkgs --update 命令将该软件包下载到本地 bsp 工程中,再使用scons --target=mdk5生成文件就可以了。 4、根据自己的要求更改例程。 这两部分整理完整后进行主函数调用就可以实现数据的采集了,这次任务也就完成了。 ![FastAdmin](https://oss-club.rt-thread.org/uploads/201910/18/213012s092088bjcz7ne2n.png) **注意事项** 1.使用 Sensor 框架,要在 menuconfig 中将它开启。 2.软件包或者env更新配置以后记得更新后scons --target=mdk5生成工程。 3。采集线程不要while(1)中不添加延时造成别的线程没办法调度。
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.2k
关于作者
zomejy
这家伙很懒,什么也没写!
提问
11
回答
21
被采纳
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组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部