สารบัญ:

IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: 7 ขั้นตอน
IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: 7 ขั้นตอน

วีดีโอ: IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: 7 ขั้นตอน

วีดีโอ: IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: 7 ขั้นตอน
วีดีโอ: 💕แม่แอ๊ฟ ทักษอร สวยมาก 2024, พฤศจิกายน
Anonim
IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น
IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น

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

บล็อกไดอะแกรมแสดงสิ่งที่เราจะได้รับในตอนท้าย

ภาพ
ภาพ

ขั้นตอนที่ 1: BoM - บิลวัสดุ

NodeMCU (ESP8266-12E) - USD 9.00

เซ็นเซอร์ความชื้นและอุณหภูมิ (DHT22) - USD10.00

เซ็นเซอร์ UV - 4.00 เหรียญสหรัฐ

OLED USD 12.00

เขียงหั่นขนม - USD1.00

ขั้นตอนที่ 2: เซ็นเซอร์ UV แบบอะนาล็อก

เซ็นเซอร์ UV แบบอะนาล็อก
เซ็นเซอร์ UV แบบอะนาล็อก
เซ็นเซอร์ UV แบบอะนาล็อก
เซ็นเซอร์ UV แบบอะนาล็อก
เซ็นเซอร์ UV แบบอะนาล็อก
เซ็นเซอร์ UV แบบอะนาล็อก

เซ็นเซอร์ UV นี้สร้างเอาต์พุตแบบอะนาล็อกตามสัดส่วนของรังสีอัลตราไวโอเลตที่พบในสเปกตรัมการรับรู้แสง ใช้โฟโตไดโอดยูวี (อิงจากแกลเลียมไนไตรด์) ซึ่งสามารถตรวจจับช่วงแสง 240-370nm (ซึ่งครอบคลุม UVB และสเปกตรัม UVA ส่วนใหญ่) ระดับสัญญาณจากโฟโตไดโอดมีขนาดเล็กมากในระดับนาโนแอมแปร์ ดังนั้นโมดูลจึงฝังแอมพลิฟายเออร์ในการดำเนินงานเพื่อขยายสัญญาณให้เป็นระดับโวลต์ที่อ่านง่ายขึ้น (0 ถึง 1V)

เซ็นเซอร์และ op-amp สามารถจ่ายไฟได้โดยเชื่อมต่อ VCC กับ 3.3VDC (หรือ 5VDC) และ GND กับกราวด์ สามารถรับสัญญาณอนาล็อกได้จากขา OUT

เอาต์พุตจะเป็นมิลลิโวลต์และจะอ่านโดยอินพุตแบบอะนาล็อกของ NodeMCU ของเรา เมื่ออ่านแล้ว เราควร "แปลง" (หรือ " map") เพื่อให้โค้ดจัดการค่าได้ดีขึ้น เราสามารถทำได้ด้วยฟังก์ชั่น readSensorUV():

/* อ่าน UV Sensor เป็น mV และเรียกการคำนวณดัชนี UV */

เป็นโมฆะ readSensorUV () { ไบต์ numOfReadings = 5; dataSensorUV = 0; สำหรับ (int i=0; i< numOfReadings; i++) { dataSensorUV += analogRead (sensorUVPin); ล่าช้า (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0))*1000; Serial.println (dataSensorUV); ดัชนีคำนวณ (); }

เมื่อเราได้ข้อมูล UV แล้ว เราก็สามารถคำนวณดัชนี UV ได้อย่างง่ายดายตามที่กำหนดไว้ในตารางด้านบน ฟังก์ชัน indexCalculate() จะทำเพื่อเรา:

/* การคำนวณดัชนี UV */

เป็นโมฆะ indexCalculate () { ถ้า (dataSensorUV < 227) indexUV = 0; อื่น ๆ ถ้า (227 <= dataSensorUV && dataSensorUV < 318) indexUV = 1; อื่น ๆ ถ้า (318 <= dataSensorUV && dataSensorUV < 408) indexUV = 2; อย่างอื่น if (408 <= dataSensorUV && dataSensorUV < 503) indexUV = 3; อย่างอื่นถ้า (503 <= dataSensorUV && dataSensorUV < 606) indexUV = 4; อื่น ๆ ถ้า (606 <= dataSensorUV && dataSensorUV < 696) indexUV = 5; อื่น ๆ ถ้า (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; อื่น ๆ ถ้า (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; อื่น ๆ ถ้า (881 <= dataSensorUV && dataSensorUV < 976) indexUV = 8; อื่น ๆ ถ้า (976 <= dataSensorUV && dataSensorUV < 1079) indexUV = 9; อื่น ๆ ถ้า (1079 <= dataSensorUV && dataSensorUV < 1170) indexUV = 10; อื่น indexUV = 11; }

ขั้นตอนที่ 3: การติดตั้งจอแสดงผล: OLED

การติดตั้งจอแสดงผล: OLED
การติดตั้งจอแสดงผล: OLED
การติดตั้งจอแสดงผล: OLED
การติดตั้งจอแสดงผล: OLED

เพื่อวัตถุประสงค์ในการทดสอบ เราจะรวม OLED ไว้ในเครื่องวัด UV ของเรา (ขั้นตอนนี้เป็นทางเลือกอย่างสมบูรณ์)

ในระหว่างการทดสอบ การใช้ Serial Monitor เป็นเรื่องปกติ แต่จะเกิดอะไรขึ้นเมื่อคุณใช้ต้นแบบของคุณห่างไกลจากพีซีในโหมดสแตนด์อะโลน มาติดตั้งจอ OLED รุ่น SSD1306 กัน ซึ่งมีจุดเด่นดังนี้

  • ขนาดหน้าจอ: 0.96"
  • I2C IIC SPI Serial
  • 128X64
  • LED OLED LCD สีขาว

ทำตามแผนภาพไฟฟ้าและเชื่อมต่อ 4 ขาของ OLED ของเรา:

  • VCC ไปที่ 3.3V
  • GND ลงสู่พื้นดิน
  • SCL ไปที่ NodeMCU (GPIO 2) ==>D4
  • SDA ไปที่ NodeMCU (GPIO 0) ==>D3

เมื่อเราเชื่อมต่อจอแสดงผลแล้ว ให้ดาวน์โหลดและติดตั้งไลบรารีบน Arduino IDE ของเรา: "ไดรเวอร์ ESP8266 OLED สำหรับจอแสดงผล SSD1306" ที่พัฒนาโดย Daniel Eichhorn (ตรวจสอบให้แน่ใจว่าคุณใช้เวอร์ชัน 3.0.0 หรือใหญ่กว่า!)

ติดตั้งไลบรารีบน Arduino IDE ของคุณที่สามารถพบได้ใน SSD1306Wire.h

เมื่อคุณรีสตาร์ท IDE แล้ว ไลบรารีควรได้รับการติดตั้งไว้แล้ว

ไลบรารีรองรับโปรโตคอล I2C เพื่อเข้าถึงจอแสดงผล OLED โดยใช้ไลบรารี Wire.h ในตัว:

/* OLED */

#include "SSD1306Wire.h" #include "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306Wire จอแสดงผล (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN);

มาดูรายการ API ที่สำคัญบางอย่างที่จะใช้กับจอแสดงผล OLED ของเรา รายการทั้งหมดสามารถพบได้ที่ GITHub ที่ให้ไว้ด้านบน

A. การควบคุมการแสดงผล:

เป็นโมฆะ init(); // เริ่มต้นการแสดงผล

โมฆะ displayOn(โมฆะ); // เปิดการแสดงผลเป็นโมฆะ displayOff(เป็นโมฆะ); // ปิดการแสดงผล void clear(void); // ล้างบัฟเฟอร์พิกเซลในเครื่องเป็นโมฆะ flipScreenVertically(); // พลิกจอแสดงผลกลับด้าน

B. การทำงานของข้อความ:

เป็นโมฆะ drawString (int16_t x, int16_t y, ข้อความสตริง); // (xpos, ypos, "ข้อความ")

เป็นโมฆะ setFont (const char * fontData); // ตั้งค่าฟอนต์ปัจจุบัน

แบบอักษรเริ่มต้นที่ใช้ได้:

  • ArialMT_Plain_10,
  • ArialMT_Plain_16,

  • ArialMT_Plain_24

เมื่อติดตั้งทั้ง OLED และ Library แล้ว เรามาเขียนโปรแกรมง่ายๆ เพื่อทดสอบกัน ป้อนด้วยรหัสร้องบน IDE ของคุณ ผลลัพธ์ควรเป็นจอแสดงผลดังแสดงในรูปภาพด้านบน:

* OLED */

#include "SSD1306Wire.h" #include "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306Wire จอแสดงผล (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); displaySetup(); } void loop() { } /* เริ่มต้นและแสดงข้อมูลการตั้งค่าบน OLED */ void displaySetup() { display.init(); // เริ่มต้นการแสดงผล display.clear(); // ล้าง display.flipScreenVertically(); // พลิกหน้าจอแสดงผลกลับด้าน display.display(); // วางข้อมูลบนจอแสดงผล Serial.println("กำลังเริ่มการทดสอบการแสดงผล"); display.setFont(ArialMT_Plain_24); display.drawString(30, 0, "OLED"); // (xpos, ypos, "ข้อความ") display.setFont(ArialMT_Plain_16); display.drawString(18, 29, "เริ่มการทดสอบแล้ว"); display.setFont(ArialMT_Plain_10); display.drawString(10, 52, "Serial BaudRate:"); display.drawString(90, 52, สตริง(11500)); display.display(); // ใส่ข้อมูลในการแสดงผลล่าช้า (3000); }

สามารถดาวน์โหลดโปรแกรมข้างต้นได้จาก GitHub ของฉัน:

NodeMCU_OLED_Test

ขั้นตอนที่ 4: เครื่องวัดรังสียูวีในพื้นที่

เครื่องวัดรังสียูวีในพื้นที่
เครื่องวัดรังสียูวีในพื้นที่
เครื่องวัดรังสียูวีในพื้นที่
เครื่องวัดรังสียูวีในพื้นที่

ตอนนี้ เมื่อติดตั้งจอแสดงผล OLED แล้ว เราสามารถเชื่อมต่อแบตเตอรี่และทำการทดสอบระยะไกลโดยใช้ "UV Meter" ของเรา

#define SW_VERSION "UV_Sensor_V.1"

/* เซ็นเซอร์ UV */ #define เซ็นเซอร์UVPin A0 int dataSensorUV = 0; ดัชนี intUV = 0; /* OLED */ #include "SSD1306Wire.h" #include "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306Wire จอแสดงผล (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); displaySetup(); } วงเป็นโมฆะ () { readSensorUV (); displayUV(); ล่าช้า (1,000); } /* เริ่มต้นและแสดงข้อมูลการตั้งค่าบน OLED */ void displaySetup() { display.init(); // เริ่มต้นการแสดงผล display.clear(); // ล้าง display.flipScreenVertically(); // พลิกหน้าจอแสดงผลกลับด้าน display.display(); // วางข้อมูลบนจอแสดงผล Serial.println("กำลังเริ่มการทดสอบเซนเซอร์ UV"); display.setFont(ArialMT_Plain_24); display.drawString(10, 0, "MJRoBot"); display.setFont(ArialMT_Plain_16); display.drawString(0, 29, "การทดสอบเซ็นเซอร์ UV"); display.setFont(ArialMT_Plain_10); display.drawString(0, 52, "เวอร์ชัน SW:"); display.drawString(45, 52, SW_VERSION); display.display(); ล่าช้า (3000); } /* อ่าน UV Sensor เป็น mV และเรียกการคำนวณดัชนี UV */ ถือเป็นโมฆะ readSensorUV () { ไบต์ numOfReadings = 5; dataSensorUV = 0; สำหรับ (int i=0; i< numOfReadings; i++) { dataSensorUV += analogRead (sensorUVPin); ล่าช้า (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0))*1000; Serial.println (dataSensorUV); ดัชนีคำนวณ (); } /* การคำนวณดัชนี UV */ void indexCalculate () { if (dataSensorUV < 227) indexUV = 0; อื่น ๆ ถ้า (227 <= dataSensorUV && dataSensorUV < 318) indexUV = 1; อื่น ๆ ถ้า (318 <= dataSensorUV && dataSensorUV < 408) indexUV = 2; อย่างอื่น if (408 <= dataSensorUV && dataSensorUV < 503) indexUV = 3; อย่างอื่นถ้า (503 <= dataSensorUV && dataSensorUV < 606) indexUV = 4; อื่น ๆ ถ้า (606 <= dataSensorUV && dataSensorUV < 696) indexUV = 5; อื่น ๆ ถ้า (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; อื่น ๆ ถ้า (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; อื่น ๆ ถ้า (881 <= dataSensorUV && dataSensorUV < 976) indexUV = 8; อื่น ๆ ถ้า (976 <= dataSensorUV && dataSensorUV < 1079) indexUV = 9; อื่น ๆ ถ้า (1079 <= dataSensorUV && dataSensorUV < 1170) indexUV = 10; อื่น indexUV = 11; } /* แสดงค่า UV บน OLED*/ void displayUV() { display.clear(); display.setFont(ArialMT_Plain_16); display.drawString(20, 0, "เซนเซอร์ UV"); display.drawString(0, 23, "ยูวี (mV):"); display.drawString (80, 23, สตริง (dataSensorUV)); display.drawString(0, 48, "ดัชนี UV:"); display.setFont(ArialMT_Plain_24); display.drawString(82, 42, สตริง(indexUV)); display.display(); }

สามารถดาวน์โหลดรหัสด้านบนได้จาก GitHun ของฉัน: NodeMCU_UV_Sensor_OLED.ino

ขั้นตอนที่ 5: การติดตั้ง DHT22 สำหรับการวัดอุณหภูมิและความชื้นของอากาศ

การติดตั้ง DHT22 สำหรับการวัดอุณหภูมิและความชื้นของอากาศ
การติดตั้ง DHT22 สำหรับการวัดอุณหภูมิและความชื้นของอากาศ
การติดตั้ง DHT22 สำหรับการวัดอุณหภูมิและความชื้นของอากาศ
การติดตั้ง DHT22 สำหรับการวัดอุณหภูมิและความชื้นของอากาศ

หนึ่งในเซ็นเซอร์ที่ใช้มากที่สุดสำหรับการบันทึกข้อมูลสภาพอากาศคือ DHT22 (หรือเป็น DHT11 ของพี่ชาย) เซ็นเซอร์ความชื้นสัมพัทธ์และอุณหภูมิแบบดิจิตอล ใช้เซ็นเซอร์ความชื้นแบบคาปาซิทีฟและเทอร์มิสเตอร์เพื่อวัดอากาศโดยรอบและแยกสัญญาณดิจิตอลบนขาข้อมูล (ไม่จำเป็นต้องใช้พินอินพุตแบบอะนาล็อก)

เซ็นเซอร์ควรได้รับพลังงานระหว่าง 3.3V ถึง 5V และทำงานตั้งแต่ -40oC ถึง +80oC โดยมีความแม่นยำ +/- 0.5oC สำหรับอุณหภูมิ และ +/-2% สำหรับความชื้นสัมพัทธ์ สิ่งสำคัญที่ควรทราบคือระยะเวลาการตรวจจับเฉลี่ยอยู่ที่ 2 วินาที (เวลาต่ำสุดระหว่างการอ่าน) เว็บไซต์ Adafruit ให้ข้อมูลมากมายเกี่ยวกับทั้ง DHT22 และ DHT11 ของน้องชาย สำหรับรายละเอียดเพิ่มเติม โปรดไปที่หน้าการสอน DHT22/11

DHT22 มี 4 พิน (หันหน้าไปทางเซ็นเซอร์ พิน 1 อยู่ซ้ายสุด):

  1. VCC (เราจะเชื่อมต่อกับ 3.3V จาก NodeMCU);
  2. ข้อมูลออก;
  3. ไม่ได้เชื่อมต่อและ
  4. พื้น.

โดยปกติแล้วคุณจะใช้เซ็นเซอร์ในระยะทางน้อยกว่า 20 เมตร ควรเชื่อมต่อตัวต้านทาน 10K ระหว่างขา Data และ VCC ขาเอาต์พุตจะเชื่อมต่อกับพิน NodeMCU D3 (ดูแผนภาพด้านบน) เมื่อติดตั้งเซ็นเซอร์ที่โมดูลของเราแล้ว ให้ดาวน์โหลดไลบรารี DHT จากที่เก็บ Adafruit GitHub และติดตั้งลงในไฟล์ Library ของ Arduino เมื่อคุณรีโหลด Arduino IDE ของคุณแล้ว ควรติดตั้ง "ไลบรารีเซ็นเซอร์ DHT"

ที่จุดเริ่มต้นของรหัส เราต้องรวมบรรทัด:

/* DHT22*/

#รวม "DHT.h" #define DHTPIN D2 #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); ลอย ฮัม = 0; อุณหภูมิลอย = 0;

ฟังก์ชั่นใหม่จะถูกสร้างขึ้นเพื่ออ่านเซ็นเซอร์:

/* รับข้อมูล DHT */

เป็นโมฆะ getDhtData (เป็นโมฆะ) { float tempIni = temp; ลอย humIni = ครวญคราง; อุณหภูมิ = dht.readTemperature(); ฮัม = dht.readHumidity(); if (isnan(hum) || isnan(temp)) // ตรวจสอบว่าการอ่านล้มเหลวและออกก่อนกำหนดหรือไม่ (เพื่อลองอีกครั้ง) { Serial.println("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!"); อุณหภูมิ = tempIni; hum = humIni; กลับ; } }

สามารถดาวน์โหลดรหัสที่สมบูรณ์รวมถึงเซ็นเซอร์ UV และ DHT ได้จาก GitHub ของฉัน: NodeMCU_UV_DHT_Sensor_OLED

ขั้นตอนที่ 6: การส่งข้อมูลไปยัง ThingSpeak.com

กำลังส่งข้อมูลไปที่ ThingSpeak.com
กำลังส่งข้อมูลไปที่ ThingSpeak.com
กำลังส่งข้อมูลไปที่ ThingSpeak.com
กำลังส่งข้อมูลไปที่ ThingSpeak.com
กำลังส่งข้อมูลไปที่ ThingSpeak.com
กำลังส่งข้อมูลไปที่ ThingSpeak.com

จนถึงตอนนี้ เราใช้ NodeMCU ESP12-E เป็นบอร์ด Arduino แบบธรรมดาและแบบธรรมดาเท่านั้น แน่นอนว่าเรา "ขีดข่วน" ศักยภาพที่แท้จริงของชิปตัวน้อยที่น่าทึ่งนี้เท่านั้น และตอนนี้ก็ถึงเวลาขึ้นสู่สวรรค์แล้ว! หรือดีกว่าเพื่อดวงดาว! เอ่อ…ไปที่คลาวด์!;-)

เอาล่ะ!

  1. ก่อนอื่น คุณต้องมีบัญชีที่ ThinkSpeak.com
  2. ทำตามคำแนะนำเพื่อสร้างช่องและจดรหัสช่องของคุณและเขียนคีย์ API
  3. อัปเดตรหัสด้านล่างด้วยเครือข่าย WiFi และข้อมูลรับรอง Thinkspeak
  4. เรียกใช้โปรแกรมบน IDE

แสดงความคิดเห็นส่วนที่สำคัญที่สุดของรหัส:

ขั้นแรก ให้เรียกไลบรารี่ ESP8266 กำหนดไคลเอนต์ WiFi และกำหนดเราเตอร์ในพื้นที่ของคุณและข้อมูลประจำตัวของ Thinkspeak:

/* ESP12-E และ ThinkSpeak*/

#include ไคลเอนต์ WiFiClient; const char* MY_SSID = "รหัส SSD ของคุณที่นี่"; const char* MY_PWD = "รหัสผ่านของคุณที่นี่"; อักขระ const* TS_SERVER = "api.thingspeak.com"; สตริง TS_API_KEY ="ช่องของคุณเขียนคีย์ API";

ประการที่สอง ให้รวมไลบรารีที่สำคัญมากสำหรับโครงการ IoT: SimpleTimer.h:

/* ตัวตั้งเวลา */

#include SimpleTimer จับเวลา;

ประการที่สาม ระหว่างการติดตั้ง () เราจะเริ่มต้นการสื่อสารแบบอนุกรม เรียกใช้ฟังก์ชัน connectWiFi() และกำหนดเวลา โปรดทราบว่าบรรทัดของรหัส: timer.setInterval(60000L, sendDataTS); จะเรียกใช้ฟังก์ชัน sendDataTS() ทุกๆ 60 วินาที เพื่ออัปโหลดข้อมูลไปยังช่อง ThinkSpeak

การตั้งค่าเป็นโมฆะ ()

{ … Serial.begin(115200); ล่าช้า(10); … connectWifi(); timer.setInterval (60000L, sendDataTS); … }

สุดท้ายแต่ไม่ท้ายสุด ระหว่างลูป () คำสั่งเดียวที่จำเป็นคือการเริ่มตัวจับเวลาและแค่นั้นเอง!

วงเป็นโมฆะ ()

{ … timer.run(); // เริ่ม SimpleTimer }

ด้านล่างนี้ คุณสามารถดูฟังก์ชันสำคัญสองอย่างที่ใช้จัดการกับการสื่อสารของ Thinkspeak:

การเชื่อมต่อ ESP12-E กับเครือข่าย WiFi ของคุณ:

/***************************************************

* การเชื่อมต่อ WiFi *********************************************** ***/ เป็นโมฆะ connectWifi () { Serial.print ("กำลังเชื่อมต่อกับ" + * MY_SSID); WiFi.begin(MY_SSID, MY_PWD); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (1000); Serial.print("."); } Serial.println(""); Serial.println ("เชื่อมต่อ WiFi แล้ว"); Serial.println(""); }

ESP12-E กำลังส่งข้อมูลไปยัง ThinkSpeak:

/***************************************************

* ส่งข้อมูลไปที่ช่อง Thinkspeak ******************************************** ******* เป็นโมฆะ sendDataTS (เป็นโมฆะ) { ถ้า (ไคลเอนต์เชื่อมต่อ (TS_SERVER, 80)) { สตริง postStr = TS_API_KEY; postStr += "&field1="; postStr += สตริง (dataSensorUV); postStr += "&field2="; postStr += สตริง (indexUV); postStr += "&field3="; postStr += สตริง (ชั่วคราว); postStr += "&field4="; postStr += สตริง (ฮัม); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("โฮสต์: api.thingspeak.com\n"); client.print("การเชื่อมต่อ: ปิด\n"); client.print("X-THINGSPEAKAPIKEY: " + TS_API_KEY + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("เนื้อหา-ความยาว: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); ล่าช้า (1000); } ส่ง++; client.stop(); }

รหัสที่สมบูรณ์สามารถพบได้ใน GitHub ของฉัน: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

เมื่อคุณอัปโหลดรหัสไปยัง NodeMCU แล้ว มาต่อแบตเตอรี่ภายนอกและทำการวัดภายใต้ดวงอาทิตย์กัน ฉันวาง Remote Station ไว้บนหลังคาและเริ่มบันทึกข้อมูลบน ThingSpeak.com ดังที่แสดงในรูปด้านบน

ขั้นตอนที่ 7: บทสรุป

บทสรุป
บทสรุป

และเช่นเคย ฉันหวังว่าโครงการนี้จะช่วยให้ผู้อื่นค้นพบหนทางสู่โลกที่น่าตื่นเต้นของอิเล็กทรอนิกส์!

สำหรับรายละเอียดและรหัสสุดท้าย โปรดไปที่ศูนย์ฝาก GitHub ของฉัน: RPi-NodeMCU-Weather-Station

สำหรับโครงการเพิ่มเติม โปรดเยี่ยมชมบล็อกของฉัน: MJRoBot.org

คอยติดตาม! บทช่วยสอนถัดไป เราจะส่งข้อมูลจากสถานีตรวจอากาศระยะไกลไปยังสถานีกลาง โดยอิงตามเว็บเซิร์ฟเวอร์ Raspberry Pi:

ภาพ
ภาพ

Saludos จากทางใต้ของโลก!

พบกันใหม่ในคำสั่งต่อไปของฉัน!

ขอขอบคุณ, มาร์เซโล

แนะนำ: