步驟1:傳感器模塊
如上圖所示,變送器包括開門傳感器,運動檢測器,布防遙控器以及用于對報警箱進行編程的無線鍵盤。事實證明,這些設備中沒有兩個使用相同的同步長度或位持續時間。除了消息長度以外,唯一的共同點是位的基本格式。每個位占用一個固定的時間段,零和一之間的差是高/低部分的占空比。
上面顯示的漂亮波形并不是我第一次收到的。由于433 MHz頻段中的流量很大,因此我必須確保在將示波器設置為執行一次觸發之前就激活傳感器。幸運的是,只要激活按鍵,傳感器就會激活數據消息的多個副本,并且遙控器和小鍵盤會繼續輸出消息。通過使用示波器,我能夠確定每個項目的同步長度和數據位持續時間。如前所述,同步時間不同,比特時間也不同,但是消息格式均具有低級同步,后跟24個數據位和一個停止位。這足以讓我能夠在軟件中構建通用解碼器,而不必對每個設備的所有不同細節進行硬編碼。
步驟2:硬件
我最初使用PIC微控制器和匯編語言構建了傳感器解碼器。我最近一直在玩Arduino變體,所以我想看看是否可以復制它。上面顯示了簡單的示意圖,并且還有我的原型的圖片。我所做的就是使用三根普通的跳線將Arduino Nano連接至RF接收器板。僅需電源和一條數據線即可。
如果您在“三合一時間和天氣顯示”上閱讀了我的Instructable,您會發現我使用的是433MHz的通用RXB6接收器。您也許可以讓真正便宜的接收器在該項目所需的短距離內工作,但是我仍然建議使用超級外差接收器。
步驟3:軟件
軟件將接收到的位轉換為可顯示的ASCII字符。它輸出同步長度的值以及1位和0位的長度。因為我已經知道同步長度和位格式,所以我可以專門為它們編寫軟件。取而代之的是,我決定看看是否可以編寫它來整理同步長度并自動找出數據位。萬一我想嘗試檢測其他格式,那應該可以更輕松地進行修改。重要的是要注意,該軟件不知道消息的第一位是1還是0。它假定它是1,但是,如果確定應該是零,它將求反。
通過使用INT0外部中斷輸入觸發中斷處理程序來確定同步脈沖和數據位的時間。 INT0可以在上升沿,下降沿,或在兩個邊沿或在穩定的低電平上觸發。該軟件在兩個邊沿都被中斷,并測量脈沖保持低電平的時間。這簡化了事情,因為消息開始/同步是一個低電平脈沖,并且可以根據它們的低電平時間來確定這些位。
中斷處理程序首先確定捕獲的計數是否足夠長以至于不能被捕獲。啟動/同步脈沖。我使用的各種設備的同步脈沖分別為4、9、10和14毫秒。允許的最小/最大同步值的define語句位于軟件的最前面,當前設置為3毫秒和16毫秒。傳感器之間的位時間也有所不同,因此解碼位的算法需要考慮到這一點。將第一位的位時間保存為與第一位有顯著差異的后續位的時間。無法直接比較后續位時間,因此使用了“軟鍵因子”定義(“變量”)。假設始終將第一個數據位記錄為邏輯1,則開始進行位解碼。將保存該值,然后將其用于測試后續位。如果后續數據位計數在已保存值的方差窗口內,則也將其記錄為邏輯1。如果它在已保存值的方差窗口之外,則將其記錄為邏輯0。如果邏輯0位時間比第一個位時間短,則設置一個標志來告訴軟件在顯示之前需要反轉字節。該算法失敗的唯一情況是消息中的位全為0。我們可以接受這種限制,因為這種消息是毫無意義的。
我感興趣的所有傳感器的消息長度均為24個數據位,但是軟件不限于該長度。有一個最多七個字節的緩沖區(可以添加更多字節),并定義了最小和最大消息長度(以字節為單位)。該軟件設置為收集位,將它們轉換為字節,暫時存儲它們,然后通過串行端口以ASCII格式輸出。觸發消息輸出的事件是收到新的啟動/同步脈沖。
步驟4:數據記錄
該軟件已設置為通過Arduino的串行(TX)輸出以ASCII字符輸出轉換后的數據。制作PIC版本時,我需要連接PC上的終端程序以顯示數據。 Arduino IDE的一個優點是它具有內置的串行監視器功能。我將串行端口速率設置為115.2k,然后將“串行監視器”窗口設置為相同的速率。這里的屏幕截圖顯示了一個典型的顯示,其中包含我擁有的各種傳感器的輸出。如您所見,數據有時并不完美,但您可以輕松確定每個傳感器的真實值。
步驟5:Sample Receiver Software
我提供了一個示例軟件清單,該清單顯示了如何使用收集的信息為您的應用程序接收一組特定的代碼。設置此示例以模擬我的Etekcity遠程插座之一。一個命令打開內置在Nano(D13)中的LED,另一個命令關閉LED。如果您的Arduino中沒有內置LED,請添加電阻和LED,如圖所示。在實際應用中,此功能將打開/關閉電源插座的電源(使用繼電器或三端雙向可控硅開關)。同步時間,位時間和預期的數據字節均已預先定義好,以便于修改。您可以使用其余的任何數據線來打開/關閉特定應用程序的功能,等等。只需添加適用的命令代碼定義并在“回路”中替換LED開/關邏輯即可滿足您的需求。
責任編輯:wv
-
射頻傳感器
+關注
關注
0文章
34瀏覽量
8284 -
Arduino
+關注
關注
187文章
6464瀏覽量
186669
發布評論請先 登錄
相關推薦
評論