发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
[无线通信]

免改线无线遥控开关鉴赏使用和维修

[复制链接]
17225|13
手机看帖
扫描二维码
随时随地手机跟帖
zhoushangshi|  楼主 | 2024-4-11 16:23 | 显示全部楼层 |阅读模式
#申请原创#
1 背景

由于卧室照明灯的开关没在卧室里头,而是和入户门照明灯的开关合在一起,这样卧室灯开关就很麻烦,试想一下,卧室里面的人想要关灯,就得屁颠屁颠走到卧室外,径直走到入户门旁边的开关按一下,然后屁颠屁颠走进卧室门,随后就得摸黑进卧室,想想就挠头发(没几根头发可造咯!)。

2 解决办法

(1)原封不动,中年人的一根头发都很金贵。
(2)改线路,凿墙拔线,钱包扁扁的,伤不起。
(3)免改线无线遥控开关。

3 行动

想明白需求就开始行动,网上找到一个性价比高的无线遥控开关,有一个主开关加一个随意贴,这个随意贴可以放到卧室里的任何地方,贴如卧室门墙上,放到床头都可以的,这样就不用出去关灯了,想想就很激动!

4 鉴赏和使用

4.1到手的无线遥控开关
5b02e4abccf85d51120b7066b390ef35

4.2入户门开关和主开关
70ff8c0c98c548410bcb34b02e6856a1

把入户门开关换成刚买的主开关,先把原开关拆掉,两边的开关面板得拆了,才可以看到开关固定螺丝,开关面板从中间扣起来:
7c2c9a7f25ad66475337c7ec0170a9c6

b2a7efcb751ce60f79503317efad14fd

拆开后:
add112422f0f2606e4fcaaad6c9c889c

900240d891d5a78725fb790f71b0f48e

四个开关公用一个火线,每一个开关都有上下两个接线口。把这些拔出来接到新买的开关上。新买的开关只有三个开关,而且一个开关没有两个接线口,只有一个接线口,
用一个开关控制卧室两个灯。
9f725801130bbe6e2fe9aa8f332b7229

3a199b5bb27a7129727c0821c7913915

这个开关面板轻轻撬一下就拆开,不像之前那个开关面板不好撬,不知道好撬好还是不好撬好,不好撬是不是在某种意义上表明了质量好。撬开面板就可以看到螺丝孔了,先把家里的电闸关了,避免发生意外触电,接上线后,把电闸开了试一试成果怎样?
447edf0b05211e4b5cb97bf22681d121

e8914450cea84ec3a91609eb1785fc4d

通电看到亮了,
5f3ec07826de8bccd4fa27af5d0200f9

装上面板看看效果,比之前的开关颜色更配墙的颜色,不错。
431250a1b0aec0d9aef89113dfc0fd7e

7e505c7680529c612f87b1dbb91c0714

黑灯后有个蓝灯亮着,这样不会摸不到开关了。哎呦,不错哟!按一下开关,物理开关正常开关灯,至此可以代替之前的开关,不过卧室里的开关怎么办,不急,先把随意贴拿出来,随意贴也是三个开关,可以任意配到主开关上,把随意贴面板拆了,是要装电池的,估计这东西是低功耗的,平时是休眠待机的,一个电池可以用几年吧。
43be22859fd4d260c591399f5d94801c

现在按随意贴不会控制灯的开关的,需要和主开关配对的,主开关也是三个按键,每个按键单独配对,按着主开关的一个开关不松手,坚持按五秒后再松开,就进入配对模式,然后按随意贴的一个开关,就可以匹配上了,其它两个开关一样的配对方式。配对完后就可以控制卧室灯的开关了,把随意贴放到卧室,开关灯就不用跑到入户门了。
222c59f8812d65afe4a8ba0c547abf26

遥控开关总结:主开关可以替代原开关的物理开关功能,还可以接收随意贴射频发射出来的电磁波数据,实现了不用改线遥控灯的开关。
主开关上变压器,220V变12V。
bb824f013d1d54ffac1aa8b678f17dbc

