女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用WB2系列模組做一個433遙控網關

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2025-04-09 13:57 ? 次閱讀

以下作品由安信可社區用戶

業余菜狗制作

前言

自從接觸智能家居之后,筆者就變得很依賴智能家居(絕對不是懶!)

比如臥室燈,就在進門的地方,進門開燈很方便,但是晚上睡覺關燈就很不方便。

之前是買了一款Wi-Fi燈,是用手機APP操作,剛開始用的時候感覺很方便,后面用久了,覺得每次都要開APP操作也很煩,所以就在網上查了一下,有那種無線開關,按一下就能開關燈,把按鈕貼在床頭,需要開關燈就點一下,比點APP更方便!

但是!!!網上賣的無線按鈕開關可不便宜,眾所周知筆者的時薪是14.4所以這種方案我是拒絕的。那?就沒有便宜的方案了嗎???

還真讓我找到了——433射頻開關,淘寶或多多上(用券之后)才3塊多一個,但是筆者用的Home Assistant系統是不能直接接入433開關的,所以就用安信可Ai-WB2模組DIY了一個433網關,將433遙控信號轉發給Home Assistant.

成品如下圖,已經測試幾個月了,還是比較穩的

wKgZPGf2DDqANEJpAAG0Z4d4cb0734.jpg

1、DIY思路

數據處理流程:433按鈕-->433接收模塊-->WB2-->HA-->燈

433按鈕:當按下433按鈕時發送鍵值

433接收模塊:接收到433鍵值后用uart發送給WB2

WB2:uart收到鍵值之后,將鍵值用mqtt發送給HA

HA:收到WB2的mqtt信息之后,根據用戶設定控制燈(或其它設備)

燈:HA讓我亮,那我就亮,讓我滅,我就滅

2、準備工作

●一個433按鈕開關

●Ai-WB2-12F模組及開發環境

●一個433接收模塊(筆者用的是蜂鳥無線的R1A模塊)

●一個USB公頭,一片PCB,一堆小零件

●一個3D打印的外殼

3、編程開發

因為433按鈕是現成的,所以不需要開發,只有WB2和HA部分需要編程,HA部分還好,主要是WB2需要大量的代碼。

WB2射頻網關代碼思路

整體思路是這樣的,wb2啟動后開始鏈接WiFi和mqtt服務器,連上之后,發送設備信息給HA,讓HA發現wb2并生成設備實體;

然后在433接收到遙控鍵值之后,用串口(uart)通信給wb2,wb2收到串口數據后,分析數據,并將數據通過mqtt發送給HA,至此完成一次傳送。如果不想看下面的代碼,那只需要改這兩個地方就能用了。

main.c里面的WiFi賬號密碼

#define wifi_ssid "WiFi名稱"
#define wifi_pass "WiFi密碼"

yycg_mqtt.h里面的mqtt服務器信息

//設定MQTT服務器
#define mqtt_host "192.168.31.158"
#define mqtt_port 1883
#define mqtt_username "Ai-Thinker-WB2-433gateway"
#define mqtt_password ""

main函數

啟動之后,先初始化uart,并連接wifi及mqtt,這里使用了多任務,wifi和mqtt是一個任務,uart也用了一個任務,軟時鐘任務,這幾個任務是并行的。

void main(){
//初始化LED
bl_gpio_enable_output(LED_IO, 1, 0);
bl_gpio_output_set(LED_IO, 0);
//初始化配對按鈕
bl_gpio_enable_input(pair_IO, 1, 0);
//初始化uart,初始化之后,自帶的log會失效,算是一個bug
uart_init();
uart0_print("開始運行用戶代碼n");
vTaskDelay(1000);
//讀取保存的WiFi賬號信息
if(get_flash_wifi_data() == 1){
uart0_print("已讀取WiFi數據n");
}else{
uart0_print("未找到WiFi數據,正在寫入預設數據n");
set_flash_wifi_data(wifi_ssid, wifi_pass);
get_flash_wifi_data();
}
vTaskDelay(1000);
//啟動WiFi和mqtt任務
xTaskCreate(Task_mqtt, "Task_mqtt", 20480, NULL, 15, NULL);
//啟動軟時鐘任務
xTaskCreate(Task_time, "Task_time", 2048, NULL, 5, NULL);
//啟動uart任務
xTaskCreate(Task_Uart, "Task_Uart", 2048, NULL, 10, NULL);
}

