基于WS2812的圣诞树

news2024/11/17 13:52:10

项目说明

通过使用1010封装的WS2812灯珠,实现整体观感和谐、可视角度更佳的迷你圣诞树采用电池供电+触摸开关机+手机遥控方案,主打一个优雅。

主要特色

1、灯板部分(圣诞树主体)

使用1010封装的WS2812灯珠,体积小更和谐,且可视角度更佳灯板统一设计,一次免费打样(5片PCB)就足够使用简化了灯珠的丝印,避免丝印影响圣诞树观感使用弧形信号走线,使走线融入设计,不显得突兀

2、控制部分(圣诞树底座)

通过蓝牙控制器实现丰富的彩灯显示效果,也降低了开发周期

尽量避免正面走线,提神整体观感

充电接口、开关按键、指示灯 全部采用后置、下置

成果展示

实物展示视频:【Bilibili】种一棵赛博圣诞树

电路设计

电路采用了模块化设计

首先是Type-C接口与充放电管理芯片,实现了电池供电与一键开关机

电路可以参考我的另外一个开源项目:

基于LY3205的迷你充放电管理模块 - 嘉立创EDA开源硬件平台 (oshwhub.com)

由于我在设计的时候有一些强迫症,因此在设计时我选择把充电接口、开关按键、指示灯三件套全部采用后置,而又因为本项目主控板采用元器件全部放在背面(提升正面的美观性),因此我设计了一个独特的叠层结构来实现

这边的结构设计比较特殊,因此在开源项目末尾特别说明此部分的焊接方法

为了更加优雅的进行开关机操作,本项目使用了触摸开关

触摸传感芯片采用了常用的223芯片

通过上拉电阻使得OLH设置为低电平输出,从而模拟按键拉低KEY引脚,控制LY3205充放电管理芯片

需要注意的是,触摸芯片需要使用电池(BAT+网络)直接供电,这样才能在关机情况下使用

因此,需要选择宽电压、且低功耗的触摸芯片,我们可以根据数据手册查看相关数据

同时,在触摸感应的背面,我增加了一个焊盘,方便引出触摸感应接线到不同的外壳上

升压电路采用了常用的3608,在此不进行赘述

由于本项目对纹波的邀要求不高,且对电路体积限制较高,我在PCB中删去了电压前馈电容C7

每一片“树叶”上有正反面各8颗,一共16颗2812灯珠

4片“树叶”一共有16*4=64颗灯珠

优先建议选择焊接R12-16进行灯珠串联接线,若有灯珠损坏且无法修复,则采用备用的R17-21进行4片“树叶的并联接线

在串联接线时,整棵圣诞树的灯珠可以实现连续变换效果,并联接线时4片“树叶的灯光效果是相同的

灯板采用固定引脚与电气连接复用的设计,通过焊锡固定灯板的同时与主板进行连接,如下图所示

因此在焊接时务必确保焊点已经进行了可靠的连接

需要用到的4片灯板是一样的(当然你可以画4片不一样的),一次免费打样(5片PCB)就足够使用

如果需要批量焊接,则可以采用”4拼板“,这样一块板就是”一棵树“

该项目的灯珠采用1010小封装,存在较高的焊接难度,新手焊接需要考虑自己的焊接技术能否成功

外壳(底座)采用Fusion360建模设计,如下图所示

底座的STL文件已经放在项目附件,可以自行下载打印(有斜面,但是不用支撑就能打印)

底座中间的小孔是用来固定灯光控制器上的麦克风的

外部玻璃罩我选择的是8.5cm直径,该直径小于常规10cm或以上直径的玻璃罩,更适合当桌面摆件

该圣诞树迷你的体型也是为了适配这个小灯罩,显得更加精致

软件部分:

软件下载地址:

ZENGGE

软件常见问题:

FAQ

在软件中,设置点数64段数1,若并联接线则设置点数16段数4

在控制界面的首页可以使灯珠单色显示,可以判断RGB值是否正确,如果灯珠颜色和软件设置的不一样,则需要修改灯条排序(默认是RGB,我这边对应的设置是GRB,使用不同厂家的灯珠可能需要进行不一样的设置)

制作注意事项:

本项目所有板子都是打1mm厚度!

1、先焊接充放电管理和升压电路,确认充电与升压输出没问题以后再焊接灯板

2、灯板焊接完成后,务必确认每块灯板都可以正常点亮,最后再进行组装焊接

