互联网科技FabAcademy 学习汇

数字制造讲义05-软硬件数据通信

2019-04-02  本文已影响73人  Kidult

数字制造讲义01-成为数字世界的建造者
数字制造讲义02-Arduino入门
数字制造讲义03-电路基础
数字制造讲义04-负责输入和输出的智能元件

Connect Everything

image

玩过乐高的同学都知道,乐高积木非常容易上手,只需要把积木拼在一起——它们总是能拼在一起,不管是什么大小和形状,所以它成为了经典的儿童益智玩具。

在我们制造东西的时候,目标也是把不同的物体和元件拼接成一个完整的、具有一定功能的物品。但是我们会面对一个比乐高困难得多的问题:不同的元件出身和禀赋可能天差地别,想要把它们连接到一起,得想出各种办法。

比如,我想做一个薯片罐头打击乐器,敲击罐头,就可以让 iPad 里面的乐器发出对应的声响。

想想看,我们要把哪些东西连接起来?

我们要连接敲击的平面和 iPad 中的 APP。可是并不存在这样的接口。怎么办?

一段电线连不起来,那我们用两段。可以先用 Arduino 帮我们收集敲击的信号,然后作为中转,再传给 APP。

可是, Arduino 怎么连接 iPad 呢?

你可能会说,可以用数据线呀!没错,不过,要用什么样的数据线呢?这取决于我们要传输什么样的数据。我们想要控制 APP 中的乐器,就需要包含 MIDI 信息的数据,于是要用 MIDI 数据线来传递。

所以,我们的问题拆分成了好几个:

条条小路通骡马

这节课我们学习有哪些方式把不同的东西连接在一起,让它们之间可以传递数据,完成一定的功能。

硬件和硬件、软件和硬件、软件和软件的数据通信,主要可以分为两大类型:有线和无线。

想要跟硬件沟通,需要用某种它能听懂的「语言」。但是这种语言在人类看来简直像天书,它是机器专用的代码——汇编语言(assembly language),是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。

有线

串口通信(Serial Communication), 是最常见的通信方式。它是指外接设备和计算机之间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。 这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

串口的概念跟并口相对应:

image

因为要跟机器直接打交道的语言(低级别的语言)比较难掌握,所以有许多更高级别的语言(近似人类语言)的库可以帮助我们通过串口跟机器沟通,例如 Python 语言的 pySerial

Arduino 也是靠串口跟计算机通信。

在我们上传程序到板子之前,就需要选择用哪个串口通信。在 Port 选项上方,还有 Serial Monitor 工具(IDE右上角放大镜图标也可以),我们常常在调试程序时,打开串口监视器并查看里面的数据。

那么,Arduino 用什么数据线跟电脑的串口连接呢?

最常见就是 USB 数据线了。USB 是 Universal Serial BUS 的缩写,从名字可见其野心(不过讲真,数据接口类型太多,真的让人头疼死……)

来认认 USB 接口们,哪些是平常经常会见到的:

image

备受关注的 USB 4.0 就要来了,但是现实比较骨干,我们仍然需要跟各种各样的数据接口和数据线打交道,尤其是音频和视频的数据线,还远未到 USB 一统天下的时候。

这张图汇总了大部分音视频数据接口的长相,总有一款适合你:

USB 没有办法替代这么多的数据接口和数据线,其中很重要的一个原因是连接距离。音视频的连接长度常常跨越几米甚至上百米,这时候 USB 就傻眼了。

在远距离传输的场景下,互联网(广域网/局域网)就可以大显身手。在有线互联网中,我们通过 IP 地址访问和联通计算机。

IPv4地址分为 A、B、C、D、E 五类,出去特殊作用的 D、E 两类,剩下的 A、B、C 三类地址是常见的 IP 地址段。A 类地址的容量最大,可以容纳 16,777,214 个主机,B 类地址可以容纳 65,534 个主机,C 类地址可以容纳 254 个主机。

无线

基于无线的连接越来越普遍,也越来越重要了。

为啥?

image

尤其在制作互动装置时,我们不希望被太多连线所缠绕和局限活动范围,所以需要借助无线连接的方式。

而且,多种多样的无线数据传输,也是 IOT(Internet of Things 物联网)的基础设施。

