【雕爷学编程】MicroPython动手做(33)——物联网之天气预报3

news2025/1/15 16:52:49

天气(自然现象)
是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象,即某瞬时内大气中各种气象要素(如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等)空间分布的综合表现。

天气过程就是一定地区的天气现象随时间的变化过程。各种天气系统都具有一定的空间尺度和时间尺度,而且各种尺度系统间相互交织、相互作用。许多天气系统的组合,构成大范围的天气形势,构成半球甚至全球的大气环流。天气系统总是处在不断新生、发展和消亡过程中,在不同发展阶段有着其相对应的天气现象分布。

在这里插入图片描述
天气预报
是应用大气变化的规律,根据当前及近期的天气形势,对某一地未来一定时期内的天气状况进行预测。它是根据对卫星云图和天气图的分析,结合有关气象资料、地形和季节特点、群众经验等综合研究后作出的。如我国中央气象台的卫星云图,就是我国制造的“风云一号”气象卫星摄取的。利用卫星云图照片进行分析,能提高天气预报的准确率。天气预报就时效的长短通常分为三种:短期天气预报(2~3天)、中期天气预报(4~9天),长期天气预报(10~15天以上),中央电视台每天播放的主要是短期天气预报。

天气预报的主要内容是一个地区或城市未来一段时期内的阴晴雨雪、最高最低气温、风向和风力及特殊的灾害性天气。就中国而言,气象台准确预报寒潮、台风、暴雨等自然灾害出现的位置和强度,就可以直接为工农业生产和群众生活服务。天气预报是根据气象观测资料,应用天气学、动力气象学、统计学的原理和方法,对某区域或某地点未来一定时段的天气状况作出定性或定量的预测。它是大气科学研究的一个重要目标。对人们生活有重要意义。

在这里插入图片描述
在这里插入图片描述

9、使用三轴传感器选择城市天气预报

向前倾斜为安徽合肥,向后为福建福州
向左为上海,向右为北京

#MicroPython动手做(33)——物联网之天气预报
#使用三轴传感器选择城市天气预报

from mpython import *
import urequests
import network
import ntptime
import music
import json


brightness=9

weather_serveraddr = "http://server.mindplus.top"

weather_appid = "31982666"

weather_appsecret = "E6MtBcxQ"

