Raspberry Pi和TFT LCD实时天气预报

准确的天气预测对于计划我们的日常活动很重要。 例如,农民需要信息来帮助他们计划农作物的种植和收割。 对我们来说,它可以帮助我们准备出门时带的东西,例如如果知道会下雨的话,可以带上雨伞。 天气预报可以帮助我们做出更明智的日常决策,甚至可以帮助我们摆脱危险。

该应用程序不仅限于天气预报显示。 它可以从任何网站上获取信息。 遵循本指南可以使您大致了解如何使其工作。

硬件

软件

使用库

工作方式

Raspberry Pi 引脚图

RPi的工作方式与Arduino类似,但是两者之间存在一些差异。 所有的Raspberry Pi开发板都使用Python作为主要语言,但也支持Ruby和C,而Arduino仅支持C。此外,对于希望进入电子项目的初学者来说,RPi更加昂贵且更加复杂。 但是,由于其更高的处理能力,它一次可以处理多个程序。

TFT液晶显示器ILI9341

TFT LCD屏幕上的所有像素均以行和列的格式配置,并且每个像素都附加到一个非常小的硅晶体管上,该晶体管直接位于玻璃面板上。 这种设置允许给每个像素充电,并且即使刷新屏幕以产生新图像也可以保持该电荷。

硬件设置

Raspberry Pi设置

启用SPI

为了使TFT LCD能够正常工作,我们必须通过Raspberry Pi配置启用SPI。 假设您已经连接到Raspberry Pi,请单击左下角的raspberry图标,将鼠标悬停在“首选项”上,然后单击“ Raspberry Pi配置”。

窗口弹出时,单击“接口”并确保已启用SPI。完成后,单击“确定”。

安装库

ThingHTTP设置

要获取数据,我们必须请求一个API。 假设您已经按照上述说明安装了请求库,则下一步是为网站中的特定数据制作API。 我们将使用ThingSpeak的ThingHTTP应用程序,因此您必须在其网站上注册https://thingspeak.com/。 如果您已经有一个帐户,请登录并单击“应用程序”,然后单击“ ThingHTTP”。

这样做时,应将您定向到ThingHTTP页面。点击“ New ThingHTTP”创建一个。

加载后,将显示其设置。更改名称以便于识别,然后输入您要从中获取数据的网站的URL。其余设置保持默认。

下一步,您需要转到要从中获取数据的网站,将鼠标悬停在要获取的特定数据上,然后选择“检查”。

在右侧窗口弹出窗口中右键单击数据,将鼠标悬停在“复制”上,然后选择“复制XPath”。

复制XPath之后,返回ThingHTTP设置并将其粘贴到“解析字符串”框中,然后点击保存。

保存后,您可以在页面右侧获得API链接。您稍后将在代码中使用它。

对所需的其他数据重复该过程,例如温度,降水量,湿度等。

代码

对于代码,您可以在计算机上通过Python IDLE,Notepad ++或任何支持Python的文本编辑软件或IDE进行处理,然后通过VNC Viewer将其传输到Raspberry Pi。 您也可以在RPi本身内部进行编码,我发现这很容易。

要运行代码,请打开终端并使用命令cd 将目录更改为文件所在的目录,然后运行命令python .py。

代码分解

库导入

预初始化

然后,我们分别将DC和RESET引脚分配给RPi板的引脚18和23。 SPI端口和设备默认情况下应为0。 之后,我们创建TFT LCD显示器并初始化显示器。 已经创建了两个字体设置,以供以后在TFT LCD上显示我们的文本。 由于该库的默认字体只有8个像素,这非常小,因此我从https://www.dafont.com/下载了最高字体样式,并将.tff文件放置在与代码相同的目录中。 如果愿意,可以使用默认字体,方法是从代码中删除注释,或者从上述同一网站下载其他字体。 可以在ImageFont.truetype()的第二个参数中指定字体大小。

绘制旋转文字函数

由于PIL对旋转字体没有很好的原生支持,因此创建了此函数来解决这一问题。 在代码中注释了每行如何贡献的具体细节。

显示循环

这是通过API请求从网站获取数据的地方。确保request.get()中的URL是要获取的数据,并将其存储在变量中。要获取当前日期和时间,我们可以使用datetime.datetime.now()。

在绘制文字之前,首先我们必须清除显示内容以刷新其内容。 调用draw_rotated_text()函数将单词和数据绘制到TFT LCD屏幕上。 只需遵循给定的格式并更改相对于TFT LCD屏幕的坐标或位置。 我将其设置为相隔30-40像素。 您甚至可以更改文本的旋转度,字体和颜色。 对于时间显示格式,我们必须使用time.strftime来获取表示日期和时间的字符串。 %b代表月份,%d代表白天,%H代表小时,%M代表分钟,%S代表秒。 绘制单词后,我们然后使用disp.display()显示它,并设置一个延迟,使其不发送垃圾邮件。

详情参阅 - 亚图跨际

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值