那么蓝牙呢?蓝牙的应用也越来越普遍了。

蓝牙是一种点对点的通信方式,主要目的是服务移动设备。蓝牙的功耗以及成本比 wifi 低一些,但是传输距离很短,一般用于近距离设备的通信,例如耳机和手机。

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=a05428d2mlx" allowFullScreen="true"></iframe>

科技情报局:NFC、蓝牙和 WiFi 有什么区别?_腾讯视频

除了 wifi 和蓝牙,还有 ZigBee、RF、WiMax 等等传输方式,我们不太会接触到,这里就略过了。

传输音乐数据

音乐和乐器是我们不变的主题。那么我们要深入了解一下如何传输音乐相关的数据。

MIDI

音乐数字接口(Musical Instrument Digital Interface,简称 MIDI )是一个工业标准的电子通讯协议,为电子乐器等演奏装置(如合成器)定义各种音符或弹奏码,让电子乐器、电脑、手机或其它的舞台演出配备彼此连接,调整和同步,可以即时交换音乐数据。 MIDI 不传送声音,只传送包括音调和音乐强度的数据、音量、颤音和相位等参数,还有设定节奏的时钟信号。在不同的电脑上,输出的声音也因音源器不同而有差异。

回顾 MIDI 的历史,简直就像回顾数字时代的陈年往事:

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=n08561s7vij" allowFullScreen="true"></iframe>

WHAT IS MIDI 什么是 MIDI_腾讯视频

MIDI 1.0 于 1983 年 8 月发布。35 年过去了,MIDI 终于在今年 1 月迎来了 2.0 版本。

image

当然,现阶段我们常用的还是 5 脚的 MIDI 数据线,和 0~127 的整数型数字:

image
MIDI Cable Wiring
First Connector Cable Second Connector
Pin 1 No Connection Pin 1
Pin 2 Shield Pin 2
Pin 3 No Connection Pin 3
Pin 4 Voltage Reference Line Pin 4
Pin 5 Data Line Pin 5

课上演示的从 MAX 发送 MIDI 数据给 Ableton,记得自己动手试一试哦!

从移动端发送 MIDI 数据给其他设备,可以使用类似 KnobLab 的 APP,它支持多种传输方式:

image

OSC

OSC(Open Sound Control)是用于连接声音合成器、计算机和其他多媒体设备的协议,用于辅助音乐表演或节目控制之类(共享音乐表现数据如手势、参数和音符序列)的目的。OSC 的优势包括互动性,准确性,灵活性等。

来听听看 OSC 的作者之一 Matt Wright 是如何介绍它的:

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=f08563i3n66" allowFullScreen="true"></iframe>

Open Sound Control OSC intro_腾讯视频

OSC 常常用来替代 MIDI,因为它的分辨率更高、可传递的参数更丰富。OSC 消息使用 UDP / IP 和以太网通过 Internet和局域网传输。

image

OSC 已广泛应用于音乐表演、机器人、视频性能接口、分布式音乐系统和进程间通信等领域,在实验音乐控制器中更是必不可少。

那么怎么使用 OSC 传输数据呢?

在触摸设备如 iOS 上,用 TouchOSC 最方便不过了(不过要收费)。

image

在移动端下载 TouchOSC,在桌面端下载编辑器,在编辑器里面可以创建自定义的操作面板。然后在移动端设置输入和输出端口。接下来就可以在 Max/MSP 里面接收和发送 OSC 数据了。因为 OSC 通过 UDP 协议传输,所以使用 udpsendudpreceive 对象:

image

Max 接收到数据后,可以看到 OSC 的数据格式类似文件路径 URI:/{序号}/{参数名} {参数值}

这样我们就把手机和电脑连接起来,并且在手机上实现个性化的控制。

除了移动端的 TouchOSC,OSCulator 也是一款好用的 OSC 控制器,感兴趣的同学可以自行研究一下。

当然,Arduino 和 Max 也是可以方便地勾搭上的:

image

本周的作业,是研究 Arduino 如何触发 Ableton 或 Max 里面的声音采样,以及如何使用 OSC 跟 Arduino 通信


00 的文集

上一篇 下一篇

猜你喜欢

热点阅读