新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于微控制器的智能家居電能控制系統

        一種基于微控制器的智能家居電能控制系統

        作者: 時間:2016-12-02 來源:網絡 收藏

        3.1 遙控器節點程序設計

        遙控器是系統的控制核心,也是用戶與插座之間聯系的紐帶,因此程序中的并發模塊多,任務繁重。考慮到遙控器中采用的ARM處理器可提供對操作系統的全面支持,利用μC/OS-Ⅱ操作系統對該節點中的多個任務進行調度 ,可有效保證系統的實時性和穩定性,也有利于功能的擴展。在進行操作系統移植前,需要對任務進行劃分,每個功能對應一個系統任務,同時應避免劃分過細而導致頻繁調度的問題。遙控器節點的程序流程如圖9所示,其中包含了7個任務,任務之間通過信號量、消息隊列、消息郵箱等方式實現同步與通信。從用戶的角度來看,這些任務是并發執行的。

        圖9 遙控器節點程序流程圖

        按鍵掃描任務的優先級在所有用戶任務中最高。通過中斷方式讀取用戶輸人的按鍵值,數據存人消息郵箱KeyMbox中,若數字鍵1-6被按下,則通知射頻發送任務處理;若時鐘設置按鍵被按下,則進行時鐘調整或定時器設置。時鐘定時任務用于獲得DS1302的時鐘輸出值,在定時時間到達后,發送消息通知射頻發送任務處理,完成后自動掛起。射頻發送任務是根據其他任務中獲得的控制碼,以射頻方式對相應編號的插座發送通斷電控制信號,隨后等待插座端返回動作信息。若超時無反饋則重發1次,重發3次后任務掛起。危險報警任務需經過同頻載波檢測,地址匹配確認后,才開始接收射頻信號,進而將信息送人郵箱,解碼確認危險報警標識后,通過GSM模塊,以短消息的方式通知用戶。短信接收任務負責接收用戶短信,并將其存放在消息郵箱GSMMbox中。通過AT指令“AT+CMGR=I”每次只讀取序號為1的短信息,成功提取控制碼(包含插座ID號和開關動作碼)后,將該條信息刪除,并向射頻發送任務傳遞消息。環境監測任務負責對室內溫濕度信息循環采樣。雖然溫度傳感器的線性度較好,但外界環境對濕度傳感器的影響較大,需對其輸出電壓值作分段線性化處理。數據存放于消息隊列中,最終結果為3次測量值的算術平均值。液晶顯示任務優先級最低,待以上任務結束后,負責顯示各插座最終的狀態、時鐘信息以及室內溫濕度測量結果等。

        3.2 插座節點程序設計

        插座節點程序流程如圖10所示,其中最主要的工作是實現射頻信號的接收與發送。當沒有煙霧報警時,nRF905進入接收模式,同時偵聽信道;若監測到同頻載波且數據包地址有效,則啟動接收;當CRC校驗結果正確,硬件會自行去除數據包的前導碼、校驗碼及地址碼 ,并通知MCU數據準備就緒,進而MCU通過SPI串行總線讀取接收到的信息。

        圖1O 插座節點程序流程圖

        射頻信號發送本質上是接收的逆過程。當nRF905進入待機模式后,MCU將地址與數據信息傳送至射頻芯片的發送寄存器,同時啟動芯片進入射頻發送模式,隨后片內硬件自動完成對數據的打包、編碼、調制及發送任務。一幀數據發送結束后,射頻芯片轉入待機模式,等待下一次被激活。射頻電路的每一次接收或發送過程都伴隨著繼電器的接通或斷開動作。默認條件下,煙霧傳感器處于使能狀態,為了防止用戶在室內抽煙而導致系統誤判,煙霧檢測功能也可以設置為失效。

        4 測試與分析

        在圖11所示住宅中進行現場測試,6個插座和1個遙控器被放置于A到G這7個區域內。為了評估系統的抗干擾能力,在各區域的交界處均放置兩個干擾源,頻率為432 MHz和434 MHz。改變遙控器所在位置,對6個插座各遙控200次,并記錄插座端的回饋信號。若返回錯誤信息或不反饋,則作為一次丟包記錄。

        圖11 測試現場網絡節點分布圖

        結果發現,遙控器在C、E兩個區域平均誤碼率略高于其他區域;當遙控器在G區域時,平均誤碼率最低,效果最好。

        5 結語

        本系統實現了對家用插座的智能無線控制,在不改動原有家電內部結構的基礎上,用戶可以通過射頻、短信、定時等方式,控制插座的通斷電狀態。當室內發生火災或可燃氣體泄漏等情況時,插座能自動斷電。整個系統對控制對象沒有特殊要求,適應性較強,不失為一種廉價的智能家居解決方案。


        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 临漳县| 尚志市| 八宿县| 安福县| 新泰市| 华池县| 文昌市| 鲁山县| 黄大仙区| 浮梁县| 盐池县| 抚顺市| 大邑县| 蒲城县| 安达市| 永吉县| 五大连池市| 新宾| 巴楚县| 云南省| 达州市| 公主岭市| 蛟河市| 正蓝旗| 开阳县| 昭平县| 兴和县| 湖北省| 东山县| 抚宁县| 湘潭市| 桑日县| 肇东市| 泸溪县| 遵化市| 临泉县| 建水县| 白河县| 乌拉特后旗| 衡阳县| 田东县|