3、焊接灯板一定要先焊接灯板互相的连接焊盘,再焊接灯板与主控板的连接

4、可以采用泡沫胶带把电池黏在主控板背面,然后再使用金属引脚连接WS2812扩展板

充电接口焊接方法:

首先弯折Type-C接口的两个正面支撑片,再使用焊锡将弯折后的支撑片与接口本体固定

在焊接时,先焊接按键和灯珠,焊接后建议使用烙铁多加焊锡确保按键固定可靠

随后使用电烙铁在Type-C信号引脚部分上锡,再使用热风枪从背面加热焊接Type-C接口

焊接好上面的步骤后先要确定充电功能正常

最后才能焊接Type-C接口的四个固定引脚

控制板焊接方法:

首先焊接好主控板和灯板,飞线连接主控板,使用电池或电源测试灯光功能都正常

随后使用海绵胶带(厚双面胶)固定电池在圣诞树底部正中间

找一些硬质的元器件引脚,比着电池厚度,弯折成C型

将弯折后的引脚焊接固定在控制板上,并进行修剪

最后将灯光蓝牙控制板与圣诞树主控板焊接在一起

全部连接完成后建议再次进行测试,测试完成后即可装进外壳进行组装

安装时调整灯光蓝牙控制板使其麦克风对准底部孔位

采购链接:

主要元器件跟着电路图进行采购就可以

WS2812控制器我采用的以下链接中的“USB幻彩控制器”模块

WS2811全彩灯带条2812B流水跑马调光USB5V迷你音乐蓝牙幻彩控制器-淘宝网 (taobao.com)

如果需要批量购买WS2812-1010灯珠,可以选择

包邮0404呼吸灯珠可编程内置ic发光二极管led1010幻彩rgb最小尺寸-淘宝网 (taobao.com)

玻璃灯罩直径为8.5cm,单独购买灯罩即可

促销创意草莓碗圆球玻璃罩球形翻糖蛋糕罩烘焙饰品水晶球人偶装饰-淘宝网 (taobao.com)

电池采用带保护板的成品软包锂电,大小为602030

3.7v聚合物锂电池602030点读笔记录仪录音笔插卡音箱通用充电电池-淘宝网 (taobao.com)

原理图

PCB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetson Orin Nano_安装jtop指令(遇到循环提示重启服务的问题)、查看系统运行情况及基本信息

1、安装jtop 1.1、如果一切顺利的话,流程如下 安装jetson-stats(前提:安装pip3) sudo pip3 install jetson-stats 执行jtop,根据提示需要重启服务 sudo systemctl restart jtop.service sudo jtop 1.2、循环提示…

深入理解Java中资源加载的方法及Spring的ResourceLoader应用

在Java开发中,资源加载是一个基础而重要的操作。本文将深入探讨Java中两种常见的资源加载方式:ClassLoader的getResource方法和Class的getResource方法,并介绍Spring框架中的ResourceLoader的应用。 1. 资源加载的两种方式 1.1 ClassLoader…

Spring见解4 基于注解的AOP配置

5.基于注解的AOP配置 5.1.创建工程 5.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation…

基于群居蜘蛛算法优化的Elman神经网络数据预测 - 附代码

基于群居蜘蛛算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于群居蜘蛛算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于群居蜘蛛优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

Python如何实现微信支付功能代码示例

微信支付是一种基于互联网的移动支付服务&#xff0c;由中国的即时通讯工具微信提供。用户可以通过微信支付在微信平台上进行在线支付、转账和收款。微信支付支持多种支付方式&#xff0c;包括银行卡支付、微信钱包余额支付、扫码支付等。用户可以用微信支付购买商品、支付账单…

【Java】LockSupport原理与使用

LockSupport&#xff1a; 关键字段&#xff1a; private static final sun.misc.Unsafe UNSAFE;private static final long parkBlockerOffset; Unsafe&#xff1a;"魔法类"&#xff0c;较为底层&#xff0c;在LockSupport类中用于线程调度(线程阻塞、线程恢复等)。…

【递归】C++算法:124 二叉树中的最大路径和

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 递归 124. 二叉树中的最大路径和 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#x…

【响应式编程-03】Lambda表达式底层实现原理

一、简要描述 Lambda的底层实现原理Lambda表达式编译和运行过程 二、Lambda的底层实现原理 Lambda表达式的本质 函数式接口的匿名子类的匿名对象 反编译&#xff1a;cfr-0.145.jar 反编译&#xff1a;LambdaMetafactory.metafactory() 跟踪调试&#xff0c;转储Lambda类&#x…

