สารบัญ:

สร้างเซ็นเซอร์วัดคุณภาพอากาศ IoT ภายในองค์กร ไม่ต้องใช้ระบบคลาวด์: 10 ขั้นตอน
สร้างเซ็นเซอร์วัดคุณภาพอากาศ IoT ภายในองค์กร ไม่ต้องใช้ระบบคลาวด์: 10 ขั้นตอน

วีดีโอ: สร้างเซ็นเซอร์วัดคุณภาพอากาศ IoT ภายในองค์กร ไม่ต้องใช้ระบบคลาวด์: 10 ขั้นตอน

วีดีโอ: สร้างเซ็นเซอร์วัดคุณภาพอากาศ IoT ภายในองค์กร ไม่ต้องใช้ระบบคลาวด์: 10 ขั้นตอน
วีดีโอ: Cloud คืออะไร คลาวด์เป็นมากกว่าพื้นที่เก็บไฟล์ออนไลน์ (Cloud Storage) cloud มีประโยชน์ยังไง l DGTH 2024, มิถุนายน
Anonim
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์
สร้างเซ็นเซอร์คุณภาพอากาศ IoT ภายในองค์กร ไม่จำเป็นต้องใช้ระบบคลาวด์

คุณภาพของอากาศภายในหรือภายนอกอาคารขึ้นอยู่กับแหล่งที่มาของมลพิษและสภาพอากาศด้วย

อุปกรณ์นี้รวบรวมพารามิเตอร์ทั่วไปและบางส่วนที่น่าสนใจที่สุดโดยใช้ชิปเซ็นเซอร์ 2 ตัว

  • อุณหภูมิ
  • ความชื้น
  • ความดัน
  • ก๊าซอินทรีย์
  • อนุภาคขนาดเล็ก

เซ็นเซอร์ที่ใช้ในที่นี้คือ BME680 สำหรับรับอุณหภูมิ ความชื้น ความดัน และค่าก๊าซอินทรีย์ และ PMS5003 เพื่อรับความหนาแน่นของอนุภาคขนาดเล็ก

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

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

เสบียง

สิ่งที่คุณต้องใช้ในการสร้างโปรเจ็กต์นี้คือบอร์ดที่ใช้ ESP8266 เช่น บอร์ด nodemcu และชุดเซ็นเซอร์เพื่อวัดคุณภาพอากาศ ไลบรารี HomeDing ที่ใช้ในโปรเจ็กต์นี้รองรับชิปเซ็นเซอร์ทั่วไปบางตัวสำหรับอุณหภูมิ ความชื้น ความดัน และคุณภาพ ที่นี่ใช้ชิป BMP680

  • ปลั๊ก USB และสายไมโคร USB สำหรับจ่ายไฟ
  • 1 บอร์ด nodemcu พร้อมซีพียู ESP8266
  • บอร์ดฝ่าวงล้อมเซ็นเซอร์ BME680 1 ชิ้น
  • 1 PM2.5 เซ็นเซอร์เลเซอร์อนุภาคอากาศ PMS5003

ง่ายต่อการสลับเซ็นเซอร์ BME680 กับเซ็นเซอร์ DHT22 เนื่องจากไลบรารีรองรับด้วยเช่นกัน

ขั้นตอนที่ 1: เตรียม Arduino Environment สำหรับ ESP8266

เตรียมสภาพแวดล้อม Arduino สำหรับ ESP8266
เตรียมสภาพแวดล้อม Arduino สำหรับ ESP8266
  1. ติดตั้ง Arduino IDE เวอร์ชันล่าสุด (ปัจจุบันเป็นเวอร์ชัน 1.8.2)
  2. ใช้ Board Manager เพื่อติดตั้งการรองรับ esp8266 ดูคำแนะนำโดยละเอียดได้ที่นี่:https://arduino-esp8266.readthedocs.io/en/latest/i…
  3. ตั้งค่าตัวเลือกบอร์ดสำหรับ NodeMCU 1.0 พร้อม 1MByte SPIFFS File System ตามที่แสดงในภาพหน้าจอ

ขั้นตอนที่ 2: รวมไลบรารีที่จำเป็น

รวมห้องสมุดที่จำเป็น
รวมห้องสมุดที่จำเป็น

ไลบรารี HomeDing อาศัยไลบรารีพิเศษทั่วไปบางส่วนเพื่อให้เซ็นเซอร์และจอแสดงผลทำงาน

