สารบัญ:

ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280: 5 ขั้นตอน
ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280: 5 ขั้นตอน

วีดีโอ: ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280: 5 ขั้นตอน

วีดีโอ: ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280: 5 ขั้นตอน
วีดีโอ: Nodemcu esp8266 BMP180, Arduino, and Blynk Application” temperature, pressure & Altitude 2024, พฤศจิกายน
Anonim
ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280
ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280
ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280
ESP8266 NodeMCU พร้อมเกจและแผนภูมิ BME280

เกจและแผนภูมิแฟนซีสำหรับบอร์ดพัฒนา NodeMCU ของ ESP8266 พร้อมเซ็นเซอร์อุณหภูมิ ความชื้น และความดัน BME280 Thingspeak จะจัดเก็บข้อมูลทั้งหมดของคุณในระบบคลาวด์เพื่อเรียกค้นได้ตลอดเวลาในอีกหลายปีข้างหน้า (หวังว่า) เกจและแผนภูมิจะเติมข้อมูลจากข้อมูลที่เก็บไว้ที่ Thingspeak และอัปเดตโดยอัตโนมัติทุก ๆ 5 นาที

รายการที่จำเป็น:

ESP8266 บอร์ดพัฒนา NodeMCU ($ 3.79 จาก Banggood.com ฮ่องกง)

Bosch BME280 ($ 5.63 จาก Banggood.com ฮ่องกง)

จัมเปอร์เขียงหั่นขนม ($ 3.09 จาก Banggood.com ฮ่องกง)

เขียงหั่นขนม ($ 2.28 จาก Banggood.com ฮ่องกง)

พาวเวอร์ซัพพลาย ฟรีถ้าคุณมีที่ชาร์จโทรศัพท์แบบ micro USB

สาย Micro USB ถ้ามีอยู่แล้ว ฟรี

Arduino IDE ดาวน์โหลดฟรี

รับไฟล์โค้ด.ino &. HTML ที่นี่

ขั้นตอนที่ 1: สร้างและตั้งค่าช่อง Thingspeak ของคุณ

สร้างและตั้งค่าช่อง Thingspeak ของคุณ
สร้างและตั้งค่าช่อง Thingspeak ของคุณ

1. สร้างบัญชี Thingspeak และช่องใหม่ฟรีที่ https://thingspeak.com โทรหาช่อง "ESP8266-NodeMCU-12E-BME280"

2. ช่องสัญญาณใหม่ควรมี 3 ช่อง ชื่อ Temperature Humidity Pressure ในลำดับเฉพาะนั้น (หมายเหตุอักษรตัวแรกใช้อักษรตัวพิมพ์ใหญ่)

3. จด "รหัสช่อง" ใหม่ของคุณ XXXXXX ภายใต้ "การตั้งค่าช่อง"

4. คลิกลิงก์ "คีย์ API" และจดบันทึก "API Write" และ "อ่านคีย์ API" XXXXXXXXXXXXXXX และตั้งช่องนี้เป็นสาธารณะภายใต้การแชร์

5. สร้างช่อง Thingspeak ที่สองที่จะเก็บข้อมูล "วันนี้" (ตั้งแต่เที่ยงคืน) High Low เรียกมันว่า "BME280 Daily High Low Data"

6. ช่องใหม่นี้ควรมี 6 ช่อง ชื่อ Tmax Tmin Hmax Hmin Pmax Pmin ตามลำดับเฉพาะนั้น (หมายเหตุ First Letter ตัวพิมพ์ใหญ่)

7. จดบันทึก "BME280 Daily High Low Data" "channel ID", "Read" & "Write API keys" เช่นเดียวกับในขั้นตอนข้างต้น

ขั้นตอนที่ 2: ตั้งค่า Arduino IDE, Libraries และกำหนดค่า BME280

ตั้งค่า Arduino IDE, ไลบรารี่ และกำหนดค่า BME280
ตั้งค่า Arduino IDE, ไลบรารี่ และกำหนดค่า BME280

