用树莓PI构建LED指示器(用于电子邮件、天气或任何东西)

Raspberry PI是一个很好的紧凑型平台,可以为各种项目(天气通知、新电子邮件等)连接指示灯。请继续阅读,我们将向您展示如何将LED模块连接到PI并设置一些基本通知。

我为什么要这么做?

因为这很有趣。与我们的许多教程不同的是,我们在顶部包含了一个小的格式说明,准确地列出了您将从项目中获得的好处,但在这种情况下,格式说明非常简短,因为好处很简单,就是享受乐趣。

树莓圆周率是一个完美的设备来玩耍,尝试电子产品,并学习一些编程。例如,没有人需要在厨房里放一个环境雨量指示器,但建造一个指示器是一种有趣的练习,也是一个很好的提醒,在可能有暴风雨的日子里要随身携带雨伞。

我需要什么?

要跟上我们的教程,你需要一些东西。首先,我们假设您已经学习了我们之前的教程:HTG Raspberry PI入门指南(因此您已经了解了在我们的Raspberry PI上安装Rasbian的基础知识)。

如果你想在预算有限的情况下做这个项目,我们可以自信地告诉你,最新款的树莓PI对这项工作来说是非常夸张的,我们会鼓励你吹掉被塞在壁橱里的旧树莓PI的灰尘,或者在eBay或类似的地方买一台便宜的二手树莓PI。预算方面,以10-15美元从eBay上抢购的树莓PI 1 Model A或Model B非常适合这个项目,而不是购买全新的35美元的当代PI。

除了安装有Raspbian的功能正常的PI单元外,您还需要以下东西:

1个LedBorg模块(约5.00美元,从英国运往美国的运费为4美元,适用于所有树莓PI型号)。 1个透明的覆盆子PI表壳,与您的特定PI型号兼容,就像这个Raspberry Pi 1 Model B表壳。

注:透明/磨砂PI表壳是完全可选的,但如果您当前使用的是不透明表壳,那么您的LED指示灯将隐藏在里面。你要么需要在你的箱子上开一个洞让灯熄灭,要么使用带有分支套件的GPIO延长线-就像Adafruit Industries的这个-来将LedBorg系在你的树莓PI上。虽然使用分支电缆增加了约8美元的项目费用,但它确实为定制最终产品提供了更大的潜力,因为您可以更容易地将LED放置在物品内或想要照明的东西下面。

安装LedBorg

虽然您当然可以完全从头开始为自己打造LED指示器(搜索引擎查询将会找到很多这样做的人),但Piborg组织生产的LED模块LedBorg是如此紧凑而廉价,以至于我们忍不住将其用作我们的Raspberry PI LED指示器项目的基础。

安装模块非常容易,因为它设计成直接安装在PI上的GPIO引脚上。首先,关闭PI电源并打开箱子。

安装过程中最重要的部分是调整模块的方向,使LedBorg图标最接近Raspberry PI板上的RCA模块(因此LedBorg的边缘与PI板的边缘齐平,LedBorg的悬垂部分悬在PI板上,而不是脱离边缘)。请看上面的照片。

当您打开PI板时,现在是遮盖板载LED指示灯(USB端口旁边)的绝佳时机,特别是如果您使用的是清晰的外壳。你不想让你的LedBorg指示灯读起来很混乱,因为电源和网络指示灯太亮了。

我们用一层白色的电工胶带盖住了我们的。这使它们变得足够暗,这样我们仍然可以参考它们,但它们比LedBorg要暗得多,不再让人分心。

一旦您安装了LedBorg,并用电胶带覆盖PI的LED指示灯(可选),就到了关闭机箱的时候了。在进入本教程的下一阶段之前,启动您的PI。

安装LedBorg软件

PiBorg为LedBorg提供了一个很棒的软件包,其中既包括GUI控制器,也包括从命令行访问LedBorg的驱动程序。

在我们开始之前,您需要确保您为您的Rasbian版本和您的Raspberry PI板的修订版获取了正确的软件包。

