สารบัญ:

WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ส่วน: 8 IoT, ระบบอัตโนมัติภายในบ้าน: 9 ขั้นตอน
WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ส่วน: 8 IoT, ระบบอัตโนมัติภายในบ้าน: 9 ขั้นตอน

วีดีโอ: WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ส่วน: 8 IoT, ระบบอัตโนมัติภายในบ้าน: 9 ขั้นตอน

วีดีโอ: WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ส่วน: 8 IoT, ระบบอัตโนมัติภายในบ้าน: 9 ขั้นตอน
วีดีโอ: Blynk2.0 แสดงค่าอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT11 | JAKK DIY 2024, พฤศจิกายน
Anonim
WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ตอนที่: 8 IoT, Home Automation
WiFi IoT เซ็นเซอร์อุณหภูมิและความชื้น ตอนที่: 8 IoT, Home Automation

คำนำ

บทความนี้จัดทำเอกสารเกี่ยวกับความทนทานในทางปฏิบัติและการพัฒนา Instructable ก่อนหน้านี้: 'Pimping' อุปกรณ์ IoT WiFi เครื่องแรกของคุณ ส่วนที่ 4: IoT, Home Automation รวมถึงฟังก์ชันซอฟต์แวร์ที่จำเป็นทั้งหมดเพื่อให้สามารถใช้งานในสภาพแวดล้อมภายในบ้านได้สำเร็จ

บทนำ

ตามที่กล่าวไว้ข้างต้น Instructable นี้อธิบายการรวมตัวกันของตัวอย่าง IoT ก่อนหน้านี้ด้วยการออกแบบระบบที่เชื่อถือได้ ซึ่งช่วยให้จัดการกรณีการใช้งานจริงได้สำเร็จ เช่น การสูญเสียพลังงานอย่างร้ายแรง, ความล้มเหลวของโบรกเกอร์ MQTT, ความล้มเหลวของ WiFi N/W, การกำหนดค่าเซ็นเซอร์ระยะไกลใหม่, กลยุทธ์การรายงานที่กำหนดค่าได้เพื่อลดการรับส่งข้อมูลเครือข่ายและการสอบเทียบเซ็นเซอร์ตามความต้องการ

มีการสร้างอุปกรณ์ปิดทั้งหมด 6 เครื่อง (ดูรูปที่ 1 ด้านบน) และแจกจ่ายไปทั่วบ้านของฉันเพื่อสร้างเครือข่ายเซ็นเซอร์ IoT แรกของฉัน

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

ต่อไปนี้เป็นรายละเอียดการออกแบบทั้งหมดของเซ็นเซอร์ IoT ได้แก่ การสร้าง ซอร์สโค้ด กลยุทธ์การทดสอบ และการกำหนดค่า OpenHAB

ฉันต้องการชิ้นส่วนอะไร?

  1. 1 ออก ESP8266-01,
  2. 2 ปิด 1uF ตัวเก็บประจุด้วยไฟฟ้า,
  3. 3 ปิดตัวต้านทาน 10K,
  4. 1 ปิดตัวต้านทาน 330R,
  5. 1 ออก 3 มม. dia นำ,
  6. 1 ปิด LD1117-33v, 3v3 LDO VReg (ฟาร์เนลล์ที่นี่)
  7. 1ปิดDHT22เซ็นเซอร์อุณหภูมิ/ความชื้น,
  8. 1 ปิดตัวเชื่อมต่อ Dual 4way 0.1 ",
  9. 1 ออก CAMDENBOSS RX2008/S-5 กล่องพลาสติกใส่กระถาง, ABS, 38 มม., 23 มม. (Farnell ที่นี่),
  10. 1 ปิด DC Power Connector, ปลั๊ก, 1 A, 2 มม., แผง Mount (Farnell ที่นี่),
  11. 1 จาก TO-220 ฮีทซิงค์ 24.4 °C/W (Farnell ที่นี่)
  12. ท่อหดความร้อนต่างๆ (สีเหลือง, อีเบย์ ที่นี่)
  13. สายริบบอน IDC ความยาวต่างๆ
  14. สารประกอบฮีทซิงค์
  15. เวโรบอร์ด
  16. อุปกรณ์การเขียนโปรแกรม ESP8266-01 ดูที่นี่; การสร้างวงจรที่ใช้งานได้จริงด้วย Strip Board ขั้นตอนที่ 9 เป็นต้นไป

