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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载百度网盘

redis下载安装以及基本使用 下载地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;0410 一个名对应一个数值 内存级 在内存里进行操作 准备启动 我们现在就有一个redis客户端的服务器了 我们再启动一个cmd 操作redis数据库 redis里面的基本数据类型有五种 …

2024年7月JLPT日语N1真题试卷和答案解析,《Navi日语社》小程序在线答题考试,你的专属考试助手,日语学习神器!

掌握日语&#xff0c;从日语社小程序开始。这款小程序专为日语学习者设计&#xff0c;提供全面的JLPT备考资源&#xff0c;包括日语N1至N5等级考试的历年真题和2024年最新题目。无论你是日语新手还是备考高手&#xff0c;都能在这里找到适合自己的学习路径。 核心功能&#xf…

用VPS部署聊天机器人有哪些优势?

VPS足以帮助您将人工智能 (AI) 的功能无缝融入聊天机器人并增强客户支持。聊天机器人已迅速成为改善用户体验的首选解决方案&#xff0c;因为它们全天候在线且可编程回答各种问题。 聊天机器人在客户支持方面的作用不容置疑。但所有出色的解决方案都需要出色的网络托管。 VPS…

【D3.js in Action 3 精译】关于本书

文章目录 本书读者本书结构与路线图本书代码liveBook 在线论坛 D3.js 项目的传统开发步骤 本书读者 这本书适用于所有渴望在数据可视化工作中获得完全创意自由的人&#xff0c;从定制化的经典图表到创建独特的数据可视化布局&#xff0c;涵盖内容广泛&#xff0c;应有尽有。您…

银河麒麟V10 SP1.1操作系统 离线安装 nginx1.21.5、redis 服务

银河麒麟官网地址&#xff1a;国产操作系统、麒麟操作系统——麒麟软件官方网站 一、查看系统版本 命令&#xff1a;nkvers 我的是 release V10 (SP1)&#xff0c;根据这个版本去官网找对应的rpm包 银河麒麟操作系统的rpm包必须从官方找&#xff0c; 要是随便找个Centos的rp…

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

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

机器学习课程复习——逻辑回归

1. 激活函数 Q:激活函数有哪些? SigmoidS型函数Tanh 双曲正切函数

U-Net for Image Segmentation

1.Unet for Image Segmentation 笔记来源&#xff1a;使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割) 1.1 DoubleConv (Conv2dBatchNorm2dReLU) import torch import torch.nn as nn import torch.nn.functional as F# nn.Sequential 按照类定义的顺序去执行模型&…

echarts Y轴展示时间片段,series data数据 也是时间片段,鼠标放上去 提示框显示对应的时间片段

功能要求 1、折线图&#xff0c;展示每天对应的一个时间片段 2、echarts Y轴展示时间片段&#xff0c;如&#xff1a;[00:00,03:00,05:15] 3、X轴展示日期&#xff0c;如&#xff1a;[xx年xx月xx日] 后端返回的数据结构&#xff0c;如 [{xAdate:"2024-06-15",data:…

【Spine学习14】之 裁剪

1、新建裁剪 2、在页面中随便点几下 圈出对应位置 3、点编辑裁剪 或者按空格键 退出编辑模式&#xff0c; 页面就只剩下对应区域&#xff0c;这个区域可以任意拖动 放大缩小显示。 tips&#xff1a; 如果手动选择区域描绘不准确&#xff0c;可以启用对应图片的网格 然后复制…

高性能并行计算华为云实验一:MPI矩阵运算

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…

C++Muduo网络库初探

Muduo初探 Muduo网络库简介 Muduo是由【陈硕】大佬个人开发的TCP网络编程库&#xff0c;基于Reactor模式&#xff0c;提供了高效的事件驱动网络编程框架&#xff0c;有助于快速搭建高性能的网络服务端。 什么是Reactor模式&#xff1f; I/O多路复用 在网络I/O中&#xff0…

Word页码设置,封面无页码,目录摘要阿拉伯数字I,II,III页码,正文开始123为页码

一、背景 使用Word写项目书或论文时&#xff0c;需要正确插入页码&#xff0c;比如封面无页码&#xff0c;目录摘要阿拉伯数字I&#xff0c;II&#xff0c;III为页码&#xff0c;正文开始以123为页码&#xff0c;下面介绍具体实施方法。 所用Word版本&#xff1a;2021 二、W…

jrt从量变到质变

又是一个加班的周末&#xff0c;上周把台式机代码和数据库环境弄好了&#xff0c;这周进行大数据测试&#xff0c;直接把标本、标本医嘱、报告、报告结果、药敏结果等数据插入到1亿的规模&#xff0c;跑了一天一夜插入了5000多万个标本&#xff0c;后面接着补剩下的到一亿。 演…

编程书籍的枯燥真相:你也有同样的感受吗?

讲动人的故事,写懂人的代码 我得实话实说,你可能已经发现市面上的大部分编程入门书籍有些枯燥。这个问题的根源在于许多作者把本应该充满乐趣和吸引力的入门指南,写得就像一本沉闷的参考手册。这就好比把一本充满冒险和乐趣的旅行日记,写成了一本单调乏味的字典。 我完全理…

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

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

React+TS前台项目实战(十二)-- 全局常用组件Toast封装,以及rxjs和useReducer的使用

文章目录 前言Toast组件1. 功能分析2. 代码详细注释&#xff08;1&#xff09;建立一个reducer.ts文件&#xff0c;用于管理状态数据&#xff08;2&#xff09;自定义一个清除定时器的hook&#xff08;3&#xff09;使用rxjs封装全局变量管理hook&#xff08;4&#xff09;在to…

GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国

快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI&#xff0c;华为成败在此一举大模型低价火拼间&#xff0c;智谱AI“钱途”黯淡手握新“王者”&#xff0c;腾讯又跟渠道干上了“美食荒漠”杭州&#xff0c;走出一个餐饮IPOGPT-4o一夜被赶超&#xff0c;Anthropic推出Cl…

和琪宝的厦门之旅~

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

jupyter notebook中使用不同的anaconda环境及常用conda命令

conda命令 在jupyter notebook中使用不同的anaconda环境配置 Jupyter notebook创建conda环境并配置内核 其他常用conda命令 在jupyter notebook中使用不同的anaconda环境 配置 Jupyter notebook 先用管理员身份打开Anaconda&#xff0c;再依次执行下列命令 在base环境中安装…