uart任務

void Task_Uart(void *param){
//初始化uart
uint8_t data[32];
int ret;
hosal_uart_dev_t uart_dev_echo = {
.config = {
.uart_id = 0,
.tx_pin = 6, // TXD GPIO
.rx_pin = 4, // RXD GPIO
.cts_pin = 255,
.rts_pin = 255,
.baud_rate = 9600,
.data_width = HOSAL_DATA_WIDTH_8BIT,
.parity = HOSAL_NO_PARITY,
.stop_bits = HOSAL_STOP_BITS_1,
.mode = HOSAL_UART_MODE_POLL,
},
};
bl_gpio_output_set(LED_IO, 1);
hosal_uart_init(&uart_dev_echo);
ret = hosal_uart_receive(&uart_dev_echo, data, sizeof(data));
//進入死循環讀取串口數據
while(1) {
uint8_t uart_433_data[16];
uint8_t mqtt_433_data[6];
uint8_t mqtt_433_data_old[6];
uint8_t mqtt_st;
ret = hosal_uart_receive(&uart_dev_echo, data, sizeof(data));
if (ret > 0){
size_t x = 0;
for (size_t i = 0; i < ret; i++){
uart_433_data[x] = data[i];
x++;
}
vTaskDelay(40);//可能是因為波特率是9600速度比較慢,一次接收會不完整,所以等待一下接收兩次
ret = hosal_uart_receive(&uart_dev_echo, data, sizeof(data));
for (size_t i = 0; i < ret; i++){
uart_433_data[x] = data[i];
x++;
}
uart0_send(uart_433_data, x);
mqtt_st = 0;
//mqtt_433_data[6] = '';
//將接收到的uart賦值給mqtt信息變量,并判斷新舊數據是否一樣(433數據可能重復)
for(size_t i = 0; i < 6; i++){
mqtt_433_data[i] = uart_433_data[i+3];
if(mqtt_433_data[i] != mqtt_433_data_old[i]){
mqtt_st = 1;
}
}
//打印出新舊數據
uart0_send(mqtt_433_data_old, 6);
uart0_send((uint8_t *)"n", 1);
uart0_send(mqtt_433_data, 6);
//判斷
while(1){//二級循環
if(!(mqtt_st == 1 || time_nv>100))break;//判斷是否重復,當數據重復且間隔大于1s(軟時鐘作用)仍然發送
if(!(pair_event == 0))break;//判斷433模塊是不是處于配對狀態
if(!(mqtt_event == 1))break;//判斷mqtt服務器是否連接正常
//發送mqtt數據,并將數據保存到變量方便下次對比
ha_text_send(R1A_ID1, (char*)mqtt_433_data);
for(size_t i = 0; i < 6; i++){
mqtt_433_data_old[i] = mqtt_433_data[i];
}
time_nv = 0;
break;
}
}
vTaskDelay(5);
}
}

軟時鐘任務

//軟時鐘函數,time_nv變量10ms自加一次
void Task_time(void *param){
while(1){
time_nv++;
vTaskDelay(10);
}
}

MQTT訂閱回調函數