主开关上MCU工作电源是3V,由开关电源芯片BM7530从12V降到3V。3V是供给MCU工作的电源。
1d660a15f3b5d5c17d37967deaddc397

cec18fe41a7e71a09272742dd03ab563

主开关上的整流电路用到MB6的整流芯片。
0d782fbc44a0d473d481fc114a1104e8

9fd389b11651436113caa54e8f294950

主开关上有三个小按键,负责直接控制照明灯的亮灭,短按一下抬起来就可以控制。
0c801f87d16ae62bfce139c5241fc4bb

主开关上的MCU上面的丝印被磨平了看不到型号,MCU主要工作是接收射频遥控数据来控制继电器通断,检测按键执行继电器通断。
dbd385e8acf3b8716b4b8d9aabfac1ed

射频电路是接收433.5MHz频率的电磁波。
df4a8fa5e36a89b3c6468445df5e8df5

8d946a932169e78905909237b87991d8

主开关上的关键件继电器选择的是Y32F,这款继电器是12V控制,平时没有电的时候常断,用MCU三个IO口分别控制三个继电器的通断状态,继电器开关端口一头是直接连接到火线L上,另外一头连接到照明灯的火线,继电器通电继电器开关就闭合,照明灯火线连上,照明灯亮,继电器没通电继电器开关就跳开,照明灯灭。
继电器控制示意图:
e3dea6d1ca3c2b08be71fde87cbaff44
板子上的继电器图片:
cbadab1830438849f075ba159e60a746

随意贴上也有三个按键。
fd0621c775f6b96f3e5c02df7354d4d9

随意贴上的射频发射电路:
3a02e6383bc6f0091947e3da897ac2b6

5 实际效果展示

上面介绍完后接着看看实际的效果成果,特意DIY一个开关装饰框稍微装饰一下,随便遮挡住边上的大洞。

随意贴我就贴到卧室进门的墙上,看起来跟普通开关差不多。至此这样就可以在卧室里开关卧室灯了。
3481caac8ca303b5ecc427d33dc1eb9c

6 使用后感受

用了几天后感觉,随意贴不稳定,有时候按一下就可以开关灯了,有时候按了好几下都没开或者关,主开关和随意贴距离也不远,直接距离大概四米左右,虽然有面墙,穿墙不行,但是有门,有时候门还是开着状态。看来随意贴发射射频做得不好,为了更好得使用,把随意贴拆开看看。

7 检测随意贴的发射频率和数据

由于随意贴遥控功能不好用,时好是不好的。
7b215138e7c18cc68b79fb5d50ba7516

经检测,随意贴发出来射频是433.92MHz频率,调制方式ASK方式。遥控数据是固定的数据,按键1数据为\x99\xAA\x59\x65\x66\x59,6个字节循环发8次,按键2数据是\x99\xAA\x59\x65\x66\x95,按键3数据是\x99\xAA\x59\x65\x66\x65。

8 DIY一个遥控器

