连接通用外围设备的指南

物联网 传感器
2021-06-14 17:52:48

我有一些开发板,比如扩展板FiPy,主要是为了在处理器上进行编程实验,但是连接一些外围设备(通过有线,而不是无线),比如用于运动、温度、声音等的相机和传感器会很有趣。是否有通用外围设备指南可以帮助我了解在这些不同的板上可以进行什么样的有线连接?获取有关 Raspberry Pi 或 Arduino 的信息相当容易,但我没有使用这些板。我是物联网的新手,尽管我几十年来一直在普通台式机上编程。如何学习将通用外围设备连接到 IoT 开发板的基础知识?

2个回答

传感器和其他外围设备有很多可能的接口。有些几乎存在于所有平台上(可能有一些差异),有些则不太常见。

  • UART 可能是最简单的。它也被称为“串行端口”或“RS232”(尽管这几乎是普遍的语言滥用)。它至少涉及每个方向上的一根线(一个设备的 TXD 连接到另一个设备的 RXD,反之亦然,尽管有时外围设备的引脚会标有 MCU 上的相应引脚)。您还需要一个参考地,而且通常还有一条电源线。

    UART 是一个异步串行端口。数据作为字符发送,这些字符由一个起始位和一个停止位构成。常见的速度是每秒 300、1200、2400、4800、9600、19200、38400、57600、115200 位/秒,但也可以找到更高的速度。

    一些设备还会有流量控制引脚(RTS/CTS 等),但这变得非常罕见。

    任一设备都可以随时发送数据。

    这里的一个重要问题(它也可能出现在其他接口上,但更常见的是 UART 的问题)是并非每个人都使用相同的电压。最常见的是 5V 和 3.3V,但您可能仍然可以找到其他一些。您可能需要电压电平适配器(您不想将 5V 电压发送到 3.3V 设备,反之亦然。出于同样的原因)。有些设备是“宽容的”,有些则根本不是。

  • SPI 在微控制器领域非常普遍。它是一个同步点对点串行接口。像 UART 一样,每个方向都有一条线(MOSI 和 MISO,主输出到从输入,反之亦然),但也有一条单独的时钟线 (SCLK),它允许每秒数百千比特或兆比特的速度。通常还有一个“芯片选择”引脚 (CS),它允许多个外设在 MCU 上共享相同的 SPI 接口(尽管一次一个):它们将共享 SCLK、MOSI 和 MISO,但每个外设都有不同的 CS在 MCU 上。一个设备(MCU)是主设备,另一个是从设备。

    像往常一样,通常还有一个公共接地引脚,通常还有一个电源引脚。

    有使用更多引脚(如 QSPI)的高速 SPI 版本。

  • I2C 是一条总线,您可以在该总线上拥有多个设备。只有两条“信号”线(松散的),SDA,它是实际的数据,SCL,它是时钟。像往常一样,往往辅以接地和电源。

    有一个主机(MCU)和一个或多个从机(外设)。每个从机都有一个地址,来自主机的所有命令都包含它想要与之通信的从机的地址。有些设备有一个固定地址,其他设备可以通过引脚配置(您通常只能选择 2、4 或 8 个不同的地址),或者很少通过软件进行配置。某些设备具有单个固定地址,但可以使用不同的地址进行订购。

  • 数字引脚用于提供或需要简单开/关信号的外设。

  • 模拟引脚用于提供或需要可变电压(例如电压与温度或距离成正比)的设备。它们连接到 ADC(模拟到数字转换器,用于输入)或 DAC(我会让你猜测,用于输出),将可变电压转换为数字值/从数字值转换。

  • CSI 是相机的特殊接口。它可用于许多基于 ARM 的 SOC,如 RPi Broadcom 芯片或其他基于 ARM 的芯片(Allwinner、Rockchip 等)。在 ESP32 等低功耗 MCU 上并不常见。

  • 同样,DSI 用于高分辨率显示器,并且适用相同类型的限制。您还可以找到 LVDS、HDMI、DP、eDP……

大多数 MCU,包括 FiPy 上的 ESP32,将包括多个 UART、SPI、I2C、ADC 和/或 DAC 端口,这些端口通常可以分配给不同的引脚。有时会限制哪些引脚可以做什么,当然一个给定的引脚一次只能用于一种功能。不同的芯片具有不同数量的端口(例如它们可能有 1、2 或 3 个 UART),并且具有不同数量的可用引脚。

在像 FiPy 这样的板上,ESP32 的许多引脚已经用于连接板上的各种外围设备(LoRa/SigFox 调制解调器、蜂窝调制解调器、LED、闪光灯)。扩展板使用更多(对于 SD 卡,PIC 用作串行/USB 转换器......)。最终的选择往往非常有限。

许多类型的设备以多种不同的形式存在,具有不同的接口。使用哪些取决于您需要的外围设备的组合以及它们可用的接口。

您经常会发现使用“标准”接口端口的设备,如 Grove(来自 Seeedstudio,还有许多 M5stack 设备和其他一些设备)、Qwiiic/Stemma QT(Sparkfun/Adafruit)或 UEXT(Olimex)。第一个至少是棘手的,因为它使用相同的物理接口,但可能有不同的逻辑/电气接口,UART、SPI、I2C、数字或模拟。我认为这同样适用于 Qwiic/Stemma QT,尽管我不确定。它们也可能具有不同的电压(3.3V 或 5V),但许多设备都具有支持两者的必要逻辑。UEXT 在同一个端口上承载多个接口,但它们使用不同的引脚。

到目前为止,我在MicroKit Resource Hub(加州大学伯克利分校)中找到了很好的答案它解释了典型开发板上所有通用部件的基础知识,并提供了配置和连接各种易于上网的有趣外围设备的简单而完整的步骤。