半岛体育平台官方入口
半岛体育平台官方入口
半岛体育平台官方入口
半岛体育平台官方入口
半岛体育平台官方入口
返回
ESP32结合EzDIO制造人脸辨识门锁
来源:半岛体育平台官方入口    发布时间:2023-08-06 20:28:49

  本篇文章将以人脸辨识门锁的主题,并用EzDIO作为扩大板,演示如何将不同的模块,经由程序整合在一起。

  首要需求挑选控制板,不同的控制板将决议你的程序编撰风格,以及项目的走向。例如你比较习气运用MakeCode来开发,那只能挑选micro:bit ,究竟LinkIt 7697与ESP32并不支撑MakeCode,而且意味着单靠这块控制板,将没办法开发IoT功用,除非外接其他的模块或透过不同的办法达到。

  为了之后能将数据上传至Google Sheet,或是指定的MQTT Broker。所以在LinkIt 7697与ESP32中犹疑了良久,最终决议挑选现在较少被提及的ESP32做为本次主题的控制板。

  接着是挑选最重要的AI视觉传感器,除了速度要快,还要便利,最好能记载人脸数据并贮存下来,归纳了以上几点,挑选了最多人运用的HuskyLens。除了人脸辨识开锁外,还期望加上RFID传感器,防止辨识毛病时还能用卡片解锁。

  其他便是继电器、电磁锁、显现屏幕、触发辨识用按钮与提示用蜂鸣器,然后是供电用的变压器与衔接传感器需求的衔接线。

  进程中为了将继电器衔接电源与电磁锁,会需求用到「剥线钳」与「电烙铁」。线与线焊接后为了维护,能够预备「电工胶带」或是「热缩套管」。

  资料备齐后就能够开端将各模块,透过衔接线接在EzDIO上面,主控板ESP32有自己对应的方位,我想咱们应该不生疏,至于其他模块能够参阅接下来的介绍。

  在衔接之前咱们需求先加工电磁锁,将「电源转接头」与「电磁锁」焊接在一起,并针对衔接至「继电器」的线头加锡,如下图所示:

  别离剪去「电源转接头」与「电磁锁」的衔接器后,用剥线钳剥出一小段线,先将黑色线对黑色线焊接在一起,这边是用电工胶带将焊接点包起来维护。接着将两头的赤色在线锡,以便较好锁在「继电器」上。

  选用的「电磁锁」是归于通电后解锁的类型,所以将它安装在「继电器」的常开方位。在未通电的情况下,电磁锁将坚持锁上的状况,接线办法如下图所示:

  继电器能够衔接在任何数字输出的脚位,本次选用的继电器是排针衔接的类型,因而选用杜邦线衔接,将其衔接在EzDIO右边的杜邦排针区,接线参照下表所示:

  OLED运用的是,I2C的接线对应如下表,咱们运用的模块是Grove插座,所以只需拿「Grove衔接线」,一头接在OLED上,另一头接在EzDIO上方5个I2C插座的其间一个即可。

  本次选用的RFID传感器与OLED相同是I2C接口,也相同都是Grove插座。Grove衔接线一头接在RFID传感器上,另一头接在EzDIO上方5个I2C插座的其间一个即可。

  按钮是作为触发人脸辨识运用,只需在对准人脸并按下按钮时,才会发起解锁功用。首要用来防止,当人经过期不小心触发解锁。

  按钮可衔接在具有数字输入功用的脚位上,例如可安装在IO15。由于这边运用的按钮是Grove插座的,所以在排针旁的GPIO插座区,找寻对应的方位衔接即可,Grove插座方位在「CN16」,接线对应如下表所示:

  蜂鸣器能协助咱们了解设备的状况,透过声响的改变,咱们能清楚知道是否感应成功,或是解锁成功。蜂鸣器衔接在输出的脚位,这边挑选的模块是Grove类型,衔接办法与按钮模块相同,仅有不同的是,ESP32部分脚位只允许输入,需求避开那些脚位,笔者挑选衔接IO14(对应ESP32的脚位是27),Grove插座方位在「CN15」,接线对应如下表所示:

  HuskyLens能够挑选I2C或是UART衔接,并有附上衔接线C,由于附赠的衔接线另一头为杜邦母头,可衔接在EzDIO的杜邦排针区,接线对应如下表所示:

  完结上述进程后,一切的模块与设备皆已衔接结束,你能够找一块板子并透过螺丝、螺帽,将一切部件固定起来。板子能够是木板或是压克力,摆放结束后用雷切或电钻钻洞都能够,也能按照自己的需求,安装在恰当的方位,自由发挥。

  本次典范是用一块3mm巨细适中的木板,并运用手持电钻钻孔,将一切东西都固定在木板上,并用标签机打印了一张标明贴纸,看起来有模有样,如下图所示:

  在刻录程序的进程中,发现原先在BlocklyDuino F1里的HuskyLens链接库无法运用在ESP32上面,后来经由查找HuskyLens官方阐明网站,发现有较新的版别可用于ESP32,但反而无法用在LinkIt 7697。经咱们工程师修改后可兼容两块主控板,修改后的链接库衔接如下:

  1. 首要翻开BlocklyDuino F1的「文件夹」,接着按照下列次序依须点开文件夹,以便找到寄存总链接库的文件夹:

  2. 接着删去原先在文件夹内的旧链接库「HUSKYLENS」,删去后先不要封闭文件夹,待会儿要将新的链接库仿制过来。

  3. 解压缩刚刚下载下来的新链接库,并仿制文件夹内的「HUSKYLENS」,贴到刚刚BlocklyDuino F1的链接库文件夹「libraries」内。

  完结上述进程,就完结链接库安装了。新、旧链接库内容差异不小,请不要用掩盖的,的确删去后再贴上新的链接库,比较不会有问题。

  1. 首要是人脸辨识解锁的功用,预先设定HuskyLens贮存要辨识的人脸,当HuskyLens通电后就会开端履行任务,并经由衔接线回传数据,此刻若是按下按钮,就让程序去比对是否是记载过的人脸,比对成功则开锁,并于3秒后锁上。

  2. 接着是RFID感应解锁,相同得预先知道卡片号码,当感应到相同号码则开锁,并于3秒后锁上。

  在运用人脸辨识功用之前,需求进行一些设定,例如承认是否为I2C通讯,或是记载人脸数据等等,你能够参阅官方文件的教育,请记载一张人脸,用于程序比对解锁用。

  完结上述功用的程序不会太杂乱,能够直接下载「典范程序」,解压缩后请用BlocklyDuino敞开,咱们能够从程序中学习。

  其有两个典范程序,一个是单纯读取RFID卡片号码的程序,用来读出手边卡片的编号,比对卡片号码时运用;另一个则是完结上述功用的辨识解锁程序。

  RFID传感器在感测到卡片数据时会读到号码,反之为空值。透过变量「card」将数据贮存下来后比对,若有读到数据则显现在OLED上面。

  将程序刻录后履行,请将读取到的数据记下来,以便填入「EzDIO_Face_unlock」这个程序中。

  程序能够分红三部份,别离是「初始化」、「重复履行」与「函式群」。初始化不外乎便是功用设定与状况赋予,重复履行则处理一切功用,包括辨识、RFID感应、开锁……等。最终的函式群是指,将一些重复用到的功用包成函式(或称子程序),首要用于简化程序并提高修改时的功率,从而添加可读性。接下来让咱们观看每个部份:

  在这部份咱们针对需求预先初始化的功用,进行初始化,像是OLED与HuskyLens。并设定两个全局变量「door」、「card」,用来记载是否开门以及贮存卡片的号码。

  由于OLED显现的文字巨细有限,所以选用图片转化XBM的办法,即可显现恣意图画或文字,自定义的位图有"open"(开锁)、"lock"(上锁)、"n1~n3"(显现数字)、"noperson"(没有纪录)等六个,最终是在一切功用不断履行前,先于OLED屏幕显现「上锁」。

  【check_OK】开锁成功并设定显现与音效,并将「door」这个变量设定为1。

  【check_ERROR】解锁失利并设定屏幕显现没有纪录与接连音效,最终显现上锁。

  【open_and_lock】发动电磁锁开锁并显现倒数,待3秒往后将「door」这个变量设定为0,并上锁与显现。

  在重复履行内也分红三个部份,别离是「HuskyLens运转时刻」、「RFID读取阶段」、「是否开锁阶段」。

  HuskyLens运转时刻:首要从HuskyLens获得一组辨识数据,接着承认是否按下按钮,来进行身份比对,若比对成功则履行【check_OK】,若没有辨识到或身份比对过错,则履行【check_ERROR】。

  RFID读取阶段:相同先获得感应号码,若没有感应到卡片则会获得「空字符串」,感应到号码后将进行比对,比对成功则履行【check_OK】,比对过错则履行【check_ERROR】。

  是否开锁阶段:上述两大阶段若有开锁成功,均会调整变量「door」的数值为1,在这阶段只需侦测到「door」数值为1,则履行【open_and_lock】,履行结束后会将「door」这个变量设定为0。

  三个阶段履行完后,最终的「推迟100毫秒」是为了防止程序重复履行过快,导致数据接纳过错。

  在重复履行内也分红三个部份,别离是「HuskyLens运转时刻」、「RFID读取阶段」、「是否开锁阶段」。

  HuskyLens运转时刻:首要从HuskyLens获得一组辨识数据,接着承认是否按下按钮,来进行身份比对,若比对成功则履行【check_OK】,若没有辨识到或身份比对过错,则履行【check_ERROR】。

  RFID读取阶段:相同先获得感应号码,若没有感应到卡片则会获得「空字符串」,感应到号码后将进行比对,比对成功则履行【check_OK】,比对过错则履行【check_ERROR】。

  是否开锁阶段:上述两大阶段若有开锁成功,均会调整变量「door」的数值为1,在这阶段只需侦测到「door」数值为1,则履行【open_and_lock】,履行结束后会将「door」这个变量设定为0。

  三个阶段履行完后,最终的「推迟100毫秒」是为了防止程序重复履行过快,导致数据接纳过错。

  以上便是以ESP32为控制板,结合EzDIO扩展板与相关模块制造的人脸辨识门锁项目。

  自定义固件的编译、烧写、测验的悉数进程。预备固件源码包从nodemcu-firmware

  自定义固件 /

  控制板,指纹模块选用AS608,板上预留DHT11温湿度传感器接口、舵机接口、可接入 网络,完成简略的智能家居运用。

  RainMaker IoT项目 /

  网络服务器 /

  数码相册 /

  CAM板监控机器人轿车 /

  -CAM能够经过Wi-Fi保管视频流Web服务器,具有非常好的FPS(每秒帧数

  体系 /

  识别体系 /

  的单板一般都有主动下载电路,用户无需按钮即可令单板主动进入下载形式完成固件烧录。

  运用的办法-上 /

  运用Raspberry Pi Pico W和MicroPython开发物联网运用

  EtherCAT转Profinet网关衔接西门子PLC 与凯福科技总线步进驱动器通讯

  74.有了这个东西,冷压接线端子压的既结实又漂亮,看看是什么?【80小陈】 #硬声创造季