關於開源項目「基於ZigBee和STM32的智能家居控制系統」的使用說明


閱讀本文大概需要 6.6 分鍾

大家好,我是 devstone,很感謝大家對這個項目的喜愛和關心,自從該項目公開以來斷斷續續有很多人加我好友詢問一些基礎問題,我也回復過很多,當然了以后也可能會有人問到,為了不再重復回復,我今天專門寫一篇文章,詳細介紹下如何使用

本來早就該寫了,一是因為自己平時忙,二是因為太懶惰,一直拖到現在

01 項目介紹

該項目的原型是自己當初的本科畢業設計,從零開始做的,其中包括硬件原理圖、PCB,到后面元器件的焊接、下位機程序編寫,上位機程序編寫,ZigBee 無線通訊程序編寫,各個模塊聯調測試修改問題

項目其實很簡單,下位機采集各種傳感器數據,這些數據采集后會進行匯總打包,然后通過串口發送給 ZigBee 終端節點,終端節點會發送給「協調器」,協調器收到后通過串口發送給上位機,上位機收到數據進行校驗、解包然后根據不同類型數據分發到各個頁面進行顯示

上位機平台采用的是 ARM 開發板,說白了就是一個性能好點的帶屏幕的單片機,支持觸摸交互,上位機程序采用 C/C++/Qt 編寫

下面就是整個小項目交互關系圖

圖片

監控是雙向的,數據從傳感器發送到上位機,同時上位機也可以通過控制按鈕下發對應的指令進行控制,比如控制 LED 燈的亮滅,控制傳感器閾值,比如室內舒適溫度為 22°,當傳感器采集到的問題超過這個值時,觸發警報,進行提示

下面是上位機程序部分界面部分截圖

圖片

截圖日期還是當時演示時截取的,現在想想好多年了,想起當時整個制作過程還是懷念的

圖片

圖片

圖片

圖片

看到這里可能很多人比較迷惑了,為啥會用到這么多 ZigBee節點和 STM32 啊,完全使用 ZigBee 就足夠了,確實是這樣的,因為采集傳感器數據工作量不大使用 CC2530 就夠用了,當時自己這樣做是為了把學到的知識都用起來

詳細說明下面會分為好幾個部分進行介紹

02 上位機介紹

為了照顧到新人,我還是簡單說下什么是上位機吧

上位機:就是可以發出控制控制命令的計算機。用大白話說就是運行在某個平台上(Windows,Linux,macOS等)的一個軟件,你通過這個軟件可以進行一些列的操作

當初的設計,上位機是運行在 ARM 平台上的,也就是一塊板子上,你可以理解為一個平板電腦

圖片

圖片

圖片

圖片

那么有人就要問了,可以運行在其它平台嗎?當然可以,你可以編譯完直接運行在 windows、Linux 或者 macOS 上。目前代碼中沒有做任何限制

現在都明白了吧,我相信看了我上面的幾幅賣相不好的圖片大家應該能大概知道上位機這回事吧

如果你下載我的上位機代碼后編譯發現出現錯誤,歡迎留言,我再補充哈。正常情況下現在應該能正常編譯和運行,不會有錯誤的

03 下位機介紹

明白了上位機,那么理解「下位機」應該容易很多。

下位機就是控制設備狀態的一種計算機,說白話可以理解為你寫程序控制單片機進行一些列的操作,比如點亮 LED 等,這些一些列的程序代碼可以理解為下位機程序

下位機采用 STM32F103 VBT66 單片機,這是一個ARM® Cortex®-M3版本,ROM 僅有 128KB大小,控制程序全部跑在這塊單片機上

記得當時為了裝B,還移植了一款微型操作系統UCOSII (Micro-Controller Operating Systems),這是一款實時操作系統,完全采用 C 語言編寫,基於搶占式優先級策略的一種多任務系統,也就意味着我們可以同時運行多個任務

移植完這款操作系統后,剩下程序編寫就變的非常簡單了,多個傳感器采集數據工作可以當做不同的任務去做,具體如何輪訓你用你操心了

STM32 在這里起到數據采集+打包中轉的作用,某些傳感器數據采集完通過打包流程封裝成一包數據發送給串口,串口的另一端連接的是 ZigBee 終端,終端接收到數據后會通過 ZigBee 無線通信協議發送給 ZigBee 協調器

ZigBee 協調器另一端連接的是「上位機」,這樣上位機就可以收到數據了

04 ZigBee 無線通訊介紹

ZigBee 是一種短距離無線通信協議,底層采用的是IEEE 802.15.4標准。主要特點有:低功耗、低成本、低速率、支持大量節點收發數據

通信的硬件采用的是 CC2530芯片,無線通訊大概可以分為三種:節點、路由器、協調器

其實在這個項目里面,我做了偷懶,並沒有嚴格按照上述模式設計,在我的這個項目里面,ZigBee 只是起到到數據傳輸的作用,即采集到的數據由「終端節點」發送給「協調器」,在實際應用中不會這么大材小用的,一般協調器不光負責數據傳輸,也可以承擔一部分的數據采集管理工作

