0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用树莓派Pico做一个钢铁侠反应炉?

jf_zGNBEhbi 来源:趣无尽 2023-08-17 09:49 次阅读

在本教程中,我们将使用树莓派 Pico 来控制 31 个单独可寻址的 LED 灯,它们安装在两片亚克力塑料圆盘之间。其中一片圆盘上涂有胶粘镜片,另一片圆盘上贴有单向镜膜;这样可以给 LED 灯带制造出 3D 无限效果。

不过,树莓派目前还没有自己的”等离子聚变能源”,所以我们还得用充电电池,然后把所有东西封装在一个 3D 打印的外壳中。

组件清单

树莓派 Pico
柔性条形彩色像素 LED 灯带(通常以 1 米长度出售;我们使用了144 个 WS2812B 的灯带,并将其切割为 31 个 LED 的长度,剩余的部分可以用于其他项目)
3mm 厚的亚克力板材,足够切割两块直径为 70mm 的圆盘
自粘式柔性镜片瓦(不是玻璃)
单向镜自粘膜(用于阻挡太阳的窗贴式膜片)
USB-C 5V 1A TP4506 充电板(或者使用 Micro USB 接口的等效充电板)
可充电的 3.7V 1100mAh 603449 锂离子电池
2 位 3P SPDT 面板安装微型滑动开关,锁定开关
约 100cm 的 26AWG 硅胶绝缘铜线(或类似线材)
强力胶水
3D 打印的外壳零件(STL 设计文件可以文末免费获取)

在初始设置过程中,你还需要:一台电脑,一根 Micro USB 线和焊接设备和材料(本项目中的焊接量很少,所以如果你不擅长或者不会焊接,也不用担心)。

安装固件

树莓派为树莓派 Pico 提供了详细的文档,不过在这一步,非常简单,我们只需要拖动固件到Pico上就行(就像把文件拷贝到 U 盘上一样)。

在你的计算机上

下载适用于最新版本 Pico MicroPython 固件的 UF2 文件。MicroPython 是一种针对微控制器优化的 Python 实现,适合各种水平的程序员

如果你的 Pico 还没有显示为 RPI-RP2 驱动器,你需要检查一下你的电脑是否已正确安装了 Pico 的驱动程序。

你可以按住 Pico 上的 BOOTSEL 按钮(位于 USB 插口旁边的小按钮),同时将连接了 Pico 的 Micro USB 插入到电脑上来将 Pico 设置为启动器模式。

然后,Pico 将会显示为一个名为 RPI-RP2 的驱动器,如下所示(以 macOS 为例):

4b49ac86-3c4d-11ee-ac96-dac502259ad0.png

给 Pico 编程

下载、安装并打开一个名为 Thonny 的 Python 集成开发环境(IDE)。后面我们会用这个给Pico编程。确认 Pico 仍然连接着,并且 Thonny 的界面应该是这样的:

4b576ef2-3c4d-11ee-ac96-dac502259ad0.png

如果你在 Shell 窗口中看到 >>>,那么你已经成功连接到 Pico 并启用了交互式会话,准备开始编程。如果你没有看到这个提示,那么你需要检查 Thonny 的设置是否正确。

点击 Thonny 窗口的右下角,确保选择了 MicroPython(Raspberry Pi Pico)解释器;如果没有选择,请选择它。

如果由于某种原因没有成功地刷写固件,Thonny 可能会提示你在这个阶段安装它;在这种情况下,尝试重新刷写固件。如果Pico 仍然没有显示为连接状态,那需要断开连接并重新连接,然后按下 Thonny 顶部菜单栏的红色停止标志来重置一下。

然后,你应该就可以在 Shell 窗口中看到 >>> 提示了,说明我们已经连接成功。

将以下代码复制粘贴到空白且尚未保存的 Thonny 程序窗口中:

import array, time
from machine import Pin
import rp2


# Configure the number of WS2812 LEDs.
NUM_LEDS = 31
PIN_NUM = 28
brightness = 1


