天天看點

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

技術标簽:433MHz,低功耗,遙控器,ESP32,MQTT,遠端控制。

産品功能:按下遙控器按鍵,通過433MHz頻段發送鍵值到ESP32主要,ESP32主要通過MQTT協定上報鍵值,并且在其他MQTT終端對鍵值進行顯示。可以通過其他MQTT終端下發指令給ESP32主要,控制主要上的LED進行有規則的亮滅操作。

産品架構圖:

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 要設計一款超低功耗的433遙控器,而且要做到低成本,低功耗,易于生産和使用,遙控器那一端就不能選用一些通過MCU來驅動的433模組或晶片了,找遍全網,發現可以選用一些單發射和單接收的433子產品。

433單發射子產品通過紐扣電池進行供電,在沒有按鍵按下的時候,幾乎是沒有電流消耗的,我選用的433發射子產品和接收子產品是蜂鳥無線提供的靈-T3A和靈-R1,這兩款模組直接淘寶搜尋就可以找到。

根據靈-T3A發射子產品的規格書,該子產品可以通過組合按鍵的方式,最多可接15個實體按鍵,我目前隻使用了9個實體按鍵的組合方式,子產品的外觀和設計原理圖,如下所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

遙控器是純硬體電路設計,通過一顆CR2032的紐扣電池進行供電,不用進行程式設計即可工作,遙控器的産品PCBA實物,如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

ESP32主要端,我直接使用了樂鑫官方的開發闆ESP32_DevKitC_V4,然後設計了一個比較簡單的底闆,底闆包含了3個實體按鍵,5個LED可以通過PWM調光,1個有源蜂鳴器,2路ADC輸入,以及靈-R1接收子產品。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 ESP32主要端的參考電路以及靈-R1的接收子產品,如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 靈-R1接收到遙控器發送過來的資料之後,可以通過序列槽9600bps波特率把按鍵值發送給ESP32主要,ESP32解析這串資料進而獲得遙控器的按鍵值,然後通過MQTT協定把按鍵值釋出出去,其他MQTT用戶端通過訂閱按鍵值主題,就可以擷取遙控器的鍵值了,如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 關于ESP32主要端的MQTT代碼,主要是基于樂鑫官方提供的SDK進行設計的,代碼部分包括了MQTT用戶端初始化,消息釋出/訂閱函數,MQTT消息分發函數,靈-R1接收子產品的序列槽接收,等等,完整的代碼請檢視工程示例。

ESP32的MQTT用戶端初始化和啟動代碼,首先配置一些必要的log列印資訊,然後完成WiFi的初始化之後,連接配接網際網路,然後根據MQTT的配置資訊去連接配接MQTT的代理伺服器,所有步驟都成功後,就可以正常建立一個MQTT的用戶端了,代碼如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 ESP32主要的MQTT用戶端在連接配接代理伺服器成功後,會收到一個MQTT_EVENT_CONNECTED事件,然後在這個事件裡面訂閱主題/topic/led_status,訂閱成功後,其他的MQTT用戶端就可以向這個主題釋出消息,來控制ESP32主要上的LED燈狀态,MQTT的事件處理函數,如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 當ESP32主要需要往MQTT代理伺服器釋出消息的時候,可以使用樂鑫SDK提供的消息釋出函數,直接往指定的主題釋出消息,比如按鍵值主題/topic/key_value,其他MQTT用戶端隻要訂閱了該主題,就可以收到該消息,代碼如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 當ESP32主要成功收到MQTT的訂閱消息後,會觸發一個MQTT_EVENT_DATA事件,可以在該事件中提取訂閱到的主題和資料,再進行處理,訂閱消息的處理分發函數,通過輪詢消息清單裡面的主題和資料,然後通過函數指針的方式調用對應的處理函數,具體實作如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 ESP32主要與靈-R1的序列槽接收部分,主要是通過建立一個FreeRTOS的序列槽資料接收任務,在這個任務裡面提取序列槽緩沖區的資料,再根據靈-R1的規格書協定要求,提取按鍵值并通過MQTT的消息釋出函數,釋出到MQTT代理伺服器,其他MQTT用戶端隻要訂閱了/topic/key_value這個主題,就可以擷取433遙控器的鍵值資料了,代碼實作如下圖所示。

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值

 完整的代碼請檢視工程示例,可以添加我的微信(wenjs0620)擷取開發資料(包括代碼工程和硬體原理圖PCB),歡迎讨論該案例的具體應用場景,遙控器和ESP32主要運作的示範視訊,如下所示。

https://www.bilibili.com/video/BV1CL4y1a7sx/

ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值
ESP32應用案例 -- 低功耗433遙控器通過MQTT上報鍵值