楼宇对讲分机增加远程开锁:电路改造与程序代码设计
0 2023-12-04

前一段时间的一篇文章说到,一个朋友家的楼宇对讲系统不支持远程通话、对讲的功能。

有时出入不太方便。


这种情况下,作为一个有几十年工作经验的工程师,我为了不愧于这一称号,主动承接接下改造楼宇对讲分机的重任。


上一次花了点时间,把分机外壳拆开,用万用表把数据通信部分电路抄了下来,如下图:

数据通信电路


今天又花了半天时间,利用之前基于LoRA通信的智能灌溉系统测试时报废的样品,公众号“电路一点通改了几个电阻,焊了几条飞线,再改写了一小段程序,顺利完成了远程开锁的功能。


远程开锁功能的系统架构如下:

系统架构


远程开锁操作步骤如下:

  1. 智能灌溉主控与自建服务器建立TCP长链接;

  2. 为了达到免布线的目的,主控与安装在分机附件的通信小板采用LoRA进行无线通信;

  3. 用户走到门前时,打开手机x信,在公众号菜单上点击链接;

  4. 从自建云服务器上下载开锁界面;

  5. 通过x信提供的API接口对用户的身份进行认证,生成access token;

  6. 采用 websocket协议向云服务器服务器发送开锁消息以及access token;

  7. 云服务器根据access token判断权限,如果有权限,则向智能灌溉主控转发开锁消息;

  8. 智能灌溉主控将开锁消息通过LoRA通信转发给由智能灌溉分控改造的通信小板;

  9. 通信小板生成从楼宇对讲总线上抓包得到的开锁消息,通知楼宇对讲主机开锁;

  10. 楼宇对讲主机收到消息之后,执行开锁动作;


通信小板的改造

改造的电路


如上图,阴影部分区域为由智能灌溉分控改造的通信小板电路,其余部分为对讲分机的通信相关电路;


通信小板通过SPI接口与LoRA模块对接;

从其单片机的UART模块输出的UART数据经过两极反向之后,由PNP三极管将其发送到总线;


在输出的PNP三极管Q9的E极串入两个并联的100欧电阻,使得通信采用电流信号实现。


可以增加通信数据的传输距离和抗干扰能力;

当串口数据位为0时,通信小板向总线提供200mA左右的电流;

当串口数据位为1时,通信小板不向总线提供电流;公众号“电路一点通

楼宇对讲的分机处于待机状态时,仍会定时向总线发送心跳数据。

这一心跳数据会影响通信小板的通信,因此,增加了NPN三极管Q12组成的电路;


当通信小板需要发送数据时,单片机在YOUT_04口输出高电平,使得Q12处于饱和导通状态;


此时,如果楼宇对讲分机有数据发送,其提供的电流信号将被Q12消耗,而不会流入总线,从而不会对通信小板的通信造成影响;


碰到的几个问题以及应对的措施

在调试过程中,碰到了几个问题:


1) 供电问题

刚开始想通过对讲分机内部的12V电源给通信小板供电。细算下来,电流太大,功耗太高。

最后采用9V电池给通信小板供电,所幸通信小板支持低功耗,静态平均工作电流仅几十uA,一节电池工作一年应该没有问题;

分析如下:

对讲系统的12V电流由28V的总线电源通过7812稳压得到,

而通信小板的单片机工作电源由外部电源通过3.3V的LDO稳压得到;

LoRA处于工作状态时,其工作电流可高达50mA;

如果由对讲分机内部的12V供电,则其内部的7812的功耗高达 50*(28-12)=800mW。

温升可高达50度左右;

通信小板的LDO的功耗也高达50*(12-3.3)=435mW,SOT-23封装的LDO的温升至少高达50度以上;


2)串口通信的时钟精度问题

灌溉分机采用内部高速R、C振荡器作为时钟,开始测试时,通信小板发了命令,

但是主机没有任何反应,用示波器实测通信波形,发现1200bps的波特率,

但是1个bit的脉宽居然是890us左右,与实际的 833us脉宽相比;

误差高达(890us-833us)/833us=7%。

当发送到第10个停止位时,其误差高达70%,显示接收端已经无法再正确解析数据;

果断把预留的外部晶振焊上,时钟改成外部晶振,问分机愉快地与主机打上了招呼;


3)分机待机状态开锁的问题

在分机未进入通话状态时,通信小板发送开锁命令,主机就是不执行任何动作;公众号“电路一点通

再细查,原来分机待机开锁的功能被禁用了。

对讲系统只保留了主机呼叫、分机摘机再开锁的功能;

不得以,只能在通信小板上实现简单的自动摘机、开锁功能;

即检测到有呼叫命令(后续增加)或者收到从服务器发送的开锁命令,则:

a. 通过YOUT_04输出高电平,禁止对讲分机发送数据,延时一段时间;

b. 往总线发送摘机命令,延时一段时间;

c. 往总线发送开锁命令,延时一段时间;

d. YOUT_04输出低电平,允许对讲分机发送数据;

4)模拟按键操作的问题


在整个调试过程中,也有想法模拟按键操作,

如果是机械按键,可以接线从摘机和开锁按键焊出线来控制;

无奈对讲分机是触摸按键,而且触摸按键由另一块小板上的专用芯片检测;

如果要模拟按键操作,则需要实现专用芯片的协议,还需要不影响原来按键操作;

相关麻烦,只能暂时选放弃;


程序

灌溉分机已经有了完整的程序,因此只需要在原来LoRA通信以及RS485通信的基本上增加一个简单的状态机;


if(bTimer100ms){
		 if(unlocktimer > 0){
				unlocktimer --;
		 }
	}
	if(unlockstate == 1){
		fnMB_Init();
		uartbuff[0] = 0x7f;
		uartbuff[1] = 0x06;
		uartbuff[2] = 0x0A;
		uartbuff[3] = 0x04;
		uartbuff[4] = 0x00;
		uartbuff[5] = 0x00;
		uartbuff[6] = 0x15;
		uartbuff[7] = 0x23;
		RS485_Send(0, uartbuff, 8, FALSE);
		unlocktimer = 20;
		unlockstate = 2;
	}
	else if(unlockstate == 2){
		if(0 == unlocktimer){
			unlockstate = 3;
		}
	}else if(unlockstate == 3){
		
		uartbuff[0] = 0x7f;
		uartbuff[1] = 0x06;
		uartbuff[2] = 0x22;
		uartbuff[3] = 0x04;
		uartbuff[4] = 0x00;
		uartbuff[5] = 0x00;
		uartbuff[6] = 0x15;
		uartbuff[7] = 0x3b;
		RS485_Send(0, uartbuff, 8, FALSE);
		unlocktimer = 15;
		unlockstate = 4;
		
	}else{
		if(0 == unlocktimer){
			unlockstate = 0;
		}
	}

通信小板



声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 硬件
  • 原理图
  • 信号完整性
  • EMI
下载排行榜
更多
评测报告
更多
广告