6/16:考慮到新手有時難以找到源碼位置,故明顯化了源碼位置
----------更新分割線----------
實裝效果:
00:48大門實裝演示,已穩定運行1年+
DEMO:
-----------項目開源,源碼在此分割線:-----------
------------------源碼在此分割線------------------
概覽:本項目是一個使用Node.js創建的基於http://socket.io的由esp8266實現的全端物聯網門禁系統,分為web端與硬體端。web端前後端強耦合,實現全端,可拆離作為獨立聊天室運行;硬體端由esp8266或可替換的mcu實現,自建區域網伺服器實現本地開鎖,ide可選NodeMCU或Arduino等;由醬菜物聯提供物聯服務。
//本項目沒有技術難度,ifelse撐起大半代碼行,上不了檯面,只是作為個人小半年的學習展示,順便也是作為本項目的完整開發文檔和給小白的創建教程了,大佬勿噴。
副標題無惡意,真的只是酸了,想想自己長那麼大了沒有做出一個能展示出來的成品,有點卑微(嚶嚶嚶)。??先在最開頭放上這個讓我酸的罪魁禍首 @夏風 (x(啊是大佬我死了(因本人排版死早,本文有參考借鑒該文格式,謝謝作者優秀的排版
硬體方面,esp8266是一塊非常優秀的物聯網解決方案mcu,性價比高(~10R/pcs),拓展性強,文檔完善,可選IDE多,非常適合新手學習,老手玩耍。可替代選擇有esp32(wifi藍牙一體),cc2xxx系列(藍牙)等。
語言方面,nodejs大法好!(因為腳本語言相對容易上手,且JavaScript大法好!)
關於電子門鎖的選擇,其實原理都是一樣的,由上位機對門鎖進行開關操作,一般有電磁鎖(本項目採用該方案,適合可以進行大改的內開外開門,無需改動鎖,需要改門)、舵機拉動鎖(夏風大佬選擇的無損方案,適合老式橫拉鎖的門)、電子液壓推桿(直接更換鎖芯,比較有破壞性,且萬一斷電了就涼涼)、磁性推桿(原理與電子液壓推桿類似,有破壞性,但是不像電子液壓推桿一次行程後會自鎖,磁性推桿其實像電磁鎖,需要持續供電以續鎖)等方案。大家可以看自己情況選擇。
為了實現本教程,所需準備的基礎材料有:
*完整實現還需要:
00:28組裝示例
根據你所購買的電磁鎖賣家提供的教程安裝電磁鎖,此處不再贅述。確保門鎖能正常工作吸合,且吸力足夠。可選:接駁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文件夾內:
在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前端的搭建??
npm i
來安裝依賴,等待依賴安裝完成後,輸入??
node .
把它跑起來,窗口應該會顯示系統啟動和綁定成功的反饋。現在,打開瀏覽器,訪問架設機的ip(用自己電腦搭的可以直接訪問127.0.0.1)並測試開門指令,門禁系統應該可以正常工作了。webUI是花了一晚上模仿的6.x老版本的微信界面,只對移動端進行了優化,PC端訪問建議開發者工具模擬成手機訪問獲取最佳效果。
至此,ChatDACS搭建成功,項目架設完畢。
這個項目還在開發中,現在只發行了一個相對穩定的版本,部分功能仍將長期處於初級階段,歡迎大家提issue來反饋和建議,近期將於智能機器人小夜聯動加入傻屌聊天,再次感謝 @夏風 大佬給我帶來寫這篇教程的動力??,下次將為大家帶來如何做一個智能車鎖的詳盡教程,菜雞緹娜鞠躬b( ̄▽ ̄)d~