当前位置:首页 > 物联网 > IoT设计分享
[导读]车库门太重,打开和关闭要费很大的力气。在这个万物互联的物联网时代,我们也应该改进它。想象一下,只需点击智能手机就可以轻松打开车库门,这正是我们要在这个智能车库门物联网项目中构建的,我们将使用ESP32开发板和Arduino IDE来构建这个项目。以前我们也建立了一个类似的Wi-Fi车库门开启器项目,使用直流电机,你也可以检查一下,如果你感兴趣。

车库门太重,打开和关闭要费很大的力气。在这个万物互联的物联网时代,我们也应该改进它。想象一下,只需点击智能手机就可以轻松打开车库门,这正是我们要在这个智能车库门物联网项目中构建的,我们将使用ESP32开发板和Arduino IDE来构建这个项目。以前我们也建立了一个类似的Wi-Fi车库门开启器项目,使用直流电机,你也可以检查一下,如果你感兴趣。

构建物联网车库开门器所需的组件

•NodeMCU ESP32

•2个伺服电机(SG90)

•电力供应

•电路试验板

•跳线

我们使用NodeMCU ESP32板作为这个项目的微控制器。它是一个非常强大的、支持wifi的、非常低成本的微控制器。它是物联网项目的完美板。我们有2台伺服电机(SG90)用于物联网车库门的升降机构。它是一种小型的低成本伺服电机,可以在4.8到6V的工作电压下从0到180度旋转。这9克电机提供高达1.8公斤-厘米的扭矩在6V。我们需要一个5V电源为整个装置供电。你可以使用5V适配器或充电宝。对于所有的连接,我们需要一个面包板和一些跳线。最后,我们还需要做一个车库,为此我们使用了纸板和海图纸。

物联网车库门电路图

由于我们没有使用任何物联网车库门传感器,所以这个项目的电路非常简单。我们只需要两个伺服电机连接到ESP32开发板,如下面的连接图所示。此外,如果您是第一次使用ESP32板,您应该查看我们的ESP32物联网项目以探索更多内容,并了解可以使用该板构建的其他有趣项目。

这是一个非常简单的小电路,只有很少的元件。我们需要将两个伺服电机的VCC引脚连接到VIN引脚,将两个伺服电机的GND引脚连接到NodeMCU ESP32的GND引脚,然后将两个伺服电机的PWM引脚分别连接到D13和D12。下面的表格将帮助你轻松地建立联系。

注意:本系统的供电电压不要超过6V,否则会损坏伺服电机。

我们只用了一个面包板和一些连接线来构建电路,车库门模型的构建是用简单的纸箱和海图纸来完成的。在下图中,您可以看到ESP32开发板连接到车库内的伺服电机。

如果您想使连接更安全,您还可以将ESP32板焊接在零PCB上,并使用男性bergstick引脚连接两个伺服电机。此外,我们已经使用ESP32板上的USB端口为整个项目供电,如果你想让你的项目远程,你也可以考虑使用9V电池或锂电池。一旦连接准备好,我们就可以开始编程ESP32板,以使用物联网构建我们的智能门车库。

如何为基于物联网的智能车库门编程

为我们的基于物联网的智能车库门编程,我们必须专注于两件事,一是控制ESP32的伺服器,另一个是建立一个智能车库门网络服务器,可用于使用手机打开或关闭我们的智能门。完整的代码可以在页面底部找到,相同的解释如下。

这些行包括Arduino草图所需的库。ESP32Servo.h用于使用NodeMCU ESP32微控制器控制伺服电机,wifi .h是启用设备中wifi功能的库。

这里我们为伺服控制做了一些变量,为wifi凭证做了一些常量。确保将WiFi名称和密码更改为您的。声明用于存储HTTP请求的服务器端口和变量。

在设置部分,我们已经为伺服电机分配了引脚,并开始建立WiFi连接。它将在串行监视器上打印Wi-Fi连接状态和本地IP地址。注意某个地方的IP地址,它是网页的地址。

在开始循环时,我们的设备始终处于来自物联网web服务器的命令接收模式,并检查是否有任何传入数据,如果是,则开始从本地IP地址获取数据并将其存储在变量中。此外,它还用于控制伺服运动。

