Funpack12-wio terminal-任务二 网络天气预报
1.Wio terminal 开发套件简介 2.使用Wio terminal进行网络天气预报开发过程介绍
标签
嵌入式系统
Titan
更新2021-12-30
656

.项目介绍  

1.Wio terminal开发板

引用部分官方介绍:Wio Terminal的主控采用SAMD51,主频120MHz (200MHz Max.),另有4MB 外部闪存和 192KB RAM。配有一个2.4英寸 LCD, 板载IMU(LIS3DHTR),麦克风,蜂鸣器,microSD卡槽,光传感器和940nm红外发射器。还有两个Grove接口和兼容Raspberry pi的40个GPIO引脚,用于支持更多附加组件。

FtRoKE1hPrB2AoOKX_kI_MeSaUKS

2.Arduino IDE: 

Arduino IDE设置适配Wio terminal可参照官网。有坑注意:因为Seeed旗下开发板种类繁多,务必需要选择到Wio terminal,我遇到过使用过程中,Arduino提示升级库,升级后其实还需要再确认开发板类型。

FgEKeKuqqxyK5QTeFB5c9eLzqoA2

.任务完成思路和实现过程  

此次活动我选取了任务2:制作一个自动联网的天气预报仪,在设计界面显示温湿度、天气情况、空气质量以及未来三天内的天气变化。。

以下对本次任务进行分解:

第一步:使用Wio terminal联网(代码详见附件中)

Wio terminal自带网络模块RTL8720D,使用SPI总线和CPU通讯,如果使用这个模块,除了要在Arduino中添加Seeed相关的,也需要烧录RTL8720D的Firmware,使用详情在官方的网站中,此处有坑,烧录时,ambd_flash_tool这个文件夹需要放在根目录下,再使用powershell打开,这样才行。另需要注意,烧录时会有大概两分钟,没有反应,这时候千万别拔掉,一定要等command再跳出来提示烧录结束。

Fsbe4fmU6fhZgdn7ipJC5UIv62YX

第二步:在设计界面显示温湿度、天气情况、空气质量以及未来三天内的天气变化。。

1.LCD模块:Wio terminal自带一个2.4” 320×240的LCD,这是我比较在意的,自带屏幕很方便随身携带debug,使用这个屏需要先载入Seeed_Arduino_LCD库。

Fi8ooxw1PbCzOJBfl7tl_-bT543P

关于显示,我遇到过,Wio termanl放两天,再使用时,不管怎么烧录,屏都没显示,这时候哪怕进入fastboot模式下,重新复制文件进去也没用,这时候需要这么处理:

1.先重新烧录RTL8720D的firmware

2.再下载LCD的例程试试看能不能显示

3.如果还不能显示,需要进fastboot,重新复制原始.uf2文件,再重新开始第一步骤尝试。

第三步:实现和调试(完整代码详见附件)

程序中需要载入的库如下:

其中WeatherIcon.h是自己设置的取字模转码合集(软件可用PCtoLCD2002)。

ArduinoJson.h是Json V6版本的库。

#include "rpcWiFi.h"
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#include"Free_Fonts.h"
#include"TFT_eSPI.h"
#include"WeatherIcon.h"

需要调试的部分:

(1)联网部分:选择合适的天气API,此处选择和风API,目前大部分天气API都需要申请账号,使用个人API key,还有一种方法,是使用证书登录。

client.println("GET /v7/weather/3d?location="Your Hefeng LOACATION"&lang=en&gzip=n&key="Your Hefeng API Key" HTTP/1.1");

(2)数据抓取和解析:ArduinoJson使用V6版本,

(3)显示部分:先显示网络连接状况,再显示抓取天气和空气质量的情况,比如:

        tft.fillScreen(TFT_BLACK);
        tft.setCursor((320 - tft.textWidth("Connected to Server!"))/2, 120);
        tft.print("Get the Weather!");
.
.
.
        tft.fillScreen(TFT_BLACK);
        tft.setCursor((320 - tft.textWidth("Connected to Server!"))/2, 120);
        tft.print("Get the Air Quality!");

在显示具体内容前,再增加显示更新时间和当前日期,关于显示Json中抓取的数据,是尝试碰到,可以用“tft.drawString(需要的字段,显示位置)”语句实现。

    在解这个问题过程中发现,当使用新加的库时,如果不知道这个库怎么用,可以在库的文件夹中寻找keywords.txt,这个文件中会有这个库可用的command 。 

第四步:演示效果  

贴上演示效果和内容如下:

FhtIclZ1v-liRF6H2piE6MFLLyH8FkmJrVGbcEiu8vIllrBRIXORMeD_

.活动总结,一些感想

本次活动,是第一次接触Arduino,也是自己真正开始用软件语言来实现功能,从配置IDE到最终功能实现,得到了满满的成就感,感谢微信群里各位大佬的帮忙,也感谢硬禾学堂提供这些机会,下个活动已经下单了,也希望硬禾学堂的活动越办越好。

 

 

附件下载
源文件.zip
团队介绍
团队成员
Titan
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号