改造楼宇对讲分机,增加远程开锁的功能

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

有时出入不太方便。

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

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

改造楼宇对讲分机,增加远程开锁的功能

数据通信电路

今天又花了半天时间,利用之前基于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;
		}
	}
改造楼宇对讲分机,增加远程开锁的功能

通信小板

展开阅读全文

页面更新:2024-05-29

标签:开锁   分机   楼宇   功能   总线   电流   按键   电路   命令   状态   主机   消息   通信   智能   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top