树梅派3B红外、433&315全连接及家居智能控制(二)315&433篇

315&433篇

硬件:树莓派3B ,315&433发射、接收器     软件:433Utils  系统:raspbian(最新版(2017-11-29-raspbian-stretch)测试不通过,原因不明,我使用的是2017-04-10-raspbian-jessie版。注:红外也是这个版本

315摇控实现比红外简单多了。目前有很多灯具使用的是315或433RF摇控,而不是红外红摇控。下面讲一讲我是如何使用RF发射管实现对电灯的摇控。,

1、硬件安装:

接收管:VCC接正5V(5V为物理2,4脚。根据实际情况,有的是3.3V物理1脚),GND接地(物理6、9、脚),date接物理13脚。有的教程说把send.cpp文件中将ini pin 0改成其他也可以,我实验不成功,还是用默认脚。

发射管:VCC接正3.3(我的是3.3V,物理1脚),GND接地,date接物理11脚(这个脚我也没改成功,而且这个脚与红外默认脚冲突,所以我改了红外的脚)

2、软件安装:

 安装433Uitls.

cd ~/

git clone–recursive git://github.com/ninjablocks/433Utils.git

cd433Utils/RPi_utils

make

安装完成。

3、RF摇控解码:

~/433Utils/RPi_utils/RFSniffer嗅探信号解码。(注:要完整路径,并注意大小写,否则会出现找不到命令的错误。)

按下摇控器按键,因为RF摇控器的按键都比较少,分段的摇控器也就4个或6个。

系统会显示7或8位摇控码。记下摇控码:

A:2581585  B:2581586 C:2581588  ON:2581592(这是我家的摇控器码)

4、发射摇控码:

~/433Utils/RPi_utils/./codesend 2581592  (必须完整路径,本来要把路径加到PATH内没成功)

会显示:sending code[2581592],灯会响应开关动作。

总结:

根据433Utils官方说明文件,这个软件是为433频率开发的,但315频率也可以用,实测是可以用,但不稳定,比如发射一个代码灯有时候会开了马上就关了,原因不明,感觉是发送了两次码。而且我用的发射管是315和433通用的,也不知道是这个一定要315的才会稳定(我家的灯是315频率的)。

在实践的时候我买了不少设备,其中有一个是RF解码器(100块,专业的要几百上千),它可以显示RF摇控器是315的还是433的。否则如果你买的是433的发射和接收管,但实际上你家的灯是315的,就无法实现解码,也不能发射成功。这意味着你要买315和433两套设备(好在都不贵,一套就几块钱。),两套都试一下,不然就买我用的这种二合一的,就不用管到底是什么频率了。某宝上有。

参考文献:

https://www.princetronics.com/how-to-read-433-mhz-codes-w-raspberry-pi-433-mhz-receiver/


可以通过socket通信来实现树莓派上的MicroPython控制外部Python程序。具体步骤如下: 1. 在树莓派上通过MicroPython编写Socket服务端程序,监听一个端口号; 2. 在外部Python程序中编写Socket客户端程序,连接树莓派上的Socket服务端; 3. 在客户端程序中通过socket发送指令给服务端,服务端接收到指令后执行相应的操作,并将结果返回给客户端。 示例代码如下: 在树莓派上运行的MicroPython代码: ```python import usocket as socket # 创建Socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP地址和端口号 ip_port = ('0.0.0.0', 6666) s.bind(ip_port) # 监听端口 s.listen(5) while True: # 等待客户端连接 conn, addr = s.accept() print('连接成功:', addr) # 接收客户端发送的数据 data = conn.recv(1024) print('接收到数据:', data) # 执行相应的操作 if data == b'on': # 执行开启操作 pass elif data == b'off': # 执行关闭操作 pass else: # 执行其他操作 pass # 返回执行结果给客户端 conn.send('操作成功'.encode()) # 关闭连接 conn.close() ``` 在外部Python程序中运行的代码: ```python import socket # 创建Socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务端 ip_port = ('192.168.0.100', 6666) s.connect(ip_port) # 发送指令 s.send(b'on') # 接收执行结果 data = s.recv(1024) print('执行结果:', data) # 关闭连接 s.close() ``` 在代码中,树莓派上的MicroPython程序作为Socket服务端,监听6666端口,并等待外部Python程序的连接。外部Python程序通过Socket客户端连接到服务端,并发送指令。服务端接收到指令后执行相应的操作,并将结果返回给客户端。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kim5659

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值