def weather_getWeather(_weather, _city):
  if weather_serveraddr=="http://www.tianqiapi.com":
    nowResult = urequests.get(weather_serveraddr+"/api/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]
  else:
    nowResult = urequests.get(weather_serveraddr+"/api/weather/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]


my_wifi = wifi()
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
  pass
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(165, 50)
ntptime.settime(8, "ntp.ntsc.ac.cn")
while True:
  if (accelerometer.get_x() < -0.3):
    music.pitch(196, 50)
    oled.fill(0)
    oled.DispChar("安徽 合肥", 0, (1-1)*16, 1)
    oled.DispChar(weather_getWeather("wea", "101220101"), 0, (2-1)*16, 1)
    oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101220101"))), 0, (3-1)*16, 1)
    oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101220101"))), 0, (4-1)*16, 1)
    oled.show()
  if (accelerometer.get_x() > 0.3):
    music.pitch(262, 50)
    oled.fill(0)
    oled.DispChar("福建 福州", 0, (1-1)*16, 1)
    oled.DispChar(weather_getWeather("wea", "101230101"), 0, (2-1)*16, 1)
    oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101230101"))), 0, (3-1)*16, 1)
    oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101230101"))), 0, (4-1)*16, 1)
    oled.show()
  if (accelerometer.get_y() > 0.3):
    music.pitch(392, 50)
    oled.fill(0)
    oled.DispChar("上海", 0, (1-1)*16, 1)
    oled.DispChar(weather_getWeather("wea", "101020100"), 0, (2-1)*16, 1)
    oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101020100"))), 0, (3-1)*16, 1)
    oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101020100"))), 0, (4-1)*16, 1)
    oled.show()
  if (accelerometer.get_y() < -0.3):
    music.pitch(659, 50)
    oled.fill(0)
    oled.DispChar("北京", 0, (1-1)*16, 1)
    oled.DispChar(weather_getWeather("wea", "101010100"), 0, (2-1)*16, 1)
    oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101010100"))), 0, (3-1)*16, 1)
    oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101010100"))), 0, (4-1)*16, 1)
    oled.show()

Mind+ 实验图形编程

在这里插入图片描述

10、全球天气API平台

链接:http://www.tianqiapi.com

在这里插入图片描述
在这里插入图片描述

注册全球天气API平台账号

链接:http://www.tianqiapi.com/user/register

在这里插入图片描述

登录全球天气API平台

链接:http://www.tianqiapi.com/user/index

激活账号,获取APPID和APPSecret(密钥)

在这里插入图片描述

11、六位触摸按键选择城市天气预报

P 上海 Y 福州 T 北京 H 重庆 O 深圳 N 济南

#MicroPython动手做(33)——物联网之天气预报
#六位触摸按键选择城市天气预报

from machine import Timer
from mpython import *
import urequests
import network
import ntptime
import music
import json


touch_threshold = {'P': 400, 'Y': 400, 'T': 400, 'H': 400, 'O': 400, 'N': 400}

tim12 = Timer(12)
_status_p = _status_y = _status_t = _status_h = _status_o = _status_n = 0
def on_touchpad_P_pressed():pass
def on_touchpad_P_unpressed():pass
def on_touchpad_Y_pressed():pass
def on_touchpad_Y_unpressed():pass
def on_touchpad_T_pressed():pass
def on_touchpad_T_unpressed():pass
def on_touchpad_H_pressed():pass
def on_touchpad_H_unpressed():pass
def on_touchpad_O_pressed():pass
def on_touchpad_O_unpressed():pass
def on_touchpad_N_pressed():pass
def on_touchpad_N_unpressed():pass

def timer12_tick(_):
  global _status_p, _status_y, _status_t, _status_h, _status_o, _status_n
  try:
    touchPad_P.read();pass
  except:
    return
  if touchPad_P.read() < touch_threshold['P']:
    if 1 != _status_p:_status_p = 1;on_touchpad_P_pressed()
  elif 0 != _status_p:_status_p = 0;on_touchpad_P_unpressed()
  if touchPad_Y.read() < touch_threshold['Y']:
    if 1 != _status_y:_status_y = 1;on_touchpad_Y_pressed()
  elif 0 != _status_y:_status_y = 0;on_touchpad_Y_unpressed()
  if touchPad_T.read() < touch_threshold['T']:
    if 1 != _status_t:_status_t = 1;on_touchpad_T_pressed()
  elif 0 != _status_t:_status_t = 0;on_touchpad_T_unpressed()
  if touchPad_H.read() < touch_threshold['H']:
    if 1 != _status_h:_status_h = 1;on_touchpad_H_pressed()
  elif 0 != _status_h:_status_h = 0;on_touchpad_H_unpressed()
  if touchPad_O.read() < touch_threshold['O']:
    if 1 != _status_o:_status_o = 1;on_touchpad_O_pressed()
  elif 0 != _status_o:_status_o = 0;on_touchpad_O_unpressed()
  if touchPad_N.read() < touch_threshold['N']:
    if 1 != _status_n:_status_n = 1;on_touchpad_N_pressed()
  elif 0 != _status_n:_status_n = 0;on_touchpad_N_unpressed()

def weather_getWeather(_weather, _city):
  if weather_serveraddr=="http://www.tianqiapi.com":
    nowResult = urequests.get(weather_serveraddr+"/api/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]
  else:
    nowResult = urequests.get(weather_serveraddr+"/api/weather/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]

brightness=9

weather_serveraddr = "http://www.tianqiapi.com"

weather_appid = "85215611"

weather_appsecret = "Kx8r5ZCY "

# 事件回调函数
def on_touchpad_P_pressed():
  global g_my_variable
  music.pitch(147, 500)
  oled.fill(0)
  oled.DispChar("上海", 0, (1-1)*16, 1)
  oled.DispChar(weather_getWeather("wea", "101020100"), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101020100"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101020100"))), 0, (4-1)*16, 1)
  oled.show()
def on_touchpad_H_pressed():
  global g_my_variable
  music.pitch(175, 500)
  oled.fill(0)
  oled.DispChar("重庆", 0, (1-1)*16, 1)
  oled.DispChar(weather_getWeather("wea", "101040100"), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101040100"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101040100"))), 0, (4-1)*16, 1)
  oled.show()
def on_touchpad_Y_pressed():
  global g_my_variable
  music.pitch(247, 500)
  oled.fill(0)
  oled.DispChar("福州", 0, (1-1)*16, 1)
  oled.DispChar((str("天气情况:") + str(weather_getWeather("wea", "101230101"))), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101230101"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101230101"))), 0, (4-1)*16, 1)
  oled.show()
