1782|2

41

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

【平头哥RVB2601创意应用开发】RVB2601之获取天气小工具 [复制链接]

 

项目往期连载文章传送门:
【平头哥RVB2601创意应用开发】 RVB2601之KV组件介绍和使用
【平头哥RVB2601创意应用开发】 RVB2601之OLED-SSD1306移植介绍和使用
【平头哥RVB2601创意应用开发】 RVB2601之cJSON介绍和使用
【平头哥RVB2601创意应用开发】 RVB2601之WiFi联网获取天气信息方式介绍和使用

 

 

一、作品简介

  1. 用户可以通过按键出发获取天气的动作
  2. 设备连接固定WiFi之后,接收到按键发出的条件,通过http去请求天气信息
  3. 获取天气信息成功后,解析天气信息JSON数据,·把结果发送给OLED显示线程
  4. oled屏同步显示获取天气信息和时间

二、系统介绍

1.使用到的硬件:

  • OLED(SPI接口)

    软件模拟SPI:CLK:PA.28 MOSI:PA.29 CS:PA.27 MISO:PA.30

  • 按键(GPIO)

    使用IO:GPIO:PA.11

  • Wi-Fi(SPI)

    使用IO:MOSI:PA.17 CS:PA15 MISO:PA18 CLK:PA.16 REST:PA.21 WAKEUP:PA.25

   

2.软件设计

 

     1.  软件初始化会对网络、事件服务、日志和kv组件等进行初始化,并会创建线程"oled_task"、"button_task"、"get_weather_task"
     2.  kv组件:负责存储获取天气信息的URL,以及WiFi需要连接的热点SSID和PASSWORD

     3.  网络部分:主要负责WiFi驱动和联网等工作,并移植增加了例如http get等接口,并做了底层的实现 network 的移植

     4.  按键线程"button_task":用于用户主动查询获取当前天气的方式

     5.  获取天气信息线程"get_weather_task":用于查询天气信息的线程,并解析数据,发送给其他线程
     6.  oled显示线程"oled_thread":屏幕用于显示同步用户操作获取到的当前天气信息

     7.  使用了消息队列同于线程间通讯

三、各部分实现的功能说明和解析

1.网络部分

a.netmgr初始化和w800联网部分

 

b.回调函数中w800联网成功后,开始启动获取天气信息的线程

 

c.移植 http 接口和 http接口函数的实现 -network

 

2.OLED部分

a.部分移植 RT-thread软件包 ssd1306,优化部分API,例如直接增加字符串写入,之前是单个字符传入

 

b.接受weather_thread线程发送的天气信息,并显示

 

3.获取天气部分

a. 线程的创建

 

b. http get请求天气

 

c. cJSON解析天气信息,并发送给 oled_thread

 

4.按键部分

这里没有使用事件触发,只是做了很普通的轮询,也没有做长按、短按等状态判断,只是确认按键按下后,就发出查询天气状态消息,发送给weather_thread线程,来获取状态

 

四、视频演示

视频介绍:

  1. 给设备上电,OLED 会开机动画,闪烁几次,显示当前用户信息。
  2. 设备也会连接默认的热点
  3. 按键key1 按下,设备会请求天气信息
  4. 获取天气信息后,解析完成,发送到oled显示出来

 视频地址:

        https://b23.tv/l64gVqB

五、源码

开源仓库:

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

上传了pdf版本的项目介绍,希望代码大家可以借鉴使用或者多多交流。

【平头哥RVB2601创意应用开发】RVB2601之获取天气小工具.pdf

879.36 KB, 下载次数: 15

最新回复

能使用http库的话,就方便一些,目前还没有找到mqtt的库,不知道官方有没有这方面的支持。  详情 回复 发表于 2022-4-28 15:49
点赞 关注
 
 

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 
能使用http库的话,就方便一些,目前还没有找到mqtt的库,不知道官方有没有这方面的支持。

点评

你这个没必要使用 MQTT,获取天气就只是简单的 HTTP 请求,如果需要和云平台通讯,才会使用 MQTT,你可以看下,怎么接入阿里云,应该是有相关的demo的  详情 回复 发表于 2022-4-29 07:56
 
 
 

回复

41

帖子

2

TA的资源

一粒金砂(中级)

板凳
 
lugl4313820 发表于 2022-4-28 15:49 能使用http库的话,就方便一些,目前还没有找到mqtt的库,不知道官方有没有这方面的支持。

你这个没必要使用 MQTT,获取天气就只是简单的 HTTP 请求,如果需要和云平台通讯,才会使用 MQTT,你可以看下,怎么接入阿里云,应该是有相关的demo的

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表