基于CircuitPython与WS2812B的智能木质灯箱制作全攻略
1. 项目概述一个融合了木工、电子与编程的创意灯箱几年前我偶然在朋友家看到一个手工制作的木质夜灯暖黄色的光从木头的纹理和特意钻出的小孔中透出来氛围感直接拉满。当时心里就痒痒的想着自己也得做一个。但作为一个“贪心”的创客总觉得单纯的亮灯少了点意思如果能用手指碰一下就能换颜色再拧个旋钮就能调明暗那才够酷。于是这个“基于CircuitPython的LED木质灯箱”的想法就诞生了。这个项目的核心是用一块叫Circuit Playground Bluefruit的微控制器板子作为大脑它内置了传感器和可编程的LED灯珠但我们这里用它来驱动外部的LED灯带实现更丰富的灯光效果。通过一根裸露的铜线实现电容触摸感应来切换灯光颜色再用一个传统的电位器就是那个可旋转的旋钮来无极调节亮度。最后所有这些电子部件都被巧妙地收纳进一个自己切割、组装、打磨的木质灯箱里。它不仅仅是一个灯更是一个放在床头、书桌或客厅角落的个性化装饰品你可以通过触摸与它互动用旋钮找到最适合当下心情的亮度。它非常适合有一定动手能力对Arduino或MicroPython有初步了解又想尝试点融合了手工制作的电子项目的朋友。即使你是木工新手或编程初学者也没关系我会把每个步骤拆解得足够细从木料切割的注意事项到电路连接的“防呆”技巧再到CircuitPython代码的逐行解析确保你能跟着做出来。整个项目成本可控大部分工具家庭常备核心的电子部件也很容易买到是一个能带来巨大成就感的周末工程。2. 核心设计思路与物料选型解析2.1 为什么选择CircuitPython与Circuit Playground Bluefruit做智能灯光项目可选的微控制器很多比如经典的Arduino Uno、功能强大的ESP32。我最终选择Adafruit的Circuit Playground Bluefruit后文简称CPB并采用CircuitPython进行开发是基于以下几个非常实际的考量首先开发效率极高。CircuitPython是一种基于Python的开源编程语言语法简单直观无需复杂的编译和烧录过程。你写好代码后只需将.py文件拖入CPB在电脑上出现的U盘名为CIRCUITPY里代码会自动运行。这种“保存即运行”的模式对于调试灯光颜色、触摸灵敏度参数来说简直是神器省去了大量等待编译和上传的时间。其次CPB板载资源丰富接线极其简单。这块板子本身就是一个“创客瑞士军刀”它自带10个可编程的RGB NeoPixel LED、运动传感器、温度传感器、光线传感器、扬声器和多个触摸感应引脚。在我们的项目里我们主要利用它的电容触摸引脚和模拟输入引脚。这意味着我们不需要额外购买触摸传感器模块只需用一根导线连接到指定引脚如A5CircuitPython内置的touchio库就能将其变为一个高灵敏度的触摸按键。这大大简化了电路降低了制作门槛和故障率。最后蓝牙功能预留了扩展空间。CPB支持蓝牙低功耗BLE虽然本项目未使用但它为未来升级留下了可能。比如你可以后续开发一个手机App用手机来遥控灯箱的颜色和模式而无需改动任何硬件。注意市面上还有一款叫Circuit Playground Express的板子它不支持蓝牙但其他功能与本项目所用的Bluefruit版基本一致。如果你的项目确定不需要蓝牙选择Express版本可以节省一些成本。2.2 核心物料清单与选型要点根据原始清单我整理并补充了更详细的选型建议和备选方案1. 核心控制与电子部分微控制器Adafruit Circuit Playground Bluefruit。这是项目的大脑。购买时请确认是Bluefruit版本。LED灯带建议使用WS2812B可寻址RGB LED灯带俗称NeoPixel。选择每米30颗或60颗的密度即可长度约半米足够。务必确认是5V工作电压的型号。WS2812B只需要一根信号线就能控制所有灯珠的颜色接线非常简洁。电位器推荐使用10k欧姆的线性B型电位器。这是最通用的型号用于调节亮度平滑且稳定。旋钮款式根据个人喜好选择。电池一个5V输出的USB移动电源充电宝和一根Micro USB数据线。这是最安全、方便的供电方案。CPB板有USB口可以直接供电并同时为板载电路和LED灯带供电通过Vout引脚。连接线若干杜邦线公对公、公对母以及几根鳄鱼夹线。鳄鱼夹在临时测试和连接铜线触摸点时非常方便。铜线一小段约10-15厘米单芯绝缘铜线用于制作触摸点。剥开一端的绝缘皮露出约2-3厘米的铜芯即可。2. 木工与结构部分木材3/8英寸约9.5毫米厚的胶合板是理想选择。它成本低、质地均匀、不易变形。松木、椴木等实木也可用但价格稍高且需注意防裂。尺寸至少需要一块能裁出所有箱体板件的大板。粘合剂木工白乳胶。粘接力强干燥后透明非常适合木材拼接。紧固件可选小号的气枪钉或手工钉。用于在胶水干燥前临时固定使组装更轻松。没有的话用夹子或重物压住同样可行。钻头开孔器或Forstner钻头。用于在箱体侧面钻出漂亮的圆形透光孔。孔径根据喜好选择7/8英寸约22毫米或更大效果更佳。另需一个与电位器轴径匹配的钻头通常为6-8毫米用于顶部开孔。3. 工具清单切割工具曲线锯、手锯或台锯。曲线锯最适合家庭用户可以切割曲线和直线。测量与标记工具直角尺、卷尺、铅笔。钻孔工具手电钻或台钻。打磨工具砂纸建议从180目开始到320目结束、砂纸架或小型砂光机。组装工具锤子如果用钉、夹子、刷子涂胶水。2.3 系统工作原理与信号流理解整个系统如何工作有助于你在调试时快速定位问题。整个项目的信号流可以概括为“输入-处理-输出”输入感知电容触摸当你的手指靠近或触摸连接到CPB A5引脚的铜线时会轻微改变该引脚与电路板地线之间的电容。CPB内部的touchio库持续检测这个电容值的变化当变化超过设定的阈值时就判定为一次“触摸”事件。电位器调节电位器本质上是一个可调电阻。旋转旋钮会改变其中心抽头信号脚与两端之间的电阻值。我们将电位器两端接在3.3V和GND之间中心抽头接A3引脚。这样A3引脚就能读取到一个在0到3.3V之间变化的模拟电压值。核心处理CircuitPython主循环不断执行以下任务 a. 调用touchio检查A5引脚是否被触摸。如果被触摸则切换一个代表“颜色模式”的变量例如从0变为1再变为2循环。 b. 通过analogio读取A3引脚的模拟电压值并将其映射map函数到一个适合LED亮度的范围例如0-255。 c. 根据当前的“颜色模式”和读取到的“亮度值”计算出一组RGB颜色值。输出执行计算出的RGB颜色值通过neopixel库发送到连接在CPB A1引脚上的WS2812B LED灯带。灯带上的每一个LED灯珠都会根据接收到的信号点亮呈现出我们设定的颜色和亮度。这个过程每秒运行数百次因此你的触摸和旋钮调节都能得到实时、流畅的响应。3. 木质灯箱箱体的制作详解3.1 精确下料与切割技巧箱体尺寸为经典的长方体原始设计尺寸基于9.5mm厚板材非常合理。我将其转换为毫米制并加入了加工余量的考虑方便大家操作底板165mm (长) x 152mm (宽) x 9.5mm (厚) | 1块顶板152mm (长) x 152mm (宽) x 9.5mm (厚) | 1块长侧板152mm (长) x 102mm (宽) x 9.5mm (厚) | 2块短侧板134mm (长) x 102mm (宽) x 9.5mm (厚) | 2块为什么短侧板长度是134mm因为箱体是底板承托四块侧板的结构。底板长165mm宽152mm。两块长侧板152mm贴在底板的长边上两块短侧板则需要填充底板两侧剩下的空间同时还要扣除两侧长侧板的厚度。计算式为165mm - 9.5mm - 9.5mm 146mm等等这里容易出错。正确的逻辑是短侧板的长度等于底板的宽度152mm减去两块短侧板自身的厚度。因为短侧板是夹在两条长侧板之间的。所以应该是152mm - 9.5mm - 9.5mm 133mm。原始资料给的5.28英寸约134mm是近似值多出的1mm可能是为胶缝预留的这个尺寸完全可用组装时会更轻松。切割实操要点画线用直角尺和铅笔在所有板材上清晰、准确地画出切割线。记住老木匠的格言“量两次切一次”。在线的外侧废料一侧进行切割这样即使有微小偏差工件尺寸也是准确的。切割使用曲线锯时确保工件被牢牢固定可以使用F夹固定在桌边。沿着画好的线平稳推进锯子不要用力过猛让锯条自己工作。如果你是新手可以先在废料上练习一下。锯路补偿这是很多新手忽略的关键点锯条本身是有厚度的称为“锯路”切割时会“吃掉”一部分木材。如果你紧贴着画好的线切割最终得到的工件尺寸会小于你画的尺寸。因此切割时要让锯条走在线的外侧远离工件的一侧。对于精度要求不高的本项目这个影响不大但养成这个意识对未来的木工项目至关重要。3.2 箱体组装与结构强化切割好的板材边缘可能会有毛刺先用180目砂纸简单打磨一下接触面这样胶合效果更好。组装顺序至关重要将底板平放在工作台上。在其中一块长侧板的一个长边152mm边涂上均匀的木工白乳胶。胶水成细珠状即可不用太多否则挤压出来影响美观。将涂胶的长侧板立起来对齐底板的一条长边用直角尺确保它们呈90度角。如果使用钉子此时可以在内侧斜向钉入1-2颗小钉临时固定俗称“偷钉”。如果不用钉子立刻用F夹或重物从外侧施加压力固定。重复步骤2和3组装另一条长侧板。接下来组装短侧板。同样在短侧板的一个长边134mm边涂胶然后将其放入两条长侧板之间紧贴底板边缘。同样用直角尺检查内外角是否为90度并用夹子固定。重复步骤5组装另一块短侧板。让胶水在通风处静置至少24小时确保完全固化后再进行下一步操作。切勿在此阶段安装顶板关于顶板的固定原始方案是在顶板下粘两条木条作为卡槽。这是一个聪明且简单的办法。我更推荐一种可逆的固定方式使用小磁铁。在箱体上沿内侧和顶板内侧对应位置开浅槽嵌入圆形磁铁如直径10mm厚度2mm这样顶板可以轻松拿取方便日后维护或升级内部电子设备。当然粘木条是最快的方法。3.3 钻孔、打磨与表面处理钻孔透光孔在四个侧板上钻孔让灯光透出。用尺子和铅笔标记孔位。原始设计的孔位距顶边35mm间距38mm很均衡。使用开孔器钻孔时务必在木板下方垫一块废料这样钻透时不会撕裂木板背面的纤维孔缘会更光滑。电位器安装孔在顶板中心位置钻一个与电位器螺纹套直径相匹配的孔通常为7mm或8mm。可以先钻一个小导引孔再慢慢扩孔至合适尺寸确保电位器能紧密旋入。打磨胶水完全干透后就可以进行精细打磨了。这是让作品从“粗糙”变“精致”的关键一步。粗打磨用180目砂纸打磨掉所有明显的胶痕、毛刺和不平整的接缝。特别注意边角可以用砂纸对折后仔细打磨。精打磨换用320目或更高目数的砂纸顺着木材纹理方向进行整体打磨直到表面触感光滑细腻。打磨产生的灰尘很大建议佩戴口罩并在室外进行。倒角用砂纸将所有锋利的边角轻轻打磨出微小的圆弧倒角这样不仅手感好看起来也更专业。表面处理可选但强烈推荐不上漆保留原木质感很好但木材容易脏且受潮气影响。我推荐涂刷一层木蜡油或哑光清漆。木蜡油能渗入木材内部突出纹理触感温润环保性好。用布蘸取少量均匀涂抹等待15-30分钟吸收后用干布擦去多余油分即可。通常涂1-2遍。哑光清漆能形成一层保护膜更耐磨防水。使用水性清漆味道小。用刷子薄而均匀地涂刷每遍之间用细砂纸如400目轻轻打磨后再涂下一遍共2-3遍。 处理完后静置通风处干燥至少24小时。4. 电路连接与电子部分组装4.1 CircuitPython开发环境搭建在动手接线前我们需要先让CPB板子“认识”CircuitPython。下载CircuitPython固件访问Adafruit官网的CircuitPython下载页面找到“Circuit Playground Bluefruit”型号。下载最新的.uf2格式固件文件。进入引导加载程序模式用USB线将CPB连接到电脑。快速双击CPB板上的复位按钮RESET。板子上的所有LED会变成红色然后变成绿色最后电脑上会出现一个名为CPLAYBTBOOT的U盘驱动器。刷入固件将下载好的.uf2文件直接拖入CPLAYBTBOOT驱动器。驱动器会自动弹出几秒钟后电脑上会出现一个新的名为CIRCUITPY的驱动器。这说明CircuitPython已经成功运行安装代码编辑器虽然任何文本编辑器都能写代码但我推荐使用Mu Editor或VS Code with CircuitPython插件。Mu Editor是专为教育设计的对CircuitPython支持极好内置了串行监视器和代码检查功能。从Mu官网下载安装即可。4.2 核心电路连接图与接线实操这是整个项目的“经脉”务必仔细。接线原则断电操作对照无误后再通电。元件连接至 CPB 引脚说明WS2812B LED灯带数据输入 (DI)-A1控制信号线。灯带上有箭头指示数据方向请连接输入(IN/DI)端。5V-VOUTCPB的VOUT引脚可提供5V电源足以驱动一段灯带。GND-GND共地至关重要10kΩ电位器左引脚 (CCW)-GND逆时针旋转到底时输出最小电压0V。中间引脚 (Wiper)-A3信号输出脚读取模拟电压。右引脚 (CW)-3.3V顺时针旋转到底时输出最大电压3.3V。电容触摸铜线裸露铜线端-A5(通过鳄鱼夹)触摸感应输入。铜线另一端悬空或做绝缘处理。外部电源USB充电宝-CPB Micro USB口为整个系统供电。CPB会通过VOUT为灯带供电。接线步骤与技巧先连接电源和地线首先将LED灯带的GND和5V线分别接到CPB的GND和VOUT。这样可以先单独测试灯带是否正常。连接信号线将灯带的DI线接到A1。注意WS2812B灯带的数据传输是单向的务必接对方向。如果接反灯带不会亮。连接电位器对照上表连接好三根线。电位器的引脚顺序可能因品牌而异但结构通常是固定的。用万用表电阻档测量一下旋转旋钮时中间脚与任一边脚之间的电阻会从0变化到10kΩ而与另一边脚的电阻变化则相反。将电阻从0变化到10kΩ的那一边接3.3V另一边接GND。连接触摸线用鳄鱼夹一端夹住CPB的A5引脚另一端夹住剥开绝缘皮的铜线。将铜线另一端用胶带固定在灯箱外壳上一个方便触摸的位置比如侧面并确保裸露部分不会接触到其他金属部件造成短路。重要提示WS2812B灯带工作电流较大。如果灯带较长超过30颗灯珠建议使用外部5V电源直接为灯带供电同时将外部电源的GND与CPB的GND连接在一起共地。CPB的VOUT引脚输出电流有限驱动过多灯珠可能导致板子重启或损坏。本项目灯带较短使用VOUT供电是安全的。4.3 CircuitPython代码深度解析与自定义将下面的代码保存为code.py然后放入CPB的CIRCUITPY驱动器根目录。板子会自动运行。import time import board import touchio import analogio import neopixel # 硬件初始化 # 1. 初始化电容触摸引脚A5 touch touchio.TouchIn(board.A5) # 2. 初始化模拟输入引脚A3用于读取电位器 potentiometer analogio.AnalogIn(board.A3) # 3. 初始化NeoPixel灯带引脚A1灯珠数量设为30请根据实际数量修改 # brightness1.0是最大亮度我们后续用代码控制实际亮度 pixel_pin board.A1 num_pixels 30 pixels neopixel.NeoPixel(pixel_pin, num_pixels, brightness1.0, auto_writeFalse) # 全局变量定义 color_mode 0 # 颜色模式索引0, 1, 2... max_color_modes 4 # 总共定义了多少种颜色模式 last_touch_state False # 记录上一次触摸状态用于检测“按下”事件 # 预定义一些颜色组合 (R, G, B)每个值范围0-255 COLORS [ (255, 50, 50), # 模式0: 暖红色 (50, 255, 100), # 模式1: 草绿色 (80, 100, 255), # 模式2: 天空蓝 (255, 200, 50), # 模式3: 橙黄色 # 你可以在这里添加更多颜色例如 # (255, 0, 255), # 品红色 # (0, 255, 255), # 青色 ] # 辅助函数 def read_potentiometer(): 读取电位器值并映射到0.0到1.0的亮度比例 # potentiometer.value范围是0-65535 (16位ADC) raw_value potentiometer.value # 映射到0.0 - 1.0并限制范围 brightness raw_value / 65535.0 # 添加一个死区避免旋钮在最低位时还有微光 if brightness 0.05: brightness 0.0 return brightness def apply_color_and_brightness(mode_index, brightness_ratio): 根据颜色模式和亮度比例计算并设置所有灯珠的颜色 base_color COLORS[mode_index] # 根据亮度比例调整基础颜色 adjusted_color ( int(base_color[0] * brightness_ratio), int(base_color[1] * brightness_ratio), int(base_color[2] * brightness_ratio) ) # 将调整后的颜色应用到所有灯珠 pixels.fill(adjusted_color) pixels.show() # 更新灯带显示 # 主循环 print(LED木质灯箱启动) print(触摸铜线切换颜色旋转旋钮调节亮度。) while True: # 1. 检测触摸边缘触发防止长按连续切换 current_touch_state touch.value if current_touch_state and not last_touch_state: # 检测到从“未触摸”到“触摸”的上升沿 color_mode (color_mode 1) % max_color_modes print(f颜色模式切换至: {color_mode}) last_touch_state current_touch_state # 2. 读取当前亮度 brightness read_potentiometer() # 3. 应用颜色和亮度 apply_color_and_brightness(color_mode, brightness) # 4. 短暂延时降低CPU占用也使得触摸检测更稳定 time.sleep(0.05)代码关键点解析防抖与边缘检测(last_touch_state)这是实现可靠触摸切换的核心。如果直接检测touch.value为True就切换模式手指按住不放时会疯狂连续切换。我们通过记录“上一次的状态”只在状态从False变为True的瞬间上升沿才触发一次动作完美解决了这个问题。亮度映射与死区(read_potentiometer函数)电位器的原始读数范围是0-65535。我们将其除以65535.0得到0.0到1.0的比例。if brightness 0.05: brightness 0.0这行代码创建了一个“死区”。因为电位器在最低位时可能仍有微小阻值导致灯无法完全熄灭。这个死区设置让旋钮拧到最左端约5%的范围内亮度强制为0实现了完美的关灯效果。颜色计算(apply_color_and_brightness函数)颜色存储在COLORS列表里每个颜色是一个RGB元组。调整亮度时不是直接修改NeoPixel的brightness属性那会影响色彩饱和度而是将RGB每个分量乘以亮度比例。这样在调暗时颜色色调能保持得更自然。auto_writeFalse在初始化NeoPixel时设置auto_writeFalse意味着我们修改了像素颜色后必须调用pixels.show()才会实际更新灯带。这避免了频繁的自动更新能让我们一次性设置好所有灯珠颜色后再统一刷新效率更高灯光变化也更同步。如何自定义你的灯箱增加/修改颜色直接在COLORS列表里添加或修改RGB元组即可。例如添加(148, 0, 211)就是深紫色。改变灯珠数量修改num_pixels 30为你灯带实际拥有的灯珠数量。实现呼吸灯/渐变效果你可以创建一个函数让亮度比例brightness_ratio按照正弦波等规律自动变化而不是只从电位器读取。在主循环中调用这个函数就能实现自动呼吸效果。此时可以将电位器功能改为调节呼吸速度。4.4 内部布局与最终组装电路测试无误后就可以进行最终组装了固定电子部件将CPB板子用双面胶或尼龙扎带固定在灯箱底板的中央。将电位器从灯箱顶板内侧的孔中穿出用配套的螺母从外侧锁紧固定。如果松动可以在内侧垫一小片橡胶或滴一点热熔胶辅助固定。将触摸铜线用热熔胶或胶带固定在预设的触摸位置如侧板内壁确保裸露部分朝向用户且不易被内部线路意外触碰。布置LED灯带将灯带沿着灯箱底部内壁盘绕。可以使用透明的双面胶如VHB胶带或小的塑料卡扣来固定。避免将灯带贴得太靠近透光孔否则你会看到明显的点状光斑而不是均匀的面光。让光线在箱体内经过一次反射再透出效果更柔和。将灯带的数据输入端尽量靠近CPB的A1引脚连接线不要太长最好小于30厘米以减少信号干扰。理线与收纳用尼龙扎带或线卡将多余的导线捆扎整齐避免杂乱。确保没有任何导线被尖锐的木刺或螺丝挤压。将USB充电宝也放入箱底。可以在底板开一个细槽让USB线穿出方便充电和开关。或者使用带开关的充电宝将开关部分露在箱外。合盖测试盖上顶板或磁吸固定接通USB电源。触摸铜线观察灯光颜色是否按预期循环切换。旋转电位器旋钮观察灯光亮度是否平滑变化能否完全熄灭。一切正常后你的个性化智能LED木质灯箱就大功告成了5. 故障排查与进阶优化指南即使按照步骤操作也可能会遇到一些小问题。这里列出一些常见情况及其解决方法。5.1 常见问题速查表现象可能原因排查步骤与解决方案灯带完全不亮1. 电源未接通或没电。2. 灯带数据线方向接反。3. CPB板未正确启动或代码未运行。1. 检查充电宝是否有电USB线是否插紧。2. 检查灯带DI线是否接在CPB A1且灯带箭头方向指向远离CPB的一端。可尝试调换DI线接法。3. 检查CPB板上的LED是否亮起应有电源灯。连接电脑查看是否出现CIRCUITPY盘符检查code.py文件是否存在。灯带闪烁、乱色或部分不亮1. 电源功率不足。2. 信号干扰或数据线过长。3. 共地GND连接不良。1. 换用输出电流更大的充电宝2A以上。尝试用外部5V电源单独给灯带供电并与CPB共地。2. 缩短CPB A1到灯带DI的连线确保连接牢固。3. 仔细检查CPB的GND、灯带的GND、电位器的GND是否都可靠连接在一起。这是最常见的原因触摸无反应1. 触摸线未接对引脚或接触不良。2. 代码中触摸引脚定义错误。3. 触摸灵敏度问题。1. 确认铜线通过鳄鱼夹牢固连接到A5引脚。2. 检查代码中touchio.TouchIn(board.A5)的引脚号是否正确。3. CircuitPython的touchio默认灵敏度较高。如果环境潮湿或有干扰可以尝试在代码中初始化后添加touch.threshold touch.raw_value 100数值可调来手动设置阈值。电位器调节不灵敏或范围不对1. 电位器三根线接错。2. 代码中映射范围不正确。1. 用万用表确认电位器中间脚接A3两边脚分别接3.3V和GND。调换两边脚接线可反转亮度调节方向。2. 在主循环中添加print(potentiometer.value, brightness)打印原始值和计算后的亮度比例观察其变化范围是否为0-65535和0.0-1.0。颜色切换太快或长按时连续切换触摸检测逻辑没有防抖。确认代码中使用了last_touch_state进行边缘检测。确保主循环中的time.sleep(0.05)存在给系统一个短暂的稳定时间。灯光颜色与预设不符1. RGB颜色值定义错误。2. 灯带型号非WS2812B。1. 检查COLORS列表中的RGB值确保每个数字在0-255之间。2. 极少情况有些灯带是GRB顺序。如果是需要调整颜色元组的顺序例如将(255,50,50)改为(50,255,50)。5.2 进阶优化与创意扩展基础功能实现后你可以尝试以下升级让灯箱更具个性增加灯光模式目前的代码是单色模式切换。你可以修改代码实现更多动态效果。彩虹渐变循环使用wheel()函数让所有灯珠循环显示彩虹色。音乐律动虽然CPB没有麦克风但你可以通过3.3V引脚和A0引脚自制一个简单的压电陶瓷片声音传感器让灯光随环境声音闪烁。定时与光控利用CPB板载的光线传感器实现“天黑自动亮天亮自动灭”的功能。优化外观与交互触摸电极美化不用裸露的铜线可以尝试在木箱表面镶嵌一块导电铜箔胶带或一块金属装饰片将其连接到A5引脚这样触摸区域更美观。旋钮装饰如原始项目所示3D打印一个可爱的小物件粘在电位器旋钮上。或者使用现成的复古风格旋钮帽。灯光散射处理在灯箱内侧粘贴一层硫酸纸或磨砂亚克力板可以让透出的光线更加均匀柔和看不到单个灯珠。结构改进可拆卸底座为灯箱增加一个带线槽的底座将所有电子部件集成在底座内灯箱本体成为一个纯粹的“灯罩”方便搬运和清洁。无线升级利用CPB的蓝牙功能编写一个简单的手机App可以使用Adafruit的Bluefruit Connect App或自己用MIT App Inventor制作实现手机遥控颜色、亮度、模式切换彻底摆脱物理触摸和旋钮。这个项目的魅力在于它提供了一个坚实的起点。电路和代码框架是稳定的而木工造型、灯光效果和交互方式都可以成为你发挥创意的画布。从做出第一个能亮、能调、能触摸的灯箱那一刻起你已经掌握了智能硬件项目从设计、制作到调试的完整流程。接下来如何让它变得更“你”就完全取决于你的想象力了。