应用ESP8266控制433M无线遥控电动幕布
? ? ? 家里的得力牌電動投影幕布是的433M單一頻率無線遙控的,為把它加入HomeAssistant與投影儀、音響等實現聯動控制,計劃用萬能的esp8266來模擬遙控器。
一、設計思路
? ? ? 用ESPHome的Remote Receiver組件獲取遙控器升、降、停分別對應的編碼(由于我的遙控器不是標準協議,只能通過邏輯分析儀自己解碼),然后用Remote Receiver組件定義升、降、停按鍵對應的編碼(詳見:ESPHome — ESPHome),然后集成到HomeAssistant即可。
二、器件準備
1. ?ESP8266模塊(ESP-01S)
???
2. 433M超外差發射模塊、接收模塊各1只
?
?
?????????????????接收模塊? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????發射模塊
最好選擇如圖的超外差模塊,抗干擾能力強。
?3、esp8266燒寫器
??
?也可以用USB轉TTL-CH340模塊進行燒寫,這里方便起見直接用了esp8266燒寫器。
4. 邏輯分析儀
?
?二、器件連接
| CH340 | ESP8266 燒寫模式 | ESP8266 工作模式 | 433M接收模塊 | 433M發射模塊 | 邏輯分析儀 |
| 3.3V | 3.3V | 3.3V | 5V | 5V | |
| RX | TX(GPIO1) | ||||
| TX | RX(GPIO3) | GPIO3 | DATA | ||
| GND | GPIO0 | ||||
| GND | GND | GND | GND | GND | GND |
| GPIO2 | DATA | CH0 |
在Home Assistant安裝ESPHome、向ESPHome添加Esp設備、給ESP設備刷新固件等過程參見《以DHT11、ESP8266為例介紹ESPHome在Home Assistant中的應用》一文,本文就不再贅述。
三、獲取遙控器升降停操作發射的編碼
首先給esp8266添加以下代碼段(其它部分代碼參見《以DHT11、ESP8266為例介紹ESPHome在Home Assistant中的應用》一文),并進行燒寫。
remote_receiver:pin: 2dump: all然后按上面的器件連接表把ESP8266(工作模式)、433M接收模塊、邏輯分析儀連接起來,下載并安裝邏輯分析儀軟件(Logic analyzer software from Saleae),目前版本是Logic 2.4.9,進入軟件會自動匹配連接邏輯分析儀。
設置好采樣速度(一般2M就夠用),點擊右上角綠色按鈕即可開始采樣(為確保準確建議每次只對1個按鈕進行采樣),按下遙控器按鈕,再停止采樣,這樣通道0上就會出現采樣波形,由于有電磁干擾,即使未按下遙控按鈕也會有波形。用鼠標滾輪可以放大和縮小波形,同時可以左右移動波形,找到遙控器按下的一段波形進行分析(相對于干擾波形,遙控器波形比較密,而且有規律)。
? ? ? 定義為“0”
? ? 定義為“1”
?經分析發現,一個窄的高/低電平為333us,一個寬的高/低電平為685us,寬和窄基本呈倍數關系。控制碼一般以一個較長的高電平開始,已一個較長的低電平結束,我們把一個窄的高電平接一個寬的低電平定義為0,把一個寬的高電平接一個窄的低電平定義為1,就可以將遙控器波形轉化為二進制代碼。
?經分析,我的遙控器編碼如下:
?我的遙控器除停止碼是發送1次“0110010001000101011001101001000101010101”外,上升是先發3個控制碼“0110010001000101011001101001000100010001”,再發5個控制碼校驗碼“0110010001000101011001101001000100011110”,注意他們的后4位,校驗碼的“1110”是控制碼“0001”的反碼,這是為了校驗接收的發射碼是否有誤,下降也是類似的。實際模擬遙控的時候不發校驗碼,多發幾次控制碼也可以控制的。
四、用ESP8266發射編碼模擬遙控器操作屏幕升降停
給esp8266添加以下代碼段,并進行燒寫。
remote_transmitter:pin: 2carrier_duty_percent: 100%switch:- platform: templatename: Screen upturn_on_action:- remote_transmitter.transmit_rc_switch_raw:code: '0110010001000101011001101001000100010001' # 0x64 4566 9111protocol:pulse_length: 350sync: [14, 4]zero: [1, 2]one: [2, 1]repeat:times: 5wait_time: 7500us- platform: templatename: Screen Stopturn_on_action:- remote_transmitter.transmit_rc_switch_raw:code: '0110010001000101011001101001000101010101' # 0x64 4566 9155protocol:pulse_length: 350sync: [14, 4]zero: [1, 2]one: [2, 1]repeat:times: 5wait_time: 7500us- platform: templatename: Screen downturn_on_action:- remote_transmitter.transmit_rc_switch_raw:code: '0110010001000101011001101001000100110011' # 0x64 4566 9133protocol:pulse_length: 350sync: [14, 4]zero: [1, 2]one: [2, 1]repeat:times: 5wait_time: 7500us然后按上面的器件連接表把ESP8266(工作模式)、433M發射模塊連接起來。
?
五、將ESP設備集成到Home Assistant(略)
參見《以DHT11、ESP8266為例介紹ESPHome在Home Assistant中的應用》一文
五、參考文檔
用Esphome發射和接收任意315/433MHz射頻 - 『HomeAssistant』綜合討論區 - 『瀚思彼岸』? 智能家居技術論壇 - Powered by Discuz!
總結
以上是生活随笔為你收集整理的应用ESP8266控制433M无线遥控电动幕布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: h5 <audio>音乐自动播放,谷歌禁
- 下一篇: win下使用TensorFlow obj