3929|6

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【RT-Thread软件包应用作品】多功能天气时钟 [复制链接]

 

多功能天气时钟-微信小程序版

 

一、项目背景
    在不久前的一个早晨,我被一阵闹铃叫醒后,像往常一样去上班,到公司后发现很多同事都带了伞,于是乎打开了兜里的砖块(手机),晚上回去的时候果然被淋了,虽然雨不是很大,但是被淋总是不爽,于是乎开始思考是否能做一个天气时钟,来拯救下我和像我一样出门不看天气的朋友,吧啦吧啦......

二、项目技能点
    本项目使用RT_Thread国产操作系统开发,其丰富的软件包大大缩短了开发周期,本项目主要使用如下软件包:
    1.onenet:
设备通过mqtt连接onenet
    2.webClient:
获取天气
    3.ntp:同步网络时间
    4.cJSON:解析小程序下发数据

三、项目框架
1.总体交互逻辑图如下所示:

2.设备框图如下:

2.1.LCD显示

    LCD显示DHT11采集的温湿度和当前时间

2.2.蜂鸣器

    定时时间到了蜂鸣器一直发出声音,直到用户按下K0按键,停止发声。



 四、项目核心技术点
1.mqtt连接onenet

    理论上mqtt连接onenet应该是本项目比较有挑战性的地方,好在rt_thread官方提供了软件包,使用env工具配置后直接使用即可

2.定时逻辑处理

    本项目创建了一个时间处理线程,线程起来后首先等待连网成功,然后调用ntp接口同步网络时间,接下来进入while(1)循环,每500ms获取当前时间,和本地存储的定时器进行对比,如果当前时间等于保存的时间,开始执行闹钟动作,蜂鸣器发声。

3.天气获取逻辑处理

    创建一个天气处理线程,线程起来后首先等待连网成功,然后获取一次天气情况,并发给onenet,小程序获取并显示。然后每隔一小时获取一次天气情况和同步ntp网络时间

void weather_task_thread(void* arg)
{
    int a =0;
	uint8_t *p = &a;
	USER_TIME_S current_time = { 0x00 };

    // user_dev_time_flash_read();
    while (4 != user_get_connect_status()->connect_status)
    {
        rt_thread_delay(1);
    }
    
    rt_thread_delay(3);
    rt_kprintf("################################### start to get weather");
    weather();

	while ( 1 )
	{
		user_get_time(¤t_time);
        if ((0 == current_time.hour)  && (0 == current_time.minute) && (0 == current_time.second) )
        {
            rt_kprintf("########################## sync weather and ntp time #####################\r\n");
            weather();
            user_sntp_time_synced();
        }

        rt_thread_mdelay(1000);
	}
}

4.小程序访问onenet

     小程序使用http访问onenet,每隔3秒获取onenet数据,更新设备状态,直接操作onenet如下API接口控制和获取设备状态:

 五、项目效果演示

 六、程序源码

    小程序:

链接已隐藏,如需查看请登录或者注册

    设备端:

链接已隐藏,如需查看请登录或者注册


此内容由EEWORLD论坛网友一叶孤沙原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

hihi 您的作品获得了三等奖,记得观众今晚RTT的公众号   详情 回复 发表于 2020-1-6 16:36
点赞 关注(1)
 

回复
举报

1025

帖子

1

TA的资源

一粒金砂(高级)

沙发
 

用8266做天气预报的比较多

 
 
 

回复

5802

帖子

44

TA的资源

版主

板凳
 

厉害厉害👍

 
个人签名

射频【放大器】#无线电系统

 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

4
 
wudianjun2001 发表于 2019-12-11 14:31 用8266做天气预报的比较多

嗯嗯,是的。其实只要是WIFI都可以做的

 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

5
 

好厉害的样子,不错!

 
 
 

回复

80

帖子

1

TA的资源

一粒金砂(中级)

6
 

hihi 您的作品获得了三等奖,记得观众今晚RTT的公众号

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

7
 
Fillmore 发表于 2020-1-6 16:36 hihi 您的作品获得了三等奖,记得观众今晚RTT的公众号

多谢~

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表