这个随意贴不好用,自己就想要另外做一个遥控器遥控主开关,跟随意贴一样做三个按键,关键部分代码如下:
void cmt_spi3_init(void)
{
    cmt_spi3_300h_csb_1();
    cmt_spi3_300h_csb_out();
    cmt_spi3_300h_csb_1();   /* CSB has an internal pull-up resistor */
    cmt_spi3_sclk_0();
    cmt_spi3_sclk_out();
    cmt_spi3_sclk_0();   /* SCLK has an internal pull-down resistor */
    cmt_spi3_sdio_1();
    cmt_spi3_sdio_out();
    cmt_spi3_sdio_1();
    cmt_spi3_delay();
}
uint8_t CMT_3300a_RF_Send_Direct_type_Init(uint8_t demodulation,uint8_t fre1,uint8_t fre2)
{
    u8 tmp;
u8 g_cmt2219bCmtBank_src[CMT2219b_CMT_BANK_SIZE] = {0};
u8 g_cmt2219bSystemBank_src[CMT2219b_SYSTEM_BANK_SIZE] = {0};
u8 g_cmt2219bFrequencyBank_src[CMT2219b_FREQUENCY_BANK_SIZE] = {0};
u8 g_cmt2219bDataRateBank_src[CMT2219b_DATA_RATE_BANK_SIZE] = {0};
u8 g_cmt2219bBasebandBank_src[CMT2219b_BASEBAND_BANK_SIZE] = {0};
u8 g_cmt2219bTxBank_src[CMT2219b_TX_BANK_SIZE] = {0};
HF_Send_Frame.demodulation=demodulation;
HF_Send_Frame.fre1=fre1;
HF_Send_Frame.fre2=fre2;
HF_Send_Frame.nowfre=HF_Send_Frame.fre1;
if( ( Cmd_Send_HF_Data_Fre_43392 == fre1 )  && ( Cmd_Send_HF_Data_Demodulation_ASK==demodulation) )
{
//g_cmt2219bTxBank_ASK_31000
memcpy(g_cmt2219bCmtBank_src,g_cmt2219bCmtBank_ASK_43392,CMT2219b_CMT_BANK_SIZE);
memcpy(g_cmt2219bSystemBank_src,g_cmt2219bSystemBank_ASK_43392,CMT2219b_SYSTEM_BANK_SIZE);
memcpy(g_cmt2219bFrequencyBank_src,g_cmt2219bTxBank_ASK_43392,CMT2219b_FREQUENCY_BANK_SIZE);
memcpy(g_cmt2219bDataRateBank_src,g_cmt2219bDataRateBank_ASK_43392,CMT2219b_DATA_RATE_BANK_SIZE);
memcpy(g_cmt2219bBasebandBank_src,g_cmt2219bBasebandBank_ASK_43392,CMT2219b_BASEBAND_BANK_SIZE);
memcpy(g_cmt2219bTxBank_src,g_cmt2219bTxBank_ASK_43392,CMT2219b_TX_BANK_SIZE);
}
CMT2300A_Init();
/* Config registers */
CMT2300A_ConfigRegBank(CMT2219b_CMT_BANK_ADDR       , g_cmt2219bCmtBank_src       , CMT2219b_CMT_BANK_SIZE       );
CMT2300A_ConfigRegBank(CMT2219b_SYSTEM_BANK_ADDR    , g_cmt2219bSystemBank_src    , CMT2219b_SYSTEM_BANK_SIZE    );
CMT2300A_ConfigRegBank(CMT2219b_FREQUENCY_BANK_ADDR , g_cmt2219bFrequencyBank_src , CMT2219b_FREQUENCY_BANK_SIZE );
CMT2300A_ConfigRegBank(CMT2219b_DATA_RATE_BANK_ADDR , g_cmt2219bDataRateBank_src  , CMT2219b_DATA_RATE_BANK_SIZE );
CMT2300A_ConfigRegBank(CMT2219b_BASEBAND_BANK_ADDR  , g_cmt2219bBasebandBank_src  , CMT2219b_BASEBAND_BANK_SIZE  );
CMT2300A_ConfigRegBank(CMT2219b_TX_BANK_ADDR        , g_cmt2219bTxBank_src        , CMT2219b_TX_BANK_SIZE        );
// xosc_aac_code[2:0] = 2
tmp = (~0x07) & CMT2300A_ReadReg(CMT2300A_CUS_CMT10);
CMT2300A_WriteReg(CMT2300A_CUS_CMT10, tmp|0x02);
RF_Send_Direct_Config();
return 0;
}
uint8_t RFM300H_434_Direct_SendData_Init(uint8_t demodulation,uint8_t Fre1,uint8_t Fre2)
{
Cmt_cs_Select=Cmt_cs_Select_300H;
CMT_3300a_RF_Send_Direct_type_Init(demodulation, Fre1, Fre2);
return 0;
}
uint8_t RFM300H_434_start_Direct_ChangeFre_ChangeDeviation_SendData_HF_DENG(uint8_t demodulation,uint8_t ChangeFre,uint8_t deviation,uint8_t * inputdata,uint8_t lengthdata,uint8_t sendtimes)
{
Cmt_cs_Select=Cmt_cs_Select_300H;  
CMT2300A_GoStby();
u8 g_cmt2219bCmtBank_src[CMT2219b_CMT_BANK_SIZE] = {0};
u8 g_cmt2219bSystemBank_src[CMT2219b_SYSTEM_BANK_SIZE] = {0};
u8 g_cmt2219bFrequencyBank_src[CMT2219b_FREQUENCY_BANK_SIZE] = {0};
u8 g_cmt2219bDataRateBank_src[CMT2219b_DATA_RATE_BANK_SIZE] = {0};
u8 g_cmt2219bBasebandBank_src[CMT2219b_BASEBAND_BANK_SIZE] = {0};
u8 g_cmt2219bTxBank_src[CMT2219b_TX_BANK_SIZE] = {0};
if( ChangeFre == Cmd_Send_HF_Data_Fre_43392 )
{
memcpy(g_cmt2219bFrequencyBank_src,g_cmt2300aFrequencyBank_43392_R_0039,CMT2219b_FREQUENCY_BANK_SIZE);
HF_Send_Frame.nowfre=ChangeFre;
}
else
{
return 1;
}
CMT2300A_ConfigRegBank(CMT2300A_FREQUENCY_BANK_ADDR , g_cmt2219bFrequencyBank_src , CMT2300A_FREQUENCY_BANK_SIZE );
CMT2300A_GoTx();
uint8_t outdatasrc[100];
BAIFEIS_Data_led(inputdata,outdatasrc,lengthdata);
RFM_2300A_HFDATA_OUT();
TIM2->CNT=0;
cmt_spi3_300h_Data_1();
while( TIM2->CNT < 348 );     //348us
TIM2->CNT=0;
cmt_spi3_300h_Data_0();
while( TIM2->CNT < 170 );  
for(uint8_t timesrc=0;timesrc<sendtimes;timesrc++)
{
TIM2->CNT=0;
cmt_spi3_300h_Data_1();
while( TIM2->CNT < 240 );  
TIM2->CNT=0;
cmt_spi3_300h_Data_0();
while( TIM2->CNT < 7300 );
for( uint16_t i=0;i<(lengthdata)*2;i++)
{
uint8_t inputdatasrc=outdatasrc;
for(uint8_t j=0;j<8;j++)
{
if( inputdatasrc&0X80)
{
TIM2->CNT=0;
cmt_spi3_300h_Data_1();
}
else
{
TIM2->CNT=0;
cmt_spi3_300h_Data_0();
}
inputdatasrc<<=1;
while( TIM2->CNT < 235 );     //235us
}
}
}
if( halfbitsrc == 1)
{
for(uint8_t i=0;i<2;i++)
{
cmt_spi3_300h_Data_1();
TIM2->CNT=0;
while( TIM2->CNT < 348 );  
}
cmt_spi3_300h_Data_0();
}
else
{
for(uint8_t i=0;i<2;i++)
{
cmt_spi3_300h_Data_0();
TIM2->CNT=0;
while( TIM2->CNT < 348 );  
}
cmt_spi3_300h_Data_0();
}
cmt_spi3_300h_Data_0();
CMT2300A_GoSleep();
return 0;
}
void test_tx_43392_DENG_KEY1(void)
{
Led_out();
Led_1();
uint8_t testdatasrc[64]="\x99\xAA\x59\x65\x66\x59";  
RFM300H_434_start_Direct_ChangeFre_ChangeDeviation_SendData_HF_DENG(Cmd_Send_HF_Data_Demodulation_ASK,Cmd_Send_HF_Data_Fre_43392,Cmd_Send_HF_Devi_30_434,testdatasrc,6,8);
Led_0();
}
void test_tx_43392_DENG_KEY2(void)
{
Led_out();
Led_1();
uint8_t testdatasrc[64]="\x99\xAA\x59\x65\x66\x95";  
RFM300H_434_start_Direct_ChangeFre_ChangeDeviation_SendData_HF_DENG(Cmd_Send_HF_Data_Demodulation_ASK,Cmd_Send_HF_Data_Fre_43392,Cmd_Send_HF_Devi_30_434,testdatasrc,6,8);
Led_0();
}
void test_tx_43392_DENG_KEY3(void)
{
Led_out();
Led_1();
uint8_t testdatasrc[64]="\x99\xAA\x59\x65\x66\x65";  
RFM300H_434_start_Direct_ChangeFre_ChangeDeviation_SendData_HF_DENG(Cmd_Send_HF_Data_Demodulation_ASK,Cmd_Send_HF_Data_Fre_43392,Cmd_Send_HF_Devi_30_434,testdatasrc,6,8);
Led_0();
}
void RFM300H_SLEEP_2678_DENG(void)
{
if( flag_status ==1 )
{
__HAL_SPI_ENABLE(&hspi1);
while( !(__HAL_SPI_GET_FLAG(&hspi1, SPI_FLAG_TXE)) );
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)("\x00\xff\xff\xff\xff"),spi_received,5,10);
flag_status=0;
if( spi_received[3]&0x01)
{
TIM2_Init();
time_start(2);
fre_nums=0;
Led_out();
Led_1();
test_tx_43392_DENG_KEY1();
Led_0();
}
else if( spi_received[3]&0x02)
{
TIM2_Init();
time_start(2);
fre_nums=0;
Led_out();
Led_1();
test_tx_43392_DENG_KEY2();
Led_0();
}
else if( spi_received[3]&0x04)
{
TIM2_Init();
time_start(2);
fre_nums=0;
Led_out();
Led_1();
test_tx_43392_DENG_KEY3();
Led_0();
}
}
}
做完遥控器试用一下,比随意贴好用多了,遥控基本都灵,随意贴遥控不了,用自己做的遥控器可以遥控,自己遥控器就放到床头,睡觉关灯就按一下遥控器就搞定,半夜起床开灯超级方便!