เมื่อคุณติดตั้งไลบรารี HomeDing คุณจะเห็นป๊อปอัปพร้อมไลบรารีที่จำเป็นเหล่านี้ ซึ่งสามารถติดตั้งได้โดยอัตโนมัติโดยแสดงในรูปภาพ และง่ายต่อการติดตั้งทั้งหมด

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

รายละเอียดเพิ่มเติมเกี่ยวกับไลบรารีที่จำเป็นสามารถดูได้จากเว็บไซต์เอกสารที่

นี่คือรายการไลบรารีที่จำเป็นในปัจจุบัน:

  • อดาฟรุต NeoPixel
  • LiquidCrystal_PCF8574.h
  • ไดรเวอร์ ESP8266 และ ESP32 Oled สำหรับจอแสดงผล SSD1306
  • ตัวเข้ารหัสโรตารี่
  • ไลบรารีเซ็นเซอร์ DHT สำหรับ ESPx
  • OneWire

เซ็นเซอร์เลเซอร์อนุภาคอากาศ PMS5003 สื่อสารโดยใช้สัญญาณสายอนุกรม 9600 บอด สัญญาณนี้ถูกจับโดยใช้ไลบรารี SoftwareSerial ที่มาพร้อมกับการติดตั้งเครื่องมือ ESP8266 ตรวจสอบให้แน่ใจว่าไม่ได้ติดตั้งเวอร์ชันเก่ากว่าเป็นไลบรารี

ขั้นตอนที่ 3: ปรับแต่งภาพร่างตัวอย่างมาตรฐาน

ปรับแต่งภาพร่างตัวอย่างมาตรฐาน
ปรับแต่งภาพร่างตัวอย่างมาตรฐาน

ตัวอย่างมาตรฐานได้รวมเซ็นเซอร์ทั่วไปบางตัวเป็นองค์ประกอบอยู่แล้ว ดังนั้นจำเป็นต้องมีการกำหนดค่าบางอย่างเท่านั้น

สิ่งนี้ใช้กับเซ็นเซอร์ BME680 ที่รองรับโดยองค์ประกอบ BME680

เซ็นเซอร์ PMS5003 มีน้อยกว่าปกติและจำเป็นต้องเปิดใช้งานโดยรวม PMS Element ลงในเฟิร์มแวร์ ทำได้โดยการกำหนด #define HOMEDING_INCLUDE_PMS ในส่วนการลงทะเบียนองค์ประกอบของแบบร่าง

#define HOMEDING_INCLUDE_BME680#กำหนด HOMEDING_INCLUDE_PMS

เพื่อความเรียบง่ายในการเพิ่มอุปกรณ์ใหม่เข้ากับเครือข่าย คุณอาจเพิ่ม SSID และข้อความรหัสผ่านของ WiFi ที่บ้านของคุณในไฟล์ secrets.h ถัดจากไฟล์สเก็ตช์ standard.ino แต่คุณยังสามารถใช้ตัวจัดการ WiFi ในตัวเพื่อเพิ่มอุปกรณ์ไปยังเครือข่ายโดยไม่ต้องกำหนดค่าฮาร์ดโค้ดนี้

ตอนนี้ทุกอย่างเกี่ยวกับการใช้งานแบบร่างเสร็จเรียบร้อยแล้ว และสามารถรวบรวมและอัปโหลดเฟิร์มแวร์ได้

ขั้นตอนที่ 4: อัปโหลดเว็บ UI

ตัวอย่างมาตรฐานมาพร้อมกับโฟลเดอร์ข้อมูลที่มีไฟล์ทั้งหมดสำหรับเว็บ UI

ก่อนที่คุณจะอัปโหลดไฟล์เหล่านี้ คุณอาจต้องการเพิ่มไฟล์ env.json และ config.json คุณจะพบกับบทความนี้ เนื่องจากจะทำให้สิ่งต่างๆ ง่ายขึ้น

เนื้อหาของไฟล์เหล่านี้เป็นสิ่งที่ทำให้อุปกรณ์ IoT มีความพิเศษและทำหน้าที่เป็นเซ็นเซอร์คุณภาพอากาศ มีการอธิบายอย่างละเอียดในเรื่องนี้

ใช้ยูทิลิตี้อัปโหลดไฟล์ ESP8266 และอัปโหลดไฟล์ทั้งหมด จำเป็นต้องรีบูตเพื่อเปิดใช้งานการกำหนดค่า