@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
    T1 = 2
    T2 = 5
    T3 = 3
    wrap_target()
    label("bitloop")
    out(x, 1)               .side(0)    [T3 - 1]
    jmp(not_x, "do_zero")   .side(1)    [T1 - 1]
    jmp("bitloop")          .side(1)    [T2 - 1]
    label("do_zero")
    nop()                   .side(0)    [T2 - 1]
    wrap()




# Create the StateMachine with the ws2812 program, outputting on pin
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(PIN_NUM))


# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1)


# Display a pattern on the LEDs via an array of LED RGB values.
ar = array.array("I", [0 for _ in range(NUM_LEDS)])


##########################################################################
def pixels_show():
    dimmer_ar = array.array("I", [0 for _ in range(NUM_LEDS)])
    for i,c in enumerate(ar):
        r = int(((c >> 8) & 0xFF) * brightness)
        g = int(((c >> 16) & 0xFF) * brightness)
        b = int((c & 0xFF) * brightness)
        dimmer_ar[i] = (g<<16) + (r<<8) + b
    sm.put(dimmer_ar, 8)
    time.sleep_ms(10)


def pixels_set(i, color):
    ar[i] = (color[1]<<16) + (color[0]<<8) + color[2]


def pixels_fill(color):
    for i in range(len(ar)):
        pixels_set(i, color)


def color_chase(color, wait):
    for i in range(NUM_LEDS):
        pixels_set(i, color)
        time.sleep(wait)
        pixels_show()
    time.sleep(0.2)


def wheel(pos):
    # Input a value 0 to 255 to get a color value.
    # The colours are a transition r - g - b - back to r.
    if pos < 0 or pos > 255:
        return (0, 0, 0)
    if pos < 85:
        return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
        pos -= 85
        return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)




def rainbow_cycle(wait):
    for j in range(255):
        for i in range(NUM_LEDS):
            rc_index = (i * 256 // NUM_LEDS) + j
            pixels_set(i, wheel(rc_index & 255))
        pixels_show()
        time.sleep(wait)


BLACK = (0, 0, 0)
RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)
WHITE = (255, 255, 255)
COLORS = (BLACK, RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE)




while True:


    print("fills")
    for color in COLORS:
        pixels_fill(color)
        pixels_show()
        time.sleep(0.2)


    print("chases")
    for color in COLORS:
        color_chase(color, 0.01)


    print("rainbow")
    rainbow_cycle(0)

Thonny 的界面现在看起来是这样的:

4b845f48-3c4d-11ee-ac96-dac502259ad0.png

使用 MicroPython 的一个优点是它的很多代码都是用可读性强的英语编写的。比如,在这个程序的开头,我们可以看到 Pico 将通过引脚 28 控制 31 个 LED,以最大亮度显示(亮度为 0-1 的比例,其中 0.5 表示 50% 的亮度)。

这个程序的剩余部分会指示 Pico 重复显示图案和颜色。

点击 File 然后选择 Save as…

4bc00e30-3c4d-11ee-ac96-dac502259ad0.png

4be01072-3c4d-11ee-ac96-dac502259ad0.png

4c01915c-3c4d-11ee-ac96-dac502259ad0.png

组装硬件

3D 打印的部件

需要四个 3D 打印的零件来容纳所有的组件:背板、主体、Pico 支架和前盖。我们只需要将它们粘在一起组装成完整的装置就行。

你可以在文末免费下载这些 3D 打印文件。建议使用易于打印的材料,比如 PLA 或 PETG 塑料丝材料来打印。

切割和准备亚克力圆盘

对于这个项目,我们需要两块厚度为 3mm,直径为 70mm 的亚克力圆盘,其中一块圆盘需要在中央钻一个直径约为 5mm 的孔,用于通过导线。

