前言
(二)实时天气采用高德API,数据来源是中国气象局。个人认证用户有300000次/天的配额
(三)为了防止key泄露,可以将高德API封装成自己的API,然后可以分享给其他人使用,我这里已经封装好了,大家也可以使用我的API
天气API文档:http://api.xemowo.top/api/tqyb.html
只需要将城市代码改成自己的所在城市代码即可
城市代码表:https://wwmg.lanzouj.com/iGjyD1i9vf6b
(四)本项目硬件采用
1.8TFT_LCD(ST7735s)
(五)代码平台采用
内置所有的天气中文字符,而且常用的天气都是适配了图标
bmp.h文件存有常用天气的图标
xem_font.h文件存有所有天气的中文字符
高德API
参数:city=城市代码 key=密钥key
例:https://restapi.amap.com/v3/weather/weatherInfo?city=442000&key=c01d70381da92dee9c4f
我这里使用的是PHP语言,实现只需要输入城市代码。即可返回实时天气信息
http://api.xemowo.top/api/tqyb.php?city=442000
【大家懒的话,也可以直接使用我的API】
//有什么问题请联系xemowo@qq.com
//未经授权禁止商业、转载
error_reporting(0);//屏蔽报错
$city=$_GET["city"];
if($city==""){exit("城市为空。");}
$html = file_get_contents("https://restapi.amap.com/v3/weather/weatherInfo?city=".$city."&key=你的高德key");
$arr = json_decode($html, true); // 将获取到的 JSON 数据解析成数组
$province = $arr["lives"][0]["province"];
$city = $arr["lives"][0]["city"];
$adcode = $arr["lives"][0]["adcode"];
$weather = $arr["lives"][0]["weather"];
$temperature = $arr["lives"][0]["temperature"];
$winddirection = $arr["lives"][0]["winddirection"];
$windpower = $arr["lives"][0]["windpower"];
$humidity = $arr["lives"][0]["humidity"];
$reporttime = $arr["lives"][0]["reporttime"];
$temperature_float = $arr["lives"][0]["temperature_float"];
$humidity_float = $arr["lives"][0]["humidity_float"];
$data = array(
'province' => $province,
'city' => $city,
'adcode' => $adcode,
'weather' => $weather,
'temperature' => $temperature,
'winddirection' => $winddirection,
'windpower' => $windpower,
'humidity' => $humidity,
'reporttime' => $reporttime,
'temperature_float' => $temperature_float,
'humidity_float' => $humidity_float,
);
echo json_encode($data, JSON_UNESCAPED_UNICODE);
exit();
(一)API内必须要屏蔽PHP报错,否则key会有泄露的风险!!!
error_reporting(0);//屏蔽报错
(二)这一段是获取输入的city参数,如果没有输入就直接返回“城市为空”。然后访问高德API将返回的数据进行json解析
$city=$_GET["city"]; if($city==""){exit("城市为空。");} $html = file_get_contents("https://restapi.amap.com/v3/weather/weatherInfo?city=".$city."&key=你的高德key");
(三)将解析的json数据再一次封装成json数据
$arr = json_decode($html, true); // 将获取到的 JSON 数据解析成数组
$province = $arr["lives"][0]["province"];
$city = $arr["lives"][0]["city"];
$adcode = $arr["lives"][0]["adcode"];
$weather = $arr["lives"][0]["weather"];
$temperature = $arr["lives"][0]["temperature"];
$winddirection = $arr["lives"][0]["winddirection"];
$windpower = $arr["lives"][0]["windpower"];
$humidity = $arr["lives"][0]["humidity"];
$reporttime = $arr["lives"][0]["reporttime"];
$temperature_float = $arr["lives"][0]["temperature_float"];
$humidity_float = $arr["lives"][0]["humidity_float"];
$data = array(
'province' => $province,
'city' => $city,
'adcode' => $adcode,
'weather' => $weather,
'temperature' => $temperature,
'winddirection' => $winddirection,
'windpower' => $windpower,
'humidity' => $humidity,
'reporttime' => $reporttime,
'temperature_float' => $temperature_float,
'humidity_float' => $humidity_float,
);
echo json_encode($data, JSON_UNESCAPED_UNICODE);
TFT_VCC----3.3V
TFT_MOSI----D23
TFT_SCLK----D18
TFT_CS----D5
TFT_DC----D2
TFT_RST----D4
TFT_BLK----3.3V
ESP32源码
大家可以自己设计ui界面,这里我已经帮大家做好了天气常用的字,以及常用天气的图标。
bmp.h文件存有常用天气的图标
xem_font.h文件存有所有天气的中文字符
(一)ESP32配网,这里写wifi账号和密码,不能使用5g网络
活动主题
电子拆解
参与方式
1. 需将图文发布在面包板社区“拆解基础”板块或“博客”,标题为:【拆解】+ …
2. 可以视频形式参赛,发布在面包板社区“核心视频”板块,标题为:【拆解】+ …
👇扫码,直达社区发布文章/视频
活动奖励
小米免洗扫地机器人2
联想来酷台式主机_酷睿12代i5 16G 512G SSD
胜利仪器手持便携式万用表信号源多功能三合一VC2202S
华为WATCH FIT 3智能手表
胜利仪器手持笔记本万用表信号源多功能三合一VC240S
西部数据500GB NVMe移动硬盘硬盘
小米(MI)Redmi Watch4红米智能手表
金士顿128GB U盘
小米小爱随身音箱
过万奖励:若单篇文章/单个视频,在MBB微信号阅读量过万,每篇额外奖励5000个E币奖励(E币可在面包板社区商城兑换奖品,数据统计截止时间为2024.10.31 ,仅限前20篇,按文章发布在MBB社区的时间排序)
加入社群
您可以扫码添加社区助手微信,遇到任何问题请及时与我们联系。
👇点击阅读原文,参加活动!