def on_touchpad_O_pressed():
  global g_my_variable
  music.pitch(196, 500)
  oled.fill(0)
  oled.DispChar("深圳", 0, (1-1)*16, 1)
  oled.DispChar(weather_getWeather("wea", "101280601"), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101280601"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101280601"))), 0, (4-1)*16, 1)
  oled.show()
def on_touchpad_T_pressed():
  global g_my_variable
  music.pitch(165, 500)
  oled.fill(0)
  oled.DispChar("北京", 0, (1-1)*16, 1)
  oled.DispChar(weather_getWeather("wea", "101010100"), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101010100"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101010100"))), 0, (4-1)*16, 1)
  oled.show()
def on_touchpad_N_pressed():
  global g_my_variable
  music.pitch(220, 500)
  oled.fill(0)
  oled.DispChar("济南", 0, (1-1)*16, 1)
  oled.DispChar(weather_getWeather("wea", "101120101"), 0, (2-1)*16, 1)
  oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101120101"))), 0, (3-1)*16, 1)
  oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101120101"))), 0, (4-1)*16, 1)
  oled.show()


tim12.init(period=100, mode=Timer.PERIODIC, callback=timer12_tick)
my_wifi = wifi()
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
  pass
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(131, 50)
ntptime.settime(8, "ntp.ntsc.ac.cn")
oled.fill(0)
oled.DispChar("触摸按键选城市", 0, (1-1)*16, 1)
oled.DispChar("P 上海   Y 福州", 0, (2-1)*16, 1)
oled.DispChar("T 北京   H 重庆", 0, (3-1)*16, 1)
oled.DispChar("O 深圳  N 济南", 0, (4-1)*16, 1)
oled.show()

Mind+ 实验图形编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六位触摸按键选择城市天气预报

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/830136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将自己的网站免费发布到互联网上【无需公网IP】

将自己的网站免费发布到互联网上【无需公网IP】 文章目录 将自己的网站免费发布到互联网上【无需公网IP】将本地搭建的网站发布到互联网步骤 ↓1. 注册并安装cpolar客户端1.1 windows系统1.2 linux系统&#xff08;支持一键自动安装脚本&#xff09;2. 登录cpolar web UI管理界…

Gradio-YOLOv5-YOLOv7 搭建Web GUI

目录 0 相关资料&#xff1a;1 Gradio介绍2 环境搭建3 GradioYOLOv54 GradioYOLOv75 源码解释 0 相关资料&#xff1a; Gradio-YOLOv5-Det&#xff1a;https://gitee.com/CV_Lab/gradio_yolov5_det 【手把手带你实战YOLOv5-入门篇】YOLOv5 Gradio搭建Web GUI: https://www.bi…

一次某某云上的redis读超时排查经历

性能排查&#xff0c;服务监控方面的知识往往涉及量广且比较零散&#xff0c;如何较为系统化的分析和解决问题&#xff0c;建立其对性能排查&#xff0c;性能优化的思路&#xff0c;我将在这个系列里给出我的答案。 问题背景 最近一两天线上老是偶现的redis读超时报警&#xf…

ChatGPT在工作中的七种用途

1. 用 ChatGPT 替代谷歌搜索引擎 工作时&#xff0c;你一天会访问几次搜索引擎&#xff1f;有了 ChatGPT&#xff0c;使用搜索引擎的频率可能大大下降。 据报道&#xff0c;谷歌这样的搜索引擎巨头&#xff0c;实际上很担心用户最终会把自己的搜索工具换成 ChatGPT。该公司针对…

KiCad各层简述

KiCad各层简述 KiCAD在Pcbnew中总计提供了32个铜层供导线走线&#xff08;可覆铜&#xff09;&#xff0c;12个固定技术层&#xff08;按照正反面分为6对&#xff09;&#xff0c;2个独立技术层&#xff0c;4个辅助层。在KiCad里Pcbnew的层描述中&#xff0c;F.代表电路板上层&…

机器学习笔记之优化算法(八)简单认识Wolfe Condition的收敛性证明

机器学习笔记之优化算法——简单认识Wolfe Condition收敛性证明 引言回顾&#xff1a; Wolfe \text{Wolfe} Wolfe准则准备工作推导条件介绍推导结论介绍 关于 Wolfe \text{Wolfe} Wolfe准则收敛性证明的推导过程 引言 上一节介绍了非精确搜索方法—— Wolfe \text{Wolfe} Wolf…