在接收到命令之后,我们必须处理一件事,我们有两个伺服电机,它们必须以不同的角度同时旋转,因为它们都在相反的方向上。否则,整个系统就会崩溃。为了解决这个问题,我们必须做一个while循环,这样两个电机每次都移动1度,一个接一个地移动到期望的位置。

这个循环的下一部分完全致力于基于HTML的web界面。我们已经设计了按钮和名称,您可以根据您的选择更改它们。它将在网页上创建一个交互界面,这样我们就不需要每次输入和关闭,我们将有一个按钮。

智能车库门物联网项目使用ESP32 -工作

建好电子部件后,我们必须为它造一个车库。我用了硬纸板和一些不同颜色的海图。然后我用热熔胶枪把伺服电机安装在车库门上。

安装伺服电机后,我们必须照顾整个面包板电路设置。我用双面胶带把它固定在侧壁上,用透明胶带固定电线。

完成所有设置和连接后,它就可以工作了。我用的是充电宝。

在构建项目之后,有一个小的过程可以用智能手机控制它。首先,如果您想将此设备连接到路由器,请确保将您的智能手机连接到相同的网络。你也可以使用你的智能手机热点连接你的设备。当设备连接到互联网时,你可以在串行监视器上找到它的IP地址。然后在智能手机上的任何浏览器的搜索栏中输入此IP地址,然后您将看到该网页。您可以将该页面添加到“主界面”中,这样就不需要每次都重新搜索IP地址了。最后,您的设备连接到智能手机,我们的智能车库门物联网项目已准备好进行演示。这个项目的完整工作可以在下面的视频中找到,希望你学到了一些有用的东西,并喜欢这个项目。

//Code for IoT Smart Garage Door Opener

//by iotdesignpro.com

#include

#include

Servo servo1;

Servo servo2;

const char* ssid = "0000";

const char* password = "12345678";

int pos = 0;

WiFiServer server(80); // Set port to 80

String header; // Stores the HTTP request

String doorstate = "off"; // state of door

void setup() {

servo1.attach(15);

servo2.attach(13);

Serial.begin(115200);

// Set the pinmode of the pins to which the LEDs are connected and turn them low to prevent flunctuations

//connect to access point

WiFi.begin(ssid, password);

Serial.print("Connecting to ");

Serial.println(ssid);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

// Print local IP address and start web server

Serial.println("");

Serial.println("WiFi connected.");

server.begin();

Serial.println("IP address: ");

Serial.println(WiFi.localIP()); // this will display the Ip address of the Pi which should be entered into your browser

}

void loop() {

WiFiClient client = server.available(); // Listen for incoming clients

if (client) { // If a new client connects,

String currentLine = ""; // make a String to hold incoming data from the client

while (client.connected()) { // loop while the client's connected

if (client.available()) { // if there's bytes to read from the client,

char c = client.read(); // read a byte, then

Serial.write(c); // print it out the serial monitor

header += c;

if (c == '\n') { // if the byte is a newline character

// if the current line is blank, you got two newline characters in a row.

// that's the end of the client HTTP request, so send a response:

if (currentLine.length() == 0) {

client.println("HTTP/1.1 200 OK");

client.println("Content-type:text/html");

client.println("Connection: close");

client.println();

if (header.indexOf("GET /door/on") >= 0) {

Serial.println("Door Open");

doorstate = "on";

while (pos < 100) {

Serial.println(pos);

servo1.write(pos);

servo2.write(180 - pos);

pos++;

delay(10);

}

} else if (header.indexOf("GET /door/off") >= 0) {

Serial.println("Door Close");

doorstate = "off";

while (pos > 0) {

servo1.write(pos);

servo2.write(180 - pos);

Serial.println(pos);

pos--;

delay(10);

}

}

// Display the HTML web page

client.println("");

client.println("");

client.println("");

// CSS to style the on/off buttons

client.println("");

client.println("

IoT Based Garage Door

");

if (doorstate == "off") {

client.println("

Open

");

} else {

client.println("

Close

");

}

client.println("


本文编译自iotdesignpro



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