ZigBee 相關代碼介紹

在我開源分享的代碼當中,zigbee無線傳輸部分是所有 ZigBee 通訊的代碼,包含了終端節點和協調器,注意在下載程序時進行區分就行了

至於如何下載如何調試,還請自行百度

05 硬件 PCB 電路介紹

相信大家都看過了板子的外觀了,很簡陋,也沒有任何美感,純粹是為了完成功能的設計

圖片

圖片

學習過硬件設計的朋友這里不用看了,因為太基礎了。如果你對這方面感興趣,那么需要你系統的學習下基礎的知識,學起來也挺快的,就跟搭積木一樣

一塊電路板是 怎么來的呢?

首先需要你自己使用軟件繪制原理圖,需要知道了解一些基礎的電路知識,不過現在現成的東西也很多,網上看看也能抄過來用

其次,根據原理圖生成 PCB,這一步很重要,生成后就需要自己去布線或者叫連線了,這一步比較繁瑣和重要,很多初學者會偷懶選擇自動布線,牆裂建議不要這樣做,還是老老實實選擇手動布線吧

什么是布線呢?大白話說就是把各個元器件的管腳使用特定的線連接起來,你原理圖中繪制的某個元器件怎么和外部連接的,這里就需要重新用線進行連接,連接的原則是保持每條線間隔均勻、不重合、不繞路等

最后,畫好了 PCB 后就可以導出這個 PCB 打包然后發送給廠商進行「打樣」,現在越來越便宜了,直接在在某寶上搜評價好點的商家就可以了,還需要注意的是和賣家溝通清楚,自己要打樣的板子要求,比如過孔覆油是否,油墨顏色,過孔大小等

一般一個禮拜左右就可以打樣完成,剩下的時間就是自己買元器件進行焊接,這一步也很累很辛苦,注意別買錯了,要和你當時畫原理圖時候的大小一致,比如 0603、0204 封裝……

最最后就是測試電路板是否有問題,其實在開始焊接的時候,可以先焊接部分電路進行測試,沒有問題再焊接完剩下的

總結

上面就是關於這個項目的幾大部分內容說明,詳細知識大家看我之前的博客和開源的代碼資料就行了。

整體思路就是單片機采集傳感器數據,然后通過無線通信發送給上位機進行顯示,同時上位機還可以進行控制下位機中的硬件設施,比如點亮 LED燈,當然了這里用 LED 燈模擬顯示環境中真正的燈光,如果要用在實際環境中,還需要對應的驅動電路才行

如果看到這里還有疑問,那就再繼續交流吧,我完了把大家的疑惑都整理下發表出來,方便更多的初學者學習理解

如果這個小項目能夠幫助到你,麻煩點個贊、在看,也算是對我的一種支持吧

關於如何學習

最后再給初學者一些個人建議吧,關於如何學習

大家有沒有發現,初入社會后學習能力是多么的重要。可能你以前上學那會沒有留意,平時上課學習都是老師帶領你們學習,自己只要跟着老師的步伐即可

但是,等畢業工作后發現沒有人帶、教自己,全部都得自己去學習、研究、鑽研,很多東西學不會、理解不了。

作為一個技術人,其實是很殘酷的,技術變化太快,如果你停止學習可能短期內沒有啥變化,但是隨着時間越長越能感覺到自己和別人的差距,這種差距不僅體現在能力上,最直接體現在工資待遇上,你說你學不學?

  1. 學會使用搜索引擎

我們平時遇到的各種問題,99% 以上網絡上面都有,所以如何正確搜索很關鍵。牆裂建議大家有條件一定要使用 Google 搜索,不要使用百度搜索

  1. 多分享總結

我們要相信一句話「利他就是利己」,多分享多付出,前期我們給別人創造價值,可能自己得不到回報或者很少,但是從長遠來看,這些付出會成倍的回報給自己

  1. 學會提問

提問是一門藝術,很多人其實都沒有注意。很多大佬都很忙,我們請教問題盡可能的一步到位描述清楚自己的問題,比如可以按照下面的模板來進行

我想做 xx 功能,遇到了 xxx 問題,我是這樣想的……,自己嘗試了 xxx 步驟后還是沒有解決,您抽時間能幫忙看下嗎

閑聊

當時機緣巧合下分享的這個小項目,沒有想到受到很多朋友的喜歡,能夠幫助到大家我很高興。其實很多人會問一些很基礎的問題,作為過來人我知道剛入門確實會有很多疑問,很多問號,只要我有時間,都一一進行了回復

下面順手截取了部分朋友的反饋

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

最后,如果大家有問題,可以留言,有任何問題可以隨時向我提問,但是,但是,但是,盡量一次性把問題描述清楚,不要問在不在?我可以問你問題嗎?你忙嗎?等等之類的問題,有問題直接問,對就是這么直接

自己平時工作也挺忙的,消息可能不會及時回復,但是我忙完一定第一時間回復你


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM