当前位置: 首页 > news >正文

使用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服务器。

#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>#define DHTPIN 4
#define DHTTYPE DHT22const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* serverName = "http://your_server_ip:5000/temperature";DHT dht(DHTPIN, DHTTYPE);void setup() {Serial.begin(115200);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println("Connecting to WiFi...");}Serial.println("Connected to WiFi");dht.begin();
}void loop() {if (WiFi.status() == WL_CONNECTED) {HTTPClient http;float temperature = dht.readTemperature();float humidity = dht.readHumidity();if (isnan(temperature) || isnan(humidity)) {Serial.println("Failed to read from DHT sensor!");return;}String serverPath = serverName + "?temperature=" + String(temperature) + "&humidity=" + String(humidity);http.begin(serverPath.c_str());int httpResponseCode = http.GET();if (httpResponseCode > 0) {String response = http.getString();Serial.println(httpResponseCode);Serial.println(response);} else {Serial.print("Error on sending GET: ");Serial.println(httpResponseCode);}http.end();} else {Serial.println("WiFi Disconnected");}delay(60000); // Send data every 60 seconds
}

Flask服务器代码

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

from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/temperature', methods=['GET'])
def get_temperature():temperature = request.args.get('temperature')humidity = request.args.get('humidity')if temperature and humidity:print(f"Received temperature: {temperature}°C, humidity: {humidity}%")return jsonify({"status": "success", "temperature": temperature, "humidity": humidity})else:return jsonify({"status": "error", "message": "Missing temperature or humidity"}), 400if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
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框架,提供了简单、灵活和强大的功能,适合快速开发和部署物联网应用。

相关文章:

  • AI音乐大模型时代:版权归属与创意产业的新生长点
  • 华为---OSPF单区域配置(一)
  • KaTex在博客中显示数学公式
  • CPU飙升100%怎么办?字节跳动面试官告诉你答案!
  • LeetCode26. 删除有序数组中的重复项题解
  • 【Linux】基础IO_3
  • 【C++11】initializer_list详解!
  • NSSCTF-Web题目14
  • 前端 JS 经典:通用性函数封装思路
  • 常见的创建型设计模式( 一 )
  • 数据结构之探索“队列”的奥秘
  • vue elementui table给表格中满足条件的每一条记录添加计时器
  • 低代码平台框架:开源选型、实践与应用深度解析
  • C++拷贝构造函数、运算符重载函数、赋值运算符重载函数、前置++和后置++重载等的介绍
  • ThreadLocal的原理
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • go语言学习初探(一)
  • HTTP--网络协议分层,http历史(二)
  • js数组之filter
  • k8s 面向应用开发者的基础命令
  • leetcode386. Lexicographical Numbers
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Rancher-k8s加速安装文档
  • Redux 中间件分析
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 测试开发系类之接口自动化测试
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端临床手札——文件上传
  • 浅谈web中前端模板引擎的使用
  • 驱动程序原理
  • 人脸识别最新开发经验demo
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一个完整Java Web项目背后的密码
  • 原生 js 实现移动端 Touch 滑动反弹
  • 源码安装memcached和php memcache扩展
  • Linux权限管理(week1_day5)--技术流ken
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 带你开发类似Pokemon Go的AR游戏
  • 数据库巡检项
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)Hilt的基本概念和使用
  • (2022 CVPR) Unbiased Teacher v2
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (ZT)一个美国文科博士的YardLife
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)linux文件内容查看
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)LINQ之路