1. 程式人生 > >用wifi模組開發專案

用wifi模組開發專案

一、寫在前面
繼上次的文章wifi模組esp8266的學習後,我們就可以利用自己手上的esp8266-01 模組做一些小專案啦。網上有關利用wifi模組來開發專案的資料,我百度了,但是覺得很少,大多是在電腦上利用串列埠除錯助手來發送AT指令來除錯wifi,還有就是和wifi韌體程式設計有關,所以現在我就得利用自己已有的工具和知識來開發專案。希望各位讀者根據自己的實際情況來開發自己的腦洞,有什麼好的建議,歡迎留言!

二、專案背景
考慮到實驗室的門鎖很垃圾,平時鎖門開門都要費很大的功夫,所以便自主設計了一個門禁裝置,用的是RFID模組、220v電源介面卡和電磁門鎖改裝了實驗室的門,這樣錄入校園卡資訊就可以讓指定的人開門了。而現在我要利用wifi模組來實現遠端控制門的開啟,這樣哪位同學忘記帶卡時,我就可以在遠端給他開門了,並且利用這個裝置和實驗室裡面的伺服器來記錄實驗室的情況,可以大概的考個勤。

三、實驗經歷
上篇文章說過,把微控制器當做電腦,通過串列埠給wifi模組傳送AT指令,就可以通過程式設計的方式來控制wifi模組來完成開發工作,和利用wifi模組的韌體庫來進行開發相比,雖然這是一種比較low的方式來進行我們的工作,但卻簡單容易上手。
一開始我採用最普通的通訊方式:wifi模組作為客戶機,電腦作為伺服器,即電腦模式為TCP Serve, 在所寫的程式中需要知道電腦的ip地址和埠,其中ip地址已經分配好了,埠可以自己設定,除了具有特殊埠號不能使用外,大部分埠號都是可以使用的,埠號為2byte,所以範圍是在0~65535。這樣的做法確實可以連上wifi而且給電腦傳送資料,但是問題出在 電腦傳送資料->wifi接收併發送->微控制器,微控制器接收資料也是通過串列埠,wifi傳送資料的格式是:+IPD,0,(num):(string) num表示接收的字串位元組數,string是接收到的字串,根據這一點,我就可以通過電腦來對微控制器進行控制,並且只要我在區域網內,就可以控制微控制器。想法很美好,顯示很殘酷,微控制器接收來自wifi的資料總是出錯,我無法獲取到來自電腦的資料(ps:有知道原因的大神可以評論留言告知我,謝謝!)。折磨了我幾天後,我決定換種方法。
最普通的通訊方式


然後我選擇了透傳的通訊方式,至於什麼是透傳,可以看wifi AT指令的使用例項,PDF文件在我上傳的資源裡有,使用透傳模式後,完美的解決了我上面所遇到的問題,具體做法如圖:
透傳模式
對了,其中我也嘗試過把wifi模組作為伺服器,電腦當做客戶機,但是wifi處於這種模式下會有一個服務響應超時,也就是客戶機在一段時間內沒有和伺服器產生資料通訊的話,伺服器會自動把客戶機踢了,這是我不想見到的!

四、寫在後面
1、測試程式碼:http://download.csdn.net/detail/brunon/9773958
2、使用資料:http://download.csdn.net/detail/brunon/9767909


3、至此並沒有完全結束,這樣的設計還是有缺陷的,比如和手機相連的話,但手機ip會一直變,而且連線斷開有必須復位微控制器才能重新連線。我暫時的解決方案是在實驗室裡設定一臺伺服器長時間工作,最後希望技術大佬可以留言幫助我解決我遇到的問題,謝謝!祝大家學習愉快,不斷進步!