第二章 硬件选型与接口基础
做智能实验平台,说白了就是跟各种硬件打交道。我刚开始接触这行时,也踩过不少坑——选错传感器、接错线、通信对不上……今天咱们就把这些基础捋清楚。
2.1 常用传感器:感知世界的“五官”
传感器就像系统的眼睛和耳朵。没有它们,你的平台就是个“盲人”。
2.1.1 温度传感器
最常用的有两种:DS18B20 和 DHT11/DHT22。
| 型号 | 精度 | 接口 | 典型场景 |
|---|---|---|---|
| DS18B20 | ±0.5°C | 单总线(OneWire) | 工业测温、环境监控 |
| DHT11 | ±2°C | 单总线 | 室内温湿度监测 |
| DHT22 | ±0.5°C | 单总线 | 高精度温湿度采集 |
2.1.2 湿度传感器
湿度传感器通常和温度做在一起。DHT11 便宜但精度一般,DHT22 贵一些但靠谱得多。
我个人习惯:预算允许就上 DHT22。为什么?因为 DHT11 的湿度误差能到 ±5%,做实验数据容易飘。你想想看,湿度差 5% 对植物生长实验来说,结论可能完全不一样。
2.1.3 光照传感器
常见的有 BH1750 和光敏电阻。
- BH1750:数字输出,I2C 接口,精度高。我推荐用它做光照采集。
- 光敏电阻:模拟输出,便宜但需要 ADC 转换。适合做简单的“亮/暗”判断。
2.2 执行器:让系统“动起来”
传感器负责感知,执行器负责行动。两者缺一不可。
2.2.1 电机
智能实验平台里最常用的是步进电机和直流减速电机。
| 类型 | 控制方式 | 特点 | 适用场景 |
|---|---|---|---|
| 步进电机 | 脉冲+方向 | 精确控制角度 | 机械臂、精密位移 |
| 直流减速电机 | PWM 调速 | 扭矩大、控制简单 | 小车、风扇、泵 |
嗯,这里要注意:步进电机需要驱动器,不能直接接 GPIO。我见过有人直接把步进电机接到树莓派的 3.3V 引脚上……结果嘛,芯片冒烟了。
2.2.2 继电器
继电器就是个“电子开关”。用小电流控制大电流设备,比如 220V 的灯、水泵。
选型时注意两点:
- 线圈电压:常见 5V 或 3.3V,要和你的主控匹配
- 触点容量:10A/250V 是常见规格,够用
2.3 通信接口:硬件之间的“语言”
传感器和执行器怎么跟主控芯片说话?靠的就是这些通信接口。
2.3.1 GPIO——最基础的“对话”
GPIO 就是通用输入输出引脚。你可以把它理解成一根“信号线”,要么输出高电平(3.3V),要么输出低电平(0V)。
用 GPIO 控制 LED 亮灭的代码很简单:
# Python 示例:用 GPIO 控制 LED
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) # 设置引脚18为输出
while True:
GPIO.output(18, GPIO.HIGH) # 点亮
time.sleep(1)
GPIO.output(18, GPIO.LOW) # 熄灭
time.sleep(1)
2.3.2 I2C——多设备“串门”
I2C 只用两根线(SDA 数据线、SCL 时钟线),就能挂载多个设备。每个设备有唯一地址。
我常用的 I2C 设备:BH1750 光照传感器、OLED 显示屏、MPU6050 陀螺仪。
读取 BH1750 的代码:
# Python 示例:读取 BH1750 光照值
import smbus
import time
bus = smbus.SMBus(1)
addr = 0x23 # BH1750 默认地址
def read_light():
data = bus.read_i2c_block_data(addr, 0x10, 2)
return (data[0] << 8 | data[1]) / 1.2
while True:
lux = read_light()
print(f"光照强度: {lux:.1f} lux")
time.sleep(1)
2.3.3 SPI——高速“专线”
SPI 比 I2C 快得多,但需要更多引脚(MOSI、MISO、SCLK、CS)。适合高速数据传输,比如 SD 卡、显示屏、ADC 芯片。
SPI 的典型接线:
- MOSI:主出从入
- MISO:主入从出
- SCLK:时钟
- CS:片选(每个设备一根)
我个人习惯:如果设备数量少(1-2个),用 SPI;设备多,用 I2C。SPI 的接线虽然多,但调试起来反而简单——因为每根线功能明确,不像 I2C 那样要处理地址冲突。
2.3.4 UART——最“古老”的串口
UART 就是串口通信,用 TX(发送)和 RX(接收)两根线。电脑和单片机通信最常用的方式。
调试时我几乎必用 UART:
# Python 示例:通过 UART 发送数据
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.write(b'Hello from Raspberry Pi\n')
response = ser.readline()
print(response)
2.4 知识体系总览
下面这张图把本章的核心内容串起来了。你可以把它当成选型时的“速查地图”。
这张图里,主控芯片是大脑,传感器是感官,执行器是手脚,通信接口就是神经。选型时记住一个原则:先定场景,再选传感器;先算负载,再选执行器;先看速度,再定接口。
好了,这一章的内容就到这儿。硬件选型是个熟能生巧的活,多动手、多踩坑,慢慢就有感觉了。
公众号:蓝海资料掘金营,微信deep3321