Letter of Acceptance 过期后,如何入境办学签?

很少会有同学遇到LoA过期时间之后入境办学签的问题&#xff0c;所以网上也很少有相关攻略。鉴于此&#xff0c;在联系了IRCC、学院办公室、研究生院和学校移民办公室之后&#xff0c;得到了最终答复。省流&#xff1a;在学校开个入学证明&#xff08;Proof of Enrolment&#x…

【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

mybatis log插件

目前idea当中已经实施收费了 最近找了一个不收费的插件安装上重启一下就行了 点我下载提取码&#xff1a;sjc8

blender基础认识(选项开关、工具栏、视图等)

文章目录 引言一、大纲选项开关和保存启动文件1. 大纲选项1. 禁用选中2. 视图影藏3. 视图禁用4. 渲染禁用 2. 保存启动文件 二、工具栏和侧边栏1. 左侧工具栏2. 右侧工具栏 三、视图1. 视角2. 缩放3. 拖拽4. 摄像机视角5. 切换正交视图6. 局部视图7. 显示隐藏 四、添加删除物体…

在centos7.9安装tomcat8,并配置服务启动脚本,部署jpress应用

目录 一、简述静态网页和动态网页的区别 二、简述 Webl.0 和 Web2.0 的区别 三、 安装Tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用 3.1、Tomcat简介 3.2、安装Tomcat 3.2.1、配置环境 3.2.2、安装JDK 3.2.3、安装tomcat8 3.2.4、访问主页&#xff1…

go编译文件

1.编译go文件 go build [go文件]2.执行文件编译文件 ./demo [demo为go文件名称]

自然语言处理学习笔记(三)————HanLP安装与使用

目录 1.HanLP安装 2.HanLP使用 &#xff08;1&#xff09;预下载 &#xff08;2&#xff09;测试 &#xff08;3&#xff09;命令行 &#xff08;4&#xff09;测试样例 3.pyhanlp可视化 4. HanLP词性表 1.HanLP安装 HanLP的 Python接口由 pyhanlp包提供&#xff0c;其安装…

【深度学习】在 MNIST实现自动编码器实践教程

一、说明 自动编码器是一种无监督学习的神经网络模型&#xff0c;主要用于降维或特征提取。常见的自动编码器包括基本的单层自动编码器、深度自动编码器、卷积自动编码器和变分自动编码器等。 其中&#xff0c;基本的单层自动编码器由一个编码器和一个解码器组成&#xff0c;编…

OLED透明屏安装指南:准备工作、步骤和注意事项

随着科技的不断发展&#xff0c;OLED透明屏作为一种新型的显示技术&#xff0c;逐渐得到了广泛的应用。 OLED透明屏具有高透明度、高亮度和广视角等优势&#xff0c;可以实现透明显示效果&#xff0c;为商业展示、户外广告等领域提供了更广阔的空间。 然而&#xff0c;正确的…

Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)

Qt实现可伸缩的侧边工具栏 一直在网上找&#xff0c;发现大多的实现方案都是用一个按钮&#xff0c;按下控制侧边栏的伸缩&#xff0c;但是我想要实现鼠标悬浮在侧边栏的时候就伸出&#xff0c;移开就收缩的功能&#xff0c;也没找到好的参考&#xff0c;所以决定自己实现一个…

Apache Kafka Learning

一、Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以收集并处理用户在网站中的所有动作流数据以及物联网设备的采样信息。 Apache Kafka是Apache软件基金会的开源的流…

Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析

文章目录 一、Quartz 基本介绍二、Quartz Java 编程1、文档2、引入依赖3、入门案例4、默认配置文件 三、Quartz 重要组件1、Quartz架构体系2、JobDetail3、Trigger&#xff08;1&#xff09;代码实例&#xff08;2&#xff09;SimpleTrigger&#xff08;3&#xff09;CalendarI…

低代码开发工具到底是给“谁”用的?

不同的工具&#xff0c;受众也不一样。 你不要认为“低代码开发工具”只有一种&#xff0c;实际上它分 3 种。 第一种&#xff1a;企业级低代码开发平台 这种通常是给专业开发人员使用的&#xff0c;但也没有限制得很死&#xff0c;只要你懂编程逻辑&#xff0c;能写sql语句&…

[数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库&#xff0c;用于处理移动物体的轨迹数据。它提供了一组强大的工具&#xff0c;可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas&#xff0c;用户可以轻松地处理和分析移动对象数据&#x…