8. ปฏิบัติตามคำแนะนำในการติดตั้ง Arduino IDE & ESP8266 core ที่

9. เปิดไฟ Arduino IDE เพื่อให้เราสามารถติดตั้งไลบรารีสี่ตัวที่เราต้องการได้

10. คุณจะต้องมีไลบรารี "Adafruit Unified Sensor Driver" ติดตั้งใน "Library Manager" ใน Arduino IDE Menu Sketch Include Library Manage Libraries ทำการค้นหาโดย Type = "Recommended" Topic = "Sensors" จากนั้นใส่คำว่า Adafruit Unified Sensor Driver ในช่องค้นหา สิ่งที่คุณต้องการพูดว่า "Adafruit Unified Sensor Driver โดย Adafruit"

11. นอกจากนี้ คุณจะต้องติดตั้ง "Adafruit BME280 Library" ใน "Library Manager" ใน Arduino IDE Menu Sketch Include Library Manage Libraries ทำการค้นหาโดย Type = "Recommended" Topic = "Sensors" จากนั้นใส่คำว่า Adafruit BME280 Library ในช่องค้นหา อันที่คุณต้องการเขียนว่า "Adafruit BME280 Library by Adafruit"

12. ไลบรารีอื่นที่คุณต้องการคือ Wire.h ติดตั้งใน "Library Manager" ใน Arduino IDE เมนู Sketch รวมไลบรารี จัดการห้องสมุด ค้นหาด้วย Type = "Contributed" Topic = "Signal Input/Output" จากนั้นใส่คำว่า Wire ในช่องค้นหา สิ่งที่คุณต้องการระบุว่า "Wire Built-in โดย Arduino" ส่วนใหญ่อยู่ที่ด้านล่างของการเลือก

13. อีกหนึ่งไลบรารี่ ESP8266WiFi ติดตั้งใน "Library Manager" ใน Arduino IDE เมนู Sketch รวมไลบรารี จัดการห้องสมุด ค้นหาด้วย Type = "Contributed" Topic = "Communication" จากนั้นใส่คำว่า ESP8266wifi ในช่องค้นหา สิ่งที่คุณต้องการพูดว่า "ESP8266wifi Built-in โดย Ivan Grokhotkov"

