简易呼吸控制器自制记录

背景
网络上有售卖成品呼吸控制器,但价格昂贵。在技术角度上,个人认为溢价严重。因此本人使用个人认为非常简单的方法自制了一个呼吸控制器,现分享制作过程。这也是本人在航母上的处女作。

硬件准备
  • Arduino Leonardo开发板 或 Arduino Pro Micro开发板 或 兼容板,主控为atmega32u4;兼容板的价格为30元左右
  • 气压传感器模块,0~40kPa,带水管(传感器外侧直径约为3mm,水管内侧直径约为2mm);8元左右
  • 手、线材、工具、邮费等
软件准备
  1. Arduino官网下载Arduino IDE软件,安装并启动软件
  2. 用USB数据线连接开发板与PC,选中“工具”-“端口”中的唯一项,若菜单为空,可能驱动未成功刷新,可重启电脑再试试
  3. 打开“工具”-“管理库”,搜索“MIDIUSB”库并安装
  4. 下载本人编写的程序,并在软件中打开
  5. 打开“工具”-“开发板”,选择“Arduino Leonardo”
  6. 按Ctrl+U或点击标有→的圆形按钮,以编译、上传代码,正常情况下软件会显示“上传成功”的说明
连接与配置
  • 电路连接:本人设计了一种连线极少的方案,易于自制。具体连线为:气压传感器模块的“GND”、“SCK”(时钟引脚)、“OUT”(数据引脚)、“VCC”分别与开发板的“GND”、“15”、“14”、“VCC”相连。中间的两个引脚可以在程序中修改。对焊接技术要求很低。
  • 塑料水管:直接插在气压传感器上即可。注意气压传感器是密闭的,如果想要通气、导走冷凝水和口水,则需要在水管上开口。
  • MIDI配置:根据需要,配置程序中的MIDI通道号(程序中为0)和CC控制器号(程序中为11)。
可以参考下图中我的连接方式:
呼吸控制器硬件连接图.jpg

图1:硬件连接与配置。蓝色板:Pro Micro兼容板;红色板:气压传感器模块。

程序调试
  1. 点击“工具”-“串口监视器”(或软件右侧的“放大镜”图标),每行是“loop”函数输出的三个数,具体代表:气压传感器的测试数值,MIDI信号发送值(相当于量化)对应的等效气压传感器数值,以MIDI信号发送的数值。使用时应关注第一和第三个数。
  2. 点击“工具”-“串口绘图器”,可以看到蓝、红、绿三条曲线,分别对应串口监视器中的三列数。使用时应关注前两个数。
  3. 打开串口绘图器,同时对水管使用不同力度吹气,观察蓝色曲线即原始传感器数值的变化,检查气压传感器是否有问题。可以看到,气压传感器非常灵敏!
  4. 打开串口监视器,观察不吹气、最大力度吹气时,输出的第一个数,然后分别设置为AD_MIN和AD_MAX。这两个数之间的气压将线性映射到MIDI信号的0~127,超出的部分将分别截断为0或127。程序不含较麻烦的力度曲线,若有必要,可使用DAW自带的力度曲线功能。对于我的传感器,如果水管密封,大力度吹气时数值能够达到10000以上;如果在水管上开了口,大力度吹气时数值只能达到2000左右。具体数值应自行调整,使得映射范围合适。
    串口监视器.png

    图2:串口监视器的数值输出
  5. 再重新打开串口绘图器,观察不同力度吹气时,红线(量化后)与蓝线(原始数据)的区别。可以看到,由于MIDI信号0~127的整数限制,数据精度有所降低,但仍然可以灵敏反应吹气力度。对于过低或过高的气压蓝线,红线被“削平”。因此,需要合理设置映射范围AD_MIN和AD_MAX,在范围尽量大的同时使得自己吹起来不累。
    串口绘图器.png

    图3:串口绘图器中的数据曲线
  6. 实际使用时,可在所有含有“Serial”的行的开头添加注释符“//”,并重新上传到开发板,以屏蔽调试信息。简单起见,不制作配置上位机。若有需要,自行修改代码重新上传即可。

说明
  1. 兼容板不是盗版或山寨板,因为这并不违反Arduino开源协议,同时Arduino官方也明文说明了:不将开发板称作Arduino,也不在开发板上印制Arduino的商标,就是合法的。对应地,商家通常使用“duino”称呼这类兼容开发板。
  2. 本人没有批量制造的计划。除了个人时间和精力原因外,更重要的原因是USB授权问题:USB协会要求公司申请独立的Vender ID(VID),并对产品使用独立的Product ID(PID),因为每组VID和PID对应独立的驱动程序,这很类似于Native Instrument的标准库。对于个人,购买的Arduino开发板才是产品,因此使用Arduino的VID和PID没有问题,但售卖基于Arduino的产品则不一样。个人猜测商品呼吸控制器可能有很大成本在这VID上面。
  3. 基于普通串口的方案必须需要使用虚拟MIDI通道软件,而常用的loopMIDI只对个人非商业免费;USB转MIDI串口芯片的外围电路复杂,还需要额外的微控制器;BLE MIDI不需要USB VID和PID,但不兼容PC的桌面程序。因此这些方案并不十分合适。
写了这么多,有兴趣的话,就开始制作自己的控制器吧~
 

附件

  • leonardo_midi_breath.zip
    1.2 KB · 查看: 230
最后编辑:

WId

战斗机
KONTAKT VIP
初级 VIP
正式用户
🧱星陨矿
9,926
🧊星能体
555
🍀星灵素
20
🏵️星元核
30
卧槽,够硬核,加油!
 

恭喜你发财

战列舰
KONTAKT VIP
初级 VIP
正式用户
🧱星陨矿
32,865
🧊星能体
136
🍀星灵素
20
🏵️星元核
25
6666666