从0到1部署ThatProject:最完整的ESP32物联网项目安装指南
引言:你还在为物联网项目搭建耗费数小时?
你是否经历过克隆开源项目后,面对数百个文件却不知从何下手?ThatProject作为涵盖ESP32/ESP8266全系列物联网应用的开源仓库,包含从LoRa通信到AI摄像头的50+实战项目。本文将用3个阶段12个步骤,带你从环境搭建到成功运行第一个LoRa聊天应用,全程不超过30分钟。
读完本文你将获得:
- 一套适配Windows/macOS/Linux的标准化开发环境
- 3种快速定位项目代码的高效检索技巧
- 5个核心项目的配置模板(含LoRa/摄像头/BLE)
- 10+常见错误的调试 checklist
- 基于LVGL的UI开发快速上手指南
项目概述:50+物联网应用的技术栈全景
ThatProject是一个专注于ESP32/ESP8266平台的开源项目集合,涵盖无线通信(LoRa/BLE/WiFi)、传感器应用、AI视觉、嵌入式GUI等多个领域。以下是项目的核心技术栈分布:
核心项目分类
| 类别 | 代表项目 | 技术难点 | 适用场景 |
|---|---|---|---|
| LoRa通信 | Chat_APP_SX1262 | 远距离射频调试 | 户外设备组网 |
| 摄像头应用 | ESP32_CAM_Dashcam | JPEG流传输优化 | 安防监控 |
| 嵌入式GUI | LVGL8_SquareLine | 动画帧率优化 | 智能设备交互 |
| BLE应用 | ESP32_Flutter_JoyPad | 低功耗数据传输 | 穿戴设备 |
| 云服务 | Firebase_Cloud_Firestore | 实时数据同步 | 物联网平台 |
环境搭建:跨平台开发环境配置指南
1. 基础依赖安装
开发工具链安装
# Ubuntu/Debian
sudo apt update && sudo apt install -y git python3-pip arduino-cli
# macOS (Homebrew)
brew install git python3 arduino-cli
# Windows (Chocolatey)
choco install git python arduino-cli
Arduino IDE配置
# 添加ESP32开发板支持
arduino-cli core update-index
arduino-cli core install esp32:esp32@2.0.9 --additional-urls https://dl.espressif.com/dl/package_esp32_index.json
# 安装常用库
arduino-cli lib install "LoRa" "LVGL" "Firebase ESP Client" "WiFi" "BluetoothSerial"
⚠️ 版本兼容性警告:ESP32核心版本需固定为2.0.9,高版本可能导致部分项目编译失败
2. 项目获取与目录结构解析
# 克隆仓库(国内加速地址)
git clone https://gitcode.com/gh_mirrors/tha/ThatProject.git
cd ThatProject
# 目录结构速览
tree -L 2 | grep -v "demo\|test\|data"
核心目录说明:
├── ESP32-LoRa/ # LoRa通信项目
│ ├── Chat_APP_SX1262/ # LoRa聊天应用(重点)
│ └── LoRa_GPS_Data_Viewer/
├── ESP32CAM_Projects/ # 摄像头应用集合
│ ├── ESP32_CAM_Dashcam/ # 行车记录仪项目
│ └── ESP32_CAM_MULTICAM/ # 多摄像头监控
├── ESP32_LVGL/ # 嵌入式GUI项目
│ ├── LVGL8_SquareLine/ # SquareLine Studio可视化开发
│ └── MyShortcuts_LVGL7/ # 快捷操作面板
└── ESP32_MQTT/ # MQTT通信项目
└── 0_AWS_Mosquitto_Test/ # AWS Mosquitto配置模板
快速上手:3个入门级项目实战
项目1:LoRa聊天应用(ESP32-LoRa/Chat_APP_SX1262)
硬件准备
- ESP32开发板 ×2
- SX1262 LoRa模块 ×2
- 433MHz天线 ×2
- USB数据线 ×2
软件配置流程
关键代码修改(Chat_APP_SX1262.ino):
// 第23行:设置LoRa频率(根据模块频段修改)
#define LORA_FREQ 433E6 // 433MHz频段
// #define LORA_FREQ 868E6 // 868MHz频段
// #define LORA_FREQ 915E6 // 915MHz频段
// 第31行:设置本机设备地址
#define DEVICE_ID 0x01 // 设备1设为0x01,设备2设为0x02
// 第45行:设置串口波特率
#define BAUD_RATE 115200
调试与验证
- 分别上传代码到两个设备
- 打开Arduino IDE的串口监视器(波特率115200)
- 在设备1输入消息,观察设备2是否接收
- 验证双向通信稳定性(建议距离<500米)
项目2:温度 humidity 监测(Esp32_temperature_humidity)
电路连接
| ESP32引脚 | DHT11引脚 | 功能 |
|---|---|---|
| 3V3 | VCC | 电源 |
| GND | GND | 接地 |
| GPIO4 | DATA | 数据 |
配置步骤
# 进入项目目录
cd Esp32_temperature_humidity
# 编译上传
arduino-cli compile --fqbn esp32:esp32:esp32 .
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32 .
项目3:LVGL基础界面(ESP32_LVGL/0_ILI9488_LovyanGFX)
显示屏接线
- ILI9488 TFT显示屏(320×480)
- 支持SPI接口
关键配置(LovyanGFX配置文件)
// 屏幕初始化配置
void setup(void) {
Serial.begin(115200);
tft.init();
tft.setRotation(1); // 设置横屏显示
tft.fillScreen(TFT_BLACK);
// LVGL初始化
lv_init();
lv_disp_draw_buf_init(&draw_buf, buf, NULL, screenWidth * 10);
// 设置显示驱动
static lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
disp_drv.hor_res = screenWidth;
disp_drv.ver_res = screenHeight;
disp_drv.draw_buf = &draw_buf;
disp_drv.flush_cb = my_disp_flush;
lv_disp_drv_register(&disp_drv);
}
高级配置:云服务与移动应用集成
AWS IoT MQTT Broker部署
- EC2服务器准备(t2.micro即可)
- Mosquitto安装与配置:
# 连接EC2实例后执行
sudo apt update && sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
# 配置密码认证
sudo mosquitto_passwd -c /etc/mosquitto/passwd esp32_user
# 输入密码(如esp32_pass123)
# 创建配置文件
sudo tee /etc/mosquitto/conf.d/default.conf <<EOF
listener 1883 0.0.0.0
allow_anonymous false
password_file /etc/mosquitto/passwd
EOF
sudo systemctl restart mosquitto
- ESP32客户端配置(ESP32_MQTT/1_ESP32CAM_AWSMQTT):
// 修改MQTT连接参数
const char* mqtt_server = "your-ec2-public-ip";
const char* mqtt_username = "esp32_user";
const char* mqtt_password = "esp32_pass123";
const int mqtt_port = 1883;
Flutter移动应用开发
以ESP32_Flutter_JoyPad项目为例:
# 安装Flutter依赖
cd ESP32_Flutter_JoyPad/flutter_app_joypad_ble
flutter pub get
# 运行应用(连接Android设备或模拟器)
flutter run
核心代码解析(lib/main.dart):
// BLE设备扫描与连接
void scanDevices() {
FlutterBluePlus.startScan(timeout: Duration(seconds: 4));
// 监听扫描结果
FlutterBluePlus.scanResults.listen((results) {
for (ScanResult result in results) {
if (result.device.name.contains("ESP32_BLE_JoyPad")) {
setState(() {
devices.add(result.device);
});
}
}
});
}
故障排除:10+常见问题解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 编译报错"找不到头文件" | 库未安装或版本不兼容 | 执行arduino-cli lib install "库名称@版本号" |
| 上传失败"无法连接设备" | 串口权限不足 | Linux下执行sudo chmod 666 /dev/ttyUSB0 |
| LoRa通信距离短 | 天线未接好或频率错误 | 检查天线连接,确认频率与模块匹配 |
| 摄像头无图像 | 引脚定义错误 | 核对摄像头型号与引脚配置是否匹配 |
| LVGL界面卡顿 | 内存不足 | 优化图像资源,减少同时显示控件数量 |
项目贡献与扩展
参与开发
- Fork本仓库
- 创建特性分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add some amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 创建Pull Request
功能扩展建议
- 为ESP32_LVGL项目添加主题切换功能
- 优化ESP32_CAM_MULTICAM的视频流传输延迟
- 增加对ESP32-C6芯片的支持
- 开发Web配置界面替代串口配置
总结与展望
通过本文档,你已掌握ThatProject的环境搭建、核心项目部署和常见问题解决方法。该项目持续更新中,未来将重点关注:
- ESP32-S4新芯片支持
- Matter协议集成
- AI模型轻量化部署
- 低代码开发平台对接
如果你在使用过程中遇到问题,可通过以下方式获取支持:
- 项目Issues:https://gitcode.com/gh_mirrors/tha/ThatProject/issues
- 技术讨论群:XXX(待项目维护者提供)
- 视频教程:项目README中包含各子项目对应视频链接
如果你觉得本项目有帮助,请点赞、收藏、关注三连,这将是我们持续更新的动力!下一期将带来《LVGL 9高级动画效果实战》,敬请期待。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