ฉันต้องการซอฟต์แวร์อะไร

  1. Arduino IDE 1.6.9
  2. Arduino IDE กำหนดค่าให้โปรแกรม ESP8266-01 ดูที่นี่; การตั้งค่า Arduino IDE เพื่อตั้งโปรแกรม ESP8266-01

ฉันต้องการเครื่องมืออะไร?

  1. หัวแร้ง,
  2. ดอกสว่านและดอกสว่านต่างๆ
  3. ไฟล์,
  4. เลื่อยฉลุ,
  5. รองที่แข็งแกร่ง,
  6. ปืนความร้อน
  7. ดีเอ็มเอ็ม

ฉันต้องการทักษะอะไร?

  1. เข้าใจอุปกรณ์อิเล็กทรอนิกส์เพียงเล็กน้อย
  2. ความรู้เกี่ยวกับ Arduino และ IDE
  3. ทักษะพื้นฐานในการประดิษฐ์ (การบัดกรี การเลื่อย การเจาะ การเจาะ ฯลฯ)
  4. อดทนหน่อย
  5. ความเข้าใจบางอย่างเกี่ยวกับเครือข่ายในบ้านของคุณ

หัวข้อที่ครอบคลุม

  1. ภาพรวมวงจร
  2. ภาพรวมระบบซอฟต์แวร์
  3. ภาพรวมซอฟต์แวร์
  4. การสอบเทียบเซ็นเซอร์
  5. แบบแผนการตั้งชื่อหัวข้อ MQTT
  6. การกำหนดค่า OpenHAB
  7. การทดสอบการออกแบบ
  8. บทสรุป
  9. ข้อมูลอ้างอิงที่ใช้

ลิงค์ซีรีส์

ไปยังส่วนที่ 7: Study Lights Controller (ทำใหม่) ตอนที่ 7: IoT ระบบอัตโนมัติในบ้าน

ไปยังส่วนที่ 9: IoT Mains Controller ตอนที่ 9: IoT ระบบอัตโนมัติในบ้าน

ขั้นตอนที่ 1: ภาพรวมวงจร

ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร

รูปที่ 1 ด้านบนแสดงการออกแบบวงจรเต็มรูปแบบสำหรับเซ็นเซอร์ IoT

หัวใจสำคัญของอุปกรณ์ IoT คือ ESP8266-01 ซึ่งเชื่อมต่อกับเซ็นเซอร์อุณหภูมิ/ความชื้น DHT22 ผ่านตัวต้านทานแบบดึงขึ้น 10K ไปยัง GPIO2 5v ภายนอกนั้นมาจากแหล่งจ่ายโหมดสวิตช์และป้อนไปยังอุปกรณ์ผ่านซ็อกเก็ตยึดแผง DC ขนาด 2 มม. และควบคุมภายในเครื่องด้วยตัวควบคุมแรงดันไฟฟ้า LD1117-33v, 3v3 LDO ที่ติดตั้งกับแผงระบายความร้อนภายนอกด้วยสกรูและน็อตหัวกระทะ BZP M3.

การออกแบบประกอบด้วยไฟ LED สีแดงขนาด 3 มม. ที่เชื่อมต่อกับ GPIO0 ซึ่งใช้เพื่อแสดงสถานะของอุปกรณ์ IoT ในพื้นที่ระหว่างการเริ่มต้นระบบหรือสภาวะข้อผิดพลาดใดๆ ที่ตามมา นอกจากนี้ยังสามารถใช้เพื่อระบุอุปกรณ์โดยการเปิดใช้งานด้วยตนเองผ่านอินเทอร์เฟซ openHAB

