石版纸是一种半透明的蚀刻物体,一旦背光就会显示图像。借助现成的 3D 打印机,可以轻松制作各种形状和尺寸的石版纸。
这个项目的目的是创建一个石纸灯,而不是只是静止的,我希望灯可以旋转,创建一个 360 度的石纸“灯罩”,让所有侧面都可见,而无需观众移动自己。
在最初的设计之后,我决定添加一个巨大的按钮会很有趣,按下该按钮将为每个人启动音乐和灯光秀。
该项目由5个主要部分组成:
我们将要生成的石蜡纸高 152 毫米,周长为 375 毫米,因此直径为 119 毫米。此信息对于确保创建立石纸的图像具有正确的长宽比非常重要。长度变成高度,宽度变成圆周。
上述测量值意味着周长与高度的比率为 2.47。在实践中,这可能会因石版纸的厚度和 3d 打印机的精度而异。
我在我的 lithophane 上放了三张图片,但重要的是确保宽度是高度的 2.47 倍。我在图像之间(和末端)添加了灰色条,以在图片之间创建一些分隔。
进入网站后,您需要将样式设置为“外曲线”。然后在“设置”下,将“最大尺寸”设置为 375 毫米,将“曲线”设置为 360。使用图片选项卡上传您的图片,然后等待网站生成石版纸。然后下载按钮将下载您的 lithophane STL。
我使用 Ultimaker Cura 来打印我的石版纸,但您可以使用您最熟悉的任何工具。确保已将填充设置为 100%。这将创造出最好看的石粉。在此步骤中,您可以确保您的高度和宽度(直径)测量值是正确的。
请注意,我花了 40 多个小时打印出高质量的石版纸。我建议以较低的质量打印测试,并在打印几厘米后停止打印,以确保它适合。
完成打印后,您可以立即在里面放一个光源来预览它的外观。
灯的核心是 Adafruit ItsyBitsy M4。这是一个功能强大且有用的电路板,非常适合驱动新像素和伺服系统等项目。它有一个特殊的 5V 输出引脚,可为这些设备提供更多电压。
ItsyBitsy 附在上面:
将所有的地面连接在一起很棘手,因为有很多。我将所有的接地都焊接到一根电线上,然后用电工胶带覆盖。
由于一些组件延伸穿过底座的盖子,因此使用连接器(如 JST)以允许它们在需要时断开连接可能是有益的。如果必须移动某些东西,它可以节省精力或拆焊电线(这是我惨痛的教训!)。
这对于伺服、neopixel 和街机按钮线特别有用。
代码相当简单;从配置和设置开始,然后是操作灯的主循环。运行时的灯会监视要按下的两个按钮之一。较小的模式按钮将交替打开 LED,使石纸旋转,然后将其关闭。按下街机按钮将触发定时动画表演。
SERVO_SPEED = 0.07 # speed to rotate the servo at
LED_FLASH_TIME = 30 # how long to flash the arcade button for
伺服速度控制灯的旋转速度。闪烁时间控制街机按钮在不使用时闪烁的时间。如果它总是闪烁它确实很烦人!
# Set up the servo
lid_servo_pwm = pulseio.PWMOut(board.D9, frequency=50)
lid_servo = servo.ContinuousServo(lid_servo_pwm, min_pulse = 420, max_pulse = 2500)
伺服设置也可能需要稍作改动。必须设置 min_pulse 和 max_pulse 以确保伺服在它应该静止时不会移动。默认值通常应该有效。
# Set up the audio playback
audio = AudioOut(board.A0)
mp3files = ["dance-mono.mp3"]
mp3files 是按下街机按钮时将播放的 MP3。由于这些设备上的空间稀少,MP3 必须短且压缩质量。由于扬声器是单声道的,因此使用立体声也没有意义。我能够拥有 5 分钟的 MP3 并具有足够的压缩率。使用 Audacity 之类的工具来编辑 MP3。
# define animation for the arcade button
rainbow = Rainbow(pixel_wing_vertical, speed=0.1, period=2)
有一个部分定义了按下 Arcade 按钮时将播放的所有动画(以“#define animations”的注释开头。这些是将播放的原始动画,而不是将使用的序列和时间。
除了Volume和TimedAnimatedSequence之外,使用的所有动画都来自 Adafruit CircuitPython LED Animation 库。我基于 Adafruit 库编写了这两个。
# modes the program can be index
MODE_OFF = 0 # nothing running
MODE_LIGHT = 1 # neopixels lit only
MODE_SPIN = 2 # neopixels lit and servo moving
MODE_MUSIC = 3 # music show is on
MODE_MAX = 3 # only the arcade button will get to MUSIC
主循环是一个永远持续的while循环。它检查按钮并根据用户的操作更改当前模式。
唯一感兴趣的模式是播放动画序列的 MODE_MUSIC。
核心是设置TimedAnimationSequence :
animations = TimedAnimationSequence(
solid, 12,
loud, 20, # 32
rainbow, 16.5, # 48.5
rainbow_comet, 14, # 1:02.5 62.5
rchase2, 36, # 1:38.5 98.5
rainbow, 16.5, # 1:55 115
rainbow_comet, 14, # 2:09 129
loud, 33, # 2:42 162
clear_sparkle, 16, # 2:58 178
rcomet2, 14, # 3:12 192
rainbow_sparkle, 32, # 3:44 224
rchase2, 16, # 4:00 240
loud, 37, # 4:37 277
clear_sparkle, 5,
solid, 60,
auto_clear=True,
auto_reset=True,
)
每行定义要播放哪个先前定义的动画以及播放多长时间。我使用注释来跟踪运行时间,以帮助将动画与音乐同步。
齿轮箱由几个没有外壳的齿轮组成。您必须打印两个ComboGear.stl和一个GearBox Base.stl 、GearBox Lid.stl 、Spur Gear.stl和Drive Gear.stl 。驱动齿轮稍后将安装在伺服系统上。
齿轮松散地位于盒子的底部,盖子会将它们全部固定到位。我建议将盖子固定到位,以确保在将盖子涂在底座上之前,一切都可以自由转动。对于 3D 打印部件,您可能需要旋转一段时间以松开它们并确保它们正常工作。
外壳组件由三个主要部分组成:
支架、齿轮箱和伺服箱
这三个部分用环氧树脂连接在一起。支架顶部有一个凸起的小凹坑,与齿轮箱底部的小孔相匹配。齿轮与支架的中心对齐。
要安装伺服箱,请插入带有驱动齿轮的伺服。使用它来确定伺服箱的适当高度。驱动齿轮应与齿轮箱的下齿轮干净啮合。重要的是它不能与两个齿轮啮合,否则什么都不会移动!伺服箱也附有环氧树脂。
灯座和按钮
底座包含运行灯的电子设备。ItsyBitsy M4 和音频放大器有支架,但我建议使用热胶或胶带以确保它们固定到位。用于打开和关闭灯泡的电源开关和模式按钮安装在外壳的侧面。我建议再次使用热胶将它们固定到位。
扬声器和可选电池(我后来拆掉了)位于机箱的空白区域,应该再次粘上。
打开灯光秀的街机按钮拧入底盖件。在电线上使用连接器可以使其更容易连接,否则您必须在拧入后将按钮焊接到 ItsyBitsy。
盖子按扣安装到底座上,以便在必要时拆卸。
Lithophane、盖子和连接一切
设置好底座后,下一步就是安装齿轮箱支架。它用环氧树脂连接到中心的底盖上。伺服箱朝向电源开关所在的底座背面。
胶合支架后,neopixel LED 将连接到支架的侧面。同样在此步骤中,建议在新像素末端使用连接器,而不是直接焊接。
许多新像素上都有塑料涂层,这使得胶合变得困难。你的选择是去除塑料和胶水,或者使用大量的热胶水(即使这样它也给我带来了麻烦!)。
连接底盖后,您需要将立石环氧树脂涂在立石盖上。这允许伺服系统和齿轮箱一致地旋转整个组件。
胶水固定好齿轮箱顶部的齿轮后,将其插入石粉盒盖底部的槽中。有一个螺丝孔(M3 尺寸)用于将盖子固定到齿轮上。
有了它,您就可以开始操作了!
看灯在行动!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !