久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9982|回復: 4
打印 上一主題 下一主題
收起左側

門禁系統的設計與實現

[復制鏈接]
跳轉到指定樓層
樓主
前段時間玩了一下門禁系統,現在整理整理資料,把東西發上來

設計要求:
基于單片機,具有通話、振鈴、摘機、通話、開鎖功能,還要有鍵盤和顯示電路

設計思路:
1、系統用到AD、UART、PWM、SPI,考慮成品的體積,采用arduino nano
2、語音采樣使用駐極體麥克風,經200倍前置放大,再進行8位AD采樣,采樣率8kHz,可達到電話音質,滿足需求
3、門禁系統通信的特點是多對一,距離10~100m,通信速率要滿足語音通信、控制信號傳輸,因此采用485通信,通信速率512Kbps
4、語音播放使用8位PWM,功放芯片采用常見的LM386
5、顯示屏采用Nokia5110,SPI通信
6、鍵盤采用10位ADC鍵盤,16個按鍵
7、開鎖電路使用繼電器實現

硬件設計

1、Arduino Nano
主控直接采用arduino nano,由于485通信和下載程序共用0、1腳,因此要通過撥碼開關切換0、1腳功能


2、電源電路
整個系統使用外部12v電源供電,用于驅動繼電器和LM386,12v電源通過LM2940得到5v電源,Nokia5110顯示屏需要3.3v供電,直接采用nano上的3.3v電源


3、ADC鍵盤電路
由于arduino接口較少,直接采用ADC鍵盤,一次掛載20個按鍵沒有問題,每個分壓電阻使用1kΩ,線性度非常不錯。


4、485通信電路
使用了兩片MAX485組成了全雙工通信,實際測試,10m網線,2Mbps,完全不丟包,另外測試過2m,2Mbps的串口通信,也是完全不丟包


5、麥克風采樣電路
語音采樣,使用普通駐極體麥克風,經過LM358的200倍放大后,送入ADC


6、功放電路
功放直接采用常見的LM386典型電路,PWM信號經過積分電路,再送入LM386,為了提高音量,使用12v供電,實測效果不錯,5v供電時,噪音非常大,稍微一大聲就失真


8、開鎖電路
開鎖功能可以通過電磁鎖實現,這里只用了繼電器并留出了接線口,繼電器電流也不小,保險起見使用了一個9014擴流,并反向并聯一個二極管吸收反向電流


畫好原理圖之后就是排版畫pcb了:

檢查無誤后開始做板子,既然要語音通信,那肯定是至少要做兩個啦:




然后再焊接調試:


雖然做板前仔細檢查了很多遍,但還是出了幾個bug,還好是小問題,兩根飛線解決

程序設計
整個系統包括了以下幾個程序文件:
EG_V0_3: 主程序,包括了功能定義、ADC初始化、定時器初始化、鍵盤輸入處理、顯示界面、數據通信處理、中斷采樣
ADC_KEY:按鍵識別,主要是建立10位ADC值和每個按鍵的映射關系,參考了馬潮老師的狀態機程序
CRC8:CRC校驗程序,為了保證通信的正確性,必須使用數據校驗,crc8非常有效,不過實際測試,沒有crc校驗的情況下好像數據幾乎沒有傳輸錯誤??
Nokia5110:顯示屏驅動程序,直接使用論壇里的代碼,具體哪個帖子忘了。。
rs485:包括485初始化、定時器1初始化、485通信協議、通信處理等
ringtone:實現呼叫、接聽、振鈴功能

程序設計思路
本系統的核心就是語言采樣播放+485通信協議,由于處理的數據量比較大,所以很多地方沒有用到arduino提供的方法,比如analogread、analogwrite、serial等
語音采樣與播放:
人說話的頻率為300HZ~3KHZ,根據采樣定理,采樣頻率應該大于6KHZ,在這里取7.8KHZ(atmega直接分頻可得到),為了減少開發難度,沒有使用音頻壓縮。Timer2開啟溢出中斷,中斷頻率7.8KHZ,語音采樣、鍵盤值采樣、PWM更新都放在這里,同時使用Timer2的OCR2B作為PWM輸出。ADC工作在自動連續轉換模式下,ADC工作頻率為76.9KHZ,測試過更高的頻率,200KHZ以上的采樣速度,誤差非常大,容易導致按鍵誤判和語音噪音。

485通信:
采用了兩片485芯片,一片工作在接收,一片工作在發送,語音采樣的數據量為8bit*8KHZ=64Kbps,由于需要同時傳輸地址、語音數據、控制命令、校驗碼,一次傳輸數據量為3~6字節,因此波特率至少為192Kbps,保險起見,本系統采用了512KHZ。
由于需要傳輸多種數據,所以必須要使用一種通信協議,基于485的通信協議為:
1、主機以廣播的方式向所有從機發送一個地址數據,尋找此地址的從機,該從機收到后發送應答命令,之后建立通信,從機與從機不能進行通信
2、從機不能主動發起對話,只能等待主機發送數據
3、一個幀結構如下:
  (1)[FUNCTION_VOICE,語音數據,CRC校驗],3個字節
  (2)[FUNCTION_COMMAND,COMMAND_XXX,CRC校驗],3~6個字節
           其中COMMAND_XXX包括開門、通話、地址校驗等命令,具體請看代碼
每發完一幀必須空閑一段時間,作為一個幀的結束標志,因此采用Timer1作為定時器,每接收到一個字符就重新計時,如果計時超過設定的空閑時間,則認為當前已接收到一幀,立即對該幀進行處理。需要注意的是,單片機需要一定的時間進行協議的解析和數據處理,如果空閑時間太短,則當期幀數據還沒處理完就來了下一幀數據,肯定會出現混亂,如果空閑時間太長,又會降低通信速率,因此需要取一個合適的空閑值,經過測試,協議解析的時間為72us,因此數據接收+空閑時間應該大于72us,才能保證通信正常。
CRC校驗資料:
循環冗余校驗(CRC)算法入門引導:http://www.zg4o1577.cn/bbs/dpj-47737-1.html
最通俗的CRC校驗原理剖析:http://www.zg4o1577.cn/bbs/dpj-47736-1.html
CRC8校驗分析:http://www.zg4o1577.cn/bbs/dpj-47738-1.html

ADC鍵盤:
10位ad對16個按鍵進行采樣,因此電壓與每個按鍵具有線性比例關系,1024/(16+1)=60.2,實際值是59,再通過映射關系將0-1024值轉換成按鍵值,公式:
key=key_table[(16-(val)/59)/4][(16-(val)/59)%4];
16個按鍵中,y代表yes,n代表n
a-d代表四個功能:通話,開門,設定地址,預留


結果
經過不斷的測試與完善,在12v供電情況下,語音通信清晰,聲音洪亮,基本無噪音,可改變從機地址,范圍為001~999,其他功能也基本實現了,如開門、交互界面等等



電路、代碼、資料,打包:
原附件缺少部分代碼,現已補全并更新:

門禁1.rar (4.66 MB, 下載次數: 42)
更新
在運行以上程序之前,最好運行485測試程序,以確保485通信正常,測試方法:主從機燒入測試程序,同時按下reset,之后測試程序會發送10萬個數據并顯示接收到的數據,觀察運行結果是否正確。測試代碼如下
rs485_test1.rar (5.5 KB, 下載次數: 17)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:137396 發表于 2016-8-23 15:35 | 只看該作者
這也太猛了 不知道淘寶上有沒有賣
回復

使用道具 舉報

板凳
ID:156386 發表于 2016-12-20 21:52 | 只看該作者
很好,學習了
回復

使用道具 舉報

地板
ID:158740 發表于 2016-12-29 20:50 | 只看該作者
厲害,我也要學習一個
回復

使用道具 舉報

5#
ID:240472 發表于 2017-10-18 09:45 | 只看該作者
感謝分享,太厲害啦
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区在线看 | 国产精品s色 | 亚洲一区二区在线播放 | 天天操操操操操 | 国产精品久久国产精品 | 91私密视频 | 视频一区二区在线观看 | 久久综合九九 | 在线日韩视频 | 波多野结衣av中文字幕 | 综合二区 | 亚洲国产精品久久久久 | 国产区第一页 | 日韩色在线 | 久久精品青青大伊人av | 日韩电影一区 | 国产精品高清一区二区 | 免费看大片bbbb欧美 | 成人小视频在线 | 日本特黄a级高清免费大片 国产精品久久性 | 国产精品伦理一区二区三区 | 亚洲综合色视频在线观看 | 久久成人免费 | 亚洲精品一区二区网址 | 欧美一区日韩一区 | 羞羞视频在线观看 | 成人免费视频网站在线观看 | 无码一区二区三区视频 | 国产激情在线 | 夜夜爽99久久国产综合精品女不卡 | 国产精品观看 | 男女污网站 | 激情91| 日韩精品一区二区三区中文在线 | 一区日韩 | 婷婷成人在线 | 国产在线中文字幕 | a级毛片基地 | 国产精品一码二码三码在线 | 亚洲欧洲国产视频 | 97caoporn国产免费人人 |