物联网毕业设计 单片机家庭气象站设计与实现

news2024/11/26 0:30:30

文章目录

  • 1 简介
  • 2 主要器件
    • 引脚连接
  • 3 实现效果
  • 4 部分实现代码


1 简介

🔥 Hi,大家好,这里是丹成学长的毕设系列文章!

🔥 对毕设有任何疑问都可以问学长哦!

这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是

🚩 基于ESP32的家庭气象站系统

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:4分
  • 工作量:4分
  • 创新点:3分

🧿 选题指导, 项目分享:

https://blog.csdn.net/molodi/article/details/125933857


2 主要器件

本项目学长将使用ESP32创建一个气象站。

基本原理是通过读取DHT22和BMP180传感器的数据,然后使用ESP32传输创建的网页上,在网页上显示气象数据。

在这里插入图片描述

引脚连接

DHT22与ESP32的连接如下:

DHT22 引脚1 VCC —–>ESP32 / 3.3V;

DHT22 引脚2 DATA—–>ESP32 / D15;

DHT22 引脚4 GND —–>ESP32 /GND.

然后将BMP180压力传感器连接到ESP32上。连接如下:

BMP180 Vin —–> ESP32 / 3.3V;

BMP180 GND —–> ESP32 /GND;

BMP180 SCL —–> ESP32 / pin 22;(ESP32的22号引脚是SCL.)

BMP180 SDA —–> ESP32 / pin 21;(ESP32的21号引脚是SDA.)

ESP32的22和21号引脚是I2C通信接口。

ESP GPIO

在这里插入图片描述

3 实现效果

首先,将代码中的Wi-Fi名称和密码信息替换为你自己的。然后上传代码并打开串口监视器。串口监视器将显示如下图所示的IP地址。

在这里插入图片描述
在浏览器中输入这个IP地址。输入IP地址后,网页会显示如下图所示。

在这里插入图片描述

4 部分实现代码

