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

 找回密码
 立即注册
楼主: furong600

[基础教程] 用Esphome发射和接收任意315/433MHz射频

  [复制链接]

4

主题

37

帖子

418

积分

论坛积极会员

积分
418
金钱
381
HASS币
0
发表于 2023-11-27 13:39:29 | 显示全部楼层
标记下,学习中。
回复

使用道具 举报

5

主题

105

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
712
HASS币
0
发表于 2023-12-21 10:45:26 | 显示全部楼层
太硬核。LZ写得太细致了!必须拜读
回复

使用道具 举报

1

主题

15

帖子

155

积分

注册会员

Rank: 2

积分
155
金钱
140
HASS币
0
发表于 2023-12-31 12:39:36 | 显示全部楼层
用楼主的方法搞成功了,新买的rf433手指机器人可以用这个方法来获得数据波形,用HA结合esphome来控制
回复

使用道具 举报

4

主题

70

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
金钱
389
HASS币
0
发表于 2024-1-22 14:58:25 | 显示全部楼层
蓝牙遥控器也可以吗?先标记
回复

使用道具 举报

0

主题

35

帖子

126

积分

注册会员

Rank: 2

积分
126
金钱
91
HASS币
0
发表于 2024-2-1 01:39:29 | 显示全部楼层
够详细,感谢分享
回复

使用道具 举报

25

主题

223

帖子

1005

积分

金牌会员

大B头,背背机,舞池里的007。

Rank: 6Rank: 6

积分
1005
金钱
782
HASS币
0
发表于 2024-2-23 14:32:06 | 显示全部楼层
本帖最后由 demacia 于 2024-2-27 11:37 编辑

楼主想请教下,帖子里说的第6点和一开始esphome remote receiver 接收不到,是差在什么地方吗?只是增加超外差带芯片和长天线的模块吗?原来用的是什么模块。
_________ 接收器不是433Mhz的所以没有接收到________

提供个思路,esphome remote receive raw模式下的绘图出来去查

import matplotlib.pyplot as plt
import numpy as np

# 假设你有一个一维数组,例如:
#pulse_signal = np.array([1.5, -2.3, 3.1, -1.8])  # 数组元素按正负交替,绝对值代表时间长度
pulse_signal = np.array([4805, -1503, 359, -717, 710, -361, 692, -359, 358, -715, 357, -716, 358, -716, 693, -359, 357, -723, 713, -358, 358, -716, 694, -358, 358, -715, 359, -714, 359, -696, 713, -358, 359, -722, 713, -358, 358, -696, 358, -716, 713, -358, 359, -714, 359, -695, 359, -713, 360, -720, 359, -714, 359, -695, 360, -713, 360, -713, 360, -714, 695, -358, 714, -356, 361, -720, 360, -714, 696, -356, 360, -714, 715, -355, 361, -714, 696, -355, 361, -713, 715])
fs = 10000000  # 采样频率(Hz)

# 计算每个样本点对应的时间,并找到正负电平切换的边界
t = np.cumsum(np.abs(pulse_signal)) / fs
switch_points = np.flatnonzero(np.diff(np.signbit(pulse_signal)))  # 找到正负值切换的位置索引
switch_times = t[switch_points]
print(switch_points)
print(switch_times)

# 构建broken_barh所需的坐标参数
ranges = []
for i in range(1, len(switch_points)):
    ranges.append((switch_times[i-1], switch_times[i] - switch_times[i-1]))

# 添加第一个和最后一个区间的范围
if pulse_signal[0] < 0:
    ranges.insert(0, (0, switch_times[0]))
else:
    ranges.append((switch_times[-1], t[-1] - switch_times[-1]))


# 创建颜色列表,这里假设红色代表正值(高电位),蓝色代表负值(低电位)
facecolors = ['red' if x > 0 else 'blue' for x in pulse_signal[::]]

# 绘制脉冲信号
fig, ax = plt.subplots()

print(ranges)
print((np.zeros(len(ranges)), np.ones(len(ranges))))
print(facecolors)
ax.broken_barh(ranges, (0.5, 1), facecolors=facecolors)
ax.set_ylim([-0.5, 1.5])
ax.set_yticks([0, 1])
ax.set_yticklabels(['Low', 'High'])
ax.set_xlabel('Time (s)')
ax.set_title('Pulse Signal')

# 显示图形
plt.show()

线性图
import matplotlib.pyplot as plt
import numpy as np

# 假设你有一组正负交替的数据,比如:
#pulse_data = np.array([1.5, -2.3, 3.1, -1.8, 0.5, -0.8])# 数组元素代表每个电平的持续时间
pulse_data = np.array([4805, -1503, 359, -717, 710, -361, 692, -359, 358, -715, 357, -716, 358, -716, 693, -359, 357, -723, 713, -358, 358, -716, 694, -358, 358, -715, 359, -714, 359, -696, 713, -358, 359, -722, 713, -358, 358, -696, 358, -716, 713, -358, 359, -714, 359, -695, 359, -713, 360, -720, 359, -714, 359, -695, 360, -713, 360, -713, 360, -714, 695, -358, 714, -356, 361, -720, 360, -714, 696, -356, 360, -714, 715, -355, 361, -714, 696, -355, 361, -713, 715])
fs = 10000000  # 采样频率(Hz)

# 如果数据不是按照时间步长排列的,你需要首先生成一个时间轴
time_axis = np.cumsum(np.abs(pulse_data)/fs)  # 累加绝对值生成时间轴

# 由于matplotlib绘制线图需要x和y坐标,这里我们将时间轴作为x轴数据
# 对于y轴,我们将数据视为标量值0和1,分别代表低电位和高电位
y_pulse = np.where(pulse_data > 0, 1, 0)  # 将正值映射为1(高电位),负值映射为0(低电位)

# 开始绘制脉冲信号图
plt.figure(figsize=(10, 6))
plt.step(time_axis, y_pulse, where='post')  # 使用step函数绘制阶梯图,'post'表示在每个区间结束处绘制垂直线

# 设置图形属性,如标题、标签等
plt.title('Pulse Signal')
plt.xlabel('Time')
plt.ylabel('Voltage Level (High=1, Low=0)')
plt.grid(True)

# 显示图形
plt.show()

1.png

回复

使用道具 举报

50

主题

1300

帖子

4892

积分

论坛DIY达人

积分
4892
金钱
3592
HASS币
20
发表于 2024-4-2 21:41:12 | 显示全部楼层
不是一般的复杂,一看到这些数字头就晕了
回复

使用道具 举报

1

主题

17

帖子

77

积分

注册会员

Rank: 2

积分
77
金钱
60
HASS币
0
发表于 2024-4-6 15:01:26 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 15:56 , Processed in 0.052371 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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