一、项目背景与目标
随着智能家居的普及,智能门锁作为现代家庭的安全守护者,越来越受到人们的关注。本项目旨在设计和实现一个基于ESP32的WiFi门锁系统,该系统使用WiFi网页进行开门,并将用户的MAC地址作为识别钥匙,从而提高家庭安全和便捷性。
二·项目设计思路及实现方法
1.设计一个使用ESP32微控制器的WiFi门锁系统,该系统可以通过手机或者电脑网页进行远程控制,并具备基本的安全性功能,网页使用html语言搭建,使用简单方便并且使用设备的MAC地址具有高安全性,而且后期便于添加其他的功能和设备。
2.选择适合的电子锁(如电动锁舌)作为执行器,或者使用驱动电路(如MOSFET或继电器模块)来控制锁的通断。
3.使用TYPE-C的端口进行供电,提高适配性。
三·方案框图和原理图介绍
原理图:
方案图:
本次设计的话主要使用的是ESP32芯片,为了简单并没有使用太多其他的电路,仅搭建了基础电路。
PCB设计介绍:
主要通过TYPE-C进行供电驱动,相应的功能都有标识。
这边的实物是我第一版的,但电路和第二版本没有区别,就改了一下走线。
四·主要器件介绍
SP32 是一款强大的微控制器,由乐鑫科技(Espressif Systems)设计和制造,广泛应用于物联网(IoT)领域以及各种嵌入式系统项目。以下是ESP32的一些关键特性和用途介绍:
- 集成Wi-Fi和蓝牙功能:ESP32内置2.4 GHz Wi-Fi和蓝牙双模技术,支持经典蓝牙和BLE(蓝牙低功耗),这使其能够与其他设备进行无线通信,适用于智能家居和可穿戴设备等应用。
- 强大的处理能力:ESP32配备了双核Xtensa LX6微处理器,主频高达240MHz,能够高效地处理复杂的计算任务。此外,它还包含一个硬件加速加密引擎,支持多种加密协议。
- 低功耗设计:ESP32支持多种省电模式,如深度睡眠模式、休眠模式等,这使其非常适合电池供电设备和需要长时间运行的应用。
五·软件代码介绍
void mac()
{
wifi_sta_list_t wifi_sta_list;
wifi_sta_info_t station;
uint16_t number = 0;
esp_err_t err;
esp_wifi_ap_get_sta_list(&wifi_sta_list);
number = wifi_sta_list.num; // 获取连接数
for (int i = 0; i < number; i++) {
station = wifi_sta_list.sta[i];
sprintf(macode, "%02X%02X%02X%02X%02X%02X", station.mac[0], station.mac[1], station.mac[2], station.mac[3], station.mac[4], station.mac[5]);
Serial.println(macode); // 打印MAC地址到串口
}
delay(100);
}
这段代码主要是读取MAC地址的主要代码,在本次设计中是主要的作用。
void handleRoot() {
// 在访问页面时获取最新的 MAC 地址
mac();
if(loggedIn==1) {
String page = "<html><body>";
page += "<h1>MAC:</h1>";
page += "<p>";
page += macode;
page += "</p>";
page += "<h1>macode:</h1>";
page += "<ul>"; // 使用无序列表显示数组内容
for (int i = 0; i < 30; i++) {
if (strlen(myArray[i]) > 0) { // 只显示非空的元素
page += "<li>";
page += myArray[i];
page += "</li>";
}
}
page += "<form action='/add' method='get'><input type='submit' value='Add to Array'></form>";
page += "<form action='/updateWifi' method='post'><input type='text' name='newSsid' placeholder='New WiFi SSID'><br><input type='text' name='newPassword' placeholder='New WiFi Password'><br><input type='submit' value='Update WiFi Credentials'></form>";
page += "</body></html>";
server.send(200, "text/html", page);
server.on("/updateWifi", HTTP_POST, handleUpdateWifi);
}
else
{
server.send(401, "text/plain", "Unauthorized"); // 未授权状态码
}
}
在代码中主要的是在网页上将MAC的地址和ESP32里面存储的MAC地址显示出来让用户可以直观的看见,
其他的代码我就不全部发出来了,有兴趣的小伙伴可以自己下载下来看看。
六·总结
基于ESP32的WiFi门锁项目结合了物联网技术与智能家居的理念,为现代家居安全提供了便利和高效的解决方案。
在这次设计中我可以拓展我的各种能力并且还可以让我了解我并不了解的其他编程方法还有其他的一些语法。这一过程不仅提高了我的技术能力,也让我在团队合作和项目管理方面得到了提升。很感谢电子森林官方提供的平台和机会。