14. ที่อยู่ I2C สำหรับ BME280 นั้นฮาร์ดโค้ดอยู่ในไฟล์ Adafruit_BME280.h (มองหาบรรทัด #define BME280_ADDRESS 0x77) ภายในโฟลเดอร์ Adafruit_BME280_Library โมดูลเซ็นเซอร์ BME ของ Adafruit ต่อสายแบบต่อสายเพื่อใช้ที่อยู่ I2C ที่ 0x77 แต่ BME280 สามารถมีที่อยู่ I2C ที่แตกต่างกันเล็กน้อย (0x76) หากพิน SDO ภายนอกต่อสายดิน หากคุณกำลังใช้โมดูลเซ็นเซอร์จากบุคคลที่สาม เป็นไปได้ว่าที่อยู่นั้นจะไม่ตรงกับค่าเริ่มต้นในไลบรารี Adafruit ตัวอย่างเช่น สำหรับโมดูลเซ็นเซอร์ BME280 ส่วนใหญ่ที่มีอยู่ใน eBay หรือ Aliexpress จะมีที่อยู่ I2C เป็น 0x76 หากคุณไม่ได้รับการตอบกลับจากเซ็นเซอร์โดยใช้ที่อยู่เริ่มต้นที่ตั้งไว้ในไฟล์ Adafruit_BME280.h คุณอาจต้องเปลี่ยนเป็น 0x76

จุดเชื่อมต่อ BME280 & ESP8266 ESP8266 3.3V ถึง BME280 Vin, ESP8266 GND ถึง BME280 GND, ESP8266 D4 ถึง BME280 SCL, ESP8266 D3 ถึง BME280 SDA 15. เปิดไฟล์ ESP8266-NodeMCU-12E-BME280.html ที่ให้มาในโปรแกรมแก้ไขข้อความและป้อน "ESP8266-NodeMCU-12E-BME280" ของคุณ (ช่องแรกที่คุณสร้าง) "Channel ID" & "Read API Key" สำหรับ ตัวแปร key1 & chan1 ป้อน "Read API Key" และ "Channel ID" สำหรับ "BME280 Daily High Low Data" (ช่องที่สองที่คุณสร้าง) สำหรับ key2 และ chan2 นอกจากนี้ ป้อนเขตเวลาชดเชยจาก UTC เช่นเดียวกับใน -5 สำหรับฉัน ค่าทั้งหมดต้องอยู่ภายในเครื่องหมายคำพูดเดี่ยว 'XXXX' บันทึกและออกจากโปรแกรมแก้ไขข้อความ

เสียบปลั๊ก ESP8266 ด้วยสาย USB เข้ากับคอมพิวเตอร์ จากนั้นเลือกพอร์ตอนุกรมของคุณให้เป็นพอร์ต USB

ผู้ใช้ Linux อาจต้องเปลี่ยนความเป็นเจ้าของพอร์ต USB เพื่อสื่อสารกับ /dev/ttyUSB0 เช่นเดียวกับใน 'sudo chown yourusername /dev/ttyUSB0' หรือสิ่งที่คุณเคยเลือกเป็นพอร์ตในการตั้งค่า

ขั้นตอนที่ 3: ตั้งโปรแกรม ESP8266 ด้วย Arduino IDE

ตั้งโปรแกรม ESP8266 ด้วย Arduino IDE
ตั้งโปรแกรม ESP8266 ด้วย Arduino IDE

16. ต่อไปเราจะตั้งโปรแกรม ESP8266 เชื่อมต่อสาย USB ระหว่าง ESP8266 กับคอมพิวเตอร์ของคุณ

โหลดไฟล์ New_BME_Sensor.ino ที่ให้มาลงใน Arduino IDE เซ็นเซอร์ BME280 ของคุณควรเชื่อมต่อกับ D3 (SDA) และ D4 (SCL) บน ESP8266 ป้อน "ESP8266-NodeMCU-12E-BME280" ของคุณ (ช่องแรกที่คุณสร้าง) "เขียนคีย์" "Wireless SSID" & "รหัสผ่าน" ลงในส่วนที่ถูกต้องของแบบร่าง จากนั้นคลิกรายการเมนู "ร่าง" & "อัปโหลด" หลังจากที่คุณอัปโหลดภาพร่าง (ความคืบหน้าถึง 100%) ไปยัง ESP8266 ของคุณ คุณสามารถเปิดจอภาพแบบอนุกรม (ไอคอนด้านบนขวาดูเหมือนแว่นขยาย) และดูข้อมูลของคุณพิมพ์ออกมาหลังจากผ่านไป 5 นาที ทุกๆ 5 นาที ข้อมูลจะถูกส่งไปยัง Thingspeak ในช่วงเวลา 5 นาที ดังนั้นจะใช้เวลาสักระยะก่อนที่คุณจะมีข้อมูลแผนภูมิที่มีความหมาย แต่คุณควรมีการอ่านเกจหลังจาก 5 นาที

ตรวจสอบให้แน่ใจว่าคุณได้ค่าการอ่านที่ถูกต้องจาก BME280 ในมอนิเตอร์แบบอนุกรม

การวัดครั้งแรกน่าจะเป็นค่าน่านที่ไม่ถูกต้อง

รอสองสามนาทีจนกว่าจะถึงการอ่านครั้งต่อไปและตรวจสอบว่าการอ่านดูดี

ขั้นตอนที่ 4: กลับไปที่ Thingspeak เพื่อทำการปรับแต่งข้อมูล

กลับไปที่ Thingspeak เพื่อปรับแต่งข้อมูลบางส่วน
กลับไปที่ Thingspeak เพื่อปรับแต่งข้อมูลบางส่วน

17. ตอนนี้ ในขณะที่ข้อมูลกำลังอัปโหลดไปยัง Thingspeak อย่างช้าๆ ให้ปรับแต่งเพื่อรับข้อมูลเพิ่มเติมจากสิ่งที่กำลังอัปโหลด กลับไปที่เว็บไซต์ของ thingspeak และในหน้าช่อง "BME280 Daily High Low Data" ของ Thingspeak (ช่องที่สองที่คุณสร้าง) ให้คลิกปุ่ม "การวิเคราะห์ MATLAB" สีเขียว เลือกเทมเพลต "กำหนดเอง (ไม่มีรหัสเริ่มต้น)"

18. ตั้งชื่อการวิเคราะห์ MATLAB "คำนวณค่าต่ำสุดตั้งแต่เที่ยงคืน"

19. คัดลอกโค้ด MATLAB Analysis.txt ลงในช่องว่างที่ให้ไว้ ป้อน "channel ID" สำหรับ "ESP8266-NodeMCU-12E-BME280" (ช่องแรกที่คุณสร้าง) ลงใน "readChannelID" ป้อน "BME280 Daily High Low Data" (ช่องที่สองที่คุณสร้าง) เขียน "Channel ID" & "Write Key" ลงใน writeNewChannelID & writeAPIKey ตามลำดับ ฉันรู้ว่ามันฟังดูสับสน (อ่านอีกครั้ง) คลิกบันทึกและเรียกใช้ หากคุณได้แก้ไขและช่องการอ่านเป็นแบบสาธารณะ คุณจะเห็นว่าไม่มีข้อผิดพลาดและจะพิมพ์ค่าได้สำเร็จ หมายเหตุ คุณอาจเห็นข้อผิดพลาดหากยังไม่ได้อัปโหลดข้อมูลไปยังช่องนั้น แม้จะมีข้อผิดพลาดต่อไป หากต้องการ คุณสามารถกลับมาเยี่ยมชม คลิกบันทึกและเรียกใช้อีกครั้ง เพื่อให้แน่ใจว่าใช้งานได้เมื่ออัปโหลดข้อมูลแล้ว

20. ต่อไป เราต้องสร้าง "การควบคุมเวลา" เพื่อเริ่มการทำงานของโค้ดนี้ทุกๆ 5 นาที และข้อมูลของเราจะถูกเขียนไปยังช่อง "BME280 Daily High Low Data" (ช่องที่สองที่คุณสร้างขึ้น) จากหน้าหลักของ "BME280 Daily High Low Data" (ช่องที่สองที่คุณสร้าง) เลือกแอปที่ด้านบน ภายใต้การดำเนินการ เลือก "TimeControl" จากนั้นเลือกปุ่มสีเขียว "New TimeControl" ตั้งชื่อว่า "ส่งอุณหภูมิสูงต่ำ ESP8266" เลือกเขตเวลาของคุณหากจำเป็น และเลือก "เกิดซ้ำ" ใต้ความถี่ เลือกนาทีภายใต้การเกิดซ้ำ กำหนดให้รันทุก 5 นาที การดำเนินการควรเป็นการวิเคราะห์ MATLAB และ "Code to Execute" คือ "Calculate Min Max From Midnight" บันทึก TimeControl

ขั้นตอนที่ 5: แก้ไขไฟล์ HTML ที่ให้มา

แก้ไขไฟล์ HTML ที่ให้มา
แก้ไขไฟล์ HTML ที่ให้มา

แก้ไขไฟล์ HTML และค้นหาความคิดเห็นที่ระบุว่า "********** เปลี่ยนฉัน 1 จาก 8 *********" เปลี่ยนสิ่งเหล่านี้ตามที่คุณต้องการ

หมายเหตุ:

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

เปิดไฟล์ ESP8266-NodeMCU-12E-BME280.html ที่ให้มาในเว็บเบราว์เซอร์ของคุณและคุณจะเห็นมาตรวัดและแผนภูมิที่เติม

รับไฟล์โค้ด.ino &. HTML ที่นี่

แนะนำ: