打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
少年说||元宝(394):ESP8266联网门禁制作记
userphoto

2023.10.27 北京

关注
如今,多数小区中的单元楼都装有楼宇对讲门禁。人们想要进入楼中,理论上只有两种方式:刷门禁卡(脸或手指也可);输入并呼叫门牌号,让屋里的人按开门按钮。这两种开门方式,分别适用于户主和访客进入,同时极大程度降低了入室盗窃发生的概率,是“科技改变生活”的极佳案例。然而,对于一些只能刷卡的老式门禁,出门忘带门卡,是个相当高频的问题,尤其是家里没有别人的时候,别提多头大了。
实际生活中,解决方法有很多。有的门禁可以输入密码;我们也可以打电话联系物业,或是等一会尾随他人进入。但是以上这些方式,或多或少会耽误几分钟时间,而且太不自动化。作为一个“创客”,我怎能接受得了。为此,我设计并制作了一款基于ESP8266和舵机的联网门禁,使用手机APP操作开门禁,解决了这个棘手的问题。
ESP8266是一款国产的WiFi芯片,通常是以WiFi模块的方式,通过串口连接到Arduino等开发板上使用。然而有许多国内外技术大佬发现,ESP8266内置的MCU控制器,可以直接被编程。换句话说,它可以独立运作,完成Arduino等单片机几乎全部功能的同时还能连接WiFi。此外,一块ESP8266开发板,价格大约二十块钱人民币,相比于Arduino官方的动辄数百元的开发板,性能更强的同时成本大幅度降低。况且,官方秉持开源精神,开放了适用于Arduino的ESP8266 SDK。说白了,就是会玩Arduino的人可以零门槛开发ESP8266。于是,在以Atmel(Arduino官方开发板芯片供应商)为首的许多芯片厂商因疫情原因供货短缺的情况下,ESP8266在全球开源硬件圈大受欢迎,成为了新一代物联网控制器的极佳选择。
使用开源Fritzing软件绘制的实物图
而我这个作品需求:首先要有联网功能,并能驱动舵机这样的模块设备;其次为了实际应用,要尽可能降低成本;最后要便于开发,使用我熟悉的Arduino代码(基于C++)编程。恰好这几点都是ESP8266的优点,于是我毫不犹豫地下单,看在其便宜,怕质量不好的份上一次买了四块板。此外,我还学习了AppInventor,是一款图形化的简单安卓开发工具,用于设计手机上的开锁应用。一切准备就绪,我便利用周末的自由时间,开始了这一项目。
我结合其目标功能,设定了分步开发计划。第一是用模块驱动舵机转动,这很容易,直接把Arduino程序拿过来就能用;第二步是将模块联网,与手机等广域网设备建立通信,实现手机控制。这一步的难度就相当大了。由于现在家庭WiFi上面都套了好几层内网,手机和模块不在同一WiFi下是完全无法访问ESP8266的,更别说建立通信控制了。因此,直接连接的方案是不可能的,必须进行中转。
中转的原理就是在公网架设一台服务器,ESP和手机都可以访问并建立连接。当手机发送的信息到达服务器,ESP就会立刻检测到并执行开门动作。自己购买云服务器的成本过高,好在有许实惠的物联网专用云可供选择。目前国内做得比较好的是巴法云,个人非商业用途可免费使用。根据巴法云官方的开发文档和示例程序,我发现稍微损失一点安全性,让模块使用MQTT协议联网,要比使用TCP协议速度更快,且代码更简单。并且单元楼的大门,就算被无关人员远程打开,还有一层家门,大可不必担心。以上过程,我用了两个周末写代码,终于实现了手机联网控制功能,然而新的棘手问题又出现了。

1.0版本的程序,模块连接的WiFi名称和密码信息,是写在源代码里,直接烧写进单片机的。如果要连接其它WiFi,或者自己家的WiFi改了密码,就需要更改源代码重新烧写程序,过于复杂。因此,模块最好能够像市面上的物联网设备,通过手机配网,随时重置连接其它WiFi。为此,我再次上网搜索,在各种社区论坛查阅大佬们的解决方案,最终发现了一个宝藏库——WiFiManager。这个库整合了一些简单的函数,可以实现通电自动联网和手机配网。
ESP8266通电开机后,程序会自动检索EEPROM(ESP8266上一个断电不会清空的存储器)中是否有WiFi信息,如果有就会尝试连接,没有或者连接失败,就会进入配网模式;ESP8266会先把自己变成一个WiFi热点,使用手机连接后会自动跳转到其内置的配置网页,我们可在网页上可以输入要连接的WiFi名和密码。保存后,模块会再次尝试联网,如果连接成功,新设置的WiFi名和密码信息会覆盖原来EEPROM中的数据,并在下次通电自动连接;如果连接失败,那么模块就会重置,再次进入配网程序。此外,我们也可以通过引脚触发,比如按按钮的方式,手动清除模块中已有的WiFi信息,触发重新配网。这一系列研发过程同样耗时两个周末,也与联网控制完成了融合,实现了目标中的全部功能。
至此,这个项目已经进行了一个月的时间。在实际使用的测试中,还有一些需要改进的地方。比如模块短暂断网后,不会自动重连,而是先重启,再自动清除了配网信息……直到现在,我的程序代码已经更新到了第四代,解决了测试中发现的全部BUG。
通过这次制作我大大认识到ESP系列WiFi控制器的无限潜力,手里剩下的三块板子未来也有相当广阔的开发空间。其实,这一项目的成功,除了我的兴趣,更离不开各种开源社区的帖子,也就是各位大佬秉持极客精神,将自己的包括源代码在内的整个作品成果,无偿分享给爱创造的所有人。我也会将我的整个设计和代码分享到各大社区,将这种无私的开源创客精神传递下去。最后,我也希望自己能够保持兴趣,继续享受这种自己动手解决问题的独特快乐。

实际测试视频

作者简介:金元宝,男,2007年10月生,高一“求知少年”。『小小少年说』公号创建者,周五专栏小作者。自2016年3月25日起,每周一篇,记录成长。


元宝的话好久没有做自己曾热爱的单片机电子制作了。这次实践,我似乎发现了两个宝藏,一个是ESP8266这个性价比极高的物联网控制器,另一个就是各大开源论坛。这些开源极客们秉持极客精神,将自己的设计与成果分享出来,是一种非常高尚的行为,我也要将其延续下去。作品相关的布线图和代码链接将会置顶留言中发出,感兴趣的可以阅读并下载。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用ESP8266 wifi 遥控,用arduino制作控制灯
前方高能,教大家制作一个能手机控制的继电器开关!
Arduino UNO ESP8266采集数据上传到贝壳网
如何仅花20元成本用arduino平台建立自己的物联网应用
20多块钱自制永远精准的WIFI时钟
【物联网开发】esp32cam开发板 app inventor
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服