如果您的Raspberry PI板没有安装孔,则它是版本1。如果您的Raspberry PI有安装孔(位于USB端口以及电源和HDMI端口之间),则它是版本2。您还需要知道您的Rasbian安装的内核版本。打开终端,输入以下命令查看:

一旦您有了修订号和内核号,您就可以访问这里的Packages部分来获取您的软件包的链接。在我们的示例中,我们使用的是带有3.6.11内核的第1版主板,因此我们将获取raspbian-2013-02-09-rev1.zip文件。

为了安装所有的好东西,我们需要在PI上打开终端,然后输入以下命令来安装LedBorg包。

注:您必须将第三个命令中的URL替换为您的主板/内核组合的软件包的URL。

此时,您已经安装了LedBorg驱动程序的GUI包装器和驱动程序本身。在Raspbian桌面上,您将看到GUI包装器的图标:

继续并单击LedBorg图标以启动GUI包装器。您将获得如下颜色选择器界面:

现在是确保您的模块正常工作的最佳时机。挑选任何颜色,除了黑色,都可以试一试。我们将通过选择几种颜色来测试它:

看上去不错!它是明亮的,我们为该项目订购的外壳的磨砂塑料提供了适度的扩散。如果您想在继续之前了解更多LED模块,请单击演示模式:

在演示模式下,您可以以不同的速度循环切换所有颜色,检查高/低输出,否则就可以测试LED模块。

在这里的演示模式部分,您还可以将您的LedBorg变成许多指示器中的第一个。通过在颜色部分中选择CPU,LED将开始从绿色变为黄色再变为红色,以指示Raspberry PI的ARM处理器上的负载。我们建议您在使用时将速度更改为慢速-快速更新LED太快,使CPU指示器分心,而不是有用。

除了使用GUI界面选择颜色外,您还可以使用RGB值从终端选择颜色。打开终端,输入以下命令关闭LED:

LedBorg处理RGB值的方式是,0表示通道关闭,1表示通道半功率,2表示通道全功率。例如,001会将红色通道设置为0%,将绿色通道设置为0%,将蓝色通道设置为50%功率。

将值更改为002,LED输出将保持蓝色,但会变得更亮,因为蓝色通道现在为100%输出。将该值更改为202,红色和蓝色在最大功率下组合在一起以生成洋红色。

现在我们知道了如何手动操作LED,让我们看一下如何使用脚本将LED从简单的灯变成实际的指示灯。

将您的LedBorg配置为降雨指示器

在本教程的这一部分,我们将把几件事情组合在一起,以便将我们的LedBorg LED模块转换为基于我们所在位置的天气预报的降雨指示器。我们将使用Python脚本调用天气API,该API将依次读取当天下雨的可能性,然后将LED从OFF切换到明亮的蓝色以指示预测的降雨。

首先,我们需要获取Weather Underground的API访问密钥。对于个人使用和小型开发项目,API是免费的。请访问此处的天气API注册页面并注册API密钥。

一旦你有了API密钥,就访问地下气象中心,搜索你想要监测的城市。在我们的案例中,我们将监视加利福尼亚州的旧金山。旧金山预报页面的URL为:

对于我们来说,重要的部分是URL:/CA/San_Francisco.html的最后部分。我们将使用它来编辑API工具的预测URL。基本URL为:

您可以通过输入您的API密钥、两个字母的州代码以及从您从Weather Underground搜索结果中提取的URL中的城市名称来生成美国任何城市的天气预报。

插入API密钥和州/市的API URL之后,您可以编辑以下Python脚本,方法是使用Leafpad在PI上创建一个新的文本文档,并将以下代码粘贴到其中:

将文件保存为/home/pi/目录中的wunderround.py。打开终端并键入以下命令:

如果您正确输入了您的API密钥和您的州/城市代码,它应该会返回如下所示的响应:

如果预测了您所在地区的降水量,您的LedBorg输出应该如下所示:

