自制宿舍门禁,微信小程序蓝牙控制,比指纹更安全~
不用改裝原有門鎖,成本低,除電源外僅需30多元就能升級智能宿舍(其實只是智能門禁
?PS:由于安信可在文章發布之后多次修改了SDK,提供一個我當時的版本,出錯請先確認是否為20年4月的SDK:Telink_825X_SDK-0bd68dce44cd69b5f785a5bfcbfab4d342dd40fe.zip - 藍奏云
這套方案仍然有一些問題,有時候板子會卡死(不確定是板子還是什么的原因),另外微信小程序也并不是很方便快速開門,建議有能力的同學自己研究一下,或者單純參考一下思路。
0.寫在最前
基于安信可TB-02開發板AT固件V0.4.2開發(C語言),使用微信小程序控制,實現多平臺可用、多用戶、多終端的門禁系統。
提供原始固件和配套小程序(已經發布了,搜索quicklyOpen),有一定C語言基礎(沒有也行),修改固件設備名稱燒寫之后就可直接在小程序綁定設備使用。利用了小愛實驗室功能錄屏教學還可以實現語音控制(不過不穩定),效果放在文末。
這是我的第二塊開發板(第一塊是ESP8266),第一次接觸SDK開發,第一次接觸微信小程序開發,一共差不多用了我一個星期(網課都沒好好聽),多有不足請多指教。
開發過程參考了@半顆心臟 的許多文章,有興趣的可以看一看,鏈接貼在文末。
解釋一下標題,為什么說比網上許多的指紋門禁要安全呢?
源于我看到了B站一位UP主(__Aknice)的視頻,普通的指紋模塊指紋數據存儲在指紋模塊上而非開發板上面,而指紋模塊必須安裝在門外,那么別人只需要把你的模塊拔掉替為自己的,將可以隨便開門。
這個UP主自己也有一套很好的方案,是基于ESP8266的,我一開始也是使用ESP8266做了一個WIFI門禁,但是很快就決定放棄這個方案,因為ESP8266功耗并不小,沒幾天充電寶就掉了一格(可能是我的方案的問題,沒有設計好),扯線又存在危險性,所以我最終選擇藍牙,實測10000mAh充電寶應該至少可以用一個月(已經試了快一周,還沒掉格)。
1.準備工作
元件清單:
- 安信可TB-02開發板1個
- 數碼舵機1個,要買扭矩比較大的,比如MG995和TD8120MG
- 公對母杜邦線數根
- Micro-usb數據線1條
- 結實而細的繩子1條,綁在門把手和舵機臂上開門
- 移動電源一塊,或者自己買幾個18650和電池盒組裝
重點說一下電源的選擇,因為TB-02的工作電流很小,實測我手上這塊小米移動電源2工作幾十秒就會停止供電,換了一塊很老的充電寶才可以用,大家可以選擇買幾節18650和一個電池盒自己做電源。
接線:舵機紅線接電源(開發板的5V)、棕線接地(開發板的GND)、橙色線接信號(開發板的PC3)
建議接上后使用熱熔膠等固定好,以免松動。
SDK環境安裝:
Linux 下教程:泰凌微ble mesh藍牙模組天貓精靈學習之旅 ① 小白也癡迷,如何在 Linux環境搭建編譯燒錄 安信可TB02,點亮一盞LED燈;_徐宏的博客 | 修身齊家治國平天下-CSDN博客
Windows?下教程:Telink_825X_SDK/start_windows.md at master · Ai-Thinker-Open/Telink_825X_SDK · GitHub
安裝教學這里不再贅述,如果有問題的話可以加群獲取幫助,群號也貼在文末。
PS:由于安信可在此之后多次修改了SDK,提供一個我當時的版本,出錯請先確認是否為20年4月的SDK:Telink_825X_SDK-0bd68dce44cd69b5f785a5bfcbfab4d342dd40fe.zip - 藍奏云
2.燒錄固件
固件開源Github:GitHub - chillsoul/TB02-BLEControl: 基于安信可TB-02制作的微信小程序藍牙門禁控制系統。
下載后將這個固件放在SDK同目錄下,如圖:
本文以Windows系統為例,Linux下操作大致相同。
Windows下端口號的獲取:連接開發板后桌面右擊此電腦→設備管理器
在makefile中修改對應的端口號 在我的電腦上顯示是com3就寫com3:
DOWNLOAD_PORT := com3Linux版本請參考上面的安裝教程確定燒錄端口,默認:
DOWNLOAD_PORT := /dev/ttyUSB0然后打開編輯app_att.c,建議使用Visual Studio Code等編輯器。
//app_att.c line 169 #define USER_NUM 6 const char whitelist[USER_NUM][64] = {{"在這里填上你的WHITELIST"} };所謂whilelist是指對應我開發的微信小程序的openid。
關于openid
openId是用戶在當前小程序下的唯一標識(‘身份證’),就是說通過這個openId,就能區分在這個小程序下具體是哪個用戶。
openid的計算方法只有微信官方知道,正是由于openid的唯一性,我選擇openid作為控制門禁的鑰匙,即發送openid到藍牙設備,盡最大努力保證安全。
當然不理解也沒有關系,不要求你開發,會用就行~
下一步,獲取你對應我開發的小程序的openid。
掃碼打開小程序:
點擊右上角獲取openid,即可復制你的openid到剪切板,為了安全起見,不要把這個openid發送給別人,尤其是離你實際距離比較近的人。
回到app_att.c,按照C語言標準修改二維數組:例如我宿舍有四個人,他們的openid分別是
那么就修改為:
#define USER_NUM 4 const char whitelist[USER_NUM][64] = {{"qwerty1"},{"qwerty2"},{"qwerty3"},{"qwerty4"} };然后保存文件,再打開app.c,修改你的設備名稱。
//app.c line 95 const u8 tbl_scanRsp [] = {0x13, 0x09, 'q', 'u', 'i', 'c', 'k','l','y','O','p','e','n','\'','s',' ','D','o','o','r',//loacalName};此處修改有講究,第一位0x13代表其后有多少個字符,上述默認代碼其后0x09和quicklyOpen's Door共19位,轉換成16進制就是0x13,這里建議不要太長,小程序端限制設備名稱最長是10位,修改完成,保存。如果你對C語言的字符沒有什么概念,就簡單點只改字母和數字,比如F01E314,就是:
const u8 tbl_scanRsp [] = {0x08, 0x09, 'F', '0', '1', 'E', '3','1','4',//loacalName};在ble_conrtol_and_AT文件夾內右鍵空白處選擇Git?Bash Here(如果沒有,就是環境沒裝好,請回顧上文)
輸入make,顯示如下表示成功編譯:
等待處理完成后輸入make flash,再次等待進度條讀滿,出現這個界面就是燒錄成功了:
然后按下開發板RST按鍵,別急,還差最后幾步就可以使用了。
先打開手機自帶的藍牙界面,找到qUiCkDoOr,沒錯就是他,點擊后會顯示正在配對(如果是和室友一起,同時只能配對一個,不然會出現搜索不到的情況,一個配對好了再換下一個人),當他出現在已配對設備的時候,開始最后一步吧~
打開小程序,點擊右上角綁定設備,輸入你剛才輸好的名字,此處我輸入1111(注意區分大小寫):
輸入完成,點擊確定,這樣你的數據就已經保存至云端,下次使用不必再次綁定設備,直接搜索藍牙即可。
確定已經給開發板供電、且燒錄完成已按RST重啟,點擊搜索藍牙,稍等片刻,點擊開門,舵機就會開始轉動:
然后把繩子綁在門把手上(或者老鎖的拉栓),再次測試...
不出意外的話,恭喜你,大功告成!
當然,如果有問題的話也很正常~歡迎評論留言交流:
視頻演示效果:
基于安信可TB-02開發板自制宿舍藍牙門禁
小愛同學語音控制利用小愛實驗室錄屏教學功能實現
效果視頻:視頻去哪了呢?_嗶哩嗶哩_bilibili
本文開發參考:
@半顆心臟?TB-02開發板入門好文:
泰凌微ble mesh藍牙模組天貓精靈學習之旅 ① 小白也癡迷,如何在 Linux環境搭建編譯燒錄 安信可TB02,點亮一盞LED燈;_徐宏的博客 | 修身齊家治國平天下-CSDN博客
泰凌微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實現 微信小程序藍牙控制 Ble Mesh模組 安信可TB02,全部開源!_徐宏的博客 | 修身齊家治國平天下-CSDN博客
Telink Kite BLE SDK Developer Handbook:
http://pan-yz.chaoxing.com/share/info/d7111ddd25675790 密碼 : xvkiik
微信開放文檔 學習小程序開發:
微信開放文檔
總結
以上是生活随笔為你收集整理的自制宿舍门禁,微信小程序蓝牙控制,比指纹更安全~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sublime text3 代码格式化插
- 下一篇: 欧拉回路 欧拉路径