ขั้นตอนที่ 5: เพิ่มเซ็นเซอร์ BME680

เพิ่มเซ็นเซอร์ BME680
เพิ่มเซ็นเซอร์ BME680
เพิ่มเซ็นเซอร์ BME680
เพิ่มเซ็นเซอร์ BME680
เพิ่มเซ็นเซอร์ BME680
เพิ่มเซ็นเซอร์ BME680

เซ็นเซอร์ BME680 กำลังสื่อสารกับบอร์ดโดยใช้บัส I2C

เนื่องจากอาจใช้ร่วมกับส่วนขยายอื่นๆ เช่น เซ็นเซอร์หรือจอแสดงผลอื่นๆ ได้รับการกำหนดค่าในระดับอุปกรณ์ใน env.json พร้อมกับชื่อเครือข่ายของอุปกรณ์ นี่คือตัวอย่างที่แยกออกมาของการตั้งค่าอุปกรณ์และ I2C:

"อุปกรณ์": {

"0": { "name": "airding", "description": "Air Quality Sensor", … "i2c-scl": "D2", "i2c-sda": "D1" } }

บนเขียงหั่นขนม คุณสามารถดูสายเคเบิลเชื่อมต่อกับเซ็นเซอร์: 3.3V=red, GND=black, SCL=yellow, SDA=blue

การกำหนดค่าสำหรับ BME680 สามารถใช้ใน config.json:

"bme680": {

"bd": { "ที่อยู่": "0x77", "เวลาอ่าน": "10 วินาที" } }

เราจะเพิ่มการดำเนินการในภายหลัง

หากต้องการทดสอบการตั้งค่า เพียงใช้เบราว์เซอร์และเปิด https://airding/board.htm แล้วคุณจะเห็นค่าจริงของเซ็นเซอร์แสดงขึ้นและจะอัปเดตทุกๆ 10 วินาที:

ขั้นตอนที่ 6: เพิ่มเซ็นเซอร์ PMS5003

เพิ่มเซ็นเซอร์ PMS5003
เพิ่มเซ็นเซอร์ PMS5003

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

พลังงานสำหรับเซ็นเซอร์นี้จะต้องนำมาจาก Vin ที่ปกติขับเคลื่อนโดยบัส USB GND เหมือนกันแต่ยังมีอยู่ข้างๆ พิน Vin

ข้อมูลจากเซ็นเซอร์จะถูกถ่ายโอนในรูปแบบอนุกรม 9600 baud มาตรฐาน ดังนั้นจึงต้องกำหนดค่าพิน rx และ tx และเวลาอ่าน:

