สารบัญ:
- ขั้นตอนที่ 1: รายละเอียดการออกแบบ
- ขั้นตอนที่ 2: เซ็นเซอร์
- ขั้นตอนที่ 3: สถานีเซ็นเซอร์
- ขั้นตอนที่ 4: สถานีเซนเซอร์ ESP-01
- ขั้นตอนที่ 5: ESP 12E Serial WIFI Kit Sensor Station
- ขั้นตอนที่ 6: D1 Mini Sensor Stations
- ขั้นตอนที่ 7: เกตเวย์และเว็บเซิร์ฟเวอร์
- ขั้นตอนที่ 8: ซอฟต์แวร์
- ขั้นตอนที่ 9: ผลลัพธ์
วีดีโอ: สถานีตรวจอากาศที่บ้านของ ESP-Now: 9 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ฉันอยากมีสถานีตรวจอากาศที่บ้านสักระยะหนึ่ง และทุกคนในครอบครัวสามารถตรวจสอบอุณหภูมิและความชื้นได้อย่างง่ายดาย นอกจากการตรวจสอบสภาพภายนอกแล้ว ฉันยังต้องการตรวจสอบห้องเฉพาะในบ้านและโรงจอดรถของฉันด้วย ซึ่งจะทำให้เราทราบเมื่อถึงเวลาที่เหมาะสมที่จะออกอากาศนอกบ้านหรือเปิดเครื่องลดความชื้น (ที่นี่ฝนตกบ่อยในฤดูหนาว) สิ่งที่ฉันสร้างขึ้นคือระบบเซ็นเซอร์ที่ใช้ ESP-Now ซึ่งรายงานไปยังเว็บเซิร์ฟเวอร์ในพื้นที่ที่ทุกคนสามารถตรวจสอบได้จากคอมพิวเตอร์หรือโทรศัพท์ สำหรับโทรศัพท์นั้น ฉันเขียนเป็นแอพ Android ที่เรียบง่ายเพื่อให้ง่ายยิ่งขึ้นไปอีก
ขั้นตอนที่ 1: รายละเอียดการออกแบบ
ฉันต้องการมีสถานีเซ็นเซอร์ต่างๆ ที่ฉันสามารถวางไว้ในตำแหน่งต่างๆ และให้พวกเขารายงานกลับไปยังสถานีหลัก (หรือฮับ) แห่งเดียวที่จะบันทึกข้อมูล หลังจากลองใช้แนวคิดต่างๆ แล้ว ฉันตัดสินใจใช้โปรโตคอล ESP-Now ของ Espressif เนื่องจากอนุญาตให้มีการสื่อสารระหว่างอุปกรณ์โดยตรงอย่างรวดเร็ว คุณสามารถอ่านเล็กน้อยเกี่ยวกับ ESP-Now ที่นี่ และ GitHub repo นี้เป็นส่วนสำคัญของแรงบันดาลใจของฉัน
รูปแรกแสดงการจัดวางระบบ เซ็นเซอร์แต่ละตัวจะรายงานการวัดไปยังอุปกรณ์เกตเวย์ซึ่งจะส่งข้อมูลไปยังเซิร์ฟเวอร์หลักโดยการเชื่อมต่อแบบอนุกรมแบบมีสายแบบแข็ง เหตุผลก็คือ โปรโตคอล ESP-Now ไม่สามารถใช้งานพร้อมกันกับการเชื่อมต่อ WiFi ได้ เพื่อให้ผู้ใช้เข้าถึงหน้าเว็บได้ ต้องเปิด WIFI ตลอดเวลา และทำให้ไม่สามารถใช้การสื่อสาร ESP-Now บนอุปกรณ์เดียวกันได้ แม้ว่าอุปกรณ์เกตเวย์จะต้องเป็นอุปกรณ์ที่ใช้ Espressif (มีความสามารถของ ESP-Now) แต่เซิร์ฟเวอร์หลักอาจเป็นอุปกรณ์ใดๆ ก็ตามที่สามารถเรียกใช้หน้าเว็บได้
สถานีเซ็นเซอร์บางแห่งจะใช้พลังงานจากแบตเตอรี่ (หรือแบตเตอรี่ที่ชาร์จด้วยพลังงานแสงอาทิตย์) และบางสถานีอาจมีแหล่งจ่ายไฟหลัก อย่างไรก็ตาม ฉันต้องการให้ทุกคนใช้พลังงานน้อยที่สุดเท่าที่จะเป็นไปได้ และนั่นคือที่ที่ฟีเจอร์ "deepsleep" ที่มีในอุปกรณ์ ESP8266 และ ESP32 มีประโยชน์อย่างยิ่ง สถานีเซ็นเซอร์จะตื่นขึ้นเป็นระยะ ทำการวัด และส่งไปยังอุปกรณ์เกตเวย์และกลับสู่โหมดสลีปตามระยะเวลาที่กำหนดไว้ล่วงหน้า ระยะเวลาปลุกเพียง 300ms ทุกๆ 5 นาที (ในกรณีของฉัน) ช่วยลดการใช้พลังงานได้อย่างมาก
ขั้นตอนที่ 2: เซ็นเซอร์
มีเซ็นเซอร์ต่างๆ ให้เลือกสำหรับการวัดค่าพารามิเตอร์ด้านสิ่งแวดล้อม ฉันตัดสินใจที่จะใช้เซ็นเซอร์ที่มีความสามารถสื่อสาร I2C เท่านั้น เนื่องจากอนุญาตให้วัดได้อย่างรวดเร็วและจะทำงานบนอุปกรณ์ใดๆ ที่ฉันมี แทนที่จะทำงานกับ IC โดยตรง ฉันค้นหาโมดูลที่พร้อมใช้งานที่มีพินเอาต์เหมือนกันเพื่อทำให้การออกแบบของฉันง่ายขึ้น ฉันเริ่มต้นด้วยเพียงต้องการวัดอุณหภูมิและความชื้น ดังนั้นฉันจึงเลือกโมดูลที่ใช้ SI7021 ต่อมาฉันต้องการเซ็นเซอร์ที่สามารถวัดแรงดันได้เช่นกัน และตัดสินใจลองใช้โมดูลเซ็นเซอร์ที่ใช้ BME280 สำหรับบางสถานที่ ฉันยังต้องการตรวจสอบระดับแสงและโมดูล BH1750 เหมาะอย่างยิ่งสำหรับสิ่งนี้ในฐานะโมดูลเซ็นเซอร์แยกต่างหาก ฉันซื้อโมดูลเซ็นเซอร์จาก eBay และนี่คือโมดูลที่ฉันได้รับ:
- BME280 (GY-BMP/E280) วัดอุณหภูมิ ความชื้น และความดัน
- SI7021 (GY-21) วัดอุณหภูมิและความชื้น
- BH1750 (GY-302) วัดแสง
มีสองรูปแบบของโมดูล PCB GY-BMP/E280 ที่จะพบ ทั้งสองใช้พินเดียวกันสำหรับพิน 1 ถึง 4 หนึ่งโมดูลมีพินเพิ่มเติมสองพิน CSB และ SDO พินทั้งสองนั้นเชื่อมต่อล่วงหน้าในรุ่น 4 พินของโมดูล ระดับของพิน SDO กำหนดที่อยู่ I2C (กราวด์ = ค่าเริ่มต้น 0x76, VCC = 0x77) ขา CSB ต้องเชื่อมต่อกับ VCC เพื่อเลือกอินเทอร์เฟซ I2C ฉันชอบโมดูล 4 พิน เพราะมันพร้อมใช้งานตามวัตถุประสงค์ของฉัน
โดยทั่วไปแล้ว โมดูลเหล่านี้ใช้งานได้สะดวกมาก เนื่องจากมีตัวต้านทานแบบดึงขึ้นติดตั้งอยู่แล้วสำหรับสายการสื่อสาร และทั้งหมดทำงานบน 3.3V ดังนั้นจึงเข้ากันได้กับบอร์ดที่ใช้ ESP8266 โปรดทราบว่าพินบนไอซีเซ็นเซอร์เหล่านี้โดยทั่วไปไม่ทนต่อ 5V ดังนั้นการเชื่อมต่อกับ Arduino Uno โดยตรงอาจทำให้เสียหายอย่างถาวร
ขั้นตอนที่ 3: สถานีเซ็นเซอร์
ดังที่กล่าวไว้ สถานีเซ็นเซอร์ทั้งหมดจะเป็นอุปกรณ์ Espressif ที่ใช้โปรโตคอลการสื่อสาร ESP-Now จากโปรเจ็กต์และการทดลองครั้งก่อน ฉันมีอุปกรณ์หลายอย่างที่พร้อมใช้เพื่อทำการทดสอบเบื้องต้นและรวมไว้ในการออกแบบขั้นสุดท้าย ฉันมีอุปกรณ์ต่อไปนี้อยู่ในมือ:
- โมดูล ESP-01 สองโมดูล
- บอร์ดพัฒนา Wemos D1 mini สองบอร์ด
- หนึ่งบอร์ดพัฒนา Lolin ESP8266
- หนึ่งบอร์ดชุดอุปกรณ์ WIFI แบบอนุกรม ESP12E
- หนึ่งบอร์ด GOUUU ESP32 (บอร์ดพัฒนา 38 พิน)
ฉันยังมีบอร์ดพัฒนา Wemos D1 R2 ด้วย แต่มีปัญหากับมันที่ไม่อนุญาตให้ตื่นจากโหมดสลีปลึกและเป็นอุปกรณ์เกตเวย์ มันจะหยุดทำงานและไม่สามารถรีสตาร์ทได้อย่างเหมาะสม ฉันซ่อมมันในภายหลังและมันกลายเป็นส่วนหนึ่งของโปรเจ็กต์ที่เปิดประตูโรงรถ เพื่อให้ "deepsleep" ทำงานได้ หมุด RST ของ ESP8266 จะต้องเชื่อมต่อกับพิน GPIO16 ดังนั้นตัวตั้งเวลาปิดเครื่องจึงสามารถปลุกอุปกรณ์ได้ ตามหลักการแล้วการเชื่อมต่อนี้ควรทำด้วยไดโอด Schottky (แคโทดเป็น GPIO16) เพื่อให้การรีเซ็ตด้วยตนเองผ่านการเชื่อมต่อ USB-TLL ระหว่างการเขียนโปรแกรมยังคงใช้งานได้ อย่างไรก็ตาม ตัวต้านทานค่าต่ำ (300-ish Ohm) หรือแม้แต่การต่อสายตรงก็ยังทำได้สำเร็จ
โมดูล ESP-01 ไม่อนุญาตให้เข้าถึงพิน GPIO16 ได้ง่ายและต้องบัดกรีโดยตรงกับ IC นี่ไม่ใช่งานง่ายและฉันจะไม่แนะนำสิ่งนี้สำหรับทุกคน บอร์ดชุดอุปกรณ์ไร้สายแบบอนุกรม ESP12E ของ ESP12E เป็นสินค้าแปลกใหม่และจำเป็นต้องเปลี่ยนแปลงเล็กน้อยเพื่อให้มีประโยชน์สำหรับวัตถุประสงค์ของฉัน บอร์ดที่ใช้งานง่ายที่สุดคือบอร์ด Wemos D1 mini และบอร์ด Lolin อุปกรณ์ ESP32 ไม่ต้องการการปรับเปลี่ยนใดๆ เพื่อให้ Deepsleep ทำงานได้ Andreas Spiess มีคำแนะนำที่ดีเกี่ยวกับเรื่องนี้
ขั้นตอนที่ 4: สถานีเซนเซอร์ ESP-01
ในทุกสถานีเซ็นเซอร์ โมดูลเซ็นเซอร์จะติดตั้งในแนวตั้งเพื่อลดปริมาณฝุ่นที่จะสะสม ไม่ใช่ทั้งหมดที่อยู่ในกล่องหุ้ม และฉันไม่อาจติดตั้งมันลงในกล่องหุ้มได้ เหตุผลก็คืออุปกรณ์อาจอุ่นเครื่องและส่งผลต่อการอ่านค่าอุณหภูมิและความชื้นในการระบายอากาศที่ไม่เพียงพอ
บอร์ด ESP-01 มีขนาดกะทัดรัดมากและมีพิน IO ดิจิทัลไม่กี่ตัวที่จะใช้งานด้วย แต่ก็เพียงพอสำหรับอินเทอร์เฟซ I2C อย่างไรก็ตาม บอร์ดต้องมีการปรับเปลี่ยนที่ยุ่งยากเพื่อให้ "หลับลึก" ทำงานได้ ในภาพที่แสดง มีการบัดกรีลวดจากหมุดมุม (GPIO16) ไปยังพิน RST ที่ส่วนหัว ลวดที่ฉันใช้คือลวด "ซ่อม" เส้นผ่านศูนย์กลาง 0.1 มม. การเคลือบฉนวนจะละลายออกไปเมื่อได้รับความร้อน จึงสามารถบัดกรีเพื่อซ่อมแซมร่องรอย ฯลฯ ใน PCB และยังคงไม่ต้องกังวลกับการสร้างช็อตที่ลวดสัมผัสกับส่วนประกอบอื่นๆ ขนาดของมันทำให้ใช้งานยาก และฉันบัดกรีลวดนี้เข้าที่โดยใช้กล้องจุลทรรศน์ (แบบนักสะสมแสตมป์/งานอดิเรก) โปรดทราบว่าส่วนหัวทางด้านขวามีระยะห่างระหว่างพิน 0.1" (2.54 มม.) การติดตั้งไดโอด Schottky ที่นี่จะไม่ง่ายเลย ฉันจึงตัดสินใจลองใช้สายไฟเพียงอย่างเดียว และทั้งสองยูนิตทำงานเกินเวลา เดือนโดยไม่มีปัญหาใดๆ
โมดูลถูกติดตั้งบนบอร์ดต้นแบบสองบอร์ดที่ฉันสร้างขึ้น บอร์ดหนึ่ง (#1) คือบอร์ดโปรแกรมเมอร์ที่อนุญาตให้ติดตั้งและทดสอบโมดูล I2C ได้ ในขณะที่อีกบอร์ดหนึ่ง (#2) เป็นบอร์ดพัฒนา/ทดสอบสำหรับอุปกรณ์ I2C สำหรับบอร์ดแรก ฉันได้ประสานตัวเชื่อมต่อ USB ตัวผู้เก่าและ PCB ขนาดเล็กเข้าด้วยกันเพื่อจ่ายไฟให้กับยูนิตโดยตรงจากอะแดปเตอร์ติดผนัง USB อีกหน่วยหนึ่งมีแจ็ค DC ปกติที่ดัดแปลงให้พอดีกับส่วนหัวของขั้วต่อสกรูและใช้พลังงานจากอะแดปเตอร์ติดผนังเช่นกัน
แผนผังแสดงวิธีการเชื่อมต่อและการทำงานของโปรแกรมเมอร์ ฉันไม่มีโมดูล ESP-01 อื่นๆ ดังนั้นฉันจึงไม่ต้องการโปรแกรมเมอร์ในทันที ในอนาคตฉันจะทำ PCB ให้พวกเขา แผงทั้งสองนี้มีโมดูลเซ็นเซอร์ SI7021 ติดตั้งอยู่ เนื่องจากฉันไม่สนใจการวัดความดันในสถานที่เหล่านั้นมากนัก
ขั้นตอนที่ 5: ESP 12E Serial WIFI Kit Sensor Station
บอร์ด ESP12E Serial WIFI Kit ไม่ได้มีไว้สำหรับการพัฒนามากเท่ากับการจัดแสดงสิ่งที่สามารถทำได้ด้วยอุปกรณ์นี้ ฉันซื้อมันมานานแล้วเพื่อเรียนรู้เล็กน้อยเกี่ยวกับการเขียนโปรแกรม ESP8266 และในที่สุดก็ตัดสินใจใช้งานใหม่ ฉันลบ LED ทั้งหมดที่ติดตั้งสำหรับการสาธิตและเพิ่มส่วนหัวการเขียนโปรแกรม USB รวมถึงส่วนหัว I2C ที่เหมาะสมกับโมดูลที่ฉันใช้ มันมีตัวต้านทานภาพถ่าย CdS ที่เชื่อมต่อกับพินอินพุตแบบอะนาล็อก และฉันตัดสินใจทิ้งมันไว้ที่นั่น หน่วยเฉพาะนี้จะตรวจสอบโรงจอดรถของฉันและเซ็นเซอร์ภาพถ่ายที่มีก็เพียงพอที่จะแจ้งให้ฉันทราบว่าไฟถูกทิ้งไว้โดยไม่ได้ตั้งใจหรือไม่ สำหรับการวัดแสง ฉันปรับค่าการอ่านให้เป็นเปอร์เซ็นต์เพื่อให้ได้ผลลัพธ์เป็นเปอร์เซ็นต์ และค่าใดๆ ที่เกิน "5" ในเวลากลางคืนหมายความว่าเปิดไฟทิ้งไว้หรือประตูบ้านปิดไม่สนิท หมุด RST และ GPIO16 มีการติดฉลากไว้อย่างชัดเจนบน PCB และมีการติดตั้งไดโอด Schottky ที่เชื่อมต่อไว้ที่ด้านล่างของ PCB ใช้พลังงานจากบอร์ดอนุกรม USB ที่เสียบเข้ากับเครื่องชาร์จ USB แบบเสียบผนังโดยตรง ฉันมีบอร์ด USB-serial เพิ่มเติมและไม่ต้องการบอร์ดนี้ในตอนนี้
ฉันไม่ได้ทำแผนผังสำหรับบอร์ดนี้และโดยทั่วไปไม่แนะนำให้ซื้อเพื่อวัตถุประสงค์นี้ บอร์ด Wemos D1 Mini เหมาะสมกว่ามากและจะมีการกล่าวถึงในครั้งต่อไป แม้ว่าถ้าคุณมีสิ่งเหล่านี้และต้องการคำแนะนำ เราก็ยินดีที่จะช่วยเหลือ
ขั้นตอนที่ 6: D1 Mini Sensor Stations
บอร์ดพัฒนา ESP8266 ประเภท Wemos D1 Mini เป็นบอร์ดที่ฉันชอบใช้ และถ้าฉันต้องทำมากกว่านั้น ฉันจะใช้บอร์ดเหล่านี้ พวกเขามีพิน IO ที่เข้าถึงได้จำนวนมาก สามารถตั้งโปรแกรมได้โดยตรงผ่าน Arduino IDE และยังมีขนาดกะทัดรัดพอสมควร พิน D0 คือ GPIO16 บนบอร์ดเหล่านี้ และการเชื่อมต่อไดโอด Schottky นั้นค่อนข้างง่าย แผนผังแสดงให้เห็นว่าฉันต่อสายบอร์ดเหล่านี้ได้อย่างไร และทั้งคู่ใช้โมดูลเซ็นเซอร์ BME2808
หนึ่งในสองบอร์ดนี้ใช้เพื่อตรวจสอบสภาพอากาศภายนอกและใช้พลังงานจากแบตเตอรี่พลังงานแสงอาทิตย์ แผงโซลาร์เซลล์ขนาด 165 มม. x 135 มม. (6V, 3.5W) เชื่อมต่อกับโมดูลการชาร์จแบตเตอรี่ลิเธียมไอออน TP4056 (ดูแผนภาพการตั้งค่าสถานีเซ็นเซอร์แบตเตอรี่พลังงานแสงอาทิตย์) โมดูลการชาร์จเฉพาะนี้ (03962A) มีวงจรป้องกันแบตเตอรี่ซึ่งจำเป็นหากแบตเตอรี่ (แพ็ค) ไม่มีอยู่ แบตเตอรี่ลิเธียมไอออนถูกนำกลับมาใช้ใหม่จากชุดแบตเตอรี่แล็ปท็อปรุ่นเก่า และยังสามารถเก็บประจุไฟได้เพียงพอสำหรับใช้งานบอร์ด D1 Mini โดยเฉพาะอย่างยิ่งเมื่อเปิดใช้งานโหมด Deep Sleep กระดานถูกวางไว้ในกล่องพลาสติกเพื่อให้ปลอดภัยจากส่วนประกอบต่างๆ อย่างไรก็ตาม เพื่อให้ภายในสามารถสัมผัสกับอุณหภูมิและความชื้นภายนอกได้ เจาะรูขนาดเส้นผ่านศูนย์กลาง 25 มม. สองรูที่ด้านตรงข้ามและปิด (จากด้านใน) ด้วยผ้าแนวนอนสีดำ ผ้าได้รับการออกแบบมาเพื่อให้ความชื้นซึมผ่านได้ ดังนั้นจึงสามารถวัดความชื้นได้ ที่ปลายด้านหนึ่งของตู้มีรูเล็กๆ เจาะและติดตั้งหน้าต่างพลาสติกใส นี่คือตำแหน่งที่วางโมดูลเซ็นเซอร์วัดแสง BH1750 หน่วยทั้งหมดวางกลางแจ้งในที่ร่ม (ไม่ใช่แสงแดดโดยตรง) โดยให้เซ็นเซอร์แสงชี้ไปที่ที่เปิด แบตเตอรี่นี้ใช้พลังงานจากแบตเตอรี่พลังงานแสงอาทิตย์มาเกือบ 4 สัปดาห์แล้วในฤดูหนาวที่มีฝนตก/มีเมฆมากที่นี่
ขั้นตอนที่ 7: เกตเวย์และเว็บเซิร์ฟเวอร์
บอร์ด Lolin NodeMCU V3 (ESP8266) ถูกใช้สำหรับอุปกรณ์ ESP-Now Gateway และใช้บอร์ด ESP32 (GOOUUU) สำหรับเว็บเซิร์ฟเวอร์ เกือบทุกบอร์ด ESP8266 หรือแม้แต่ ESP32 สามารถใช้เป็นอุปกรณ์เกตเวย์ได้ นี่เป็นเพียงบอร์ดที่ฉัน "เหลือ" หลังจากที่ฉันใช้บอร์ดอื่นๆ ทั้งหมดที่ฉันมี
ฉันใช้บอร์ด ESP32 เนื่องจากฉันต้องการบอร์ดที่มีพลังประมวลผลเพิ่มขึ้นอีกเล็กน้อยเพื่อรวบรวมข้อมูล จัดเรียง บันทึกลงในที่จัดเก็บ และเรียกใช้เว็บเซิร์ฟเวอร์ ในอนาคตอาจมีเซ็นเซอร์ของตัวเองและจอแสดงผล (OLED) ในตัว สำหรับการจัดเก็บ มีการใช้การ์ด SD กับอะแดปเตอร์แบบกำหนดเอง ฉันใช้อะแดปเตอร์การ์ด microSD เป็น SD ทั่วไปและบัดกรีส่วนหัว 7 พินตัวผู้ (ระยะพิทช์ 0.1 ) กับหน้าสัมผัสชุบ ฉันทำตามคำแนะนำจาก GitHub นี้เพื่อทำการเชื่อมต่อ
การตั้งค่าการสร้างต้นแบบ (ด้วยสายดูปองท์) ไม่รวมโมดูลเซ็นเซอร์ แต่ PCB ขั้นสุดท้ายที่ฉันออกแบบนั้นอนุญาตให้ใช้กับจอแสดงผล OLED ขนาดเล็กหนึ่งจอได้ รายละเอียดเกี่ยวกับวิธีที่ฉันออกแบบ PCB นั้นเป็นส่วนหนึ่งของ Instructable ที่แตกต่างกัน
ขั้นตอนที่ 8: ซอฟต์แวร์
อุปกรณ์ ESP8266 (ESP-NOW)
ซอฟต์แวร์สำหรับอุปกรณ์ทั้งหมดเขียนขึ้นโดยใช้ Arduino IDE (v1.87) แต่ละสถานีเซ็นเซอร์ทำงานโดยพื้นฐานแล้วรหัสเหมือนกัน ต่างกันแค่พินที่ใช้สำหรับการสื่อสาร I2C และโมดูลเซ็นเซอร์ที่เชื่อมต่ออยู่ สิ่งสำคัญที่สุดคือพวกเขาส่งแพ็กเก็ตข้อมูลการวัดที่เหมือนกันไปยังสถานี ESP-Now Gateway ไม่ว่าจะมีเซ็นเซอร์ตัวเดียวกันหรือไม่ นี่หมายความว่าสถานีเซ็นเซอร์บางแห่งจะเติมค่าจำลองสำหรับการวัดความดันและระดับแสงหากไม่มีเซ็นเซอร์ให้ค่าจริง รหัสสำหรับแต่ละสถานีและเกตเวย์ได้รับการดัดแปลงจากตัวอย่างของ Anthony Elder ใน GitHub นี้
รหัสอุปกรณ์เกตเวย์ใช้ SoftwareSerial เพื่อสื่อสารกับเว็บเซิร์ฟเวอร์ เนื่องจาก ESP8266 มีฮาร์ดแวร์ UART ที่ทำงานได้อย่างสมบูรณ์เพียงตัวเดียว การทำงานที่อัตราบอดสูงสุดที่ 9600 ดูเหมือนว่าจะเชื่อถือได้และเพียงพอสำหรับการส่งแพ็กเก็ตข้อมูลที่ค่อนข้างเล็กเหล่านี้ อุปกรณ์เกตเวย์ยังได้รับการตั้งโปรแกรมด้วยที่อยู่ MAC ส่วนตัว เหตุผลก็คือถ้าจำเป็นต้องเปลี่ยน สถานีเซ็นเซอร์ไม่จำเป็นต้องตั้งโปรแกรมใหม่ทั้งหมดด้วยที่อยู่ MAC ของผู้รับใหม่
ESP32 (เว็บเซิร์ฟเวอร์)
แต่ละสถานีเซ็นเซอร์ส่งแพ็กเก็ตข้อมูลไปยังอุปกรณ์เกตเวย์ซึ่งส่งต่อไปยังเว็บเซิร์ฟเวอร์ นอกจากแพ็กเก็ตข้อมูลแล้ว ที่อยู่ MAC ของสถานีเซ็นเซอร์ยังถูกส่งเพื่อระบุแต่ละสถานีด้วย เว็บเซิร์ฟเวอร์มีตาราง "ค้นหา" เพื่อกำหนดตำแหน่งของเซ็นเซอร์แต่ละตัวและจัดเรียงข้อมูลตามลำดับ ช่วงเวลาระหว่างการวัดถูกตั้งค่าเป็น 5 นาที บวกกับปัจจัยสุ่มเพื่อหลีกเลี่ยงไม่ให้เซ็นเซอร์ "ชนกัน" ระหว่างกันเมื่อส่งไปยังอุปกรณ์ทางเกท
เราเตอร์ WIFI ในบ้านถูกตั้งค่าให้จัดสรรที่อยู่ IP คงที่ให้กับเว็บเซิร์ฟเวอร์เมื่อเชื่อมต่อกับ WIFI สำหรับฉันมันคือ 192.168.1.111 การพิมพ์ที่อยู่นั้นในเบราว์เซอร์ใด ๆ จะเชื่อมต่อกับเว็บเซิร์ฟเวอร์สถานีตรวจอากาศ ตราบใดที่ผู้ใช้อยู่ภายในช่วง WIFI ของ (และเชื่อมต่อกับ) เครือข่ายในบ้าน เมื่อผู้ใช้เชื่อมต่อกับหน้าเว็บ เว็บเซิร์ฟเวอร์จะตอบสนองด้วยตารางการวัด และรวมเวลาของการวัดครั้งสุดท้ายของเซ็นเซอร์แต่ละตัว วิธีนี้หากสถานีเซ็นเซอร์ไม่ตอบสนอง เราจะเห็นได้จากตารางหากการอ่านมีอายุมากกว่า 5-6 นาที
ข้อมูลจะถูกบันทึกไว้ในไฟล์ข้อความแต่ละไฟล์ในการ์ด SD และสามารถดาวน์โหลดได้จากหน้าเว็บเช่นกัน สามารถนำเข้าสู่ Excel หรือโปรแกรมอื่น ๆ สำหรับการวางแผนข้อมูล
แอพ Android
เพื่อให้ง่ายต่อการดูข้อมูลสภาพอากาศในท้องถิ่นบนสมาร์ทโฟน ฉันได้สร้างแอป Android โดยใช้ Android Studio มีอยู่ในหน้า GitHub ของฉันที่นี่ ใช้คลาส webview เพื่อโหลดหน้าเว็บจากเซิร์ฟเวอร์และฟังก์ชันการทำงานที่จำกัด ไม่สามารถดาวน์โหลดไฟล์ข้อมูลได้และฉันก็ไม่ต้องการไฟล์เหล่านั้นในโทรศัพท์ของฉันอยู่ดี
ขั้นตอนที่ 9: ผลลัพธ์
สุดท้าย นี่คือผลลัพธ์บางส่วนสำหรับจากสถานีตรวจอากาศที่บ้านของฉัน ข้อมูลถูกดาวน์โหลดบนแล็ปท็อปและลงจุดใน Matlab ฉันแนบสคริปต์ Matlab แล้ว และคุณยังสามารถเรียกใช้ใน GNU Octave ได้อีกด้วย เซ็นเซอร์กลางแจ้งทำงานโดยใช้แบตเตอรี่ที่ชาร์จด้วยพลังงานแสงอาทิตย์มาเกือบ 4 สัปดาห์แล้ว และเราแทบไม่มีแสงแดดเลยในช่วงเวลานี้ของปี จนถึงตอนนี้ทุกอย่างทำงานได้ดีและทุกคนในครอบครัวสามารถค้นหาสภาพอากาศด้วยตนเองแทนที่จะถามฉันตอนนี้!
แนะนำ:
IoT Notifier โดยใช้ ESP-12E: 7 ขั้นตอน (พร้อมรูปภาพ)
IoT Notifier ใช้ ESP-12E: ติดอยู่ที่บ้านห่างจากคนที่คุณรัก? ในช่วงเวลาที่ยากลำบากนี้ โครงการเล็กๆ ที่สนุกสนานนี้จะพยายามสร้างรอยยิ้มให้กับคุณอย่างแน่นอน ในคำแนะนำนี้ ฉันจะแสดงวิธีแสดงการแจ้งเตือนจากโทรศัพท์มือถือของคุณในรูปแบบของ
ESP 32 กล้องสตรีมมิ่งวิดีโอผ่าน WiFi - เริ่มต้นใช้งานกับบอร์ด ESP 32 CAM: 8 ขั้นตอน
ESP 32 กล้องสตรีมมิ่งวิดีโอผ่าน WiFi | การเริ่มต้นใช้งานกับบอร์ด ESP 32 CAM: ESP32-CAM เป็นโมดูลกล้องขนาดเล็กมากที่มีชิป ESP32-S ซึ่งมีราคาประมาณ 10 ดอลลาร์ นอกจากกล้อง OV2640 และ GPIO หลายตัวสำหรับเชื่อมต่ออุปกรณ์ต่อพ่วงแล้ว ยังมีช่องเสียบการ์ด microSD ที่สามารถเป็นประโยชน์ในการจัดเก็บภาพที่ถ่ายด้วยเ
เริ่มต้นใช้งาน Esp 8266 Esp-01 ด้วย Arduino IDE - การติดตั้งบอร์ด Esp ใน Arduino Ide และการเขียนโปรแกรม Esp: 4 ขั้นตอน
เริ่มต้นใช้งาน Esp 8266 Esp-01 ด้วย Arduino IDE | การติดตั้งบอร์ด Esp ใน Arduino Ide และการเขียนโปรแกรม Esp: ในคำแนะนำนี้ เราจะได้เรียนรู้วิธีติดตั้งบอร์ด esp8266 ใน Arduino IDE และวิธีตั้งโปรแกรม esp-01 และอัปโหลดโค้ดในนั้น เนื่องจากบอร์ด esp ได้รับความนิยมอย่างมาก และคนส่วนใหญ่ประสบปัญหา
การสื่อสาร ESP เป็น ESP: 4 ขั้นตอน
การสื่อสาร ESP เป็น ESP: บทช่วยสอนนี้จะช่วยให้คุณเปลี่ยนโมดูลตัวรับส่งสัญญาณอื่น ๆ สำหรับโครงการอื่น ๆ ที่มีการสื่อสารไร้สาย เราจะใช้บอร์ดที่ใช้ ESP8266 อันหนึ่งในโหมด WiFi-STA และอีกอันในโหมด WiFi -AP NodeMCU V3 คือตัวเลือกของฉันสำหรับโปรเจ็กต์นี้
คณะกรรมการการเขียนโปรแกรมและการพัฒนา ESP-12E และ ESP-12F: 3 ขั้นตอน (พร้อมรูปภาพ)
คณะกรรมการการเขียนโปรแกรมและการพัฒนา ESP-12E และ ESP-12F: การชำระเงินสำหรับบอร์ดนี้ทำได้ง่าย: สามารถตั้งโปรแกรมโมดูล ESP-12E และ ESP-12F ได้อย่างง่ายดายเหมือนกับบอร์ด NodeMCU (เช่น ไม่จำเป็นต้องกดปุ่ม) มีหมุดที่เป็นมิตรกับเขียงหั่นขนมพร้อมการเข้าถึง IO ที่ใช้งานได้ ใช้ USB แยกต่างหากเพื่อคอนเวอร์