9 维修

主开关加随意贴加自制遥控器,这套东西用了一年多,出现问题了,卧室里的一个照明灯关不了一直亮着,按遥控器、按随意贴、按主开关都关不上灯。被迫无奈只能拆掉主开关维修一下。

9.1维修记录
主开关关不上照明灯,拉闸断电后再开闸通电,照明灯还是亮的,首先怀疑的继电器是不是坏了,因为继电器平时是常断的,一上电就继电器应该是断开的。拿下来用万用表先量一下,果然是通的,这现象表明继电器坏了,其它两个继电器是断的。

35e77c4551c0800d9eb2f3fd52b49b5e

拆继电器,烙铁烫继电器4个脚的锡,锡化开后往桌子上嗑,把锡嗑出来,锡嗑得差不多了,用镊子撬继电器身子,边烫边撬,先撬完一边,再撬另外一边,最后终于拆掉了。
e060cd6ada99e2387ca8997251d4a132

拆掉用万用表一量之前量的继电器那两个脚,竟然发现不通了,是常断的状态,量板子上那两个焊盘也不通,心想见鬼了吗,继电器嗑了几下,嗑好了吗,不放心,接线测一下继电器是否正常跳,接上12V,继电器开关是有跳动的声音,用示波器测一下,波形也正常,继电器线圈通电后继电器开关会闭合上的,线圈断电后开关会跳开。至此看来继电器是正常了,继电器没拆之前确实是坏的,照明灯一直亮着说明了这个问题,用万用表量也是短路,常闭合也说明是坏的,拆掉继电器的过程撬继电器外壳身子,往桌子嗑了十几下吧,嗑好了,不知道大神们有遇到这个想象不,欢迎评论区留言讨论。继电器现在正常了,就重新装回去继续用,哪天坏了再换吧。继电器焊回去,主开关重新装回去,之前那个一直亮的那个照明灯也不亮了,按键一按就亮,再按就灭,一切正常。
03f0f6ca24a04e53ab57dbf451d71c6c

