物聯(lián)網(wǎng)智能機(jī)房系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
如果不滿足以上條件,中繼模塊應(yīng)放棄處理該條命令。命令字符串的形式為:(acb)。其中“abc”是命令信息,是某條英文指令的縮寫,例如打開燈1,英文為“open light 1”,縮寫為“oll”,如果想關(guān)閉燈1,則發(fā)送字符串“(cl1)”。如果縮寫后的命令不足3個(gè)字符,則用字符“0”補(bǔ)全。所有控制命令及含義如表2所示。本文引用地址:http://m.butianyuan.cn/article/159558.htm
3.1.2 模塊聞通信協(xié)議
由于使用的是透明傳輸模塊,一個(gè)模塊發(fā)送給另一個(gè)模塊的信息是可以被其他所有模塊接收到的,所以應(yīng)該在信息中加入地址機(jī)制,每個(gè)模塊都有自己的地址。在某個(gè)模塊接收到數(shù)據(jù)時(shí),應(yīng)首先判斷數(shù)據(jù)中接收地址是否與自己的地址一致,如果一致,則繼續(xù)處理該數(shù)據(jù),反之則放棄該數(shù)據(jù)。
考慮到模塊間通信的多種情況,將模塊間通信信息歸納為2種:命令和狀態(tài)信息,則對(duì)應(yīng)協(xié)議也為2種。
1)中繼模塊或遙控終端模塊發(fā)送命令
以字符串的形式發(fā)送命令,該命令字符串應(yīng)滿足以下兩個(gè)條件:
①字符串長(zhǎng)度為7;
②字符串以“(”開頭,以“)”結(jié)尾。
若其它模塊接收到的命令字符串不滿足以上兩個(gè)條件,則放棄處理該命令。命令字符串的形式為:(xyabc),其中“x”表示接收模塊的地址,“y”表示發(fā)送模塊的地址,“abc為要執(zhí)行的命令縮寫,同表2中“發(fā)送命令”項(xiàng)括號(hào)內(nèi)字符串。模塊地址的約定,見表3。表中通信中繼模塊和遙控終端模塊的地址是一樣的,這樣就可以同時(shí)處理接收到其他模塊發(fā)送的信息數(shù)據(jù)了。
2)中繼模塊和遙控終端模塊接收狀態(tài)信息
由于其它模塊向中繼模塊和遙控終端模塊發(fā)送狀態(tài)信息的長(zhǎng)度不一,所以以最長(zhǎng)的狀態(tài)信息為準(zhǔn),也就是以溫濕度及人體檢測(cè)模塊的狀態(tài)信息長(zhǎng)度為準(zhǔn),其它模塊狀態(tài)信息位的長(zhǎng)度不足的以字符“0”補(bǔ)全。該命令字符串應(yīng)滿足以下2個(gè)條件:
①字符串長(zhǎng)度為9;
②字符串以“(”開頭,以“)”結(jié)尾。
若通信中繼模塊和遙控終端模塊接收到的命令字符串不滿足以上兩個(gè)條件,則放棄處理該信息。信息字符串的形式為:(xyabcde),其中“x”表示接收模塊的地址,這里應(yīng)該為“0x11”,“Y”表示發(fā)送模塊的地址。“ahede”則表示發(fā)送模塊的狀態(tài)信息。
針對(duì)溫濕度及人體檢測(cè)模塊,“ah”以ASCII碼形式表示溫度,“cd”以ASCII碼形式表示濕度,“a”和“c”表示十位,“b”和“d”表示個(gè)位。“e”的前半字節(jié)表示人體檢測(cè)是否開啟,后半字節(jié)表示是否認(rèn)有人進(jìn)入檢測(cè)范圍。針對(duì)電燈控制模塊,“a”的前半字節(jié)表示燈1的開關(guān)狀態(tài),后半字節(jié)表示燈2的開關(guān)狀態(tài)。針對(duì)無線遙控小車,“a”的前半字節(jié)表示小車前燈的開關(guān)狀態(tài),后半字節(jié)表示攝像頭的開關(guān)狀態(tài)。
3.2 通信中繼模塊
通信中繼模塊主要處理兩件事:1)接收上位機(jī)的命令,并根據(jù)命令的內(nèi)容,按照協(xié)議發(fā)送給對(duì)應(yīng)模塊;2)接收每個(gè)模塊的信息,按照協(xié)議發(fā)送給上位機(jī)。
3.3 溫濕度及人體入侵檢測(cè)模塊
該模塊主要實(shí)現(xiàn)兩大功能:1)溫濕度和人體入侵檢測(cè),并將檢測(cè)信息傳送給中繼模塊和遙控終端,以實(shí)現(xiàn)實(shí)時(shí)顯示;2)處理中繼模塊轉(zhuǎn)發(fā)的控制命令。程序中通過兩個(gè)標(biāo)志位區(qū)別是上傳檢測(cè)信息還是處理控制命令。當(dāng)判斷是控制命令時(shí),再具體分析是何命令并執(zhí)行該命令,執(zhí)行完畢,將新的狀態(tài)信息返回給中繼模塊和遙控終端模塊,然后等待下一條命令。
3.4 電燈控制模塊
電燈控制模塊實(shí)現(xiàn)控制電燈1、2的開啟和關(guān)閉操作。程序中通過一個(gè)標(biāo)志位判斷接收信息是否為控制命令,若是則判斷具體命令并執(zhí)行,執(zhí)行完畢按照協(xié)議更新狀態(tài)信息,并按照協(xié)議把狀態(tài)信息返回給中繼模塊和遙控終端模塊,然后等待下一條命令。
3.5 無線遙控小車
無線遙控小車模塊實(shí)現(xiàn)兩大功能:小車運(yùn)動(dòng)控制;小車前燈和攝像頭的打開和關(guān)閉控制。程序中通過一個(gè)標(biāo)志位判斷接收信息是否為控制命令,若是則判斷具體命令,如果是運(yùn)動(dòng)命令,則執(zhí)行相應(yīng)的運(yùn)行命令,延時(shí)600 ms后,停止運(yùn)動(dòng),然后等待下一條命令;如果不是運(yùn)動(dòng)命令,則執(zhí)行該命令后,按照協(xié)議更新狀態(tài)信息,并按照協(xié)議把狀態(tài)信息返回給中繼模塊和遙控終端模塊,然后等待下一條命令。
3.6 遙控終端模塊
遙控終端模塊實(shí)現(xiàn)三大功能:在字符液晶屏上顯示系統(tǒng)狀態(tài)信息;按鍵檢測(cè)及發(fā)送命令;啟動(dòng)和關(guān)閉蜂鳴器。程序啟動(dòng)后一直判斷是否有按鍵按下,如果有按鍵按下,則檢測(cè)按鍵,并將按鍵對(duì)應(yīng)的命令按照協(xié)議傳輸給其它模塊,然后延時(shí)500 ms,等待下一次按鍵。若沒有按鍵,則檢測(cè)標(biāo)志位Flag是否等于1。若Flag等于1,表示接收到了其它模塊的狀態(tài)信息,然后按照信息的內(nèi)容更新液晶屏對(duì)應(yīng)的內(nèi)容,如果來自溫濕度及人體檢測(cè)模塊的信息中有檢測(cè)到人體進(jìn)入檢測(cè)區(qū)的信息,則打開蜂鳴器2 s。
4 系統(tǒng)測(cè)試
系統(tǒng)測(cè)試分3部分:1)以通信中繼模塊為主:從上位機(jī)下發(fā)送正常合法的命令,觀察現(xiàn)象;之后再發(fā)送不合法的命令,觀察現(xiàn)象。2)以遙控終端模塊為主:依次按鍵,觀察現(xiàn)象。3)以人體感應(yīng)模塊為主:測(cè)試人體檢測(cè)功能。測(cè)試時(shí)為方便起見,將通信中繼模塊用串口線直接連到PC上,通過串口調(diào)試助手操作并觀察。
4.1 通信中繼模塊測(cè)設(shè)
發(fā)送字符串“(g00)”:小車前進(jìn)了一小段距離。
發(fā)送字符串“(ol1)”:電燈1打開。
發(fā)送字符串“(cl2)”:電燈2關(guān)閉。
發(fā)送字符串“(mmm)j”:系統(tǒng)不做任何動(dòng)作。
4.2 遙控終端模塊測(cè)設(shè)
按“前進(jìn)”按鍵,小車前進(jìn)一小段距離。一直按住“左轉(zhuǎn)”按鍵,小車原地向左轉(zhuǎn)圈。
按“開燈1”按鍵,電燈1打開,同時(shí)液晶屏上的對(duì)應(yīng)信息也隨之改變。
4.3 人體檢測(cè)模塊測(cè)設(shè)
用手在該模塊上方劃過,終端模塊的蜂鳴器響起,同時(shí)液晶屏提示有人進(jìn)入該范圍。串口調(diào)試助手也收到“0x28 0Xf0 0x32 0x33 0x34 0x30 0x00 0xff 0x29”十六進(jìn)制的字符串,根據(jù)協(xié)議可得知第8個(gè)字節(jié)表示人體檢測(cè)的狀態(tài)信息,前半字節(jié)表示該功能是否開啟,后半字節(jié)表示是否有人進(jìn)入檢測(cè)范圍,所以,“0xff”表示檢測(cè)到了人體進(jìn)入檢測(cè)范圍。
5 結(jié)束語(yǔ)
該系統(tǒng)以最常用也最可靠的電燈開關(guān)控制、溫濕度檢測(cè)和人體入侵檢測(cè)為主要切入點(diǎn),同時(shí)加入了可擴(kuò)展的移動(dòng)平臺(tái)——無線遙控小車,考慮到系統(tǒng)的獨(dú)立性與完美性,又加入了遙控終端模塊,這樣使得整個(gè)系統(tǒng)可以在不依賴上位機(jī)的情況下執(zhí)行各種操作。
系統(tǒng)難點(diǎn)是各模塊間通信協(xié)議的設(shè)計(jì),經(jīng)過反復(fù)的研究和查找資料,最終參考了以太網(wǎng)數(shù)據(jù)幀的形式,將每個(gè)模塊指定一個(gè)地址,在傳輸數(shù)據(jù)的開頭將目標(biāo)模塊地址和發(fā)送模塊地址寫入,這樣接收的模塊就能根據(jù)該地址去判斷該如何處理該數(shù)據(jù)。經(jīng)過反復(fù)的調(diào)試與修改,本系統(tǒng)最終實(shí)現(xiàn)了預(yù)期的所有功能。
物聯(lián)網(wǎng)相關(guān)文章:物聯(lián)網(wǎng)是什么
評(píng)論