当前位置:   article > 正文

使用ESP32和Flask框架实现温湿度数据监测系统_esp32 flask

esp32 flask
项目概述

在这个项目中,我们将使用ESP32微控制器读取温湿度传感器的数据,并将这些数据通过HTTP请求传输到基于Flask框架的服务器。Flask是一个轻量级的Python Web框架,非常适合快速开发和部署Web应用。通过这个项目,我们不仅可以了解ESP32的基本使用,还能体验Flask框架的便捷和强大功能。

硬件和软件准备

硬件

  1. ESP32开发板
  2. DHT11或DHT22温湿度传感器
  3. 面包板和跳线

软件

  1. Arduino IDE(用于编写和上传ESP32代码)
  2. Python 3.x(用于运行Flask服务器)
  3. Flask库(可以通过pip安装)
硬件连接

将DHT11或DHT22传感器连接到ESP32开发板:

  • VCC连接到ESP32的3.3V引脚
  • GND连接到ESP32的GND引脚
  • 数据引脚连接到ESP32的D4引脚

 

ESP32代码

首先,我们需要在Arduino IDE中编写ESP32的代码,以读取传感器数据并通过HTTP请求将数据发送到Flask服务器。

  1. #include <WiFi.h>
  2. #include <HTTPClient.h>
  3. #include <DHT.h>
  4. #define DHTPIN 4
  5. #define DHTTYPE DHT22
  6. const char* ssid = "your_SSID";
  7. const char* password = "your_PASSWORD";
  8. const char* serverName = "http://your_server_ip:5000/temperature";
  9. DHT dht(DHTPIN, DHTTYPE);
  10. void setup() {
  11. Serial.begin(115200);
  12. WiFi.begin(ssid, password);
  13. while (WiFi.status() != WL_CONNECTED) {
  14. delay(1000);
  15. Serial.println("Connecting to WiFi...");
  16. }
  17. Serial.println("Connected to WiFi");
  18. dht.begin();
  19. }
  20. void loop() {
  21. if (WiFi.status() == WL_CONNECTED) {
  22. HTTPClient http;
  23. float temperature = dht.readTemperature();
  24. float humidity = dht.readHumidity();
  25. if (isnan(temperature) || isnan(humidity)) {
  26. Serial.println("Failed to read from DHT sensor!");
  27. return;
  28. }
  29. String serverPath = serverName + "?temperature=" + String(temperature) + "&humidity=" + String(humidity);
  30. http.begin(serverPath.c_str());
  31. int httpResponseCode = http.GET();
  32. if (httpResponseCode > 0) {
  33. String response = http.getString();
  34. Serial.println(httpResponseCode);
  35. Serial.println(response);
  36. } else {
  37. Serial.print("Error on sending GET: ");
  38. Serial.println(httpResponseCode);
  39. }
  40. http.end();
  41. } else {
  42. Serial.println("WiFi Disconnected");
  43. }
  44. delay(60000); // Send data every 60 seconds
  45. }

Flask服务器代码

接下来,我们编写Flask服务器的代码,以接收来自ESP32的数据并进行处理。

  1. from flask import Flask, request, jsonify
  2. app = Flask(__name__)
  3. @app.route('/temperature', methods=['GET'])
  4. def get_temperature():
  5. temperature = request.args.get('temperature')
  6. humidity = request.args.get('humidity')
  7. if temperature and humidity:
  8. print(f"Received temperature: {temperature}°C, humidity: {humidity}%")
  9. return jsonify({"status": "success", "temperature": temperature, "humidity": humidity})
  10. else:
  11. return jsonify({"status": "error", "message": "Missing temperature or humidity"}), 400
  12. if __name__ == '__main__':
  13. app.run(host='0.0.0.0', port=5000)
  14. p

运行Flask服务器

确保已安装Flask库,可以通过以下命令安装:

pip install flask

然后,在终端中运行Flask服务器:

python app.py
Flask框架的好处
  1. 轻量级:Flask是一个轻量级框架,易于学习和使用,适合快速开发和原型设计。
  2. 模块化:Flask采用模块化设计,允许开发者根据需求选择和集成各种扩展,如数据库、表单处理和身份验证等。
  3. 灵活性:Flask没有强制的项目结构和约定,开发者可以根据自己的习惯和需求组织代码。
  4. 文档丰富:Flask有详细的文档和广泛的社区支持,开发者可以轻松找到所需的资源和帮助。
  5. 易于扩展:Flask可以通过各种扩展和中间件轻松扩展功能,如Flask-SQLAlchemy、Flask-WTF和Flask-Login等。
项目总结

通过这个项目,我们成功地使用ESP32读取温湿度传感器的数据,并将这些数据传输到基于Flask框架的服务器。Flask作为一个轻量级的Web框架,提供了简单、灵活和强大的功能,适合快速开发和部署物联网应用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/918335
推荐阅读
相关标签
  

闽ICP备14008679号