b3cde5fbf537347059239ffbe9183d60

3ce4f5faaaf202f7b39086c6f8e78f84

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 100.00 元 2024-04-16
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2024-4-16 14:59 回复TA
自己动手,将物理开关升级为无线开关,并在使用过程中自行升级设计遥控器,解决原先遥控不稳定的问题。为作者的动手能力点赞 

相关帖子

储小勇_526| | 2024-4-16 11:28 | 显示全部楼层
小型继电器的通病,粘连。

使用特权

评论回复
zhoushangshi|  楼主 | 2024-4-16 11:38 | 显示全部楼层
储小勇_526 发表于 2024-4-16 11:28
小型继电器的通病,粘连。

没错,不粘连后正常用 一周左右又粘连了

使用特权

评论回复
abcd44| | 2024-4-16 18:13 | 显示全部楼层
zhoushangshi 发表于 2024-4-16 11:38
没错,不粘连后正常用 一周左右又粘连了

容性负载导致的,在负载回路中串个NTC热敏电阻试试。

使用特权

评论回复
yueguang3048| | 2024-4-18 09:03 | 显示全部楼层
这种开关不好,不如买那种压电式的开关  免接线免电池,随意贴装

使用特权

评论回复
zhoushangshi|  楼主 | 2024-4-18 11:22 | 显示全部楼层
yueguang3048 发表于 2024-4-18 09:03
这种开关不好,不如买那种压电式的开关  免接线免电池,随意贴装

什么样子的我看看,某宝搜啥关键词?

使用特权

评论回复
yueguang3048| | 2024-4-19 08:56 | 显示全部楼层
zhoushangshi 发表于 2024-4-18 11:22
什么样子的我看看,某宝搜啥关键词?

86自发电开关

使用特权

评论回复
zhoushangshi|  楼主 | 2024-4-19 09:28 | 显示全部楼层

我看了一下,不用电池靠按压机械能转换为电能供电发射频,其它功能跟我买的一样,唯一区别就是不用装电池,不知道稳定不,会不会容易坏,发不了电了,有机会买回来试一试。

使用特权

评论回复
oufuqiang| | 2024-4-26 09:24 | 显示全部楼层
灯具上都有输入的滤波电容,这个对继电器是非常不友好的。如果要控制灯具,一颗皮实的可控硅可能更合适。

使用特权

评论回复
zhoushangshi|  楼主 | 2024-4-27 09:34 | 显示全部楼层
oufuqiang 发表于 2024-4-26 09:24
灯具上都有输入的滤波电容,这个对继电器是非常不友好的。如果要控制灯具,一颗皮实的可控硅可能更合适。 ...

我猜市面上大多数的产品都是用继电器的吧

使用特权

评论回复
mwxpk| | 2024-4-27 09:52 | 显示全部楼层
十五年前折腾无线触摸开关,几万扔进去放弃了,发现那个机械自发电开关最好。接收没难度。

使用特权

评论回复
zhoushangshi|  楼主 | 2024-4-27 10:00 | 显示全部楼层
mwxpk 发表于 2024-4-27 09:52
十五年前折腾无线触摸开关,几万扔进去放弃了,发现那个机械自发电开关最好。接收没难度。 ...

听您意思,您是做这产品的,机械自发电开关的吗

使用特权

评论回复
wangxiangtan2| | 2024-5-7 16:28 | 显示全部楼层
老哥会玩啊,这都能折腾

使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

119

帖子

0

粉丝