hackster.io 和其他 Maker 网站上有很多车库门监控项目。我想要一个可扩展的项目,可以在此基础上构建,用于未来的 IOT 项目。另外,我想要一个有据可查且得到良好支持的平台。Adafruit 为 Makers 提供的云服务adafruit.io符合要求。
此外,我的动力来自个人需要。我的好邻居经常在深夜打电话提醒我车库门是开着的;-)
这在很大程度上受到Todd Treece 为 Adafruit的Adafruit IFTTT Door Detector项目以及reddit 上提到的其他工作的启发和基础,并进行了一些代码调整和附加组件。
这篇文章以较长的形式出现,讨论“创客之旅”。
该项目与 Adafruit IFTTT Door Detector 的区别:
Adafruit Feather Huzzah 通过磁性开关检查车库门是否打开/关闭,然后将当前状态发送到 adafruit.io 提要。在屋内,带有 4 位 alpha 显示屏的 Raspberry Pi Zero W 通过 MQTT 订阅源并显示当前状态。您还可以从 IFTTT 在手机上收到通知。
有两个版本:
选项 1:大约 20 美元,构建一个 Adafruit Huzzah 状态检查器并使用 IFTTT 将通知发送到您的手机(免费,需要注册)
选项 2:约 40 美元(包括选项 1 成本),构建选项 1,并添加一个带有 Raspberry Pi 零 W 的 LED 状态显示器
简单的。大约 2-3 小时,具体取决于选项。
选项1
使用 Adafruit 文章Using IFTTT with Adafruit.IO to Make an IOT Door Detector up 通过 Adafruit IO 设置部分。通过链接,这将引导您完成注册 adafruit.io 并启动项目。创建一个名为 GarageDoor 的提要。
硬件
Adafruit 项目安装在室内门框上,由电池供电。我的车库门框上有传感器,开关上有长电线,可将 Huzzah 定位在 5V 壁式电源附近。门打开时将传感器安装在车库门上,传感器与其磁铁对齐。
这是如何工作的!
当远离磁铁时,磁性开关/传感器为 NO(“常开”)。当磁铁足够靠近时,开关将“闭合”。Adafruit Door Detector post 预计敞开的门将是罕见的事件。如果门关闭,Adafruit Arduino 代码不会发出任何通知!
Adafruit 的代码
2020 年 9 月 2 日更新:
截至 2020 年 7 月,Adafruit 已更新其访问 adafruit.io的安全“指纹” 。此更新包含在Adafruit IO Arduino库中,由 Arduino IDE 的管理库部分提供。您至少需要安装 3.7.0 版。
下面讨论代码是如何按照文章中所写的那样工作的。我的代码不同,它反转了逻辑,因此低电平(连接到 GND/闭合开关)被发送到 Huzzah 引脚以打开门!
Huzzah 如何检测打开或关闭的门?魔法!
嗯,抵抗的魔力。磁性开关连接到 GND 和一个被显着电阻(10K 欧姆)“拉高”到 +V 的引脚。如果开关闭合(在有磁铁的情况下),则 GND 侧的电阻几乎为零,但引脚侧的电阻很高。使用阻力最小的路径,这将注册为“低”条件并且没有通知。
但!如果门打开,传感器被拉离磁铁,则 GND 侧的电阻几乎可以认为是“无限的”。由于引脚侧的电阻(与 +V 相关)为1 ,但小于无穷大,因此这记录为“高”状态。door_open(并且只有 door_open)的代码运行,并且向 adafruit.io 提供了一个提要。
有关更多信息,请参阅关于上拉/下拉电阻器的出色 Adafruit教程。
我的构建存在问题 - 即使在代码中设置了上拉电阻,值仍然保持浮动。我在原型板上使用了一个由 10K 欧姆和 100 欧姆电阻组成的外部上拉电阻网络——修复了这个问题!Adafruit 代码还使用了一个小技巧来定期运行。所有功能代码都在 void setup 例程中 - 主循环没有代码!通过连接到 Huzzah 上的 RST 引脚,设置例程根据SLEEP_LENGTH变量的值(以秒为单位)重置(默认为 3 秒)。每次运行重置时都会运行设置例程 - 无需循环代码!
我的代码 - 与 Adafruit这个车库监视器的区别:
如果您有一个免费的 Adafruit 帐户,您应该监控您的喂食率 - 最多 10 次喂食,每分钟 30 次喂食。当您仅发送状态更改的提要时,提要速率要低得多。
为什么我在代码中更改了门逻辑?简单 - 打开时开关会更靠近电源,需要更少的电线来连接它。使用文章中的Arduino 代码部分设置和加载 Huzzah,但从 github 加载 Garage_Door_Monitor.ino 草图及其所需的 config.h 文件。不要忘记!为您的 adafruit.io 用户名和密钥更改config.h文件,并提供您的 wifi SSID 和密码。
将磁铁和传感器小心地放在车库门上。您希望磁铁和传感器在触发时水平对齐,相距约 6 毫米。将传感器放在门的固定部分,将磁铁放在移动门本身上。操作门时请注意不要有障碍物,以免磁铁脱落。按照 Adafruit 文章接线部分中的说明设置您的 Huzzah :
我将母跳线焊接到长线上。要连接到 Huzzah,请使用公对母跳线 - 母对 Huzzah,公对长线。通过操作门并从网页监控您的 adafruit.io 提要来测试它
当 Huzzah 和 adafruit.io 一起工作时,按照说明将IFTTT 设置到 adafruit.io。Adafruit 文章发送了一封电子邮件。下图显示了如何向手机发送通知:
选项 2
第 1 步:Raspbian Stretch Lite
在 Windows 上,创建一个名为 ssh 的空文件和一个名为 wpa_supplicant.conf 的文件,其内容如下所示(第二个框)。
对于 Linux/Mac:
sudo touch ssh
sudo nano wpa_supplicant.conf
对于 Windows/Linux/Mac,输入并保存以下内容,将 ssid 和 psk 更改为路由器的 ssid 和密码:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
ssid="Your network SSID"
psk="Your WPA/WPA2 security key"
key_mgmt=WPA-PSK
}
配置 Raspbian 后,无头运行(无显示器/键盘/鼠标) - 将 SD 卡插入您的 pi 并打开电源。等待几分钟让 pi 完全启动。如果您运行的是 Windows,请下载 putty 终端模拟器以使用 SSH 连接到 pi。您应该能够从路由器的网页中找到 IP 地址。并且,从 Mac/Linux 终端通过 SSH 登录:
ssh "192.168.0.xxx" -l pi
其中“192.168.0.xxx”=您的 pi 的 IP 地址(不带引号)。默认密码是覆盆子。确保在第一次登录时更改它。您还应该通过以下方式配置其他设置:sudo raspi-config
完成配置后,重启。当您重新登录时,更新软件包并设置 git:
sudo apt-get update
sudo apt-get upgrade # This step takes a long time!
sudo apt-get install git-core
git clone http://github.com/thisoldgeek/GarageDoorMon
克隆这个 github 存储库将在 /home/pi/GarageDoorMon 下创建一个新目录。此 GarageDoorMon 目录包含此项目所需的所有资产,包括设置脚本和代码。做:
sudo shutdown -h now
第 2 步:显示和系统服务
按照 Adafruit 上的说明焊接 4 位 AlphaNumeric 显示屏。Adafruit 在这里有一个接线图。关闭电源后,安装显示器的电线:
备用电源。
从连接到树莓派零 W 的终端,运行以下命令:
git clone http://github.com/thisoldgeek/GarageDoorMon
cd ~/GarageDoorMon
chmod +x garage_mon.py
sudo cp garage_mon_service.txt /etc/systemd/system/gmon.service
sudo chmod 644 /etc/systemd/system/gmon.service
sudo systemctl enable gmon
显示屏最初将显示 STRT,直到数据馈送发生变化。之后,稍有延迟,它应该会显示当前状态 - SHUT/OPEN。
在显示屏上添加了一个可选的蜂鸣器,当首次收到 OPEN 状态时会发出三声蜂鸣声。蜂鸣器脚本中有一个默认的“quiet_time”功能 - 在您设置的时间之间,蜂鸣器不会响起,目前在 21:00 和 09:00 之间。
新的 Python 脚本名为garage_mon_buzzer.py。下载这个脚本并像这样复制它:
cd ~/GarageDoorMon
sudo cp garage_mon_buzzer.py garage_mon.py
# Add the library:
sudo apt-get install python-rpi.gpio python3-rpi.gpio
记住!复制后更改garage_mon.py 中的用户名和AIO_Key。
使用有源压电蜂鸣器,连接母对母跳线:
sudo systemctl restart gmon # Restart the service
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !