สารบัญ:

สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk: 4 ขั้นตอน
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk: 4 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk: 4 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk: 4 ขั้นตอน
วีดีโอ: DIY weather station kit - tinkering and homebrew code 2024, กรกฎาคม
Anonim
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk
สถานีตรวจอากาศ DIY โดยใช้ DHT11, BMP180, Nodemcu พร้อม Arduino IDE ผ่านเซิร์ฟเวอร์ Blynk

Github: DIY_Weather_Station

Hackster.io: สถานีตรวจอากาศ

คุณคงเคยเห็น Weather Application ใช่ไหม? เช่น เมื่อคุณเปิดมัน คุณจะรู้สภาพอากาศ เช่น อุณหภูมิ ความชื้น ฯลฯ ค่าที่อ่านได้คือค่าเฉลี่ยของพื้นที่ขนาดใหญ่ ดังนั้น หากคุณต้องการทราบพารามิเตอร์ที่แน่นอนที่เกี่ยวข้องกับห้องของคุณ คุณไม่สามารถทำได้เพียงแค่ พึ่งพาแอปพลิเคชั่นสภาพอากาศ เพื่อจุดประสงค์นี้ เรามาสร้างสถานีตรวจอากาศซึ่งคุ้มค่าและเชื่อถือได้และให้ค่าที่ถูกต้องแก่เรา

สถานีตรวจอากาศเป็นสถานที่ที่มีเครื่องมือและอุปกรณ์สำหรับวัดสภาพอากาศเพื่อให้ข้อมูลสำหรับการพยากรณ์อากาศและเพื่อศึกษาสภาพอากาศและสภาพอากาศ ต้องใช้ความพยายามเพียงเล็กน้อยในการเสียบและเขียนโค้ด มาเริ่มกันเลยดีกว่า

เกี่ยวกับโนเดมคู:

NodeMCU เป็นแพลตฟอร์มโอเพ่นซอร์ส IoT

ประกอบด้วยเฟิร์มแวร์ที่ทำงานบน ESP8266 Wi-Fi SoC จาก Espressif Systems และฮาร์ดแวร์ที่ใช้โมดูล ESP-12

คำว่า "NodeMCU" โดยค่าเริ่มต้นหมายถึงเฟิร์มแวร์มากกว่าชุดพัฒนา เฟิร์มแวร์ใช้ภาษาสคริปต์ Lua อิงตามโครงการ eLua และสร้างขึ้นจาก Espressif Non-OS SDK สำหรับ ESP8266 ใช้โปรเจ็กต์โอเพ่นซอร์สมากมาย เช่น lua-cjson และ spiffs

ข้อกำหนดของเซนเซอร์และซอฟต์แวร์:

1. Nodemcu (esp8266-12e v1.0)

2. DHT11

3. BMP180

4. Arduino IDE

ขั้นตอนที่ 1: รู้จักเซ็นเซอร์ของคุณ

รู้จักเซ็นเซอร์ของคุณ
รู้จักเซ็นเซอร์ของคุณ

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: การเชื่อมต่อ

การเชื่อมต่อ
การเชื่อมต่อ

DHT11 กับ Nodemcu:

พิน 1 - 3.3V

พิน 2 - D4

พิน 3 - NC

พิน 4 - Gnd

BMP180 พร้อม Nodemcu:

วิน - 3.3V

Gnd - Gnd

SCL - D6

SDA - D7

ขั้นตอนที่ 3: ตั้งค่า Blynk

Image
Image
ตั้งค่า Blynk
ตั้งค่า Blynk

Blynk คืออะไร?

Blynk เป็นแพลตฟอร์มที่มีแอป iOS และ Android เพื่อควบคุม Arduino, Raspberry Pi และไลค์บนอินเทอร์เน็ต

เป็นแดชบอร์ดดิจิทัลที่คุณสามารถสร้างอินเทอร์เฟซแบบกราฟิกสำหรับโครงการของคุณโดยเพียงแค่ลากและวางวิดเจ็ต การตั้งค่าทุกอย่างง่ายมาก และคุณสามารถเริ่มซ่อมแซมได้ภายในเวลาไม่ถึง 5 นาที Blynk ไม่ได้ผูกติดอยู่กับบอร์ดหรือโล่บางอัน แต่จะสนับสนุนฮาร์ดแวร์ที่คุณเลือกแทน ไม่ว่า Arduino หรือ Raspberry Pi ของคุณจะเชื่อมโยงกับอินเทอร์เน็ตผ่าน Wi-Fi, อีเธอร์เน็ต หรือชิป ESP8266 ใหม่นี้ Blynk จะช่วยให้คุณออนไลน์และพร้อมสำหรับอินเทอร์เน็ตในทุกสิ่งของคุณ

สำหรับข้อมูลเพิ่มเติมในการตั้งค่า Blynk: การตั้งค่า Blynk โดยละเอียด

ขั้นตอนที่ 4: รหัส

รหัส
รหัส

//ความคิดเห็นสำหรับแต่ละบรรทัดอยู่ในไฟล์.ino ด้านล่าง

#รวม #define BLYNK_PRINT อนุกรม #รวม #รวม #รวม #รวม #รวม Adafruit_BMP085 bmp; #define I2C_SCL 12 #define I2C_SDA 13 float dst, bt, bp, ba; ถ่าน dstmp[20], btmp[20], bprs[20], balt[20]; bool bmp085_present=จริง; char auth="ใส่รหัสการตรวจสอบสิทธิ์ของคุณจากแอป Blynk ที่นี่"; char ssid = "SSID WiFi ของคุณ"; char pass = "รหัสผ่านของคุณ"; #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht (DHTPIN, DHTTYPE); //กำหนดพินและตัวจับเวลา dhttype BlynkTimer; เป็นโมฆะ sendSensor() { if (!bmp.begin()) { Serial.println("ไม่พบเซ็นเซอร์ BMP085 ที่ถูกต้อง ให้ตรวจสอบการเดินสาย!"); ในขณะที่ (1) {} } float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan (h) || isnan (t)) { Serial.println ("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!"); กลับ; } แกมมาสองเท่า = log(h/100) + ((17.62*t) / (243.5+t)); ดับเบิล dp = 243.5*แกมมา / (17.62 แกมมา); 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); } การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); Blynk.begin(รับรองความถูกต้อง, ssid, ผ่าน); dht.begin(); Wire.begin(I2C_SDA, I2C_SCL); ล่าช้า(10); timer.setInterval (1000L, sendSensor); } วงเป็นโมฆะ () { Blynk.run (); timer.run(); }

แนะนำ: