发作品签到
标准版

PY32LED 无线 LED 接收端 RGB CD105 V1.0

工程标签

2.6k
0
0
1

简介

无线 LED 项目 PY32LED 的接收端

简介:无线 LED 项目 PY32LED 的接收端

开源协议

CERN Open Hardware License

(未经作者授权,禁止转载)
创建时间:2023-12-24 07:52:32更新时间:2023-12-26 03:22:45

描述

PY32LED RX RGB

一种面向模型加灯的基于载波通信实现相互独立且 RGB 可控的无线 LED 的接收端设计,基于普冉的 PY32(四舍五入也算 AIR32)
该项目主要目标是抛砖引玉验证想法(也就是所谓的 Proof-of-Concept;虽然思路大家都清楚但是没搜到有人实际做了类似的),不是面向最终用户性质;
如果你只是想给塑料小人加个灯,那目前它还不完善,不推荐使用,你可以等有生之年商家们卷一卷之后挑好用的买(问题发言)

发射端硬件工程 在这
简单的功能验证代码上传在 Github 工程主页: libc0607/py32led

视频演示

Bilibili

通过发射端按键控制三个 LED 切换 RGB 的简单 Demo:
384_15fps.gif
20231224014106.jpg
20231224014104.jpg
* 不要试图通过不给客编留空间的方式来白嫖“板上不加客编”。事实证明,这焊盘上印客编印得比绿油结实多了(赞许),刮不掉。
** 现开源版本中已增加 JLCJLCJLCJLC 位置。

