• 【毕业设计项目】基于ESP32的家庭气象站系统 - stm32 物联网 嵌入式 单片机



    1 简介

    Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目

    基于ESP32的家庭气象站系统

    大家可用于 课程设计 或 毕业设计


    单片机-嵌入式毕设选题大全及项目分享:

    https://blog.csdn.net/m0_71572576/article/details/125409052


    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
    }
    }
    }
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

    单片机-嵌入式毕设选题大全及项目分享:

    https://blog.csdn.net/m0_71572576/article/details/125409052


    5 最后

  • 相关阅读:
    java基于springboot社区共享食堂订餐信息系统maven
    dns网络服务器未响应是什么原因(如果各自方法都尝试后无法使用,请尝试重启猫)
    SPI通信总线基本概念
    【工作篇】软件工程师的知识基础(持续更新)
    vue模版编译
    【论文研读】-Defining the Ethereum Virtual Machine for Interactive Theorem Provers
    蓝桥杯每日一题2023.10.21
    #边学边记 必修5 高项:对人管理 第1章 项目人力资源管理 之 定义及相关概念
    网络安全(黑客)—自学
    [附源码]SSM计算机毕业设计基于篮球云网站JAVA
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/125449978