风筝
发表于: 2021-9-13 10:02:47 | 显示全部楼层

如今,安全系统是研究最多的领域之一,随着安全威胁的增加,越来越多的公司推出新的智能安全产品来对抗这些威胁。物联网是该领域的一个优势,它可以在发生紧急情况时自动触发事件,例如呼叫警察、消防队。在本篇文章中,我们将使用ESP32和摄像头来制作一款智能Wi-Fi门铃。这款智能门铃由交流电源插座供电,只要有人在门口按下门铃按钮,它就会在你的手机上播放一首特定的歌曲,并发送一条带有视频流页面链接的短信,你可以在任何地方看到门前的这个人。


所需的组件

●    ESP32-CAM摄像头模块

●    FTDI烧录器

●    220V交流转5V直流电源

●    蜂鸣器

●    按钮

●    发光二极管


电路原理图

这款智能Wi-Fi门铃的电路图非常简单,只需将两个LED、一个按钮和一个蜂鸣器连接到ESP32的GPIO引脚即可。蜂鸣器用于在按下按钮时发出声音,LED用于指示电源状态,另一个LED用于指示网络状态。如果ESP连接到网络,网络LED指示灯处于常亮状态,否则它将持续闪烁。

Smart-Wi-Fi-Video-Doorbell-Circuit-Diagram.jpg


以下是Wi-Fi视频门铃用3D打印的外壳:

Wifi-Video-Doorbell.png


Wi-Fi门铃的IFTTT 设置

IFTTT是一项基于Web的免费服务,它允许用户创建一系列简单的条件语句,称为“recipes”,这些语句是根据Gmail、Facebook、Instagram和Pinterest等其他Web服务的更改触发的。 IFTTT是“If This Then That”的缩写。在本篇文章中,IFTTT用于在门铃按下时向接收人发送带视频链接的短信。


首先使用您的账号登录IFTTT网站,如果您没有帐户,请先进行注册。


搜索“Webhooks”,然后单击“Services”部分中的“Webhooks”。

Webhooks.png


在Webhooks窗口中,单击右上角的“Documentation”获取私钥。复制此密钥,将在程序中使用该密钥。

Webhooks-Key.png


获得私钥后,现在我们将使用Webhooks和电子邮件服务创建一个小程序。单击个人资料,然后单击“Create”。在接下来的窗口中,单击“This”图标。

IFTTT.png


在搜索框中搜索Webhooks,然后单击“Webhooks”。

Webhooks_0.png


选择“Receive a Web Request”触发器,然后在下一个窗口中输入事件名称button_pressed,然后单击创建触发器。

现在要完成小程序,单击“That”为button_pressed 事件创建一个执行操作。

IFTTT_0.png


在按下IoT门铃按钮时在手机上播放特定歌曲。在搜索部分中搜索“Android Deivce”。

Action-Service-Web-Page.png


现在在 Android Device中,选择“Play a specific song”触发器。

Song-Trigger-for-Doorbell.png


输入您要在按下门铃按钮时播放的歌曲名称。您还可以使用Spotif或其他音乐应用程序。


之后,单击“Create action”,然后单击“Finish”完成该过程。


现在创建另一个小程序,当按下门铃按钮时,将带有网页链接的消息发送到手机。在“This”部分选择“Webhooks”,在“That”部分选择“Android SMS”。

Action-Service-Web-Page_0.png


按照要求输入电话号码和短信正文。本文中,我们将发送带有Web服务器链接的短信,以便您可以直接看到实时视频流。

Action-Field_0.png

跳转到指定楼层
风筝
发表于: 2021-9-13 10:24:51 | 显示全部楼层

代码说明

在本节中,我们将解释代码中的一些重要部分。


首先,包含代码所需的所有库文件。

  1. #include "esp_camera.h"
  2. #include <WiFi.h>
复制代码

然后定义Wi-Fi凭据。

  1. const char* ssid = "Wi-Fi Name";
  2. const char* password = "Wi-Fi Password";
复制代码

之后,输入从IFTTT网站复制的IFTTT主机名和私钥。

  1. const char *host = "maker.ifttt.com";
  2. const char *privateKey = "Your Private Key";
复制代码

定义本文中使用的所有引脚。我使用的是GPIO 2、14和15引脚分别连接按钮、LED和蜂鸣器。

  1. const int buttonPin = 2;
  2. const int led1 = 14;
  3. const int buzzer = 15;
复制代码

void setup()函数中,将按钮引脚定义为输入,将LED和蜂鸣器引脚定义为输出。

  1. void setup() {
  2.   pinMode(buttonPin, INPUT);
  3.   pinMode(led1, OUTPUT);
  4.   pinMode(buzzer, OUTPUT);
复制代码

使用上述的凭据连接到Wi-Fi网络,当连接到网络时,LED状态将变成常亮。

  1. WiFi.begin(ssid, password);
  2.   int led = LOW;
  3.   while (WiFi.status() != WL_CONNECTED) {
  4.     delay(500);
  5.     Serial.print(".");
  6.     digitalWrite(led1, led);
  7.     led = !led;
  8.   }
  9.   Serial.println("");
  10.   Serial.println("WiFi connected");
  11.   digitalWrite(led1, HIGH);
复制代码

与网络断开连接时,ESP32将重新启动,直到它连接到网络。

  1. while (WiFi.status() == WL_DISCONNECTED) {
  2.     ESP.restart();
  3.     digitalWrite(led1, LOW);
  4.     Serial.print("Connection Lost");
复制代码

ESP32会读取按钮状态,如果按钮处于低电平状态,即按钮被按下,则发送事件,然后打开蜂鸣器持续3秒。

  1. int reading = digitalRead(buttonPin);
  2. if (buttonState == LOW) {
  3.         send_event("button_pressed");
  4.         Serial.print("button pressed");
  5.         digitalWrite(buzzer, HIGH);
  6.         delay(3000);
  7.           digitalWrite(buzzer, LOW);
复制代码

用于智能Wi-Fi门铃的3D打印外壳

本文为这款无线门铃摄像头设计了一个3D打印外壳。首先,使用游标卡尺测量了ESP32开发板、按钮、蜂鸣器和LED的尺寸,设计完成后如下所示。

3D-Printed-Casing_1.png


之后,将其导出为STL文件,根据打印机设置对其进行切片,最后打印出来。STL文件可从Thingiverse网站下载,您可以使用它打印自己的外壳。


打印外壳后,将电路组装到外壳中,尺寸都非常合适。

Smart-Wi-fi-Doorbell.jpg


测试智能Wi-Fi门铃

组装电路后,使用交流电源插座为门铃供电。现在,只要按下物联网门铃按钮,智能手机就会开始播放歌曲,并且会收到一条短信,其中包含如下所示的网页链接,可以在其中看到实时视频。

Smart-Wi-Fi-Doorbell-Testing.png


以上就是本篇文章的全部内容。如果您对此项目有任何疑问,请随时在本帖进行回复。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 54 | 回复: 107



手机版|

GMT+8, 2024-3-29 10:30 , Processed in 0.113925 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表