了解最新公司動態及行業資訊
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多,非常適合新手學習,老手玩耍??商娲x擇有esp32(wifi藍牙一體),cc2xxx系列(藍牙)等。
語言方面,nodejs大法好?。ㄒ驗槟_本語言相對容易上手,且JavaScript大法好?。?/p>
關于電子門鎖的選擇,其實原理都是一樣的,由上位機對門鎖進行開關操作,一般有電磁鎖(本項目采用該方案,適合可以進行大改的內開外開門,無需改動鎖,需要改門)、舵機拉動鎖(夏風大佬選擇的無損方案,適合老式橫拉鎖的門)、電子液壓推桿(直接更換鎖芯,比較有破壞性,且萬一斷電了就涼涼)、磁性推桿(原理與電子液壓推桿類似,有破壞性,但是不像電子液壓推桿一次行程后會自鎖,磁性推桿其實像電磁鎖,需要持續供電以續鎖)等方案。大家可以看自己情況選擇。
為了實現本教程,所需準備的基礎材料有:
wifi環境,萬物之源。(esp8266僅可使用2.4GHz頻段的wifi)esp8266一塊,約10元。(建議選擇全引腳引出和自帶串口轉USB的開發板,方便且可用充電寶供電)繼電器一只,約2元。(注意需要選擇可由3.3v驅動的5v繼電器,部分5v繼電器無法被mcu的3.3v帶動)電磁鎖一套,約30元。(可自由選擇門鎖類型,上面有介紹,本教程選擇220v轉12v的小吸力電磁鎖)杜邦線若干,約2元。(連接用的導線)靈活細致且小心的雙手,無價。(安全第一?。?div style="text-align: left; margin-bottom: 10px;">*完整實現還需要:
服務器或主機一枚,約114元。(為了運行web服務端以實現遠程開鎖,114元為阿里云學生機優惠價,貴的可能是514元還可能是1919810元就不推薦了)開關一只,約1元。(門里的人想出去,室內按開關開門更方便)小型UPS一坨,約200元。(UPS為了防止斷電大門失守,可以用充電寶代替)根據你所購買的電磁鎖賣家提供的教程安裝電磁鎖,此處不再贅述。確保門鎖能正常工作吸合,且吸力足夠??蛇x:接駁UPS。
在繼電器控制端,使用母對公杜邦線將繼電器的VCC和GND與esp8266的5V(或3.3V)和GND相連,通過板載電源輸出供電。使用母對公杜邦線將esp8266的D0口與繼電器IN口相連,如繼電器有觸發模式選擇則將觸發模式設置為高電平觸發(HIGH)。TTL控制信號將由d0口發出,選擇d0口的原因是開發板載led指示燈也由d0口觸發,方便查看運行狀態。
在繼電器另一端(即工作端),使用公對公杜邦線將電磁鎖驅動盒內12V+供電電源線與繼電器公共端COM相連,電磁鎖12V+與繼電器常開端相連。
使用普通電源或充電寶給esp8266供電,現在已完成硬件端連接。將各種線整理好,能放的放入驅動盒內,注意不要短路??蛇x:連接室內開關,以類似繼電器的連法串聯電磁鎖驅動盒內12V-供電電源線。
電腦端訪問:
點擊Star給我一個小紅花(感謝),然后下載整個zip包,解壓后,進入Tools文件夾內:
CH341SER.EXE 為USB轉串口驅動,運行安裝即可。ESP8266Flasher_x32(x64).exe 為NodeMCU燒錄軟件,選擇適合自己系統的運行。nodemcu_float_0.9.6-dev_20150704.bin 為本程序所基于的板子固件(若板子無固件則必需),若板子沒有固件,使用第2條所示軟件刷入該固件?,F在,將esp8266連接電腦,應該能在設備管理器內被正確識別。若沒有正常識別,需要安裝第1條所示驅動。ESPlorer.zip 為NodeMCU IDE?,F在,解壓它,然后運行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應該會亮起三秒并熄滅,同時繼電器會吸合,門鎖會打開?,F在,恭喜你完成了本地服務器版的局域網門禁配置。此后你可以通過:連接wifi、瀏覽器訪問板子ip、點擊開鎖的方式來開門。在0x02,你成功搭建了一個無線局域網下的門禁系統,它完全由esp8266自己來建立本地服務端,作為一個有wifi功能的mcu,自行處理所有工作。優點是便捷易維護,一般出現問題都是在wifi斷連,解決容易。但是缺點也顯而易見,它的web前端受限于mcu的處理能力,只能提供非常簡陋的靜態網頁,且顯示網頁速度慢;為了開個門一定要連wifi并且知道板子的ip才行,麻煩。所以更理想一些的實現是:用戶手機無需連接wifi,直接在任意網絡環境下開門。為了達到這種無線物聯網實現效果,這需要一個獨立的前端處理用戶輸入,負責將開門關門指令發送給esp8266,esp8266只需作為后端,負責開門關門即可,同時本地服務端仍然開啟,作為備用開門手段,盡到它作為mcu的作用。
那么如何實現前后端的通信呢,大家知道,在互聯網上,兩臺設備之間通信需要知道對方的公網ip地址,而現在由于運營商的原因,大家一般都是拿不到公網ip的,所以就需要內網穿透或者別的實現方法,而內網穿透實現繁瑣且不穩定,這里我曲線救國,用到了一個物聯網平臺 醬菜物聯:
醬菜物聯的優點是只需一句post就可以控制設備,沒有其他繁瑣的各種操作,實現相當友好,對比過很多iot方案,還是選擇了醬菜,可以說是最友好的方案了。我吹爆醬菜!
注冊賬戶并獲取apikey,在本地服務器版代碼基礎上,填入到init.lua相應位置并保存
回到主頁,添加開關,電燈開關或者門開關都可以,這里我選了電燈開關,其實都差不多
獲取設備的sid和nid,填入到init.lua的相應位置并保存
upload代碼到esp8266,reset一下板子,console應該會出現jcck綁定成功的反饋,現在板子已經成功和醬菜物聯建立連接,你可以參考醬菜通信協議向醬菜物聯發個post就可以控制門禁了
接下來才是最重要但也是最簡單的web前端的搭建
來安裝依賴,等待依賴安裝完成后,輸入
把它跑起來,窗口應該會顯示系統啟動和綁定成功的反饋
?,F在,打開瀏覽器,訪問架設機的ip(用自己電腦搭的可以直接訪問127.0.0.1)并測試開門指令,門禁系統應該可以正常工作了。webUI是花了一晚上模仿的6.x老版本的微信界面,只對移動端進行了優化,PC端訪問建議開發者工具模擬成手機訪問獲取最佳效果。
至此,ChatDACS搭建成功,項目架設完畢。
這個項目還在開發中,現在已迭代到1.7.0,步入穩定階段,部分功能仍將長期處于初級階段,歡迎大家提issue來反饋和建議,再次感謝
大佬給我帶來寫這篇教程的動力 ,下次將為大家帶來如何做一個智能車鎖的詳盡教程,菜雞緹娜鞠躬b( ̄▽ ̄)d~上一篇:門禁系統功能都包括什么?
下一篇:門禁基本功能的概述