#include <WiFi.h>
#include <Wire.h>
#include <DHT.h>
#include <Adafruit_BMP085.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085 bmp;
char pressure_value[4];
const char* wifi_name = "Asus_2.4G"; //Your Wifi name
const char* wifi_pass = "basemu.com"; //Your Wifi password
WiFiServer server(80); //Port 80
void setup()
{
Serial.begin(115200);
dht.begin();
bmp.begin();
// Let's connect to wifi network
Serial.print("Connecting to ");
Serial.print(wifi_name);
WiFi.begin(wifi_name, wifi_pass); //Connecting to wifi network
while (WiFi.status() != WL_CONNECTED) //Waiting for the responce of wifi network
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connection Successful");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //Getting the IP address at which our webserver will be created
Serial.println("Type the above IP address into a browser search bar");
server.begin(); //Starting the server
}
void loop()
{
String pressure = String(bmp.readPressure());
// convert the reading to a char array
pressure.toCharArray(pressure_value, 4);
float hum = dht.readHumidity();
float temp = dht.readTemperature();
float fah = dht.readTemperature(true);
float heat_index = dht.computeHeatIndex(fah, hum);
float heat_indexC = dht.convertFtoC(heat_index);
WiFiClient client = server.available(); //Checking for incoming clients
if (client)
{
Serial.println("new client");
String currentLine = ""; //Storing the incoming data in the string
while (client.connected())
{
if (client.available()) //if there is some client data available
{
char c = client.read(); // read a byte
if (c == '\n') // check for newline character,
{
if (currentLine.length() == 0) //if line is blank it means its the end of the client HTTP request
{
client.print("<html><title> ESP32 Weather Station</title></html>");
client.print("<body bgcolor=\"#E6E6FA\"><h1 style=\"text-align: center; color: blue\"> ESP32 Weather Station </h1>");
client.print("<p style=\"text-align: center; font-size:150% \">Temperature in C: ");
client.print(temp);
client.print("<br/>Temperature in fah: ");
client.print(fah);
client.print("<br/>Humidity is: ");
client.print(hum);
client.print("<br/>Heat Index in C: ");
client.print(heat_indexC);
client.print("<br/>Heat Index in fah: ");
client.print(heat_index);
client.print("<br/>Pressure is: ");
client.print(pressure_value);
client.print("hpa");
client.print("</p></body>");
break; // break out of the while loop:
}
else
{ // if you got a newline, then clear currentLine:
currentLine = "";
}
}
else if (c != '\r')
{ // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
}
}

🧿 选题指导, 项目分享:

https://blog.csdn.net/molodi/article/details/125933857

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘你代理商做不起来货卖不出去的原因,探讨其背后的商业逻辑

现在很多代理商&#xff0c;大都是可以归于“个体户”性质。这些也代表了微小型企业&#xff0c;从前期的蓬勃发展&#xff0c;到现在的经营受限&#xff0c;特别是疫情等影响&#xff0c;很多人的经营都处于举步维艰的状态&#xff0c;如果你们现在是代理商&#xff0c;仓库里…

v-charts,点击页面按钮,不能二次重绘,解决方案

v-charts简介&#xff1a; 是基于 Vue2.0 和 Echarts 封装的图标组件&#xff0c;只需要统一提供一种对前后端都友好的数据格式设置简单的配置项&#xff0c;就可以生成常见的图表。 v-charts官方文档&#xff1a;v-charts echarts官方文档&#xff1a;Documentation - Apach…

8个关于 Promise.then 和 Promise.catch 的面试题,一定要掌握

前面&#xff0c;我们要讨论了 Promise 在异步编程中的执行&#xff0c;错过的朋友可以直接点击《10 个 JavaScript Promise 的面试题》这篇文章进行查看。 在今天的文章中&#xff0c;我们将讨论这些核心 API 用于 Promise 对象的用法。 这里我提供了10个代码片段&#xff0…

SequoiaDB湖仓一体分布式数据库2022.11月刊

本月看点速览 产品能力再获认可&#xff0c;入围多个榜单、报告 ‍精彩亮相2022沙丘大会湖仓一体专场 实力吸睛&#xff0c;获多家权威媒体关注与报道 生态圈不断扩大&#xff0c;与6家合作伙伴完成互认证 青杉计划2023进行中&#xff0c;一起攀登更高的“杉” 产品能力再获…

WPF 3D 摄像机LookDirection属性研究

像前文一样画一个三角形&#xff1b; 摄像机的位置是(-2,2,2)&#xff1b; 坐标系是这样的&#xff0c;x、y轴是在屏幕上&#xff0c;X轴正向向右&#xff0c;Y轴正向向上&#xff1b;Z轴是垂直于屏幕&#xff0c;从屏幕出来往人的方向为正向&#xff0c;往屏幕里边去是-Z&…

01-06-Hbase基础定义

Hbase定义&#xff1a; Hbase是一种分布式&#xff0c;可扩展&#xff0c;支持海量数据存储的NoSQL数据库。HBase是一个分布式的、面向列的开源数据库。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库&#xff0c;它是一个适合于非结构化数据存储的数据库。…

[附源码]Python计算机毕业设计SSM垃圾分类网站的设计与实现(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

得一微冲刺科创板上市:拟募资约12亿元,2021年营收同比增长260%

撰稿|汤汤 来源|贝多财经 近日&#xff0c;得一微电子股份有限公司&#xff08;下称“得一微”&#xff09;在上海证券交易所科创板递交招股书&#xff08;申报稿&#xff09;。本次冲刺科创板上市&#xff0c;得一微拟公开发行不超过2354万股股份&#xff0c;计划募资12.24亿…

两直线垂直,斜率乘积为-1的证明

老早以前在学习初等函数的时候&#xff0c;线性函数中的两直线y m0x b0, y m1x b1如果垂直&#xff0c;则有结论两条直线的斜率乘积为-1即m0*m1 -1&#xff0c;以前也只是拿来用&#xff0c;没有证明过。最近在学图形学的时候&#xff0c;突然想起了这个点&#xff0c;因此…

[附源码]计算机毕业设计springboot社区人员信息管理系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

UE5笔记【十一】蓝图变量BluePrint Variables

类似于在材料中将配置参数化&#xff0c;我们这里也可以将配置变量化。最后实现在对象detail细节中设置修改。 在左侧组件中找到【变量】&#xff0c;然后点击那个加号&#xff0c;添加两个变量用来控制楼梯和盒体的升降速度。 分别命名为&#xff1a;BoxSpeed和StairSpeed。然…

Java链接redis集群

1.导入依赖 <dependencies><!-- 1、 Jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><!-- 2、 Junit测试--><depen…

STM32f767之通用定时器

一&#xff0c;通用定时器基本介绍 二&#xff0c;配置相关项 1&#xff0c;时钟源。 一般我们选择内部时钟&#xff0c;TIM3通过APB1得到。 2&#xff0c;主从模式和触发源。 用到的比较少&#xff0c;暂时不考虑&#xff0c;选disable。 3&#xff0c;输出通道。 如果…

8年开发经验,帮你总结这帮双面HR们

对于广大开发工程师来说&#xff0c;你觉得天天看得见的那个hr小姐姐是什么形象&#xff1f; 读完本文&#xff0c;或许你会有一个不一样的认识&#xff0c;这个职业注定这些人有两面性 1、 百万人群中取你简历 从你还没进公司&#xff0c;还在面试阶段&#xff0c;就是hr跑前跑…

计算机网络全篇知识学习打卡

哈工大计算机网络学习打卡 1. 什么是计算机网络&#xff1f; 概念&#xff1a;通信技术与计算机技术紧密结合的产物&#xff0c;计算机网络就是一种特殊的通信网络。只不过计算机网络发送出来的信息是数据化信息。 定义&#xff1a;计算机网络就是互连的&#xff0c;自治的计…

TypeScript(TS)基础内容详细介绍

目录 一、TypeScript概念 二、TypeScript特点 三、开发环境配置 四、初识ts 五、TypeScript类型声明 1、any&#xff1a; 2、number数字类型 3 string字符串类型 4 boolean布尔类型 表示逻辑值&#xff1a;true 和 false。 5 数组类型 6 元组类型 7 enum枚举类型…

[附源码]Python计算机毕业设计SSM篮球馆预约小程序(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MySQL介绍与安装(超详细)

数据库介绍 数据库(database)简称DB&#xff0c;实际上就是一个文件集合&#xff0c;是一个存储数据的仓库&#xff0c;本质就是一个文件系统&#xff0c;数据库是按照特定的格式把数据存储起来&#xff0c;用户可以对存储的数据进行增删改查等操作。 数据库存储数据特点 ●…

零拷贝原理与实现

1.传统拷贝 FileInputStream、FileOutputStream read&#xff1a;将数据从磁盘读取到内核态缓冲区&#xff0c;再从内核态缓冲区拷贝到用户缓冲区 write&#xff1a;将数据从用户缓冲区写入到socket缓冲区&#xff0c;再从socket缓冲区写入到网卡设备 内核空间&#xff1a;…

Error: [mobx-miniprogram] no store specified (小程序全局数据共享bug)

话不多说&#xff0c;上bug&#xff01;&#xff01;&#xff01; 这个错误提示引入的store文件没有被指定&#xff0c;但是看了一下以为是后面的路径没引对&#xff0c;就重新引入还是不行&#xff0c;页面效果渲染不出来&#xff0c;然后查文档也没遇到类似的问题&#xff0…