硬件特性

  • PY32F030 主控,M0+ 内核,2K/16K,可模拟 EEPROM 用于存储配置,目前只用了 6K ROM 和一小部分外设,硬件资源严重过剩
  • 简单低成本的能量收集和信号接收电路,使用 CD105 100uH 电感作为接收线圈焊在背面,除此之外仅包括电容和二极管
  • 用户可以自己搓通信协议(?问题发言)
  • 理论上多个灯可共用同一套谐振电感和电容,同时并联的每个灯仍可独立寻址控制,便于控制安装在某些塑料中时的体积
  • 1615 RGB LED,三色可调光,PWM 时间分辨率可低至 125ns(…好像没啥能吹的,强行
  • 预留 SWD 焊盘,用于烧写、调试及开发
  • 预留电源焊盘,可以飞线并超级电容或带路径管理电路的电池(如 ETA6093 这种同口输入输出的)以提高供电能力;多个灯共用一套 LC 时,理论上也可共用同一备份电源
  • 2 层 PCB 设计,白嫖工艺,9mm*9mm 外形拼版优化,总体积和常见的磁控灯相似
  • 低成本。按照 PY32 同系列价格估计,小批量单灯成本可轻松控制在 ~1.5RMB 内

制作注意事项

元件值按照电路图中给出的选择即可

MCU 是 PY32F030 1.5mm*1.5mm DFN-8 那款,具体型号忘了但是这封装就一个型号淘宝搜下就有;本站还有 寂寞鸽的开发板(doge

稳压二极管的额定电压过低会导致蓝灯不够亮,高了可能橄榄 MCU,根据需要自行判断;
我这里选了个额定 4.7V 的,如果你需要外接输出 5V 的带升降压的锂电管理之类的,4.7V 就很明显不行,建议将实际(*稳压二极管不是什么理想器件)电压设置在 5.1~5.5V 之间,因为既不希望在稳压二极管上浪费电流,也不要橄榄MCU;
电源上的储能电容建议选择耐压稍高的,别整什么 6.3V

接收线圈原理图中没有标出,需要使用 CD105 100uH 电感并焊在板子背面,注意不能是闭合磁路(屏蔽)的;
如果多灯共用线圈,则需要注意 1.同一个电感上仅需要并联一份电容,多了频点就飘了;2.如果同时并了备用电源,注意电源极性

接收谐振电容需要使用 NPO/C0G 材质,0603 封装,2.7nF*2,总之并联谐振频率设定在 220kHz 附近

原理、二次开发及调试

感觉文字写不太清楚,对原理感兴趣的话可以去 B 站视频 下面留个言,如果人数足够多可以单独开个视频 PPT 讲一下设计思路,也方便其他人上手二次开发;人少可能因为懒就鸽了

Air001 (发射)侧通过控制 XKT-001 的使能引脚实现对供电载波的 0%/100% ASK 调制,从而实现单向广播包的发送。
但是供电跌落会导致 LED 闪烁,也不能使占空比太低,所以目前实现的是使用短 0% 脉冲并将发射信息调制在载波 100%->0% 时的边沿间的间隔时间上
(之前看到有不少人说发射端调频的,这 XKT 又没有晶振又没有 PLL 又没有校准过的 RC,你想想它频率会怎么飘)

接收端使用经典的二倍压整流电路进行能量收集,稳压二极管与线圈等效内阻共同用于限制最大电压;两个肖特基除了整流也起到钳位防止损坏 MCU IO 的作用
(另外,根据参考文档 [2],我试过缩掉这俩肖特基管了;但是 PY32 它 IO 内部可能没做肖特基,实测压降有 0.7V+,怕闩锁所以还得加上;ATtiny 能那样玩是因为那是 Atmel)

线圈信号直接接入并联的 PA0 与 PA1,分别启用这两个 PIN 的上拉与下拉电阻实现 0% 调制时的固定电位;
同时 PA0 配置为比较器输入,PA1 断开连接,将输入信号与内部 Bandgap 分压后作比较,输出结果通过在 0% 与 100% 状态下被配置为不同长度的数字滤波器后得到正确的解调结果,并触发中断

在中断里对比较器的数字滤波器的输出结果进行边沿检测,使用定时器计算边沿间的时长后进行判定得到原始数据
MCU 解调得到数据后,通过比对地址来判定是否需要改变 LED 的 PWM,PWM 通过 TIM3 驱动

目前的 Demo 广播包内包含:命令、目标 LED 地址(可以是广播地址),命令内容(如 RGB 值)
由于软件协议没有啥标准/不确定具体需求,也没有制定什么标准帧格式,这里只会给出一个 Demo,包格式可以方便地修改

代码纯属功能验证,毫无可维护性糊成一大坨。。
接收侧使用 Puya 给的 LL 库进行开发,由于还剩不少空间,你甚至可以二次开发一些炫酷的灯效(?)

烧写接收端同时也需要配置 Option Bytes,可淘宝 9.9 嫖个 PWLINK 用 SWD,配置和烧写都比较方便
需要配置的内容包括: nRST 用作 GPIO(物理复用问题),设定低电压复位阈值
微信截图_20231224004526.png

已知问题

  1. 发射端的 20V 发射电压还是不太够。。使用 CD105 电感时实际距离堪忧。由于 MCU 需要约 0.7mA 的电流工作,两个原因加起来,距离比 XKT 店里卖的傻灯还近。。可能的解决方法包括但不限于:使用支持 PD 28V 的诱骗芯片;升压;引出一组接口为发射部分单独供高电压;增加接收线圈面积等
  2. 目前的代码若使用中继副线圈可能导致通信不稳定,但是这个调参应该能解决,毕竟有几个参数我也是感觉差不多得了瞎填的
  3. 接收端的一排三个储能电容离得太近导致阻焊桥没了,隔不开。手焊无所谓,如果机贴的话建议删掉一个并拉开一点距离;也可以缩掉三个 22uF,通过外接电容和共用 LC 等方式来缩小灯板体积至现有的一半或更小

其余待补充

开源协议

全部硬件设计基于 CERN-OHL-S v2 或任何之后的版本开源
个人来说,希望基于此思路继续开发的各位(如果有的话)也能遵守协议并共享你们的成果,良性发展,谢谢茄子
除此之外禁止包括但不限于下列类似缺德行为:指导教师抄去写成本科生毕设题目,水教育类论文评教授等

虽然选了这个协议,但目前我并没有量产出售的计划,md只焊三个都要瞎了
DIY 有风险,下单请谨慎检查,作者假定任何复刻用户理解该设计并有完全行为能力,不对可能带来的损失负责
最终解释权归作者所有

参考 & 致谢

[1] 普冉半导体 - PY32 Series
[2] scanlime - Using an AVR as an RFID tag
[3] metro - TinySquare,PY32F030L1xD的最小开发板
[4] Milton - 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 及目录中的后续文章

设计图

原理图
PCB

BOM

IDNameDesignatorFootprintQuantity
122uFC1,C6,C8,C9C_06034
210uFC2,C7C_06032
32.7nFC3,C5C_06032
4100nFC4C_04021
5RB521S-30D1,D2SOD-523F_L1.2-W0.8-LS1.7-RD2

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航