使用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 DHT22

const 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, jsonify

app = 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"}), 400

if __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框架,提供了简单、灵活和强大的功能,适合快速开发和部署物联网应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/733896.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享uniapp + Springboot3+vue3小程序项目实战

分享uniapp Springboot3vue3小程序项目实战 经过10天敲代码&#xff0c;终于从零到项目测试完成&#xff0c;一个前后端分离的小程序实战项目学习完毕 时间从6月12日 到6月22日&#xff0c;具有程序开发基础&#xff0c;第一次写uniapp,Springboot以前用过&#xff0c;VUE3也…

外部存储器

外部存储器是主存的后援设备&#xff0c;也叫做辅助存储器&#xff0c;简称外存或辅存。 它的特点是容量大、速度慢、价格低&#xff0c;可以脱机保存信息&#xff0c;属于非易失性存储器。 外存主要有&#xff1a;光盘、磁带、磁盘&#xff1b;磁盘和磁带都属于磁表面存储器…

跌倒识别:守护公共安全的AI技术应用场景-免费API调用

随着科技的不断进步&#xff0c;人工智能在各个领域的应用日益广泛&#xff0c;其中在公共安全领域&#xff0c;智能跌倒识别系统正逐渐成为守护人们安全的重要工具。本文将分享智能跌倒识别系统在不同场景下的应用及其重要性。 产品在线体验地址-API调用或本地化部署 AI算法模…

4、MFC:菜单栏、工具栏与状态栏

菜单栏、工具栏与状态栏 1、菜单栏1.1 简介1.2 创建属性设置菜单消息成员函数 1.3 实例 2、工具栏2.1 简介工具栏属性2.2 创建消息CToolBar类的主要成员函数 2.3 实例 3、状态栏3.1 简介3.2 创建CStatusBar类状态栏创建 3.3 实例 1、菜单栏 1.1 简介 菜单在界面设计中是经常使…

【AWS SMB】关于AWS 中小型企业 (SMB) 能力介绍及注意事项

文章目录 前言一、什么是 SMB&#xff1f;&#x1f4e2;二、如何识别中小企业的需求三、中小企业营销活动的类型四、AWS 合作伙伴可获得的其他 AWS 机会4.1 AWS IQ4.2 APN 客户参与 (ACE) 计划 前言 AWS 中小型企业 &#xff08;SMB&#xff09; 能力合作伙伴专注于帮助中小型…

荒野大镖客2启动找不到emp.dll的7个修复方法,轻松解决dll丢失的办法

一、emp.dll文件丢失的常见原因 安装或更新问题&#xff1a;在软件或游戏的安装过程中&#xff0c;可能由于安装程序未能正确复制文件到目标目录&#xff0c;或在更新过程中文件被意外覆盖或删除&#xff0c;导致emp.dll文件丢失。 安全软件误删&#xff1a;某些安全软件可能…

甘肃旅游服务平台的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;公告信息管理&#xff0c;景点管理&#xff0c;酒店管理&#xff0c;基础数据管理&#xff0c;美食管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0…

在 Equinix 上使用 MinIO 控制云数据成本

公有云改变了公司构建、部署和管理应用程序的方式&#xff0c;主要是向好的方向发展。在您刚开始使用时&#xff0c;公有云会提供基础架构、服务、支持和维护&#xff0c;以便快速启动和运行。它以几乎无限的方式提供最终的可伸缩性&#xff0c;无论应用程序的负载如何&#xf…

小米15系列将首发骁龙8 Gen4 SoC

高通已确认2024年骁龙峰会定于10月21日举行。在这次峰会中高通将推出其最新的移动芯片Snapdragon 8 Gen4 SoC。著名科技博主DigitalChatStation今天证实&#xff0c;骁龙8 Gen4将以小米15系列首次亮相。这意味着小米15系列将是第一款使用这款新旗舰处理器的手机。 这不是小米第…

和琪宝的厦门之旅~

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 引言 承接去年国庆的遗憾&#xff0c;我们将这次的旅行城市定为厦门。 琪宝是下午四点左右到…

湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析

湖南源点调研认为&#xff1a;无论是创业公司&#xff0c;还是在公司内部探索新的项目或者新的产品线等&#xff0c;首先都要做“市场机会分析与调研“&#xff0c;要真正思考并解答以下疑问&#xff1a; 我们的目标客户群体是谁&#xff0c;他们如何决策&#xff1f; 我们所…

长尾式差分放大电路调零

长尾式放大电路用了两个参数相同的三极管&#xff0c;但实际上并没有完全相同的三极管&#xff0c;所以为了提高差分放大电路的对称性(一边电流增加多少&#xff0c;另一边电流减小多少&#xff0c;即能在电阻Re上产生的压降不变(后面做虚地处理))&#xff0c;在下图中加入可调…

FaceFusionSharp OnnxRuntime版 视频换脸

FaceFusionSharp OnnxRuntime版 视频换脸 目录 效果 项目 代码 下载 其他 效果 FaceFusionSharp OnnxRuntime版效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Threading; using System.Window…

vivado、vitis2022安装及其注意事项(省时、省空间)

1、下载 AMD官网-资源与支持-vivado ML开发者工具&#xff0c;或者vitis平台&#xff0c; 下载的时候有个官网推荐web安装&#xff0c;亲测这个耗时非常久&#xff0c;不建议使用&#xff0c;还是直接下载89G的安装包快。 注意&#xff1a;安装vitis平台会默认安装vivado&…

Android补间动画、帧动画、属性动画详解

View Animation&#xff1a; 视图动画在古老的Android版本系统中就已经提供了&#xff0c;只能被用来设置View的动画。 Drawable Animation&#xff1a; 这种动画&#xff08;也叫Frame动画、帧动画&#xff09;其实可以划分到视图动画的类别&#xff0c;专门用来一个一个的显…

UE4_材质_湿度着色器及Desaturation算法_ben材质教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿美好生活越来越好。 效果图&#xff1a; 原图&#xff1a; 1、使用初学者内容包的材质 我们这里使用虚幻自带的材质M_Brick_Clay_Old,复制一个更名为M_Brickclayoldwet材质。 2、添加去饱和度Desaturation节…

数据库精选题(三)(SQL语言精选题)(按语句类型分类)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 创建语句 创建表 创建视图 创建索引…

【一】【算法】经典树状数组和并查集,详细解析,初步认识,【模板】树状数组 1,树状数组并查集

【模板】树状数组 1 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某一个数加上 x x x 求出某区间每一个数的和 输入格式 第一行包含两个正整数 n , m n,m n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。 第二…

Win11下安装VS2022失败的解决办法

前几天我把我的HP Z840的操作系统换成了Win11&#xff0c;在重装VS2022时遇到了麻烦&#xff0c;提示无法安装 Microsoft.VisualStudio.Devenv.Msi。 查看安装日志提示&#xff1a;Could not write value devenv.exe to key \SOFTWARE\Microsoft\Internet Explorer\Main\Featur…

DataWhale - 吃瓜教程学习笔记(二)

学习视频&#xff1a;第3章-一元线性回归_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.1 - 3.2 一元线性回归 - 最小二乘法 - 极大似然估计 - 梯度 多元函数的一阶导数 - 海塞矩阵 多元函数的二阶导数 - 机器学习三要素