HarmonyOS 应用开发学习笔记 ets自定义组件及其引用 @Component自定义组件

Component注解的作用是用来构建自定义组件 Component组件官方文档 自定义组件具有以下特点&#xff1a; 可组合&#xff1a;允许开发者组合使用系统组件、及其属性和方法。 可重用&#xff1a;自定义组件可以被其他组件重用&#xff0c;并作为不同的实例在不同的父组件或容器…

防止源代码泄露的10大措施

当下&#xff0c;防止源代码泄露成为了企业和开发团队关注的焦点。 我在网上就看到过这样的案例&#xff1a; 2017年&#xff0c;一位前员工将包含公司商业机密的代码上传到了GitHub的公有仓库中&#xff0c;造成大疆源代码泄露。攻击者能够通过这些源代码访问客户敏感信息&am…

嵌入式系统复习--基于ARM的嵌入式程序设计

文章目录 上一篇编译环境ADS编译环境下的伪操作GNU编译环境下的伪操作ARM汇编语言的伪指令 汇编语言程序设计相关运算操作符汇编语言格式汇编语言程序重点C语言的一些技巧 下一篇 上一篇 嵌入式系统复习–Thumb指令集 编译环境 ADS/SDT IDE开发环境&#xff1a;它由ARM公司开…

毛虫目标检测数据集VOC格式550张

毛虫&#xff0c;一种令人惊叹的生物&#xff0c;以其独特的外貌和习性&#xff0c;成为了自然界中的一道亮丽风景。 毛虫的外观非常特别&#xff0c;身体呈圆柱形&#xff0c;表面覆盖着许多细小的毛发&#xff0c;这使得它们在叶子上伪装得非常好。它们的头部有一对坚硬的颚…

vmware安装centos 7.6 操作系统

vmware安装centos 7.6 操作系统 1、下载centos 7.6 操作系统镜像文件2、安装centos 7.6操作系统3、配置centos 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载centos 7.6 操作系统镜像文件 这里选择 2018年10月发布的 7.6 版本 官方下载链…

flutter学习-day23-使用extended_image处理图片的加载和操作

文章目录 1. 介绍2. 属性介绍3. 使用 1. 介绍 在 Flutter 的开发过程中&#xff0c;经常会遇到图片的显示和加载处理&#xff0c;通常显示一个图片&#xff0c;都有很多细节需要处理&#xff0c;比如图片的加载、缓存、错误处理、图片的压缩、图片的格式转换等&#xff0c;如果…

代码随想录 718. 最长重复子数组

题目 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&#xff1a;长度最长的公共子数组是 [3,2,1] 。 示例 2&#xff1…

创新性文生视频模型,南洋理工开源FreeInit

文本领域的ChatGPT&#xff0c;画图领域的Midjourney都展现出了大模型强大的一面&#xff0c;虽然视频领域有Gen-2这样的领导者&#xff0c;但现有的视频扩散模型在生成的效果中仍然存在时间一致性不足和不自然的动态效果。 南洋理工大学S实验室的研究人员发现&#xff0c;扩散…

前端 -- 基础 路径 -- 相对路径 详解

目录 导语引入 &#xff1a; 相对路径 &#xff1a; 相对路径 包含哪些 &#xff1a; 同一级路径 &#xff1a; 下一级路径 &#xff1a; 上一级路径 &#xff1a; 导语引入 &#xff1a; # 大家都清楚&#xff0c;在我们日常所见到的网页里&#xff0c;要涉及好多…

imgaug库指南(五):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…

微信小程序如何搜索iBeacon设备

1.首先在utils文件夹下创建bluetooth.js和ibeacon.js 2.在 bluetooth.js文件中写入 module.exports {initBluetooth: function () {// 初始化蓝牙模块wx.openBluetoothAdapter({success: function (res) {console.log(蓝牙模块初始化成功);},fail: function (res) {console.l…

C++ 释放指针

在C中&#xff0c;释放指针通常使用delete或delete[]操作符&#xff1b; 如果指针指向的是单个对象&#xff0c;可以使用delete操作符进行释放&#xff1b; 在释放完内存后&#xff0c;最好将指针置为nullptr&#xff0c;以避免出现悬空指针&#xff08;dangling pointer&#…