void mqtt_topic_data(char * topic, char * data){
char topic2[128];
//收到HA的上線信息,發送HA自動發現信息
if(strcmp(topic, "homeassistant/status")==0){
ha_config_code();
}
//處理"配對"
connect_topic_str(topic2, "button", R1A_ID2, "cmd_t");
if (strcmp(topic, topic2)==0){
pair_event = 1;
//模擬連續按兩下進入配對模式
bl_gpio_enable_output(pair_IO, 1, 0);
bl_gpio_output_set(pair_IO, 0);
vTaskDelay(50);
bl_gpio_output_set(pair_IO, 1);
vTaskDelay(200);
bl_gpio_output_set(pair_IO, 0);
vTaskDelay(50);
bl_gpio_output_set(pair_IO, 1);
bl_gpio_enable_input(pair_IO, 1, 0);
char X = 1;
time_nv = 0;
while(X){
if(!(bl_gpio_input_get_value(pair_IO))){
time_nv = 0;
}
if (time_nv>200){
X = 0;
}
vTaskDelay(200);
}
uint8_t data[16];
uart1_get(data);
pair_event = 0;
}
//處理"重置"
connect_topic_str(topic2, "button", R1A_ID3, "cmd_t");
if (strcmp(topic, topic2)==0){
pair_event = 1;
//模擬長按10S清除配對的遙控
bl_gpio_enable_output(pair_IO, 1, 0);
bl_gpio_output_set(pair_IO, 0);
vTaskDelay(10000);
bl_gpio_output_set(pair_IO, 1);
bl_gpio_enable_input(pair_IO, 1, 0);
char X = 1;
time_nv = 0;
while(X){
if(!(bl_gpio_input_get_value(pair_IO))){
time_nv = 0;
}
if (time_nv>200){
X = 0;
}
vTaskDelay(200);
}
uint8_t data[16];
uart1_get(data);
pair_event = 0;
}
vTaskDelay(1000);
}

HA初始化函數

void ha_config_code(){
//注冊"433鍵值","433配對"按鈕,"433重置"按鈕
ha_text_config(R1A_ID1, "433鍵值");
ha_button_config(R1A_ID2, "433配對");
ha_button_config(R1A_ID3, "433重置");
vTaskDelay(1000);
//發送設備上線信息
mqtt_pub(mqtt_lwt_topic, "online");
}

HA設置部分

在你燒錄好代碼之后,HA中會自動出現一個mqtt設備。

wKgZO2f2DDuAT0JBAABXdG-WUm8444.jpg

點擊左邊那個MQTT INFO復制433鍵值下面的topic內容,每個設備中間部分會不一樣

homeassistant/text/7CB94CD1F767/433_R1A_001/config

wKgZPGf2DDuAKEsjAABon_xY-eA582.jpg

去自動化設置里面,新建一個自動化,設置為當收到某個 MQTT 消息時,主題填入剛才的內容

wKgZO2f2DDuAN7OuAABzVNe94Xc414.jpg

或者也可以直接復制這段代碼貼上(記得改主題)

topic: homeassistant/text/7CB94CD1F767/433_R1A_001/state
trigger: mqtt

然后在下面的"就執行"里面判斷鍵值,先設置一個短延遲,防止數據還沒來得及更新。

wKgZPGf2DDyAekiDAAC-rzqLhjU294.jpg

這個也可以復制代碼

choose:
- conditions:
- condition: template
value_template: "{{ "8FE004" == states("text.wb2wang_guan_433_433jian_zhi") }}"
alias: 鍵值判斷
sequence:
- action: light.toggle
target:
device_id: a38cb2e40595fabed52aab4309efb240
data: {}
alias: 菜狗86遙控-1-B鍵-8FE004-開關臥室燈

然后在下面的"就執行"里面判斷鍵值,先設置一個短延遲,防止數據還沒來得及更新

wKgZPGf2DDyAekiDAAC-rzqLhjU294.jpg

這個也可以復制代碼不過

現在按下433按鈕,就能開關燈了

4、硬件、PCB和外殼

硬件接線和PCB

R1A的TX連接WB2的IO4,重置按鍵"K/O"連接WB2的IO5.

PCB基本上去就是一個傻瓜板很簡陋,,資料放附件,有需要的可以改一下自己用。

