触摸MIDI电话

ChangeCode
转载
发布时间: 2025-06-14 15:03:51 | 阅读数 0收藏数 0评论数 0
封面
重新利用过时的技术不仅会给废弃的设备新的生命,而且会为研究人员提供过去时代历史的一些见解。这个项目采用了一个老式的触摸音调手机,并将其转换成一种乐器,或者更具体地说,是一个MIDI控制器,使用按钮来生成音符的信号。

准备工作:

材料:

  1. 西南贝尔自由电话,型号:FT325
  2. 这个复古设备是在五六年前在一个旧货店找到的。从那以后它一直被用作儿童玩具,但看起来并没有因为使用而变差。有许多类似类型的电话可以以同样的方式重新利用。
  3. Arduino
  4. Diecimila型号
  5. 这几乎本身就是一个复古硬件了。它之前一直闲置着,所以很高兴能把它用到项目中。如果拥有足够的GPIO针脚,基本上任何微控制器板都可以作为替代。10个针脚用于按键,TX针脚用于MIDI信号。4个针脚用于LED灯
  6. 2个额外的针脚用于附加按钮(重拨,脉冲/音调切换)
  7. 原型屏蔽板
  8. 连接线
  9. MIDI插孔,五针母头
  10. 1/4英寸输出插孔 - 将麦克风信号输出至线路电平
  11. USB B型短扩展电缆
  12. 工具
  13. 原型面包板
  14. 电烙铁和电线
  15. 多功能表
  16. 塑料切割工具
  17. 德莱梅尔旋转工具(Dremel tool,一种多功能小型电动工具)
  18. 钟表匠锯
  19. 剪切工具(用于电路板或金属的修边)
1

电话解构

是什么让这些手机运转起来的?或者更合适的是,戴上戒指?第一步是小心翼翼地开始拆开它。

拆除上壳是一个简单的事情,从底座上拧下三个螺栓,下面的盖子是对过去的旅行。一对电磁线圈,

当在20赫兹的75-90 v交流电下激活时

,让任何人在一英里半径的人打电话。在将其中一个连接到30VDC的工作台电源后,它制造了一个令人满意的“砰”。这些设备后来被移除,以便有空间来安装新的电子设备。它有通孔电路板技术-没有那种新奇的表面安装业务。只有少数的IC芯片。但最重要的是,至少在这个项目中——按键键盘。

2

映射按钮和导线

该小键盘通过一根带状电缆连接到电路板上。无论是裁剪或消色,这都将工作,无论是以什么方式,现在有必要找到哪些线或线组合连接到哪个按钮。

经过一些试验和错误(和互联网研究),很明显,每个按钮将完成两根电线之间的一个电路。例如,当按下1按钮时,电流允许在导线#1和#8之间流动。这可以在万用表上使用“连续性哔哔”模式进行测试。将两个测试引线连接到导线上,如果按下按钮时听到哔哔声,那么这是该按钮和这对导线之间的成功映射。

总共有11根电线可以组合成55个独特的组合,每根电线都可以是12个按钮中的任何一个的映射。因此,有必要为这些映射做一个图表。为了加快一点速度,我们建造了一个临时的测试装置。这是临时的-一个螺丝刀和沉重的焊料线轴平衡在一个按钮上,同时用万用表导线测试电线。不管它看起来多么愚蠢,它都有效——很快就揭示了一个模式。编号为#1、#2和#4的导线与键盘上的第一、第二和第三行相关联。类似地,导线#8、#7和#5被绑定到第一、第二和第三列。结合起来,这就形成了一个按钮地址的矩阵。星号键和磅键都有自己的电线——2号和6号表示*星,9号和10号表示#磅。第11号线似乎没有使用过。

有趣的是,行和列的矩阵将简化电路,以产生拨号电话系统时使用的双音调。看着

DTMF键盘频率

表中,每一列和每一行都被分配了一个频率,这些频率被组合起来为每个按钮生成独特的音调。星和磅在自己的电线上,当它们可以很容易地添加到矩阵中是很奇怪的

也许是为了让时间旅行电路能够正常工作?

3

进入arduino

现在线路已经知道了,下一个任务是把键盘连接到阿杜伊诺。这意味着将每根电线连接到一个GPIO上。一个方便的方法是将键盘线插入项目实验板上的不同行中,然后使用跳线线连接到一个Arduino大头针上。

,在中打开新草图

阿尔都诺IDE

并定义上一步中定义键盘到GPIO引脚的按钮映射。请注意,这些都从上一步(GPIO引脚2 - 11)中移动了+1,避免了MIDI输出所需要的TX和RX通信引脚

#include "MatrixButton.h"
// input-output pin combinations for all the keypad buttons
MatrixButton keypad[] = {
{2, 9}, /* 1 */ {2, 8}, /* 2 */ {2, 6}, /* 3 */
{4, 9}, /* 4 */ {4, 8}, /* 5 */ {4, 6}, /* 6 */
{5, 9}, /* 7 */ {5, 8}, /* 8 */ {5, 6}, /* 9 */
{10, 11}, /* * */ {7, 8}, /* 0 */ {7, 3} /* # */
};

这里是MatrixButton源

.寻找一个合适的已经存在的库来处理这个函数并没有产生结果

它可以方便地立即反馈到按钮的按下/释放状态,所以添加一个LED到另一个数字大头针与电阻,就像在

这个可指导的

.为它所在的大头针添加一个变量

// LED pin
int led = 13;

Then initialize the pins in the setup() function
void setup() {
// initialize keypad button states
for (byte i = 0; i < 12; i++)
keypad[i].begin();

// init the LED
pinMode(led, OUTPUT);
}