การออกแบบที่สมบูรณ์พอดีกับกล่องใส่กระถาง ABS ตามที่แสดงด้านบนในรูปภาพที่ 2 และจัดวางโดยเฉพาะเพื่อให้แน่ใจว่าเซ็นเซอร์อยู่ห่างจากตัวควบคุมให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อป้องกันการให้น้ำหนักเนื่องจากผลกระทบจากความร้อนในท้องถิ่น (รูปภาพที่ 7 ด้านบน)

แผงวงจรเป็นแผ่นเวโรบอร์ดชิ้นเดียว ตัดเป็นรูปร่าง และทำมาให้พอดีกับตัวเครื่อง (ภาพที่ 3 ด้านบน) บอร์ดนี้จับจ้องไปที่ตำแหน่งด้วยสกรูไนลอน M3 เคาเตอร์และน็อตสองตัวที่พอดีกับด้านล่างของเซ็นเซอร์ จึงช่วยให้วางบนพื้นผิวเรียบได้

ภาพที่ 4 … 6 แสดงสถานะการก่อสร้างต่างๆ

ขั้นตอนที่ 2: ภาพรวมระบบซอฟต์แวร์

ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์

อุปกรณ์ตรวจจับอุณหภูมิและความชื้น IoT นี้ประกอบด้วยส่วนประกอบซอฟต์แวร์หลัก 6 ชิ้นดังแสดงในรูปที่ 1 ด้านบน

SPIFFS

นี่คือระบบการจัดเก็บ SPI Flash แบบออนบอร์ดและใช้เพื่อเก็บข้อมูลต่อไปนี้ (ดูรูปที่ 2 ด้านบน);

  • ไอคอนและ 'หน้าแรกของการกำหนดค่าเซ็นเซอร์' html: ใช้งานโดยอุปกรณ์ IoT เมื่อไม่สามารถเชื่อมต่อกับเครือข่าย IoT WiFi ของคุณ (โดยปกติเนื่องจากข้อมูลความปลอดภัยที่ไม่ถูกต้อง) และให้วิธีการกำหนดค่าเซ็นเซอร์จากระยะไกลแก่ผู้ใช้โดยไม่จำเป็น เพื่อตั้งโปรแกรมใหม่หรืออัปโหลดเนื้อหา SPIFFS ใหม่
  • ข้อมูลความปลอดภัย: เก็บข้อมูลที่ใช้ในการเปิดเครื่องโดยอุปกรณ์ IoT เพื่อเชื่อมต่อกับเครือข่าย IoT WiFi และนายหน้า MQTT ข้อมูลที่ส่งผ่าน 'หน้าแรกการกำหนดค่าเซ็นเซอร์' จะถูกเขียนลงในไฟล์นี้ ('secvals.txt')
  • ข้อมูลการปรับเทียบ: ข้อมูลที่อยู่ในไฟล์นี้ ('calvals.txt') ใช้เพื่อสอบเทียบเซ็นเซอร์อุณหภูมิ/ความชื้นบนบอร์ดหากจำเป็น สามารถเขียนค่าคงที่การสอบเทียบไปยังอุปกรณ์ IoT ผ่านคำสั่ง MQTT จากโบรกเกอร์ MQTT เท่านั้น

หมายเหตุ: ในการตั้งค่าอุปกรณ์ในขั้นต้น โปรดดูรายละเอียดทั้งหมดเกี่ยวกับวิธีใช้ SPIFFS กับ Arduino IDE ที่นี่

เซิร์ฟเวอร์ mDNS

ฟังก์ชันนี้ถูกเรียกใช้เมื่ออุปกรณ์ IoT ไม่สามารถเชื่อมต่อกับเครือข่าย WiFi ของคุณเป็นสถานี WiFi และกลายเป็นจุดเชื่อมต่อ WiFi ที่คล้ายกับเราเตอร์ WiFi ในประเทศแทน ในกรณีของเราเตอร์ดังกล่าว คุณมักจะเชื่อมต่อโดยป้อนที่อยู่ IP เช่น 192.168.1.1 (ปกติจะพิมพ์บนฉลากที่ติดอยู่ในกล่อง) ลงในแถบ URL ของเบราว์เซอร์โดยตรง จากนั้นคุณจะได้รับหน้าเข้าสู่ระบบเพื่อเข้าสู่ ชื่อผู้ใช้และรหัสผ่านเพื่อให้คุณสามารถกำหนดค่าอุปกรณ์

สำหรับ ESP8266 ในโหมด AP (โหมดจุดเข้าใช้งาน) อุปกรณ์จะมีค่าเริ่มต้นเป็นที่อยู่ IP 192.168.4.1 อย่างไรก็ตาม เมื่อเซิร์ฟเวอร์ mDNS ทำงาน คุณจะต้องป้อนชื่อที่เป็นมิตรต่อมนุษย์ 'SENSORSVR.local' ลงในแถบ URL ของเบราว์เซอร์เพื่อดู 'หน้าแรกการกำหนดค่าเซ็นเซอร์'

ลูกค้า MQTT

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

เว็บเซิร์ฟเวอร์

ดังที่กล่าวไว้ข้างต้น หากอุปกรณ์ IoT ไม่สามารถเชื่อมต่อกับเครือข่าย WiFi ที่มี SSID, P/W ฯลฯ ถูกกำหนดไว้ในไฟล์ข้อมูลความปลอดภัยที่อยู่ใน SPIFFS อุปกรณ์จะกลายเป็นจุดเข้าใช้งาน เมื่อเชื่อมต่อกับเครือข่าย WiFi ที่จุดเข้าใช้งานแล้ว การมีอยู่ของเว็บเซิร์ฟเวอร์ HTTP จะทำให้คุณสามารถเชื่อมต่อโดยตรงกับอุปกรณ์และเปลี่ยนการกำหนดค่าผ่านการใช้เว็บเบราว์เซอร์ HTTP ซึ่งมีวัตถุประสงค์เพื่อให้บริการ 'หน้าแรกการกำหนดค่าเซ็นเซอร์' หน้าเว็บของเพจซึ่งจัดอยู่ใน SPIFFS ด้วย

สถานี WiFi

ฟังก์ชันนี้ช่วยให้อุปกรณ์ IoT สามารถเชื่อมต่อกับเครือข่าย WiFi ภายในประเทศโดยใช้พารามิเตอร์ในไฟล์ข้อมูลความปลอดภัย หากไม่มีอุปกรณ์ IoT ของคุณจะไม่สามารถสมัคร/เผยแพร่ไปยังโบรกเกอร์ MQTT

จุดเชื่อมต่อ WiFi

ความสามารถในการเป็น WiFi Access Point เป็นวิธีที่อุปกรณ์ IoT อนุญาตให้คุณเชื่อมต่อและทำการเปลี่ยนแปลงการกำหนดค่าผ่านสถานี WiFi และเบราว์เซอร์ (เช่น Safari บน Apple iPad)

จุดเชื่อมต่อนี้เผยแพร่ SSID = "SENSOR" + 6 หลักสุดท้ายของที่อยู่ MAC ของอุปกรณ์ IoT รหัสผ่านสำหรับเครือข่ายปิดนี้มีชื่อว่า 'PASSWORD' ในจินตนาการ

ขั้นตอนที่ 3: ภาพรวมซอฟต์แวร์

ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์

Preamble ในการคอมไพล์ซอร์สโค้ดนี้ให้สำเร็จ คุณจะต้องมีไลบรารีเพิ่มเติมดังต่อไปนี้

