RT-Thread 潘多拉开发板aht10采集温湿度LCD显示温湿度

前言

RT-Thread学习,看完了好多视频,但是但是理论上的知识,还没有自己动手实践出来刚好手里还有之前电赛的时候,买的潘多拉开发板,一直想跟着学习,但是时间太少,今天腾出时间来学一下,不能让板子吃灰,不过下载好板子的资料之后,发现不知道要从哪开始下手(有点尴尬哈)

好了废话不多说,开始上代码吧

开发前准备

正点原子潘多拉开发板一块,RT-Thread Studio开发工具即可

首先

第一步:打开我们的RT-Stuidio 然后加载我们的软件包

 然后会出现一下的画面

点击《《这个按钮

 

 然后会出现这个界面

 点击硬件

 然后按照如下图来进行勾选

 点击保存我们的工程

 出现编译画面

编译无出错

 前期准备已经结束

 步骤如下

 我们在application目录下面建一个用来获取aht10的c文件

示例代码如下

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2022-10-07     Xiao Bai       the first version
 */


#include <rtthread.h>
#include "rtdevice.h"
#include <board.h>

#include "aht10.h"

extern struct aht10_device *temp_humi_dev;

/* 定义一个温湿度采集线程句柄结构体指针 */
static rt_thread_t aht10_thread = RT_NULL;

/* 温湿度采集线程入口*/
static void aht10_thread_entry(void *parameter)
{
    float humi , temp;
    rt_size_t res;
    while(1)
    {
        humi = aht10_read_humidity(temp_humi_dev);
        temp = aht10_read_temperature(temp_humi_dev);
        rt_kprintf("temperature: %d.%d \r\n humidity   : %d.%d \r\n ", (int)temp, (int)(temp * 10) % 10, (int)humi, (int)(humi * 10) % 10); /* former is integer and behind is decimal */
        rt_thread_delay(1000);

        lcd_show_string(10, 75, 24, "Temp: %d.%d C", (int)temp, (int)(temp * 10) % 10);
        lcd_show_string(10, 105, 24, "Humi: %d.%d %%", (int)humi, (int)(humi * 10) % 10);


    }
}

static int app_aht10_init(void)
{
    rt_err_t rt_err;
    /* 创建温湿度采集线程*/
    aht10_thread = rt_thread_create("aht10 thread",     /* 线程的名称 */
                                    aht10_thread_entry, /* 线程入口函数 */
                                    RT_NULL,            /* 线程入口函数的参数   */
                                    1024,               /* 线程栈大小,单位是字节  */
                                    25,                 /* 线程的优先级,数值越小优先级越高*/
                                    10);                /* 线程的时间片大小 */

    /* 如果获得线程控制块,启动这个线程 */
    if (aht10_thread != RT_NULL)
           rt_err = rt_thread_startup(aht10_thread);
       else
           rt_kprintf("aht10 thread create failure !!! \n");

       /* 判断线程是否创建成功 */
       if( rt_err != RT_EOK)
           rt_kprintf("aht10 thread startup err. \n");

       return RT_EOK;

}
INIT_APP_EXPORT(app_aht10_init);

 这里有个地方需要注意修改我们的这个文件把他变成全局变量

按照我这样修改

 修改之后连接我们串口看看打印的信息:

 

 这样之后会我们就可以看到我们的串口打印的信息了

 接下来就可以在我我们的LCD屏上显示了:

这样就🆗了,这里是借鉴了大佬的代码,找了好久才发现的,主要是资料太少了,希望可以帮助大家,我会把我工程的源码放在文章末尾,

当然大家也可以参考这位博主的文章。

RT-Thread Studio入门(6)— 采集温湿度数据_Willliam_william的博客-CSDN博客

这个我我的工程百度云盘

链接:https://pan.baidu.com/s/1hn1lRbqZzOX2B1K1kkJzKQ 
提取码:6666

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread作品秀】温湿度监测设计作者:Star.Water 概述产生背景:当前温湿度监控设备大多只能显示当前环境参数,不能查看历史记录和历史曲线图,不能直观的显示温度湿度的变化情况。所以本次设计预计做出一款可以显示当前和历史曲线的产品。 实现功能:仪表盘显示当期的温度,湿度;历史曲线显示历史数据。 开发环境硬件:ART-Pi RT-Thread版本:rt-thread-v4.0.2 开发工具及版本:MDK5.21 RT-Thread使用情况概述移植RT-Thread到STM32H50,设置系统滴答时钟产生1ms中断,驱动RT-Thread. #define RT_HEAP_SIZE (1024*40) //1024 #define RT_MAIN_THREAD_STACK_SIZE 1024 #define RT_USING_HEAP 其他为默认 硬件框架以ART-Pi为主,驱动1024*600 7寸电容触摸屏,阿里云stm32L4开发板负责传感器参数采集,数据记录写入SD卡。ART-Pi和stm32L4都是用RT-Thread RTOS,通过串口通讯。 屏幕: 屏幕转接板参考正点原子和野火的屏幕,自己画板,嘉立创打样,10*10以内5元,由于屏幕大小位180mm*100,所以用3块板子拼接而成。 软件框架说明RTT通过系统滴答定时器产生1ms中断驱动;LVGL通过定时器3产生1ms中断驱动。 各个线程资源分配如下: 机智云WIFI远程遥控和传感器参数采集在STM32L496板子上。 软件模块说明APT-Pi与STM32L496通讯采用自定义的协议,协议内容如下: 协议包头包尾均采用双字节验证,减小内容中出现包头包尾的概率,每一帧数据的结尾添加16bit的校验值,避免通讯受到干扰时发送参数错误。 在使用过程中发现RT-Thread的printf和sprintf函数功能不完善,不能使类似%0.2来确定小数的位数和格式。 演示效果LVGL调试使用VS2017,在电脑断调试完成后快速移植到单片机。以下图片为仿真截图。 视频见附件。 代码地址代码见附件。 比赛感悟一直想要自己写一个LVGL,但是白天需要上班,晚上带孩子,没有时间搞,借助这次比赛给自己压力,每天晚上加班总算把LVGL入门了。 RT-Thread是一款很方便移植的RTOS,仅需要一个中断来驱动就好,方便移植。之前一直没有使用RTT的软件包,这次发现RTT的软件包很方便,以后一定要学习一下,这次因为时间紧迫,所以还是使用MDK开发,自己手动移植RTT,其他驱动自己添加。在功能上还有很多预想没有实现,后期会组不添加完善功能。 非常感谢RT-Thread提供的参赛机会,让我学到了知识,也了解了更多关于RT-Thread,比赛虽然快要结束了,但是在学习的道路上永不止步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值