汤姆的帽子-觉醒灯闹钟

汤姆的帽子-觉醒灯闹钟

我们中有多少人害怕那个令人难以置信的闹钟,早上在点头的土地中打断我们美丽的睡眠?嘟嘟声嘟嘟声嘟嘟......一些警报将继续无休止地走。哔哔哔哔哔哔声 - 哔哔声......其他人会逐渐变得更响亮,直到你被迫醒来,激怒了这样一个简单而无生命,但令人难以置信的烦人的对象毁了你早上的遗憾。

有研究(喜欢这一个这表明,在光线下醒来实际上比在噪音中醒来更有益于精神健康,也是一个更好的早晨开始。当然,一个响亮的闹钟是有用的,但从生物学上讲,当你醒来时,你仍然处于“睡眠模式”。这就是为什么在你接受自己是醒着的之前,你可能会多次按下“贪睡”按钮来获得更多的睡眠。事实上,这些“唤醒灯”也被证明能成功治疗人们的季节性情感障碍。

它没有令人惊讶的是,闹钟行业已经通过人造光来模拟日出。有许多唤醒灯闹钟全部销售在互联网上,范围从20英镑(25美元)到150英镑(190美元)。

但为什么要购买一个,当您可以使用家庭自动化硬件制作自己的IOT的唤醒光线?

家庭自动化服务器

作为我家庭自动化项目的一部分,我需要一个中央位置作为我的“数据总部”。为此,你可以选择许多不同类型的板、电脑或基于云的资源,但我选择使用Raspberry Pi 3 Model B只是为了方便和大量的在线社区支持。我跟着这教程通过NodeJS将树莓派设置为web服务器(如果你更喜欢其他语言,我相信也有相关教程!)

使用NodeJS,我只是利用Express和系统的REST协议来写出我的API。以下代码是建筑块,用于创建自己的API REST处理程序。

//调用http://[IP ADDRESS]:[PORT]/testRequest将导致一个3个变量的JSON响应。app.get('/testRequest', function(request, response) {console.log('Success!');response.status(200)。send({var1: 123, var2: 'Somevar', var3: '123somevar'});});

我不会解释代码的工作原理,因为有许多有钱的教程可以做比我更好的工作。事实上,我实际上需要自己阅读/观看这些教程......

在RPi上,我存储所有的配置数据、设置和数据收集,这些数据可能是所有连接到它的基于物联网的设备所需要的。对于这个项目,我存储了闹钟的闹钟时间和闹钟天数。这样,当报警请求时,我不仅可以发回当前时间(基于RPi),还可以发回报警时间和日期!

我将RPI通过以太网电缆连接到我的路由器,这应该防止任何WiFi通信丢弃,并且还降低了RPI所消耗的功率。这个RPI模型有点过度杀人吗?可能,但随着我的家庭自动化项目的扩展,我将更多的时间(如一些数据分析和演示,机器学习,其他时髦的东西)除了API之外。

唤醒灯

实际的唤醒灯由3部分组成:

-一条简单的红、绿、蓝发光二极管(RGB led,它们是不同的!)
- 电子产品
-一个定制案例

当我在很容易改变颜色时,LED的条带是我伴侣的礼物(这是简单的东西)。我有一些这些条带,所以我会制作更多的唤醒灯或找到另一个目的。

这个设置的主要驱动程序来自NodeMCU。我选择这个而不是一个简单的Arduino,因为它有一个内置的WiFi模块,让我可以直接连接到路由器,而不需要额外的硬件。我也可以在Arduino IDE上进行编程,充分利用我的Arduino编程知识。我必须做一个非常基本的配线板,只是为了方便地连接NodeMCU引脚到LED串引脚。为此,我只是使用了一些Veroboard,一些电线,和一些头部。LED带是由PWM信号驱动的红色,绿色和蓝色LED,所以,幸运的是,不需要其他电气设计!

这种情况非常简单。它只是一个盒盖的盒子。我试图聪明,有一个闩锁或螺钉来保持盖子关闭,但这比价值更努力。一旦它被3D打印,我就覆盖了一侧的侧面(它用作我的铰链),并用小弹性带保持封闭。这不是一个杰作,只需要工作。

软件

这是我第一个使用NodeMCU的项目,所以我创建了一些库文件,我知道我将在未来的项目中重用它们。例如,通过闪烁的LED处理网络连接状态。否则,所有内容都是自定义的。

从根本上,RPI和Nodemcu是两个互相交谈的服务器,其中彼此请求数据。这个想法是,我只需要与RPI交谈以发送,查看和更新​​配置。Nodemcu只会独立行动。基本软件流程如下图所示:

在上面的图像中,设备连接到中央路由器(红色箭头)。然后,计算机上的用户能够与RPI和Nodemcu(蓝箭头)进行访问和通信,尽管后者不需要,并且可用于基本诊断。

这两个通过休息呼叫互相通信。这允许两个设备用“我收到了您的消息”响应了另一个设备。我已经考虑过使用其他更快的数据传输方法,例如MQTT,它在家庭自动化项目中使用,但MQTT等方法是为始终连接的设备设计的,并且带宽是一个问题的位置。Nodemcu只需要最多(在非常罕见的情况下)每天几次连接,并且有很多数据转移。因此,虽然MQTT将是一种选择,但它将是这个项目的矫枉过正。

一些库使用String变量(在嵌入式编程中这是一场噩梦!)来传递数据。这将导致内存不稳定,并将内存碎片化!网上有一些有用的页面介绍如何在操作String变量时最小化Arduino项目中的RAM消耗。我绝对的金矿是这Instructible由詹姆斯•Moxham。当确定对传入REST调用的正确响应时,这个小集合非常方便。

我创建了一个简单的HTML显示屏(根本不喜欢)来配置警报,但由于系统使用REST呼叫,可以为更好(和现代)的用户界面进行移动应用程序。

结论

总的来说,这个家庭自动化项目非常好!它由电源供电,永不跳过时间闪耀那些LED。它总是可靠的(只要RPI服务器没有勾结),并且在使用它的最后几周内,灯光从未在Inopportune时亮。它还证明它们也可以用于阅读,这是一个奖金!

为了改进它,我将添加一个USB接口,允许我通过USB连接配置和诊断NodeMCU。我还会添加多个警报的功能,而不仅仅是一个。当然,任何想自己构建它的人都可以添加任何东西!可以找到完整的源代码(唤醒灯)我的Github

感谢您的阅读,如果您有兴趣,请查看我以前的文章如何构建自己的远程信息处理框跟踪您的汽车的动作。

留下一个回复