PubSubClient.h

  • โดย: Nick O'Leary
  • วัตถุประสงค์: ทำให้อุปกรณ์สามารถเผยแพร่หรือสมัครสมาชิกหัวข้อ MQTT กับโบรกเกอร์ที่กำหนด
  • จาก:

DHT.h

  • By: อดาฟรุต
  • วัตถุประสงค์: ห้องสมุดสำหรับ DHT Temperature/Humidity Sensor
  • จาก:

ภาพรวมรหัส

ซอฟต์แวร์ใช้ประโยชน์จากเครื่องสถานะดังแสดงในรูปที่ 1 ด้านบน (สำเนาเต็มของแหล่งที่มาด้านล่าง) มี 5 รัฐหลักดังนี้

  • ในนั้น

    สถานะการเริ่มต้นนี้เป็นสถานะแรกที่ป้อนหลังจากเปิดเครื่อง

  • NOCONFIG

    สถานะนี้จะถูกป้อนหากตรวจพบไฟล์ secvals.txt ที่ไม่ถูกต้องหรือหายไปหลังจากเปิดเครื่องแล้ว

  • รอดำเนินการ NW

    สถานะนี้เป็นสถานะชั่วคราว ป้อนในขณะที่ไม่มีการเชื่อมต่อเครือข่าย WiFi

  • MQTT ที่รอดำเนินการ

    สถานะนี้เป็นสถานะชั่วคราว ป้อนหลังจากทำการเชื่อมต่อเครือข่าย WiFi และในขณะที่ไม่มีการเชื่อมต่อกับนายหน้า MQTT บนเครือข่ายนั้น

  • คล่องแคล่ว

    นี่เป็นสถานะการทำงานปกติที่ป้อนเมื่อสร้างการเชื่อมต่อเครือข่าย WiFi และ MQTT Broker แล้ว ในระหว่างสถานะนี้ ฟังก์ชันการทำงานของอุณหภูมิและความชื้นของเซ็นเซอร์จะเผยแพร่ไปยัง MQTT Broker

เหตุการณ์ที่ควบคุมการเปลี่ยนแปลงระหว่างรัฐได้อธิบายไว้ในรูปที่ 1 ด้านบน การเปลี่ยนผ่านระหว่างรัฐยังควบคุมโดยพารามิเตอร์ SecVals ต่อไปนี้

  • ที่อยู่ IP ของโบรกเกอร์ MQTT ที่ 1 ในรูปแบบจุดทศนิยม AAA. BBB. CCC. DDD
  • พอร์ตนายหน้า MQTT แห่งที่ 2 ในรูปแบบจำนวนเต็ม
  • พยายามเชื่อมต่อ MQTT Broker ครั้งที่ 3 ก่อนที่จะเปลี่ยนจากโหมด STA เป็นโหมด AP ในรูปแบบจำนวนเต็ม
  • SSID เครือข่าย WiFi ที่ 4 ในข้อความรูปแบบอิสระ
  • รหัสผ่านเครือข่าย WiFi ที่ 5 ในข้อความรูปแบบอิสระ

ดังที่กล่าวไว้ข้างต้น หากอุปกรณ์ IoT ไม่สามารถเชื่อมต่อเป็นสถานี WiFi กับเครือข่าย WiFi ที่มีการกำหนด SSID และ P/W ใน secvals.txt ที่อยู่ใน SPIFFS อุปกรณ์ IoT จะกลายเป็นจุดเข้าใช้งาน เมื่อเชื่อมต่อกับจุดเชื่อมต่อนี้แล้วจะแสดง 'หน้าแรกการกำหนดค่าเซ็นเซอร์' ดังที่แสดงด้านบนในรูปที่ 2 (โดยป้อน 'SENSORSVR.local' หรือ 192.168.4.1 ลงในแถบที่อยู่ URL ของเบราว์เซอร์ของคุณ) หน้าแรกนี้อนุญาตให้กำหนดค่าเซ็นเซอร์ใหม่ผ่านเบราว์เซอร์