"pms": {

"pm25": { "description": "pm25 particle sensor", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }

เราจะเพิ่มการดำเนินการในภายหลัง

หากต้องการทดสอบการตั้งค่าอีกครั้ง เพียงรีบูตอุปกรณ์และใช้เบราว์เซอร์และเปิด https://airding/board.htm แล้วคุณจะเห็นค่า pm35 จริงของเซ็นเซอร์แสดงขึ้นและจะอัปเดตทุกๆ 10 วินาที แต่ค่านี้เป็นค่าปกติ ไม่เปลี่ยนแปลงบ่อย

คุณสามารถรับค่าที่สูงขึ้นได้โดยการวางแสงเทียนไว้ข้างๆ เซ็นเซอร์ เนื่องจากเทียนจะผลิตอนุภาคเหล่านี้ได้มาก

ตอนนี้คุณสามารถใส่ทุกอย่างไว้ในตัวเครื่องที่สวยงามได้ เนื่องจากการกำหนดค่าอื่นๆ ทั้งหมดและแม้แต่การอัปเดตซอฟต์แวร์ก็สามารถทำได้จากระยะไกล

ขั้นตอนที่ 7: การเพิ่มคุณสมบัติเครือข่ายบางอย่าง

การแยกการกำหนดค่าต่อไปนี้ใน env.json กำลังเปิดใช้งาน

  • อัพเดทเฟิร์มแวร์ผ่านอากาศ
  • อนุญาตให้ตรวจหาเครือข่ายโดยใช้โปรโตคอลเครือข่าย SSDP และดึงข้อมูลเวลาปัจจุบันจากเซิร์ฟเวอร์ ntp

{

… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Listen for 'over the air' OTA Updates" } } "ssdp": { "0 ": { "ผู้ผลิต": "ชื่อของคุณ" } }, "ntptime": { "0": { "เวลาอ่าน": "36h", "โซน": 2 } } }

คุณควรปรับเขตเวลาให้เข้ากับตำแหน่งของคุณ หากคุณมีข้อสงสัย คุณสามารถใช้เว็บไซต์ https://www.timeanddate.com/ เพื่อรับออฟเซ็ตจาก UTC/GMT "2" เหมาะสำหรับฤดูร้อนของเยอรมนี

คุณยังสามารถปรับรหัสผ่าน ota หลังจากอ่านคำแนะนำเกี่ยวกับโหมดบันทึกในเอกสารที่

หลังจากรีสตาร์ท คุณอาจพบอุปกรณ์ออกอากาศในเครือข่าย และหลังจากได้รับคำตอบจากเซิร์ฟเวอร์ ntp แล้ว เวลาท้องถิ่นจะพร้อมใช้งาน

ขั้นตอนที่ 8: การเพิ่มการบันทึกบางส่วน

เฉพาะค่าจริงอาจไม่เพียงพอจึงสามารถใช้องค์ประกอบเพิ่มเติมได้

สำหรับเรื่องนี้ องค์ประกอบบันทึกและองค์ประกอบ NPTTime ใช้เพื่อบันทึกประวัติของค่าเซ็นเซอร์ในไฟล์บันทึก และการ์ด Web UI สำหรับองค์ประกอบนี้สามารถแสดงเป็นกราฟได้

การกำหนดค่าต่อไปนี้จะสร้าง 2 องค์ประกอบของบันทึกสำหรับก๊าซและอนุภาค:

{

"log": { "pm": { "description": "Log of pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " บันทึกคุณภาพก๊าซ", "ชื่อไฟล์": "/aqlog.txt", "ขนาดไฟล์": "10000" } } }

ขั้นตอนที่ 9: การดำเนินการ

การกระทำ
การกระทำ

ตอนนี้เราจำเป็นต้องโอนค่าจริงไปยังองค์ประกอบบันทึกโดยใช้การกระทำ การดำเนินการกำลังใช้สัญกรณ์ URL เพื่อส่ง kay และค่าไปยังองค์ประกอบเป้าหมาย หลายองค์ประกอบรองรับการส่งสัญญาณในเหตุการณ์บางอย่างที่เกิดขึ้น เช่น การจับค่าเซ็นเซอร์ใหม่

การดำเนินการได้รับการกำหนดค่าที่องค์ประกอบที่ปล่อยการกระทำ จำเป็นต้องมี 2 รายการ:

  • เหตุการณ์ onvalue pms/p25 ส่งค่าจริงไปยังองค์ประกอบ log/pm โดยใช้การดำเนินการกับค่า
  • เหตุการณ์ bme680/bd ongas ส่งค่าจริงไปยังองค์ประกอบ log/pm โดยใช้การดำเนินการกับค่า

{

"pms": { "pm25": { … "onvalue": "log/pm?value=$v" } }, "bme680": { "bd": { … "ongas": "log/aq?value= $v" } } }

ตอนนี้องค์ประกอบทั้งหมดได้รับการกำหนดค่าแล้ว

ขั้นตอนที่ 10: รูปภาพและไฟล์กำหนดค่า

ไฟล์รูปภาพและการกำหนดค่า
ไฟล์รูปภาพและการกำหนดค่า
ไฟล์รูปภาพและการกำหนดค่า
ไฟล์รูปภาพและการกำหนดค่า
ไฟล์รูปภาพและการกำหนดค่า
ไฟล์รูปภาพและการกำหนดค่า

นี่คือรูปภาพบางส่วนของเซ็นเซอร์คุณภาพอากาศ IoT สุดท้ายของฉัน

ไฟล์การกำหนดค่าสำหรับการดาวน์โหลดจะต้องเปลี่ยนชื่อเป็น *.json (ไม่ใช่.txt) ก่อนอัปโหลด

ลิงค์และข้อมูลอ้างอิง

  • ที่เก็บซอร์สโค้ดของ HomeDing:
  • เอกสารประกอบ:
  • ตัวอย่างมาตรฐาน:
  • องค์ประกอบ BME680:
  • องค์ประกอบ PMS:
  • องค์ประกอบบันทึก:
  • องค์ประกอบ NtpTime:

แนะนำ: