了解最新公司动态及行业资讯
2020/3/18:和智能机器人小夜联动加入傻屌聊天,实现最重要的聊天(Chat)
11/6:更新1.2.4,启动现代化前端分支(bootstrap+layui)
9/2:更新1.2.0稳定发行版本
6/16:考虑到新手有时难以找到源码位置,故明显化了源码位置
----------更新分割线----------
实装效果:
http://192.168.1.154:2333 (二维码自动识别)
扫码开门DEMO:
-----------项目开源,源码在此分割线:-----------
------------------源码在此分割线------------------
概览:本项目是一个使用Node.js创建的基于http://socket.io的由esp8266实现的全端物联网门禁系统,分为web端与硬件端。web端前后端强耦合,实现全端,可拆离作为独立聊天室运行;硬件端由esp8266或可替换的mcu实现,自建局域网服务器实现本地开锁,ide可选NodeMCU或Arduino等;由酱菜物联提供物联服务。副标题无恶意,真的只是酸了,想想自己长那么大了没有做出一个能展示出来的成品,有点卑微(嘤嘤嘤)。 先在最开头放上这个让我酸的罪魁祸首
(x(啊是大佬我死了(因本人排版死早,本文有参考借鉴该文格式,谢谢作者优秀的排版硬件方面,esp8266是一块非常优秀的物联网解决方案mcu,性价比高(~10R/pcs),拓展性强,文档完善,可选IDE多,非常适合新手学习,老手玩耍。可替代选择有esp32(wifi蓝牙一体),cc2xxx系列(蓝牙)等。
语言方面,nodejs大法好!(因为脚本语言相对容易上手,且JavaScript大法好!)
关于电子门锁的选择,其实原理都是一样的,由上位机对门锁进行开关操作,一般有电磁锁(本项目采用该方案,适合可以进行大改的内开外开门,无需改动锁,需要改门)、舵机拉动锁(夏风大佬选择的无损方案,适合老式横拉锁的门)、电子液压推杆(直接更换锁芯,比较有破坏性,且万一断电了就凉凉)、磁性推杆(原理与电子液压推杆类似,有破坏性,但是不像电子液压推杆一次行程后会自锁,磁性推杆其实像电磁锁,需要持续供电以续锁)等方案。大家可以看自己情况选择。
为了实现本教程,所需准备的基础材料有:
wifi环境,万物之源。(esp8266仅可使用2.4GHz频段的wifi)esp8266一块,约10元。(建议选择全引脚引出和自带串口转USB的开发板,方便且可用充电宝供电)继电器一只,约2元。(注意需要选择可由3.3v驱动的5v继电器,部分5v继电器无法被mcu的3.3v带动)电磁锁一套,约30元。(可自由选择门锁类型,上面有介绍,本教程选择220v转12v的小吸力电磁锁)杜邦线若干,约2元。(连接用的导线)灵活细致且小心的双手,无价。(安全第一!)杜邦线,esp8266开发版,继电器*完整实现还需要:
服务器或主机一枚,约114元。(为了运行web服务端以实现远程开锁,114元为阿里云学生机优惠价,贵的可能是514元还可能是1919810元就不推荐了)开关一只,约1元。(门里的人想出去,室内按开关开门更方便)小型UPS一坨,约200元。(UPS为了防止断电大门失守,可以用充电宝代替)阿里114元学生机(要素察觉根据你所购买的电磁锁卖家提供的教程安装电磁锁,此处不再赘述。确保门锁能正常工作吸合,且吸力足够。可选:接驳UPS。
在继电器控制端,使用母对公杜邦线将继电器的VCC和GND与esp8266的5V(或3.3V)和GND相连,通过板载电源输出供电。使用母对公杜邦线将esp8266的D0口与继电器IN口相连,如继电器有触发模式选择则将触发模式设置为高电平触发(HIGH)。TTL控制信号将由d0口发出,选择d0口的原因是开发板载led指示灯也由d0口触发,方便查看运行状态。
在继电器另一端(即工作端),使用公对公杜邦线将电磁锁驱动盒内12V+供电电源线与继电器公共端COM相连,电磁锁12V+与继电器常开端相连。
使用普通电源或充电宝给esp8266供电,现在已完成硬件端连接。将各种线整理好,能放的放入驱动盒内,注意不要短路。可选:连接室内开关,以类似继电器的连法串联电磁锁驱动盒内12V-供电电源线。
电脑端访问:
点击Star给我一个小红花(感谢),然后下载整个zip包,解压后,进入Tools文件夹内:
CH341SER.EXE 为USB转串口驱动,运行安装即可。ESP8266Flasher_x32(x64).exe 为NodeMCU烧录软件,选择适合自己系统的运行。nodemcu_float_0.9.6-dev_20150704.bin 为本程序所基于的板子固件(若板子无固件则必需),若板子没有固件,使用第2条所示软件刷入该固件。现在,将esp8266连接电脑,应该能在设备管理器内被正确识别。若没有正常识别,需要安装第1条所示驱动。ESPlorer.zip 为NodeMCU IDE。现在,解压它,然后运行run.bat。若无法运行需要安装java jdk,网上自行搜索下载。点击窗口左侧上方功能栏open,选择最开始的zip包解压目录下的init.lua,在代码中更改wifi的ssid和password为你环境wifi的名字和密码,保存一下。窗口右侧上方com选择相应com口并连接,console应该会提示板子版本和no init.lua。点击窗口左下角的upload,选择刚刚打开的init.lua,将代码上传至esp8266。进度条走完后,按一下esp8266的reset按键重启板子,此时窗口console应该会显示wifi连接状态,等待提示连接成功并显示板子现在的ip为http://192.168.xxx.xxx,打开连着wifi的手机浏览器,访问这个ip,你应该能看到一个简单的网页,试着点击开门,板子上的led应该会亮起三秒并熄灭,同时继电器会吸合,门锁会打开。现在,恭喜你完成了本地服务器版的局域网门禁配置。此后你可以通过:连接wifi、浏览器访问板子ip、点击开锁的方式来开门。在0x02,你成功搭建了一个无线局域网下的门禁系统,它完全由esp8266自己来建立本地服务端,作为一个有wifi功能的mcu,自行处理所有工作。优点是便捷易维护,一般出现问题都是在wifi断连,解决容易。但是缺点也显而易见,它的web前端受限于mcu的处理能力,只能提供非常简陋的静态网页,且显示网页速度慢;为了开个门一定要连wifi并且知道板子的ip才行,麻烦。所以更理想一些的实现是:用户手机无需连接wifi,直接在任意网络环境下开门。为了达到这种无线物联网实现效果,这需要一个独立的前端处理用户输入,负责将开门关门指令发送给esp8266,esp8266只需作为后端,负责开门关门即可,同时本地服务端仍然开启,作为备用开门手段,尽到它作为mcu的作用。
那么如何实现前后端的通信呢,大家知道,在互联网上,两台设备之间通信需要知道对方的公网ip地址,而现在由于运营商的原因,大家一般都是拿不到公网ip的,所以就需要内网穿透或者别的实现方法,而内网穿透实现繁琐且不稳定,这里我曲线救国,用到了一个物联网平台 酱菜物联:
酱菜物联的优点是只需一句post就可以控制设备,没有其他繁琐的各种操作,实现相当友好,对比过很多iot方案,还是选择了酱菜,可以说是最友好的方案了。我吹爆酱菜!
注册账户并获取apikey,在本地服务器版代码基础上,填入到init.lua相应位置并保存
用户界面获取apikey回到主页,添加开关,电灯开关或者门开关都可以,这里我选了电灯开关,其实都差不多
感觉电灯开关的icon更适合做门禁开关获取设备的sid和nid,填入到init.lua的相应位置并保存
upload代码到esp8266,reset一下板子,console应该会出现jcck绑定成功的反馈,现在板子已经成功和酱菜物联建立连接,你可以参考酱菜通信协议向酱菜物联发个post就可以控制门禁了
接下来才是最重要但也是最简单的web前端的搭建
来安装依赖,等待依赖安装完成后,输入
把它跑起来,窗口应该会显示系统启动和绑定成功的反馈
。现在,打开浏览器,访问架设机的ip(用自己电脑搭的可以直接访问127.0.0.1)并测试开门指令,门禁系统应该可以正常工作了。webUI是花了一晚上模仿的6.x老版本的微信界面,只对移动端进行了优化,PC端访问建议开发者工具模拟成手机访问获取最佳效果。
至此,ChatDACS搭建成功,项目架设完毕。
这个项目还在开发中,现在已迭代到1.7.0,步入稳定阶段,部分功能仍将长期处于初级阶段,欢迎大家提issue来反馈和建议,再次感谢
大佬给我带来写这篇教程的动力 ,下次将为大家带来如何做一个智能车锁的详尽教程,菜鸡缇娜鞠躬b( ̄▽ ̄)d~上一篇:门禁系统功能都包括什么?
下一篇:门禁基本功能的概述