如果你可以使用激光切割机,制作这些部件很简单。或者你可以找出你的旧文具盒,找到圆规。使用木工锯切割出一个直径为 70mm 的圆形,然后用砂纸或锉刀修整边缘。最终的圆盘不需要完全无瑕疵,因为后续的步骤会遮盖这些小瑕疵。

其中一块圆盘在中心钻一个直径为 5mm 的孔,用于以后通过导线。

4c4b830c-3c4d-11ee-ac96-dac502259ad0.png

在柔性粘性镜片上标记一个70mm的圆,在单向镜自粘膜上标记另一个同样大的圆。使用剪刀剪裁出圆形,而且可以剪得非常圆。

确保从亚克力圆片上撕掉了所有的保护层,然后依次撕掉镜片背面的粘性支撑层。

把镜片贴到带有孔的圆片上,这个圆片会被用于安装我们的Pico,然后将一片单向镜膜贴到另一个圆片上。

布线和焊接电子器件

反应炉底部将会包含可充电电池、开关和 USB-C 充电板,这些我们需要将它们粘合到 3D 打印切割件内部的适配插槽中。

在这个阶段,我们需要进行一些电线的剪切、剥离和焊接工作。

根据下面的照片,确保将电池的正负极线连接到正确的 USB-C 充电板正负极输入上,并将板的正输出线焊接到滑动开关的中间引脚上。

开关的正极线可以焊接到两个外侧开关引脚的任意一个上:

4c86629c-3c4d-11ee-ac96-dac502259ad0.png

接下来,将另外三根导线直接焊接到 Pico 的背面。这些导线的长度应该足够完成后面组装过程中的连线电路:大约 20cm 的长度应该足够了。

为了给 Pico 提供电源,还需要将红色和黑色导线分别连接到标有 VBUS 和 GND 的引脚上。

我们需要第三根导线(蓝色),在上面的照片中显示,在蓝色导线上将它焊接到标有 GP28 的引脚上。我们的 MicroPython 脚本中指定的是 Pico 用来与 LED 进行通信的引脚

LED 灯带通常已经预先布线,但它们的连接点通常较大,我们需要自制一个布线束。使用剪刀,将任何现有的布线都剪掉,然后切割出一条 31 个 LED 的灯带,确保剪切沿每个 LED 之间的缝隙进行:

灯带上也标有箭头,用于显示正确的电流方向,”+”符号代表正线,”0″代表数据线,”G”代表负线或接地线。在切割时,确保沿着每个焊盘中间切开;如果不小心的话,很容易导致焊接线接触不良。

在上面的照片中,像这样焊接另外三根导线,长度也约为 20cm:红色正线、蓝色数据线和黑色地线。在焊接到焊盘时,你可能会发现从灯带后面进行焊接会更方便一些。

组装

将连接到你的树莓派Pico的三根线穿过小型3D打印的Pico底座。然后将线通过镜子圆板的孔,将底座粘在你的Pico底部和圆板的反光面。确保Pico在底座上坐立于镜子表面之上。

这样,我们就可以实现我们的目标,获得一个 3D 无限效果

现在将带单向膜的圆盘放入 3D 打印的主体中,并将前环粘合到主体上。由于圆盘是由前环固定的,所以可以隐藏一些形状方面的细微缺陷。

将 31 个 LED 的灯带粘贴在 3D 打印的主体的内部,确保布线和连接与主体的间隙对齐,这样你可以轻松地将导线穿过安装 Pico 的圆盘的一侧。

大多数 LED 灯带都有自粘背面,这有助于使这个过程变得简单。

将已经粘合到镜面圆盘上的 Pico 与装有 LED 的主体和单向镜组成一个完整的装置,并与包含电池、充电板和开关的底座配对。

确保你的所有导线尾部都穿过到了反应炉底座上。将两根蓝色数据线焊接在一起,将三根红色正线焊接在一起,将三根黑色负线焊接在一起,根据需要修剪任何多余长度的线材。可以使用热缩套管或胶带绝缘我们的连接点。