การเข้าถึงระยะไกลขณะอยู่ในสถานะ ACTIVE

เมื่อเชื่อมต่อกับ MQTT Broker แล้ว ยังสามารถทั้งปรับเทียบใหม่และกำหนดค่าอุปกรณ์ผ่านการเผยแพร่หัวข้อ MQTT ไฟล์ calvals.txt มีการเข้าถึง R/W และ secvals.txt มีการเปิดเผยการเข้าถึงแบบเขียนเท่านั้น

ผู้ใช้ดีบัก

ในระหว่างลำดับการบู๊ต อุปกรณ์ IoT ที่นำจะแสดงการตอบกลับการดีบักดังต่อไปนี้

  • 1 แฟลชสั้น: ไม่มีไฟล์ Config อยู่ใน SPIFFS (secvals.txt)
  • 2 กะพริบสั้นๆ: อุปกรณ์ IoT กำลังพยายามเชื่อมต่อกับเครือข่าย WiFi
  • ไฟส่องสว่างต่อเนื่อง: อุปกรณ์ IoT กำลังพยายามเชื่อมต่อกับ MQTT Broker
  • ปิด: อุปกรณ์เปิดใช้งานอยู่
  • หมายเหตุ 1: 'หน้าแรกของการกำหนดค่าเซ็นเซอร์' ไม่ได้ใช้ซ็อกเก็ตที่ปลอดภัย ดังนั้นจึงอาศัยเครือข่ายของคุณที่ปลอดภัย
  • หมายเหตุ 2: ในการตั้งโปรแกรมอุปกรณ์ IoT แต่ละเครื่อง สตริง MQTT จะต้องมีการแก้ไขก่อนดาวน์โหลด เนื่องจากมีการฝังหมายเลขเซ็นเซอร์ไว้ในสตริงหัวข้อ MQTT เช่น. 'WFD/THSen/100/HumdStatus/1' สำหรับอุปกรณ์ทั้ง 6 ของฉันจะมีหมายเลข 1…6 ตามลำดับ

ขั้นตอนที่ 4: การปรับเทียบเซ็นเซอร์

การสอบเทียบเซ็นเซอร์
การสอบเทียบเซ็นเซอร์
การสอบเทียบเซ็นเซอร์
การสอบเทียบเซ็นเซอร์

เมื่ออุปกรณ์ IoT เปิดเครื่องขึ้น ไฟล์ชื่อ 'cavals.txt' จะถูกอ่านจาก SPIFFS ซึ่งเป็นส่วนหนึ่งของลำดับการบู๊ต เนื้อหาของไฟล์นี้เป็นค่าคงที่ของการสอบเทียบตามที่แสดงด้านบนในรูปที่ 1 ค่าคงที่ของการสอบเทียบเหล่านี้ใช้เพื่อปรับค่าที่อ่านได้จากเซ็นเซอร์เพื่อให้สอดคล้องกับอุปกรณ์อ้างอิง มีอีกค่าหนึ่งที่กำหนดกลยุทธ์การรายงานสำหรับอุปกรณ์และได้อธิบายไว้ด้านล่างพร้อมกับขั้นตอนที่ปฏิบัติตามเพื่อปรับเทียบเซ็นเซอร์

กลยุทธ์การรายงาน พารามิเตอร์นี้กำหนดวิธีที่เซ็นเซอร์ระยะไกลรายงานการเปลี่ยนแปลงพารามิเตอร์แวดล้อมในเครื่อง หากเลือกค่าเป็น 0 เซ็นเซอร์ระยะไกลจะเผยแพร่การเปลี่ยนแปลงที่เห็นในค่าอุณหภูมิหรือความชื้นทุกครั้งที่อ่านเซ็นเซอร์ (ประมาณทุกๆ 10 วินาที) ค่าอื่นใดจะทำให้การเผยแพร่การเปลี่ยนแปลงล่าช้า 1…60 นาที การแก้ไขพารามิเตอร์นี้ช่วยให้สามารถเพิ่มประสิทธิภาพการรับส่งข้อมูลเครือข่าย MQTT

