0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于NiobeU4开发板的简易桌面天气预报设计&实现

电子发烧友开源社区 2022-10-09 18:09 次阅读

一、桌面天气预报器架构

1.手撕HTTP request

桌面天气预报器考虑的比较简单,虽然LWIP能支持,但是HTTP协议栈尚未实现,之前考虑直接在OpenHarmony手写一个HTTP GET request,然后NiobeU4开发板解析几个天气的关键词,实现显示即可,至于HTTPS与HTTP的选择,当然是越简单越好了,找了个HTTP的天气网站(http://www.yytianqi.com/),注册个账号,使用API即可,这个API的格式类似这样:

http://api.yytianqi.com/接口名称?city=城市ID&key=用户key

初步设计就是在NiobeU4开发板端侧构造HTTP GET request消息并发出,然后解析其response,再在LCD侧显示,基本框架如下:

219b4d30-47b7-11ed-a3b6-dac502259ad0.png

#define SERVER_IP "123.57.54.168"
#define SERVER_PORT 8080


    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
      printf("Socket error
");
      osDelay(OD_DELAY_100);
      continue;
    }
    memset_s(&(client_addr), sizeof(client_addr), 0, sizeof(client_addr));
    client_addr.sin_family = AF_INET;
    client_addr.sin_port = htons(SERVER_PORT);
    client_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
    if (connect(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr)) == -1) {
      closesocket(sock);
      osDelay(OD_DELAY_1000);
      continue;
    }
  //send HTTP GET msg
  char cmd[256];
 bzero(cmd, 256);
  strcpy(cmd,"GET /observe?city=CH210401&key=XXXXXXXXXXXXXXXX HTTP/1.1
");
 strcat(cmd,"Host: 123.57.54.168

");
 
 write(sock, cmd, strlen(cmd));

(左右移动查看全部内容)

这个HTTP GET发出去后,服务端认不出,找了个工具模拟了下,发现还是相同的问题,貌似服务器端对 的解析不是换行,捣鼓了很久还是不行,于是放弃。

21bba936-47b7-11ed-a3b6-dac502259ad0.jpg

2.曲线救国

既然直接手撕HTTP GET request有问题,那还是换条路吧。

设想是有个server来做网关,用于搭建NiobeU4开发板与天气网站之间的桥梁,负责获取天气信息,并通过TCP链接转发到NiobeU4开发板端侧,具体如下:

21e1218e-47b7-11ed-a3b6-dac502259ad0.png

二、实现&展示

方案确定下来后具体实现就很简单了,网关处起个任务到www.yytianqi.com获取天气信息,然后发给NiobeU4开发板,NiobeU4开发板端侧收到信息后做天气信息字符串匹配,根据天气内容在LCD上显示相关信息。

21f801e2-47b7-11ed-a3b6-dac502259ad0.png

直接拷贝至系统,reset板子。

Gateway侧HTTP GET得到的信息如下:

{"code":1,"msg":"Sucess","counts":29,"data":{"cityId":"CH210401","cityName":"u5b81u6ce2","lastUpdate":"2022-10-07 2337","tq":"u9634","numtq":"02","qw":"15","numfl":"0","fl":"u5faeu98ce","fx":"u897fu5357u98ce","numfx":"5","sd":"92"}}

(左右移动查看全部内容)

NiobeU4开发板端的显示如下,多云天气:

228ca1bc-47b7-11ed-a3b6-dac502259ad0.jpg

三、附加电池

刚好手头有块3.7V的锂电池,问了技术直接接上了,注意正负极即可,这块电池年份有点久了,基本上续航在3-5h。细心的可以看到视频中的电源灯是没有亮的。

22b8152c-47b7-11ed-a3b6-dac502259ad0.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164117
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30315
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    94004
  • LwIP
    +关注

    关注

    1

    文章

    82

    浏览量

    26620
  • OpenHarmony
    +关注

    关注

    23

    文章

    3297

    浏览量

    15159
  • NiobeU4
    +关注

    关注

    3

    文章

    31

    浏览量

    442

原文标题:基于NiobeU4开发板的简易桌面天气预报设计&实现

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview天气预报

    `用labview写的天气预报,信息比较多,懒得分析,你们各取所需吧!`
    发表于 07-28 14:49

    【开鸿智谷NiobeU4开发板免费试用体验】开箱体验编译环境搭建及烧录

    感谢开鸿智谷和电子发烧友寄来的中秋礼物,下面给大家做个NiobeU4开发板开箱体验,祝大家中秋快乐!1 、开箱此次收到的NiobeU4开发板,是已经组装好的,主要部件是底板和1.44寸
    发表于 09-11 19:52

    【开鸿智谷NiobeU4开发板免费试用体验】基于Ubuntu22.04的NiobeU4开发环境搭建

    简介NiobeU4是基于ESP32U4WDH推出的物联网设备开发套件,集成2.4GHzWifi和蓝牙双模,具有超高的射频性能、稳定性、通用性和可靠性,以及超低的功耗,适用于各种应用场
    发表于 09-17 16:43

    【开鸿智谷NiobeU4开发板免费试用体验】开鸿智谷NiobeU4恢复出厂太空飞人

    board niobeu4)---&amp;gt;(x)select board niobeu4 ---&amp;gt;[*] use openvalley
    发表于 09-29 18:37

    【开鸿智谷NiobeU4开发板免费试用体验】 开发环境搭建并初步测试程序;

    感谢 发烧友学院以及拓维信息 为我和孩子提供此产品## 开鸿智谷NiobeU4开发板。感谢研发人员依然小烨哥和 大佬们的支持指导。处理器简介ESP32 -U4WDH乐鑫单核Wi-Fi &amp
    发表于 09-30 11:06

    【开鸿智谷NiobeU4开发板免费试用体验】1.Windows物理机上构建Linux开发环境

    Delete-&amp;gt;任务管理器-&amp;gt;性能-&amp;gt;内存鸣谢:开鸿智谷NiobeU4开发板具有丰富的示例程序可
    发表于 10-01 23:39

    【开鸿智谷NiobeU4开发板免费试用体验】新增ADC按键控制LED的demo

    前言本文主要分享如何基于开鸿智谷NiobeU4开发板实现ADC按键点亮LED的案例。因NiobeU4开发板现在release出来的版本ADC的HDF丢失需要重新适配(调用AdcOpen
    发表于 10-03 00:09

    【开鸿智谷NiobeU4开发板免费试用体验】2.NiobeU4编程基础--gpio与uart联合使用示例

    【开鸿智谷NiobeU4开发板免费试用体验】2.NiobeU4编程基础--gpio与uart联合使用示例1.概要:本文主要总结了编程前的一些先决条件,如下图所示:主要包括如何编译,烧录,调试,以及
    发表于 10-05 19:51

    【开鸿智谷NiobeU4开发板免费试用体验】简易桌面天气预报器的设计&amp;实现

    做网关,用于搭建NiobeU4开发板天气网站之间的桥梁,负责获取天气信息,并通过TCP链接转发到NiobeU4
    发表于 10-07 23:35

    【开鸿智谷NiobeU4开发板免费试用体验】Demo例程加载

    接上文| 【开鸿智谷NiobeU4开发板免费试用体验】 开发环境搭建并初步测试程序; |根据开鸿智谷研发人员依然小烨哥和群内容:示例代码存放在工程//vendor/openvalley
    发表于 10-10 19:36

    【开鸿智谷NiobeU4开发板免费试用体验】控温(1)

    接上文| # 【开鸿智谷NiobeU4开发板免费试用体验】Demo例程; |感谢开鸿智谷研发人员依然小烨哥和 大佬们的支持指导。想用开鸿智谷NiobeU4开发板资源(GPIO02、GP
    发表于 10-12 17:13

    【Banana PI Leaf S3开发板试用体验】基于Banana PI Leaf S3的天气预报系统

    本次主要利用Banana PI Leaf S3开发板 和 SSD1306的OLED屏幕,实现一个简易天气预报系统。一、系统架构直接在Banana PI Leaf S3
    发表于 10-17 20:06

    【开鸿智谷NiobeU4开发板免费试用体验】简易桌面天气预报器的设计&amp;amp;amp;实现

    (一)手撕HTTP request 桌面天气预报器考虑的比较简单,虽然LWIP能支持,但是HTTP协议栈尚未实现,之前考虑直接在OpenHarmony手写一个HTTP GET request,然后
    的头像 发表于 10-14 11:17 767次阅读
    【开鸿智谷<b class='flag-5'>NiobeU4</b><b class='flag-5'>开发板</b>免费试用体验】<b class='flag-5'>简易</b><b class='flag-5'>桌面</b><b class='flag-5'>天气预报</b>器的设计&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>实现</b>

    NiobeU4开发板数据手册

    NiobeU4开发板数据手册
    发表于 07-18 11:15 19次下载

    NiobeU4开发板原理图

    NiobeU4开发板原理图_RevV3.0
    发表于 07-18 11:15 17次下载