wKgZO2f2DDyAZJr-AAC8ekmx1zA848.jpg

wKgZPGf2DD2AaXUFAADLlOLJby4557.jpg

外殼

外殼是隨便畫的,我不太會3D建模,能把PCB裝進去就行了

wKgZO2f2DD6AfHkaAAAqcot69-w547.jpg

wKgZPGf2DD6AcoXZAAAq_UtaRBk535.jpg

5、附件

https://bbs.ai-thinker.com/forum.php?mod=attachment&aid=31734(內含以下附件)

附件:mqtt_gateway_433代碼.zip

附件:PCB文件_WB2-433_2025-03-19.zip

附件:嘉立創EDA標準版_PCB工程_20250319.zip

附件:外殼.zip

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 遙控
    +關注

    關注

    11

    文章

    289

    瀏覽量

    57845
  • 網關
    +關注

    關注

    9

    文章

    5313

    瀏覽量

    52486
  • 智能家居
    +關注

    關注

    1933

    文章

    9752

    瀏覽量

    189643
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    廣和通發布5G模組FG390系列

    近日,全球領先的無線通信模組和AI解決方案提供商廣和通率先發布基于MediaTek T930平臺的5G模組FG390系列。FG390系列模組
    的頭像 發表于 05-21 15:18 ?346次閱讀

    STM32WB5MMG模塊能否支持Thread轉WIFI?

    請幫忙推薦款可以WIFI轉Sub-G/Zibber協議的芯片,希望做了無線認證。非常感謝。 1.STM32WB5MMG模塊能否支持Thread轉WIFI; 2.Nucleo-WBA55RG(主控
    發表于 04-24 06:12

    PN1-S25系列ProfiNet網關模組產品簡介

    PN1-S25系列ProfiNet網關模組款專為工業通信環境設計的先進設備,旨在實現ProfiNet與Modbus RTU協議之間的無縫轉換,從而優化工業自動化系統中的數據傳輸效率
    的頭像 發表于 04-14 18:21 ?236次閱讀

    安信可Ai-WB2-01S做一個可用網頁控制的簡易燈

    以下作品由安信可社區用戶 KevinLi制作 01簡介 使用2不同功率的Led通過GPIO的PWM通道+三極管控制亮度 ●供電:5V或3V ●控制:網頁http單向控制,這是
    的頭像 發表于 03-26 13:59 ?263次閱讀
    <b class='flag-5'>用</b>安信可Ai-<b class='flag-5'>WB2</b>-01S<b class='flag-5'>做一個</b>可用網頁控制的簡易燈

    低價不貴!安信可WiFi+BLE模組Ai-WB2系列

    安信可Ai-WB2系列模組集成Wi-Fi&BLE于體,搭載BL602芯片作為核心處理器,支持Wi-Fi 802.11b/g/n協議和BLE 5.0協議。 Ai-
    的頭像 發表于 03-06 08:49 ?386次閱讀
    低價不貴!安信可WiFi+BLE<b class='flag-5'>模組</b>Ai-<b class='flag-5'>WB2</b><b class='flag-5'>系列</b>

    我的DIY遙控器——小擺件遠程控

    擺件的開關。 ?? DIY遙控器小擺件 ??????想要遙控擺件的電源開關,就需要有RF遙控器發射信號,加
    的頭像 發表于 02-17 11:02 ?538次閱讀

    全智芯433Mhz無線遙控級聯RGB炫彩燈方案

    全智芯433無線遙控級聯RGB炫彩燈方案是基于ASP32F003芯片所開發的具有RGB彩燈變幻的智能燈具方案。該項目采用硬件“SPI+DMA”來實現信號的傳輸,相較于采用軟件模擬的SRZ歸零碼來說
    的頭像 發表于 01-14 09:48 ?496次閱讀

    小安派 DSL做一個天氣站

    2.4 寸 320 *240 分辨率屏幕,外接 sht30 溫濕度傳感器,做一個天氣站。 01、主要功能 時間顯示(已完成) 天氣顯示(已完成) 溫濕度顯示(已完成) wifi 密碼保
    的頭像 發表于 01-06 16:44 ?432次閱讀
    <b class='flag-5'>用</b>小安派 DSL<b class='flag-5'>做一個</b>天氣站

    文詳解:區分315MHz和433MHz遙控模塊

    315MHz或433MHz頻段屬于國家規定的開放頻段,允許小功率、短距離的無線電設備自由使用,無需特殊審批,因此其已被廣泛應用在無線遙控模塊之中,那么315MHz和433MHz遙控模塊
    的頭像 發表于 01-06 15:22 ?2554次閱讀
    <b class='flag-5'>一</b>文詳解:區分315MHz和<b class='flag-5'>433</b>MHz<b class='flag-5'>遙控</b>模塊

    Ai-WB2+Modbus 485 RTU 遠程控制

    3.2示例參考程序代碼 使用wb2進行 modbus 485 通訊演示_嗶哩嗶哩_bilibiliwww.bilibili.com/video/BV1Hapxe4EsV/?vd_source=54c5db21948db2378659b7e8e42bafbf 、什么是M
    的頭像 發表于 12-27 10:52 ?625次閱讀
    Ai-<b class='flag-5'>WB2</b>+Modbus 485 RTU 遠程控制

    安信可Ai-WB2系列的優勢是?秒讀懂!

    ) 集成度 (內置功能、接口類型等) 功耗與續航 、 尺寸與外觀 、 成本 等多個因素。 安信可Ai-WB2系列模組集成Wi-Fi&藍牙于體,搭載BL602芯片作為核心處理器,支持W
    的頭像 發表于 12-13 18:16 ?707次閱讀

    Ai-WB2開發板做智能家居全彩LED小夜燈

    業余菜狗制作 大家是不是經常看到各種彩色的小燈 bingbing的五顏六色很吸引人 今天WB2開發板做了能加入HA的全彩LED小夜燈 來看看主要的教程 連接WiFi 先對Ai-
    的頭像 發表于 11-13 14:03 ?766次閱讀
    <b class='flag-5'>用</b>Ai-<b class='flag-5'>WB2</b>開發板做智能家居全彩LED小夜燈

    M61模組做一個紅外空調遙控

    管的亮滅來承載編碼信息,對應的空調設備上有接收管,它接收到發射管的光信號來解析協議獲取數據,然后對空調進行對應指令的控制 例如:將溫度設置為 16° 冷風 風速 1 級 既然要控制燈的亮滅,那么就只需要
    的頭像 發表于 08-23 08:58 ?1605次閱讀
    <b class='flag-5'>用</b> M61<b class='flag-5'>模組</b><b class='flag-5'>做一個</b>紅外空調<b class='flag-5'>遙控</b>器

    433M 通訊技術無線遙控器芯片CMT2300A

    遙控控制,防盜報警器,工業控制以及無線智能家居領域得到廣泛應用。 01 433M遙控遙控器通常由兩部分組成:發射器和接收器。發射器通過按下按鈕,將信號發送到接收器,接收器則解碼該信
    的頭像 發表于 07-15 15:01 ?2326次閱讀
    <b class='flag-5'>433</b>M 通訊技術無線<b class='flag-5'>遙控</b>器芯片CMT2300A

    安信可Ai-WB2系列模組/開發板連接AWS亞馬遜云方法

    、軟硬件的準備二、亞馬遜云物模型建立三、連接亞馬遜云demo獲取以及配置四、硬件接線五、燒錄軟件的使用六、連接亞馬遜云七、聯系我們前言Ai-WB2系列模組是安信可科技開發的Wi-Fi
    的頭像 發表于 07-05 08:23 ?770次閱讀
    安信可Ai-<b class='flag-5'>WB2</b><b class='flag-5'>系列</b><b class='flag-5'>模組</b>/開發板連接AWS亞馬遜云方法