Raspberry Pi Pico 多 MIDI 路由器

树莓派 PICO 和 RP2040 相关应用讨论
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Raspberry Pi Pico 多 MIDI 路由器

#1

帖子 shaoziyang »

来自:https://diyelectromusic.wordpress.com/2 ... er-part-2/

图片零件清单
  • Raspberry Pi Pico
  • 30×46 原型板
  • 8x 5-pin MIDI DIN sockets
  • 4x 6N138 光隔离器
  • 4x 10Ω电阻
  • 4x 33Ω电阻
  • 4x 220Ω电阻
  • 4x 470Ω电阻
  • 4x 4.7kΩ 电阻器
  • 4x 1n914 二极管
  • 4x 100uF 电容
  • 接头和跳线
电路 图片Raspberry Pi Pico 有两个 UART 和八个 PIO 状态机,在 我之前的项目 中,我使用它们创建了六个 MIDI IN 和 OUT 端口。 在这个电路中,我构建了四个连接到 5 针 MIDI DIN 插座的 MIDI IN 和 MIDI OUT 电路,并将两个 UART 通道断开到接头。 如果需要,通过适当的重新路由,您也可以将 MIDI 电路添加到两个 UART 通道,但我认为拥有一些基本的 UART/TTL(尽管是 3V3)信号也可能很有用。 在图中并不容易看到,但顶部的每个 MIDI IN 电路都是图最左侧的扩展 MIDI IN 电路的一个版本。 请注意,我从 5V 为 6N138 供电,但将输出信号拉到 3V3。 这是 我以前使用过 ,似乎对我有用,但您可能需要考虑使用更原生的 3V3 兼容光隔离器。 我只是碰巧周围有一些额外的 6N138,我不能用于其他任何东西——我错误地订购了 SMT 版本,所以我想我可以在这里焊接它们! MIDI OUT 端只是一个标准的 3V3 兼容 MIDI OUT 电路 。 在结构方面,我将我的 Pico 直接焊接到了原型板上,大部分接头都向上伸出。 这意味着如果需要,所有 IO 引脚都可用于连接到其他电路。 这里有一些构建照片。 我的基本建设顺序如下:
  • 在 Pico 上焊接。
  • 对于每个 MIDI “通道”:
    • 在 6N138 上焊接(暂时使用 MIDI 插座以获得正确的位置)。
    • 焊接在 MIDI IN 插座上。
    • 焊接 MIDI IN 分立元件。
    • 焊接在 MIDI OUT 插座上。
    • 焊接 MIDI OUT 电阻。
    • 将 GND 和 5V 焊接到 6n138。
    • 将 3V3 链接焊接到电阻器上。
    • 将 GND 焊接到 MIDI OUT。
    • 将 PIO/IO 引脚链接焊接到 6n138(用于 RX)。
    • 将 PIO/IO 引脚链接焊接到 MIDI OUT(用于 TX)。
    • 此时,我检查了是否有短路,然后插入 Pico 并测试完成的 IN/OUT 通道,然后再开始下一个。
  • 添加 UART 分线接头。
图片图片请注意,我在大多数接头引脚上都保留了塑料接头支架。 我没有在最后的事情中使用它们,但是在施工期间将它们焊接到底部时,将它们留在上面会阻止引脚移动。 图片图片图片最后添加了 UART 的分线头。 图片图片我使用了彩色头针:白色:TX; 蓝色:RX; 红色:5V和3V3; 黑色:接地。 编码 为了在构建系统时对其进行测试,我使用了与之前 在此处找到它 在 MicroPython 上运行 在每个阶段,我都使用了一个路由表,将所有消息从 IN 端口重定向到 OUT 端口。 回想一下,UART 是端口 0 和 1,所以第一个 5 针 DIN MIDI 通道是“端口 2”。 MIDIRT = [
[-1, -1, 2, 2], # 端口 2 到端口 2 的任何内容
] 测试中的两个端口通过我的 Roland UM-ONE 连接到我的 PC。 在 PC 上,我运行了两个 MIDIOx 实例:
  • MIDIOx1:MIDI IN = Roland UM-ONE; MIDI OUT = Microsoft 内置合成器。
  • MIDIOx2:MIDI IN = 禁用; MIDI OUT = Roland UM-ONE。
一旦这没问题,并且当每个新通道都显示可以工作时,就可以仔细检查路由本身,例如: MIDIRT = [
[-1, -1, 2, 3], # 端口 2 到端口 3 的任何内容
[-1, -1, 3, 2], # 端口 3 到端口 2 的任何内容
[-1, -1, 4, 5], # 端口 4 到端口 5 的任何内容
[-1, -1, 5, 4], # 端口 5 到端口 4 的任何内容
] 最后,我用 UART 连接重复了测试,暂时将它们连接到 3.3V DIY MIDI 接口 找到 GitHub 上的现有代码 在所需的 SimpleMIDIDecoder 。 结束的想法 现在已经差不多了。 我现在想做一些软件明智的事情来整理:
  • 将 PIO MIDI 代码重构为更可重用的“对象”。
  • 创建一个 CircuitPython 版本(尽管我需要先弄清楚 如何在 CP 上执行 PIO )。
  • 也添加 USB MIDI 支持(可能需要 CircuitPython)。
从硬件的角度来看,我真的很想在未来的某个时候将其视为合适的 PCB,但这可能必须留给比我更了解 PCB 设计的人…… 如果我这样做了,制作 2 路和 6 路版本可能会很有趣,甚至可能还有带有 MIDI TRS 连接器的版本。

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章