在每个连续的循环运行中,每个线组合的状态被扫描,检查是否按下或释放的按钮。如果其中任何一个处于按下状态,则设置led以打开,否则关闭它。

void loop() {
bool anyPressed = false;

// scan keypad for key presses
for (byte i = 0; i < 12; i++)
{
bool hasChanged;
bool state = keypad[i].read(hasChanged);

if (state == MatrixButton::PRESSED)
anyPressed = true;
}

// light up the LED if one (or more) buttons are pressed
if (anyPressed)
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
}

测试每个按钮,以确保其接线正确,并激活LED。如果有任何问题,它可以帮助使用串行写函数编写调试消息,可在Arduino IDE中查看。

4

让MIDI播放

将MIDI插孔连接到项目的面包板后面

这张图

从这些

操作指南

.由于只有MIDI输出被使用,只有3个MIDI杰克的5个大头针被使用。Arduino通过TX GPIO-pin1号发送MIDI数据。

回到Arduino IDE中,添加了

使用阿奥迪诺库管理器的MIDI库

并在草图中添加初始化代码。

#include <MIDI.h>
// ...
byte midiChannel = 1;

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
// ...
MIDI.begin();
}

定义一个可映射到小键盘按钮的音阶。这是一个

五声音阶

-每个八度音调中有5个和谐的音调

第七分之一

.从C作为一个根音符开始,这将是在键盘的顶部两行上播放的C、D、E、G、a、B的比例尺。为底部行的每个值添加12将创建一个两个八度范围。这是一个有趣的部分,可以实验添加有趣的尺度。

// musical scale in semitones, pentatonic + maj 7
const int8_t music_scale[12] = {
0, 2, 4,
7, 9, 11,
12, 14, 16,
19, 21, 23
};

现在,当按下键盘上的任何按钮时,它就可以发送MIDI笔记了。每个按钮都像以前一样被扫描。但是,如果它被更改为按下状态,则播放音阶数组的相应音调。60的值是MIDI中的“中C”音符。然后,将数组中的每个值视为来自此根注释的偏移量,从而创建所需的比例。

void loop() {
// scan keypad for key presses
for (byte i = 0; i < 12; i++)
{
bool hasChanged;
bool state = keypad[i].read(hasChanged);
if (hasChanged)
{
if (state == MatrixButton::PRESSED)
MIDI.sendNoteOn(60 + music_scale[i], 127, midiChannel);
else
MIDI.sendNoteOff(60 + music_scale[i], 0, midiChannel);
}
}
}

最后一步是关掉音符,这样它们就不会永远演奏了。这是通过在按钮被释放后发送一个相应的“注释关闭”MIDI指令来完成的。

5

闪光灯

这款手机有四个状态指示灯,它们可被重新用作状态指示灯。这似乎是这类手机的一个罕见的功能-必须是执行模式。

小心地将正负线焊接到针脚的暴露区域。然后用电路中的电阻与阿迪诺连接。测试每种颜色的几种欧姆值,以找到良好的亮度。

要创建闪烁模式来指示状态,则

Arduino-盲光图书馆

是一个很好的选择。

6

删除麦克风

由于这款手机现在将是一个音乐设备,它似乎适合连接手机的麦克风,这样它就可以被放大。这些手机使用

驻极体传声器

这需要少量的能量来捕捉声学。这个

页面有一个教程

关于它是如何设计的,以及如何将它连接到一个线路电平信号上。另外,这里有一个

在这些麦克风上的娱乐视频

以及其他一些降低线路噪声的策略。

值得注意的是,手机内部的插孔上的黄色和黑色的线是那些连接手机底部的麦克风的线——红色和绿色的线是扬声器。为了为麦克风提供电力,我们使用了Arduino的3.3V引脚和一个2.2k的电阻器来降低电压。

要在麦克风时启动麦克风,将连接到支架上的开关连接到电源电路上。这是一个非常简单的方法来保持麦克风禁用时,它不是“在广播”。

7

把它绑起来

为了将这个项目从面包板转移到电话,所有组件都转移到阿迪诺盾,并连接到电话线使用

2.54mm JST XH

连接器如果再这样做,这将是一个很好的改进,学习如何设计和订购一个PCB。

在所有连接焊接和测试后,它用一个3毫米螺栓连接到电话的基础。环形电路板必须被移除,大约三分之一的原始电路板必须用珠宝商的锯子被移除,以腾出空间。同样重要的是,要确保有足够的垂直空间,使支架开关按下,而不被电线堵塞。

8

包装

为了在更换顶壳时提供电缆连接,需要切割外壳上的一些材料。这就需要一些计划将千斤顶放置在位置A)不会与Arduino和盾牌碰撞,B)不会阻碍支架开关,C)能够安装安装螺栓,D)不会看起来不合适。

USB连接器是最简单的-这取代了RJ11接口的基础下。使用带有雕刻头的杂物小心地去除足够的材料,安全地固定USB型延长电缆。

MIDI和1/4英寸的千斤顶有点棘手。1/4英寸的千斤顶有一个垫圈和螺母,将其固定在外表面的位置,所以仔细测量钻孔的位置,确保内部各个方向的间隙。MIDI千斤顶有两个安装点连接螺丝从外部-确保这些有间隙在所有方向。

要进行切割,请使用阶梯钻头小心地去除足够的材料。在钻孔下一个步进尺寸之前,经常检查千斤顶和孔尺寸。

9

应用程序编码器

由于该设备同时有音符和声音输入,因此可以使用音频信号作为软件声码器的频率调制器。

草图代码有一些添加功能,包括按钮现在可以播放多个音调,有一个“元键”(重拨),可以在不同的音阶、八度和根音符之间切换。为自己做实验!

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载