『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 386|回复: 1

[硬件DIY] 老式两线电话门铃智能化改造

[复制链接]

1

主题

20

帖子

130

积分

注册会员

Rank: 2

积分
130
金钱
110
HASS币
0
发表于 2025-1-2 13:21:29 | 显示全部楼层 |阅读模式
本帖最后由 ericshuiSC 于 2025-1-2 13:35 编辑

如题,家里是那种老式门禁,楼下有人按了门牌号,上面的电话响起来,楼上接起电话,再按下开门按键,进行开门。

拆开电话之后看了一下,纯纯的模拟电路,没有任何控制芯片,只有两根线接入户。开锁按键四个脚,其中三个脚都是接在一起的,不过有的脚之间接了多个二极管、三极管,总之看得人头皮发麻。

看了一堆帖子,有些案例还挺像的,但是都要用两个以上的继电器,用啥一些不认识的板子进行控制,而且大都是完整模拟了楼下先按门铃;楼上接起电话,再模拟按键开锁的过程,所以感觉还挺难的。


[url=]

                               
登录/注册后可看大图
[/url]收起图片


翻了很多帖子,找到一张原理图:

[url=]

                               
登录/注册后可看大图
[/url]


我突然发现,这个图里的 Unlocking 按键只是短接了进户线啊,好像和右边的什么,mic ,spk 没啥关系。
于是,我就拿手上的 ESP32 c3 supermin 和一个 5v 的继电器开始尝试,经过实践,楼下按了门牌号之后,根本不需要拿起听筒,直接按短接信号线开锁就行。

即直接把继电器的常开端口和公共端焊接到电路板上那两根入户线的位置,通过继电器短接一秒就能开锁。

测试:
[url=]

                               
登录/注册后可看大图
[/url]收起图片




直接开干:
[url=]

                               
登录/注册后可看大图
[/url]收起图片




代码使用 micropython (代码比较简单,有需要再贴),使用 mqtt 接入巴法云,再通过小米音箱接入米家 app 。

即可以通过 巴法云 app 、巴法云微信小程序、米家 app 、小爱音箱、Homeassistant 开门(感谢巴法云平台❤️,非广告)。




以下开发板代码请结合以下说明使用:https://145111.xyz/article/16d51119-3bfc-8092-aeef-cca6cd3b77e0

from mqtt_as import  MQTTClient,config
import asyncio
import machine
import json
from time import sleep



config['server'] = 'bemfa.com'
config['ssid'] = 'xxx'
config['wifi_pw'] = 'xxxxxx'
config['client_id']='ccc23xxxxxxxxxxxxxxx'
config['port']=9501
config['clean_init'] = True
config['clean'] = True
top_topic="buildingLock006"

led = machine.Pin(8, machine.Pin.OUT)
led.value(1)#先关灯
def callback(topic, msg, retained, properties=None):  # MQTT V5 passes properties
    print((topic.decode(), msg.decode(), retained))
    
    if topic.decode()==top_topic:
        if msg.decode() =='on':
            led.value(0)
        elif msg.decode() =='off':
            led.value(1)
        
async def conn_han(client):
    await client.subscribe(f'{top_topic}', 1)
    

async def main(client):
    await client.connect()
    n = 0
    led.value(0)
    sleep(5)
    led.value(1)
    while True:
        await asyncio.sleep(5)
        pass

config['subs_cb'] = callback
config['connect_coro'] = conn_han
client = MQTTClient(config)

try:
    asyncio.run(main(client))
finally:
    client.close()  # Prevent LmacRxBlk:1 errors




回复

使用道具 举报

4

主题

115

帖子

1353

积分

金牌会员

Rank: 6Rank: 6

积分
1353
金钱
1238
HASS币
0
发表于 2025-1-2 14:11:41 | 显示全部楼层
为你的动手能力点赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-2-3 03:54 , Processed in 0.046452 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表