littlebot
Published on 2025-04-17 / 1 Visits
0

【源码】基于ESP32和Raspberry Pi的环境参数监测系统

项目简介

本项目是一个完整的物联网系统,结合硬件与软件组件,可实时采集、处理和共享环境数据,并对环境参数变化实时响应。借助BMP280传感器监测环境温度和气压,温度超预设阈值时自动调节风扇速度。采集的数据会实时显示在OLED显示屏上,还会通过MQTT协议从ESP32传输到Raspberry Pi存储和发布,用户能通过网页查看相关信息。

项目的主要特性和功能

  1. 数据监测:利用BMP280传感器实时监测环境温度和气压。
  2. 自动控制:温度超预设阈值时,自动调节风扇速度,保障系统稳定运行。
  3. 实时显示:在OLED显示屏上实时显示采集的环境数据。
  4. 数据传输与存储:通过MQTT协议将数据从ESP32传输到Raspberry Pi,Raspberry Pi作为MQTT代理和物联网服务器存储数据。
  5. 时间同步:使用RTC模块保证系统内设备时间同步,Raspberry Pi从NTP服务器获取准确时间并通过MQTT协议更新RTC模块。
  6. 网页展示:Raspberry Pi将信息发布到网页,方便同网络设备查看和访问存储的数据。

安装使用步骤

硬件配置

  1. BMP280传感器:VCC引脚接ESP32的3.3V引脚,GND引脚接ESP32的GND引脚,SDI引脚接ESP32的SDA(GPIO21)引脚,SCK引脚接ESP32的SCL(GPIO22)引脚。
  2. OLED显示屏:VIN引脚接合适电压(通常为ESP32的3.3V),GND引脚接ESP32的GND引脚,SDA引脚接ESP32的SDA(GPIO21)引脚,SCL引脚接ESP32的SCL(GPIO22)引脚。
  3. RTC模块:VCC引脚接ESP32的3.3V引脚,GND引脚接ESP32的GND引脚,SDA引脚接ESP32的GPIO21引脚,SCL引脚接ESP32的GPIO22引脚。
  4. NOCTUA NF - A4x10 5V PWM风扇:GND引脚接开发板的GND引脚,VCC引脚接开发板的5V引脚,TACHO引脚接开发板的GPIO16引脚,PWM引脚接开发板的GPIO17引脚。

软件设置

Raspberry Pi 4设置

  1. 下载并安装Raspberry Pi Imager
  2. 打开Raspberry Pi Imager,选Raspberry PI OS(32位)镜像和SD卡,写入镜像。
  3. 取出SD卡插入Raspberry Pi,连接外设并通电。
  4. 按屏幕提示配置操作系统。
  5. 使用以下命令更新系统: bash sudo apt update sudo apt upgrade
  6. 安装所需应用程序。

ESP32设置

  1. 安装Arduino IDE
  2. 打开Arduino IDE,在“文件 > 首选项”中,将URL https://dl.espressif.com/dl/package_esp32_index.json 添加到“附加开发板管理器网址”。
  3. 选“工具 > 开发板管理器”,搜索“esp32”并安装ESP32支持。
  4. 通过USB线将ESP32连到计算机。
  5. 在IDE中开新项目,选“工具 > 开发板”中的ESP32 Dev Module。
  6. 选ESP32连接的正确COM端口,将示例程序“WiFi > WiFiScan”上传到ESP32验证。

Arduino库安装

  1. 打开Arduino IDE,选“管理库”。
  2. 搜索并安装以下库:Wire、Adafruit_BMP280、Adafruit_SSD1306、Adafruit GFX Library、RTClib、WiFi、Arduino_JSON、FreeRTOS。

Raspberry Pi包安装

  1. 打开Raspberry Pi终端,安装MQTT代理Mosquitto: bash sudo apt-get install mosquitto sudo systemctl start mosquitto sudo systemctl enable mosquitto
  2. 安装Python的Paho MQTT库: bash pip install paho-mqtt
  3. 安装NTP包: bash sudo apt-get update sudo apt-get install ntp

通信配置与启动

ESP32端

  1. 打开脚本 tasks_ESP32v2.0.ino
  2. 修改WiFi网络名称(SSID)和密码: C++ const char *ssid = "你的SSID"; const char *password = "你的密码";
  3. 修改Raspberry Pi的IP地址: C++ const char *mqtt_server = "Raspberry Pi的IP地址";
  4. 保存修改并将代码上传到ESP32。
  5. 给ESP32供电,验证WiFi连接。

Raspberry Pi端

  1. 打开脚本 inviohtmlv2.0.pyorario.py
  2. 修改Raspberry Pi的IP地址: python broker_address = "Raspberry Pi的IP地址"
  3. inviohtmlv2.0.py 脚本中修改 orario.py 的路径。
  4. 打开终端,执行以下命令: bash sudo nano /etc/ntp.conf
  5. 在文件中添加并保存以下内容: bash server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org
  6. 重启NTP服务: bash sudo service ntp restart
  7. 创建服务文件: bash sudo nano /etc/systemd/system/orario.service
  8. 在文件中添加 orario.py 的路径并保存。
  9. 启动服务: bash sudo systemctl enable orario.service sudo systemctl start orario.service
  10. 验证服务状态: bash sudo systemctl status orario.service
  11. 执行脚本 app.py
  12. 打开第二个终端,执行 inviohtmlv2.0.py
  13. 打开浏览器,访问 http://Raspberry Pi的IP地址:5000/pagina 查看数据。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】