最后检查
在将所有部件粘合在一起之前,检查一切是否按预想的工作。通过滑动开关检查 LED 是否点亮;使用 USB-C 手机充电器或 USB 充电宝测试充电板的功能;充电时,LED指示灯将亮起。

现在,我们只需要将部件粘合在一起就ok了。

升级

升级!每个人都喜欢升级,尤其是钢铁侠。其实我们还可以使用树莓派 Pico W 运行一个 web 服务器,从手机浏览器上无线控制 LED。

或者也可以加一些涂料,在反应炉背面粘贴一些魔术贴,这样我们就可以将它像托尼·斯塔克那样佩戴在胸前了。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 锂离子电池
    +关注

    关注

    85

    文章

    3239

    浏览量

    77702
  • 驱动器
    +关注

    关注

    52

    文章

    8236

    浏览量

    146329
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    107988
  • 3D打印技术
    +关注

    关注

    4

    文章

    221

    浏览量

    31905
  • 树莓派
    +关注

    关注

    116

    文章

    1707

    浏览量

    105622

原文标题:用树莓派 Pico 做一个钢铁侠反应炉

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    树莓pico入门学习笔记()相关资料推荐

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropyth
    发表于 07-01 09:28

    树莓pico如何入门?

    树莓pico如何入门?
    发表于 10-13 08:11

    树莓Pico的相关资料分享

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通
    发表于 11-03 08:44

    使用树莓Pico做了自动驾驶小车

    树莓Pico做了自动驾驶小车,连接上蓝牙,可以用手机控制它的移动了。
    发表于 01-05 07:32

    树莓Pico的相关资料推荐

    1月22日,树莓基金会最新发布款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓
    发表于 02-07 07:37

    远程控制树莓3b上的pi pico

    树莓pi pico树莓4相比差别很大,但是pi pico
    的头像 发表于 03-05 17:23 3985次阅读

    如何700元用树莓自己做一个相机?

    手机拍照不够爽,带个单反又太重? 试试做个树莓复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打。 你也可以快速上手做一个。 如何制作
    的头像 发表于 05-20 11:44 3031次阅读
    如何700元用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>自己<b class='flag-5'>做一个</b>相机?

    树莓也出MCU了?树莓Pico来了!

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通
    发表于 10-28 10:36 11次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>也出MCU了?<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>来了!

    树莓Pico:仅4美元的MCU

    1月22日,树莓基金会最新发布款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓
    发表于 12-04 13:06 13次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:仅4美元的MCU

    树莓pico入门学习笔记(

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropyth
    发表于 12-17 18:42 21次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>pico</b>入门学习笔记(<b class='flag-5'>一</b>)

    距离检测报警使用树莓Pico

    电子发烧友网站提供《距离检测报警使用树莓Pico.zip》资料免费下载
    发表于 11-09 11:49 0次下载
    距离检测报警使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    基于树莓pico的可编程游戏手柄设计

    方案介绍组件12x12x7.3mm 瞬时触觉按钮按钮树莓Pico通用 D1286464 OLED 显示屏操纵杆模块 PS210 欧姆电阻 组装将树莓
    发表于 12-26 15:10 0次下载

    如何利用树莓和气体传感器保护厨房呢?

    其实市面上有很多商业解决方案,喜欢自己动手的,可以用树莓Pico和气体传感器做一个
    发表于 08-16 09:24 337次阅读

    树莓Pico文件系统应用:数据记录器

    在前面的章节中,你直在使用树莓 Pico 连接到树莓或其他电脑。不过,与所有微控制器
    的头像 发表于 10-24 10:51 1374次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>文件系统应用:数据记录器

    树莓单片机-Raspberry Pi Pico

    树莓Pi Pico树莓基金会在2021年1月份发布的款新的基于RP2040定制芯片的单片
    的头像 发表于 10-31 17:07 1716次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>单片机-Raspberry Pi <b class='flag-5'>Pico</b>