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集成开发环境
BMP180:
描述:
BMP180 由一个压阻式传感器、一个模数转换器和一个带有 E2PROM 和串行 I2C 接口的控制单元组成。BMP180 提供未补偿的压力和温度值。E2PROM 存储了 176 位的单独校准数据。这用于补偿偏移、温度依赖性和传感器的其他参数。
技术规格:
DHT11:
描述:
技术规格:
引脚 1 - 3.3V
引脚 2 - D4
引脚 3 - 常闭
引脚 4 - 接地
输入电压 - 3.3V
接地 - 接地
沙中学院 - D6
SDA-D7
什么是 Blynk?
Blynk 是一个带有 iOS 和 Android 应用程序的平台,可以通过 Internet 控制 Arduino、Raspberry Pi 等。
它是一个数字仪表板,您可以在其中通过简单地拖放小部件来为您的项目构建图形界面。设置一切非常简单,您将在不到 5 分钟内开始修补。Blynk 不依赖于某些特定的板或盾牌。相反,它支持您选择的硬件。无论您的 Arduino 或 Raspberry Pi 是通过 Wi-Fi、以太网还是这个新的 ESP8266 芯片连接到互联网,Blynk 都会让您上网并为您的物联网做好准备。
有关设置 Blynk 的更多信息:详细的 Blynk 设置
//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条评论
快来发表一下你的评论吧 !