การสอบเทียบอุณหภูมิ

ในการปรับเทียบเซ็นเซอร์ พวกเขาถูกวางไว้ใกล้กันทางกายภาพดังที่แสดงด้านบนในรูปที่ 2 ข้างๆ กัน ฉันวาง DMM โดยติดเทอร์โมคัปเปิลที่ปรับเทียบแล้ว (Fluke 87 V) แล้วตรวจสอบเอาต์พุตจากแต่ละอุปกรณ์ผ่านอุณหภูมิ OpenHAB หน้าเทรนด์ตลอดทั้งวันเพื่อให้อุณหภูมิแกว่งได้ดี ฉันสังเกตทั้งออฟเซ็ตคงที่ (ยกระดับศูนย์ 'C') และอัตราการเปลี่ยนแปลงของแต่ละอุปกรณ์ (เกน หรือความชันของกราฟ 'M') ที่สัมพันธ์กับค่าที่มาจากเทอร์โมคัปเปิลที่สอบเทียบ จากนั้นฉันคำนวณความสัมพันธ์ y=mx+c อย่างง่าย (ฉันพบว่ามันเป็นเส้นตรงเพียงพอที่จะเป็นค่าประมาณใกล้เคียงกับกราฟเส้นตรง) และตั้งโปรแกรมการแก้ไขที่จำเป็นลงในค่าคงที่การสอบเทียบผ่าน MQTTSpy

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

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

การสอบเทียบความชื้น

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

ขั้นตอนที่ 5: แบบแผนการตั้งชื่อหัวข้อ MQTT

แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT

หลังจากการลองผิดลองถูกมามาก ฉันก็ตกลงตามหลักการตั้งชื่อหัวข้อที่แสดงไว้ในรูปที่ 1 ด้านบน

กล่าวคือ 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice'

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

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

หมายเหตุ: หากคุณไม่แน่ใจว่าจะใช้ MQTTSpy อย่างไร โปรดดูที่นี่ 'การตั้งค่านายหน้า MQTT ตอนที่ 2: IoT โฮมออโตเมชั่น'

ขั้นตอนที่ 6: การกำหนดค่า OpenHAB

การกำหนดค่า OpenHAB
การกำหนดค่า OpenHAB
การกำหนดค่า OpenHAB
การกำหนดค่า OpenHAB
การกำหนดค่า OpenHAB
การกำหนดค่า OpenHAB

ฉันแก้ไขการกำหนดค่า OpenHAB ที่ให้ไว้ในคำสั่งก่อนหน้าของฉัน (ที่นี่) และเพิ่มในแต่ละรายการสำหรับ;

  • โรงรถ,
  • ห้องโถง,
  • ห้องนั่งเล่น,
  • ครัว
  • ห้องนอนแขก
  • ห้องนอนใหญ่

ในแผนผังเว็บไซต์ดูรูปที่ 1 ด้านบน

สำหรับแต่ละรายการเหล่านี้ฉันได้เพิ่มแผนผังไซต์แต่ละรายการซึ่งเปิดเผยค่าแวดล้อมในตัวเครื่อง (ดูรูปที่ 2 ด้านบน);

  • อุณหภูมิ
  • ความชื้น
  • ดัชนีความร้อน

ฉันยังรวมสวิตช์เพื่อควบคุมไฟ LED ในพื้นที่ที่ติดตั้งภายในเซ็นเซอร์ด้วย

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

ภาพที่ 6 แสดงตัวอย่างแนวโน้มความชื้นในระยะยาวในช่วงสัปดาห์