现在,等待下雨天来正确测试脚本将是单调乏味的。如果您所在的地区今天不可能下雨,并且您希望看到LED点亮,请编辑wunderround.py脚本,并将第13行中的“POP=POP”通过值替换为大于20的值,例如我们的预测返回的60。只需记住完成后将行改回“POP=POP”即可。

最后一步是设置cron作业,以定期自动运行我们刚刚保存的脚本,以保持LED指示器为最新状态。由于该任务对于该脚本和随后的电子邮件指示器都是必需的,因此在向您展示如何设置另一个脚本之后,我们将介绍如何设置cron作业。

将您的LedBorg配置为Gmail指示器

谁不喜欢在收件箱里看到新邮件带来的多巴胺修复呢?在本教程的这一部分中,我们将向您展示如何使用LedBorg作为新的Gmail指示器。就像上一次一样,我们将结合外部输入(在本例中是Atom提要而不是API)和一个简单的脚本来驱动LED。

我们需要通过安装FeedParser来扩展Python安装的功能,FeedParser是一种Python RSS/Atom提要阅读工具。打开终端,输入以下命令:

一旦安装完成,我们就可以开始创建我们的Gmail检查脚本了。同样,使用Leafpad将以下文本粘贴到编辑器中。更改用户名和密码,使其与您要检查的Gmail帐户的用户名和密码相匹配。

将脚本另存为gmailcheck.py。打开终端并键入以下命令:

如果您的Gmail收件箱中有电子邮件,LED将变为绿色,您将得到如下响应:

如果您的Gmail收件箱中有邮件,您的LedBorg将如下所示:

就像RAIN检查脚本一样,我们包含了一个调试值。如果您没有任何新的电子邮件,您可以给自己发送一封电子邮件,将收件箱计数提高到1,或者您可以编辑掉注释散列并将调试行更改为“mail=1”来测试脚本。当您完成测试时,请记住恢复线路。

跳到本教程的下一节,将您的Gmail脚本设置为按计划运行。

设置Cron作业以运行脚本

现在我们有两个脚本可用,我们需要设置一个cron作业,以便全天运行它们,使LED指示器保持最新。

我们要做的第一件事是,如果LED在我们之前的实验中当前处于打开状态,则将其关闭。在终端键入:

当您还在命令行时,可以打开cron编辑器。如果您以前从未设置过cron作业,我们强烈建议您在此处查看我们的使用指南。也就是说,我们将在这里向您介绍如何设置一个基本时间表。

在终端键入:

这将在Nano文本编辑器中打开Raspbian cron表。使用箭头键向下滚动到最底部。这就是我们要为Python脚本设置重复的cron作业的地方。

如果要设置RAIN脚本,请在cron表中输入以下行:

按CTRL+X退出;选择是保存并覆盖现有cron表。我们在cron表“*/5*”中输入的值将脚本设置为永远每5分钟运行一次。

对于一个检查预报降雨的脚本来说,每隔5分钟是一个很好的时间跨度-你甚至可以说这有点太咄咄逼人了-但如果你试图控制你的电子邮件,那么通知它的跨度就有点太长了。如果您正在为Gmail通知脚本设置时间表,请在cron表中输入以下行:

此条目每分钟运行gmailcheck.py脚本以获得更快的更新通知。

非那样做不行!。您可以尝试使用您自己的Python脚本,方法是将if/Else语句从我们的脚本中移除,并使用全新的变量尝试它们。如果你能找到数据的输入源,你就可以把它变成Python脚本中的一个变量--股市平均值、花粉计数、Twitter提到的,如果有API的话,你可以把它变成一个环境LED指示器。

最后,我想感谢我在这个项目上使用的所有伟大的资源。自从我积极地编写程序以来,已经有十多年了,我花了几次功夫才把灰尘和铁锈清除掉。/r/LearnPython的贡献者帮助我在Weather Underground的API输出中胡乱摆弄,研究了Mitch Tech的Michael如何处理Gmail Atom提要使为LedBorg解析Gmail Atom提要变得容易,并且研究Code Academy的Python学习模块是学习一种我以前从未使用过的语言的基本语法和结构的好方法。