×

Arduino气象站

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-20

分享资料个

描述

GitHub:DIY_Weather_Station

你会看到天气应用程序吧?就像,当你打开它时,你会知道温度、湿度等天气状况。这些读数是一个大区域的平均值,所以如果你想知道与你房间相关的确切参数,你不能只依赖天气应用程序。为此,让我们继续制作一个具有成本效益、可靠并为我们提供准确价值的气象站。

气象站是配备测量大气条件的仪器和设备,为天气预报提供信息和研究天气和气候的设施。它需要一点努力来插入和编码。让我们开始吧。

关于 NodeMCU:

NodeMCU 是一个开源物联网平台。

它包括在 Espressif Systems 的 ESP8266 Wi-Fi SoC 上运行的固件,以及基于 ESP-12 模块的硬件。

默认情况下,术语“NodeMCU”是指固件而不是开发工具包。固件使用 Lua 脚本语言。它基于 eLua 项目,并基于适用于 ESP8266 的 Espressif Non-OS SDK 构建。它使用了许多开源项目,例如 lua-cjson 和 spiffs。

传感器和软件要求:

1.NodeMCU (ESP8266-12e v1.0)

2. DHT11

3.BMP180

4.Arduino集成开发环境

第 1 步:了解您的传感器

 
pYYBAGOpeouAFwlzAACgo-9A6-0243.jpg
 

 

BMP180:

描述:

BMP180 由一个压阻式传感器、一个模数转换器和一个带有 E2PROM 和串行 I2C 接口的控制单元组成。BMP180 提供未补偿的压力和温度值。E2PROM 存储了 176 位的单独校准数据。这用于补偿偏移、温度依赖性和传感器的其他参数。

  • UP = 压力数据(16 至 19 位)
  • UT = 温度数据(16 位)

技术规格:

  • 输入电压:3 至 5VDC
  • 逻辑:3 至 5V 兼容
  • 压力传感范围:300-1100 hPa(海拔9000m至-500m)
  • 高达 0.03hPa / 0.25m 分辨率 - 40 至 +85°C 工作范围,+-2°C 温度精度
  • 该板/芯片使用 I2C 7 位地址 0x77。
DHT11:

描述:

  • DHT11 是一款基本的超低成本数字温度和湿度传感器。
  • 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上输出数字信号(不需要模拟输入引脚)。它使用起来相当简单,但需要仔细计时才能获取数据。
  • 该传感器唯一真正的缺点是您每 2 秒只能从中获取一次新数据,因此在使用我们的库时,传感器读数最多可达 2 秒。

技术规格:

  • 3 至 5V 电源和 I/O
  • 适用于 0-50°C 温度读数 ±2°C 精度
  • 适用于 20-80% 的湿度读数,精度为 5%
  • 转换期间使用 2.5 mA 最大电流(请求数据时)

第 2 步:连通性

 
pYYBAGOpeo6ACGQMAAEgm7qtSSo687.jpg
 

 

  • 带有 NodeMCU 的 DHT11:

引脚 1 - 3.3V

引脚 2 - D4

引脚 3 - 常闭

引脚 4 - 接地

  • 带有 NodeMCU 的 BMP180:

输入电压 - 3.3V

接地 - 接地

沙中学院 - D6

SDA-D7

第 3 步:设置 Blynk

 

什么是 Blynk?

Blynk 是一个带有 iOS 和 Android 应用程序的平台,可以通过 Internet 控制 Arduino、Raspberry Pi 等。

它是一个数字仪表板,您可以在其中通过简单地拖放小部件来为您的项目构建图形界面。设置一切非常简单,您将在不到 5 分钟内开始修补。Blynk 不依赖于某些特定的板或盾牌。相反,它支持您选择的硬件。无论您的 Arduino 或 Raspberry Pi 是通过 Wi-Fi、以太网还是这个新的 ESP8266 芯片连接到互联网,Blynk 都会让您上网并为您的物联网做好准备。

有关设置 Blynk 的更多信息:详细的 Blynk 设置

第 4 步:为其编写 Arduino 代码

//Comments for each line is given in the .ino file below
#include <Adafruit_Sensor.h>
#define BLYNK_PRINT Serial
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
#define I2C_SCL 12
#define I2C_SDA 13
float dst,bt,bp,ba;
char dstmp[20],btmp[20],bprs[20],balt[20];
bool bmp085_present=true;
char auth[]="Put your Authication key from the Blynk app here";
char ssid[] = "Your WiFi SSID";
char pass[] = "Your Password";
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); //Defining the pin and the dhttype
BlynkTimer timer;
void sendSensor()
{
	if (!bmp.begin()) 
	{
           Serial.println("Could not find a valid BMP085 sensor, check wiring!");
              while (1) {}
        }
float h = dht.readHumidity();
float t = dht.readTemperature();
	
	if (isnan(h) || isnan(t))
	{
	Serial.println("Failed to read from DHT sensor!");
	return;
	}
	double gamma = log(h/100) + ((17.62*t) / (243.5+t));
	double dp = 243.5*gamma / (17.62-gamma);
float bp =  bmp.readPressure()/100;
float ba =  bmp.readAltitude();
float bt =  bmp.readTemperature();
float dst = bmp.readSealevelPressure()/100;
Blynk.virtualWrite(V5 , h);
Blynk.virtualWrite(V6 , t);
Blynk.virtualWrite(V10, bp);
Blynk.virtualWrite(V11, ba);
Blynk.virtualWrite(V12, bt);
Blynk.virtualWrite(V13, dst);
Blynk.virtualWrite(V14, dp);
}
void setup()
{
	Serial.begin(9600);
	Blynk.begin(auth, ssid, pass);
	dht.begin();
	Wire.begin(I2C_SDA, I2C_SCL);
	delay(10);
	timer.setInterval(1000L, sendSensor);
}
void loop()
{
	Blynk.run();
	timer.run();
}
 
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !