FastBond2阶段2-基于ESP32完成的智能锁
项目介绍:
我所研发的是一个基于ESP32的智能锁项目,整合了多个模块,旨在为整个系统赋予更多的可编辑性和多样性。目前,主要实现了NFC解锁功能,支持使用卡片和手机进行解锁,同时也提供了常见的按键输入解锁方式,其中还结合了防破坏的安全保护系统,通过调整震动传感器的灵敏度可以达到实际需要。
更多信息可查看FastBond2阶段1-基于ESP3的智能锁
PCB和原理图介绍:
流程图初步设计都是由Scheme-it网页绘制,原理图设计在KiCad中进行汇总PCB以及原理图的绘制。
在原理图中我使用的是我自己绘制的ESP32的芯片进行的绘制,其余大多数的元器件都是在其中找到的,该原理图中将各个的功能进行了划分了,将各个的功能在原理图上清晰的呈现了出来,并且将接线的方式也表达的很明显。
在进行的PCB的绘制中由于没有找到合适的封装于是使用了排母进行了代替,在测量了实际的距离后进行了合适的规划,同时尽可能的让板子的布线更合理一些,在绘制中也有不少的问题,比如布线出了一点问题,导致过孔有时过多的,可能会让效果一点不好,我将vcc和gnd进行的铺铜,可以节约一些的空间。
成品展示:
该板子组织完成后就是这样的,由于没有外壳还没有,外观展示是这样的。
通过oled进行显示,和反馈各个情况。
通过nfc卡可以进行开锁,并且会亮起绿灯体现,而且在oled上会有反馈。
在有用不对的卡片打开的情况下也会进行反馈和警告。
并且支持使用按键模块进行输入。
主要代码以及展示:
if(digitalRead(ZD)==0)
for(a=0;a<4;a++)
{
for(b=0;b<200;b++)
{
state=!state;
digitalWrite(FM,state);
delayMicroseconds(5900);
}
delay(1000);
}
这段代码主要是震动传感器的防破坏系统。
char read_key()
{
char key[4][3]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'},
};
for(int j=0;j<3;j++)
{
digitalWrite(col_pin[j],0);
for(int i=0;i<4;i++)
if(!digitalRead(row_pin[i]))
{
digitalWrite(col_pin[j],1);
delay(500);
return key[i][j];
}
digitalWrite(col_pin[j],1);
}
return NULL;
}
这一段代码这定义按键模块的配置和调用方式。
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial())
{ // 获取卡片UID
String uidStr = "";
for (byte i = 0; i < rfid.uid.size; i++) {
uidStr += String(rfid.uid.uidByte[i], HEX);
}
NFC模块的主要核心的调用代码和提取出数据的方式。
其中我运用的是单独对其中的模块进行编程,然后就是组装在一起的方法,这种方法让我可以随时将程序根据情况进行编辑。
心得体会:
参与 FastBond2 阶段2 活动,我开发的基于 ESP32 的智能锁,并在这个过程中有了一些心得体会。
首先,ESP32 的强大功能为智能锁的实现带来了很多优势。使得智能锁可以拥有更多的功能,他的众多的引脚也可以给我更多的机会可以融合更多的模块和功能。
在参与活动的过程中,我学习到了很多关于智能锁开发的知识。电子森林为我们提供了丰富的资源和指导文件,帮助我并提供了示例代码和实验指导,在KiCad里面我也可以拥有方便的制作和便捷的使用体验,使我们能够快速上手进行开发。
此外,和其他开发者的交流与合作也是我收获很大的一部分。在活动中,我们共同解决问题、分享经验,相互学习,这极大地拓宽了我的视野,并且激发了我更多的创意和灵感。