หมายเหตุ 1: หากคุณไม่แน่ใจว่าจะใช้ OpenHAB อย่างไร ให้ดูที่นี่ 'การตั้งค่าและกำหนดค่า OpenHAB ตอนที่ 6: IoT โฮมออโตเมชั่น'

หมายเหตุ 2: สำเนาแผนผังเว็บไซต์ กฎและไฟล์รายการ ไอคอน ฯลฯ ที่แก้ไขได้รับด้านล่าง

ขั้นตอนที่ 7: ทดสอบการออกแบบ

การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ

ส่วนใหญ่ฉันทดสอบอุปกรณ์ IoT ผ่านการเชื่อมต่อ MQTT ด้วย MQTT Spy ตรวจสอบเอาต์พุต led และดีบักทราฟฟิกบนอินเทอร์เฟซแบบอนุกรม สิ่งนี้ทำให้ฉันใช้หัวข้อที่สมัครรับข้อมูลทั้งหมดและตรวจสอบคำตอบที่เผยแพร่ แม้ว่าจะทำได้ด้วยตนเองและกลายเป็นเรื่องน่าเบื่อบ้างในบางครั้ง แต่ก็ช่วยให้ครอบคลุมได้ 100%

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

เพื่อแก้ไขปัญหานี้ ฉันได้สร้างชุดเครือข่ายจำลองของตัวเองโดยใช้ ESP8266-01 ที่กำหนดค่าเป็นจุดเข้าใช้งาน (รูปที่ 1) พร้อม SSID ของ 'DummyNet1' และ 'DummyNet2' ตามลำดับ การใช้วงจรในรูปที่ 2 ด้านบน LED เป็นการบ่งชี้ว่าอุปกรณ์ IoT เชื่อมต่ออยู่หรือไม่ แม้ว่านี่จะไม่ใช่โซลูชันการทดสอบที่สมบูรณ์แบบ (เช่น เครือข่าย Wi-Fi จำลองแต่ละเครือข่ายไม่มีเซิร์ฟเวอร์ MQTT) แต่ก็เป็นไปได้ที่จะทดสอบเครื่องสถานะอย่างสมบูรณ์

ฉันได้รวมสำเนาของซอร์สโค้ดไว้ด้านล่าง

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

ทั่วไป

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

การปรับปรุง

ในการพัฒนาซอฟต์แวร์รูทีนสำหรับอ่านและเขียนไปยัง SPIFFS ฉันเขียนโค้ดซึ่งในตอนหลังอาจดูล้ำหน้ากว่าที่ฉันตั้งใจไว้เล็กน้อย โดยใช้ void pointers, recasting และ pointers to pointers แม้ว่าจะมีความยืดหยุ่นสูงและทำงานได้ดี ครั้งหน้าฉันอาจใช้ JSON ที่เกี่ยวข้องกับ ConfigFile.ino เพื่อให้ง่ายขึ้นเล็กน้อย

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • ConfigFile.ino Source

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

รายการสินค้าที่ต้องการ

ฉันตั้งใจจะใช้ไคลเอ็นต์ mDNS เพื่อเชื่อมต่อกับนายหน้า แต่ห้องสมุดมีช่องโหว่เกินไป นี่คือเหตุผลที่จำเป็นต้องระบุที่อยู่ IP ของโบรกเกอร์ MQTT แทน 'MQTTSVR.local' หากไลบรารี mDNS มีความเสถียรมากขึ้นในอนาคต ฉันจะเพิ่มความสามารถนี้ลงในอุปกรณ์

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

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

ขั้นตอนที่ 9: ข้อมูลอ้างอิงที่ใช้

ฉันใช้แหล่งข้อมูลต่อไปนี้เพื่อรวบรวมคำแนะนำนี้

PubSubClient.h

  • โดย: Nick O'Leary
  • จาก:

DHT.h

  • By: อดาฟรุต
  • จาก:

เอกสารข้อมูล DHT22

แนะนำ: