硬件初始化与连接:树莓派系统烧录与SSH远程登录

好,咱们正式开始动手了。这一章要解决的是「硬件怎么跑起来」的问题。说白了,就是让树莓派和ESP32这两个核心设备先能正常工作,并且能跟你的电脑通信。我刚开始做远程监控项目时,光是在这步就卡了两天——后来发现是SD卡没格式化干净。嗯,咱们一步步来。

树莓派系统烧录:别小看这张SD卡

树莓派本身没有硬盘,系统装在MicroSD卡里。我个人习惯用官方工具 Raspberry Pi Imager,省心。

  1. 下载并安装 Raspberry Pi Imager
  2. 插入SD卡(建议16GB以上,Class 10速度)
  3. 选择操作系统:我推荐 Raspberry Pi OS Lite(无桌面版),省资源
  4. 点击右下角齿轮图标,提前配置:
主机名: raspberrypi.local
启用SSH: 是
用户名: pi
密码: 你自己设一个
WiFi配置: 填入你的2.4G WiFi名称和密码

点击「写入」,等几分钟就好。这里有个坑——我曾经用了一张旧卡,写入时总报错,换了张新卡立刻解决。SD卡寿命有限,别省这个钱。

注意:烧录完成后,Windows可能会提示「需要格式化」,千万别点!直接拔出即可。

SSH远程登录:终于不用接屏幕了

树莓派通电后,怎么操作?用SSH。你想想看,如果每次都要接HDMI显示器,那还叫什么远程监控?

确保你的电脑和树莓派在同一个WiFi下。然后打开终端(Windows用PowerShell或Putty):

ssh pi@raspberrypi.local

第一次连接会提示确认指纹,输入 yes,然后输入你设的密码。看到类似这样的界面就成功了:

pi@raspberrypi:~ $
小技巧:如果连不上,试试用路由器后台查树莓派的IP地址,然后 ssh pi@192.168.x.x。我在项目中遇到过好几次mDNS解析失败的情况,直接输IP最稳。

ESP32固件烧录与WiFi配置

ESP32是咱们的传感器采集终端。它需要烧录一个固件,才能知道「我要连哪个WiFi、采集什么数据」。

我习惯用 Arduino IDE 来开发ESP32,当然你也可以用ESP-IDF。这里用Arduino IDE演示:

  1. 安装Arduino IDE,在「文件→首选项」中添加开发板管理器网址:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  1. 在「工具→开发板→开发板管理器」中搜索ESP32并安装
  2. 选择开发板:ESP32 Dev Module
  3. 编写一个简单的WiFi连接程序:
#include <WiFi.h>

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi连接成功");
  Serial.print("IP地址: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // 暂时空着
}
  1. 按住ESP32开发板上的 BOOT 按钮,点击上传。看到「Connecting...」时松开BOOT
常见问题:上传失败?检查三点:① 选对了COM口吗?② 按住BOOT了吗?③ 驱动装了吗?(CP210x或CH340驱动)

摄像头模块驱动安装与测试

树莓派支持两种摄像头:USB摄像头和CSI接口摄像头。我个人更推荐CSI摄像头,延迟低、画质好。

CSI摄像头

先确保排线插对了——金属触点朝向网口方向。然后:

sudo raspi-config

进入 Interface Options → Camera → Enable。重启后测试:

raspistill -o test.jpg

如果生成了test.jpg文件,说明摄像头工作正常。我在项目中遇到过排线松动导致画面花屏的情况,重新插紧就好了。

USB摄像头

插上USB摄像头后,先看看系统认不认:

lsusb
ls /dev/video*

如果看到 /dev/video0,说明识别了。用 fswebcam 测试:

sudo apt install fswebcam
fswebcam test_usb.jpg
经验之谈:USB摄像头便宜但容易掉帧。如果你做实时监控,建议用CSI接口。我有个项目用了USB摄像头,结果画面延迟了2秒,后来全换成CSI了。

温湿度传感器(DHT11/DHT22)接线与数据读取

DHT11和DHT22都是单总线协议,接线方式一样。区别在于精度:DHT11精度±2°C,DHT22精度±0.5°C。我一般直接上DHT22,差不了几块钱。

接线方式

DHT引脚 树莓派/ESP32
VCC(左1) 3.3V
DATA(左2) GPIO4(示例)
NC(左3) 不接
GND(左4) GND

注意:DATA引脚和VCC之间需要接一个 4.7kΩ上拉电阻。有些模块已经内置了,买的时候问清楚。

读取数据(树莓派Python示例)

import Adafruit_DHT

sensor = Adafruit_DHT.DHT22
pin = 4

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
    print(f"温度: {temperature:.1f}°C")
    print(f"湿度: {humidity:.1f}%")
else:
    print("读取失败,检查接线")
避坑指南:我曾经把DHT22的VCC接到了5V上,结果传感器直接冒烟了。记住,DHT11和DHT22都是3.3V供电!另外,读取间隔至少1秒,否则传感器会不响应。

本章知识体系

下面这张图帮你理清整个硬件初始化的流程:

硬件初始化与连接流程 树莓派 系统烧录(Raspberry Pi Imager) SSH远程登录 摄像头驱动安装 DHT传感器接线与读取 ESP32 固件烧录(Arduino IDE) WiFi配置 传感器数据采集 同一WiFi网络 远程监控系统基础就绪

说白了,这一章就是让树莓派和ESP32「活过来」。树莓派负责跑服务、接摄像头;ESP32负责采集温湿度数据。两者通过WiFi通信。嗯,基础打牢了,后面搭建MQTT服务器、做数据可视化就顺了。

本章核心要点:
  • 树莓派系统烧录时提前配置SSH和WiFi,省去接屏幕的麻烦
  • ESP32上传固件记得按住BOOT键,选对COM口
  • CSI摄像头比USB摄像头更适合实时监控
  • DHT传感器必须用3.3V供电,加4.7kΩ上拉电阻

公众号:蓝海资料掘金营,微信deep3321