สารบัญ:

ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU: 11 ขั้นตอน
ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU: 11 ขั้นตอน

วีดีโอ: ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU: 11 ขั้นตอน

วีดีโอ: ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU: 11 ขั้นตอน
วีดีโอ: Arduino ESP8266 BLYNK IOT - ทดลอง Sensor DHT22/DHT11 วัดอุณหภูมิ และ ความชื้นในอากาศ 2024, กรกฎาคม
Anonim
ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU
ระบบตรวจสอบสภาพอากาศ IoT แบบกระจายอัจฉริยะโดยใช้ NodeMCU

ทุกท่านคงรู้จักสถานีตรวจอากาศแบบดั้งเดิม แต่คุณเคยสงสัยหรือไม่ว่ามันทำงานอย่างไร? เนื่องจากสถานีตรวจอากาศแบบดั้งเดิมมีราคาแพงและเทอะทะ ความหนาแน่นของสถานีเหล่านี้ต่อหน่วยพื้นที่จึงน้อยมาก ซึ่งทำให้ข้อมูลไม่ถูกต้อง ฉันจะอธิบายให้คุณฟังว่า: สมมติว่าสถานีตั้งอยู่ใจกลางเมืองและเป็นสถานีเดียวที่อยู่ในรัศมี 'x' เมตร อาจมีอคติได้ง่ายหากมีสารก่อมลพิษอยู่ในบริเวณใกล้เคียง ของสถานีที่แสดงพื้นที่รัศมี 'x' เมตรทั้งหมดว่ามีมลพิษ เนื่องจากสถานีเดียวมีหน้าที่กำหนดข้อมูลสภาพอากาศของพื้นที่ทั้งหมด

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

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

มันทำงานอย่างไร…

โครงการนี้มี 3 ส่วนหลัก

ด้านอุปกรณ์:

อุปกรณ์เป็นโมดูล IoT ที่แสดงในภาพที่ส่งข้อมูลสภาพอากาศไปยังเซิร์ฟเวอร์ทุกช่วงเวลา 'x' ข้อมูลรวมถึงข้อมูลสภาพอากาศจริง ตำแหน่งทางภูมิศาสตร์ของโมดูล เช่น พิกัด ที่อยู่ MAC เพื่อระบุอุปกรณ์โดยเฉพาะ เวอร์ชันเฟิร์มแวร์ที่กำลังทำงานอยู่ ฝั่งอุปกรณ์ประกอบด้วยโมดูล N ที่กระจายไปทั่วพื้นที่ซึ่งให้ข้อมูลอย่างแข็งขันไปยังเซิร์ฟเวอร์

ฝั่งเซิร์ฟเวอร์:

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

ฝั่งไคลเอ็นต์/ผู้ใช้:

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

เสบียง

  • NodeMCU (ESP8266-12E)
  • DHT11 (เซ็นเซอร์ความชื้นและอุณหภูมิ)
  • BMP180 (เซ็นเซอร์ความดันและอุณหภูมิ)
  • MQ-135 (เซ็นเซอร์ดัชนีคุณภาพอากาศ)
  • สาย USB (สำหรับอัพโหลดโปรแกรม)
  • แหล่งจ่ายไฟ 5 โวลต์
  • ตัวเก็บประจุ (ตัวเลือก: วางขนานกับสายไฟ)
  • Arduino IDE (เพื่อดีบักและอัปโหลดโปรแกรม)
  • แอปพลิเคชัน POSTMAN (ตัวเลือก: เพื่อดีบัก API)
  • เว็บไซต์ (เพื่อโฮสต์เซิร์ฟเวอร์ PHP และ MySQL)

ขั้นตอนที่ 1: ประสานส่วนประกอบทั้งหมดและอัปโหลดโปรแกรมไปยัง NodeMCU

ประสานส่วนประกอบทั้งหมดและอัปโหลดโปรแกรมไปยัง NodeMCU
ประสานส่วนประกอบทั้งหมดและอัปโหลดโปรแกรมไปยัง NodeMCU
ประสานส่วนประกอบทั้งหมดและอัปโหลดโปรแกรมไปยัง NodeMCU
ประสานส่วนประกอบทั้งหมดและอัปโหลดโปรแกรมไปยัง NodeMCU

ประสานส่วนประกอบทั้งหมดเข้ากับ NodeMCU ตามที่แสดงในแผนภาพวงจรบนบอร์ดประสิทธิภาพ นอกจากนี้ ประสานตัวเก็บประจุขนานกับสายไฟเนื่องจากไฟกระชากระหว่างการส่งและรับข้อมูลอย่างแข็งขัน

เมื่องานบัดกรีเสร็จสิ้น ให้อัปโหลดโค้ดที่ให้ไว้ในไฟล์ "code.c"

หมายเหตุ: อย่าลืมแทนที่ข้อมูลประจำตัวด้วยข้อมูลประจำตัวของคุณเอง วางไฟล์ชื่อ "html_file.h" ไว้ในโฟลเดอร์สเก็ตช์ Arduino ไฟล์ส่วนหัวทั้งหมดที่ใช้ในโครงการนี้สามารถพบได้ที่นี่

คุณสมบัติของรหัส:

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

เมื่อกำหนดค่าข้อมูลประจำตัวแล้ว NodeMCU จะตรวจสอบ EEPROM สำหรับข้อมูลประจำตัวและเชื่อมต่อกับข้อมูลรับรอง WiFi ที่มีอยู่ใน EEPROM

หลังจากเชื่อมต่อ WiFi สำเร็จแล้ว NodeMCU จะเริ่มอัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ทุกช่วงเวลา 'x' ข้อมูลรวมถึงข้อมูลสภาพอากาศ ที่อยู่ MAC ของโมดูล เวอร์ชันของเฟิร์มแวร์ ตำแหน่งทางภูมิศาสตร์ของอุปกรณ์

การอัปเดต OTA: โมดูลจะตรวจสอบการอัปเดตเฟิร์มแวร์ใหม่ทุกวันตามเวลาที่กำหนดในรหัส คุณลักษณะนี้มีประโยชน์เนื่องจากผู้ผลิตรายใดไม่สามารถดำเนินการและเปลี่ยนโปรแกรมของแต่ละโมดูลได้ในกรณีที่มีการเปลี่ยนแปลงใดๆ

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

ขั้นตอนที่ 2: การกำหนดค่า SQL Server

การกำหนดค่าเซิร์ฟเวอร์ SQL
การกำหนดค่าเซิร์ฟเวอร์ SQL

การตั้งค่าเซิร์ฟเวอร์ SQL นั้นง่ายมากเช่นกัน เพียงสร้างฐานข้อมูลในเซิร์ฟเวอร์ SQL และนำเข้าการตั้งค่าโดยนำเข้าไฟล์ชื่อ "database_structure.txt" คุณสามารถค้นหาไฟล์ได้ในขั้นตอนนี้ เนื่องจากผู้สอนไม่อนุญาตให้อัปโหลดไฟล์ ".sql" ฉันจึงเปลี่ยนชื่อไฟล์เป็น ".txt"

หมายเหตุ: เปลี่ยนชื่อไฟล์จาก ".txt" เป็น ".sql"

ขั้นตอนที่ 3: การกำหนดค่าเซิร์ฟเวอร์ไฟล์

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

เนื่องจาก Instructable ไม่อนุญาตให้อัปโหลดไฟล์ PHP ฉันจึงเปลี่ยนชื่อไฟล์เป็น ".txt"

หมายเหตุ: โปรดเปลี่ยนชื่อนามสกุลของไฟล์เป็น ".php" และอย่าลืมเปลี่ยนข้อมูลประจำตัวของไฟล์ "config.php"

เพียงอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ คุณก็พร้อมแล้ว

ฉันจะให้ข้อมูลสั้น ๆ เกี่ยวกับไฟล์ PHP แก่คุณ

db_config.php:

ในไฟล์นี้ ข้อมูลประจำตัวทั้งหมดที่จำเป็นในการเชื่อมต่อกับเซิร์ฟเวอร์ SQL จะถูกเก็บไว้

db_connect:

ในไฟล์นี้มีคลาสที่จำเป็นสำหรับการเชื่อมต่อฐานข้อมูล

แทรก.php:

NodeMCU เรียกไฟล์ PHP นี้เพื่ออัปโหลดข้อมูลไปยังเซิร์ฟเวอร์โดยใช้วิธี GET ไฟล์นี้มีหน้าที่จัดเก็บข้อมูลเดียวกันไปยังเซิร์ฟเวอร์ SQL

ดึง.php:

ผู้ใช้/ไคลเอ็นต์เรียก PHP นี้โดยใช้วิธี GET เซิร์ฟเวอร์คำนวณระยะห่างระหว่างผู้ใช้และโมดูลทั้งหมด จากนั้นข้อมูลของโมดูลที่ใกล้ที่สุดจะถูกส่งไปยังไคลเอนต์ในรูปแบบ JSON/XML ตามที่ลูกค้าต้องการ

update.php:

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

หากไฟล์จำนวนมากเหล่านี้ดูน่ากลัวในตอนแรก ฉันได้รวมเอกสารสำหรับผู้ใช้ไว้ในขั้นตอนต่อไป

ขั้นตอนที่ 4: เอกสารผู้ใช้

เอกสารผู้ใช้
เอกสารผู้ใช้
เอกสารผู้ใช้
เอกสารผู้ใช้

บทนำ:

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

ก่อนที่คุณจะเริ่ม:

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

คำขอข้อมูลสภาพอากาศ:

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

คำขอ Weather API ใช้แบบฟอร์มต่อไปนี้:

example.com/retrieve.php?lat=25.96446&lon=53.9443&format=json

โดยที่รูปแบบเอาต์พุต (รูปแบบ) อาจเป็นค่าใดค่าหนึ่งต่อไปนี้:

  • JSON (แนะนำ) ระบุเอาต์พุตใน JavaScript Object Notation (JSON); หรือ
  • XML ระบุเอาต์พุตใน XML ซึ่งรวมอยู่ในโหนด

ขอพารามิเตอร์:

ตามมาตรฐานใน URL ทั้งหมด พารามิเตอร์จะถูกแยกโดยใช้อักขระเครื่องหมายและ (&) รายการพารามิเตอร์และค่าที่เป็นไปได้แสดงไว้ด้านล่าง

พารามิเตอร์ที่จำเป็น:

  • lat: แสดงละติจูดของตำแหน่งที่จะค้นหา (เช่น lat=19.56875)
  • lon: แทนลองจิจูดของตำแหน่งที่ต้องการค้นหา (เช่น lon=72.97568)

พารามิเตอร์เสริม:

รูปแบบ: ระบุรูปแบบผลลัพธ์การตอบสนองของข้อมูลสภาพอากาศ อาจเป็น JSON หรือ XML ค่าเริ่มต้นคือ JSON (เช่น format=json หรือ format=xml)

การตอบสนองต่อสภาพอากาศ:

สำหรับคำขอที่ถูกต้องแต่ละรายการ บริการโซนเวลาจะส่งคืนการตอบกลับในรูปแบบที่ระบุใน URL คำขอ การตอบสนองแต่ละครั้งจะมีองค์ประกอบต่อไปนี้:

  • สำเร็จ: ค่าที่ระบุสถานะของการตอบสนอง

    • 0: เชิงลบ; แสดงว่าคำขอมีรูปแบบไม่ถูกต้อง
    • 1: ยืนยัน; แสดงว่าคำขอนั้นสำเร็จ
  • ข้อความ: สตริงที่ระบุสาเหตุของความผิดปกติของคำขอ ใช้ได้เฉพาะเมื่อสถานะเป็นลบ
  • data: อาร์เรย์ที่มีพารามิเตอร์สภาพอากาศหลายตัว

    • อุณหภูมิ: ข้อมูลอุณหภูมิ
    • hum: ข้อมูลการมีอยู่ของความชื้น
    • กด: ข้อมูลความดันสัมบูรณ์
    • aqi: ดัชนีคุณภาพอากาศในปัจจุบัน

ตัวอย่างการตอบสนองของทั้งสองรูปแบบสามารถดูได้ในรูปภาพ

ขั้นตอนที่ 5: การตั้งค่าโมดูล

การตั้งค่าโมดูล
การตั้งค่าโมดูล
การตั้งค่าโมดูล
การตั้งค่าโมดูล

มีการสร้างจุดเชื่อมต่อและโฮสต์เว็บเพจบนที่อยู่ IP (ค่าเริ่มต้น: 192.168.4.1) เพื่อรับข้อมูลรับรองจากตัวจัดการอุปกรณ์/ผู้ใช้ในการบู๊ตครั้งแรก หรือหากโมดูลไม่พบข้อมูลรับรองที่จัดเก็บไว้แล้วใน อีพรอม

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

เมื่อป้อนรายละเอียดทั้งหมดแล้ว ให้คลิกที่ปุ่ม "ส่ง" จากนั้นข้อมูลประจำตัวทั้งหมดจะถูกเขียนลงใน EEPROM ของโมดูล

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

ขั้นตอนที่ 6: ถึงเวลาที่จะให้ข้อมูลกับคลาวด์แล้ว

ถึงเวลาที่จะให้ข้อมูลกับคลาวด์แล้ว
ถึงเวลาที่จะให้ข้อมูลกับคลาวด์แล้ว
ถึงเวลาที่จะให้ข้อมูลกับคลาวด์แล้ว
ถึงเวลาที่จะให้ข้อมูลกับคลาวด์แล้ว

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

มันเรียก "insert.php" เป็นการเรียก API โดยส่งพารามิเตอร์ทั้งหมดเพื่อส่งในเมธอด GET

ข้อมูลโค้ดด้านล่างแสดงวิธีการประมวลผลพารามิเตอร์

ถ้า (isset($_GET['temp']) && isset($_GET['hum']) && isset($_GET['pres']) && isset($_GET['aqi']) && isset($_GET ['mac']) && isset($_GET['lat']) && isset($_GET['lon '])) 2. { 3. // โปรแกรมหลัก 4. }

เช่นนี้ทุกโมดูลเริ่มอัปโหลดข้อมูล

หมายเหตุ: ลดความถี่ในการอัปโหลดในโค้ดหากคุณรู้สึกว่าเซิร์ฟเวอร์ทำงานหนักเกินไป

ขั้นตอนที่ 7: การอัปเดตผ่านทางอากาศ (OTA)

Over the Air (OTA) อัพเดต
Over the Air (OTA) อัพเดต

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

ในการตรวจสอบการอัปเดตใหม่ โมดูลจะเรียก "update.php" โดยส่งที่อยู่ MAC ในส่วนหัวของคำขอ จากนั้นเซิร์ฟเวอร์จะตรวจสอบว่าที่อยู่ MAC นั้นมีการอัพเดทใหม่หรือไม่ ถ้าใช่ จะส่งไฟล์ไบนารีของเฟิร์มแวร์ล่าสุดตอบกลับ

นอกจากนี้ยังตรวจสอบส่วนหัวที่จำเป็นทั้งหมดที่จำเป็นสำหรับการรับรองความถูกต้องพื้นฐานของโมดูล

ขั้นตอนที่ 8: วิธีที่ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูล…

ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…
ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…
ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…
ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…
ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…
ผู้ใช้/ลูกค้าสามารถเข้าถึงข้อมูลได้อย่างไร…

การเข้าถึงข้อมูลจากเซิร์ฟเวอร์ค่อนข้างตรงไปตรงมา เพียงแค่เรียก "retrieve.php" เราก็จะได้รับข้อมูลสภาพอากาศในรูปแบบ JSON หลังจากนั้น เป็นเพียงเรื่องของการแยกวิเคราะห์ข้อมูล JSON เพื่อเข้าถึงแต่ละองค์ประกอบ คล้ายกับการตอบสนอง XML ผู้ใช้สามารถระบุรูปแบบการตอบสนองที่ต้องการได้เสมอซึ่งผู้ใช้สะดวกที่จะทำงานด้วย หากผู้ใช้ไม่ระบุรูปแบบ รูปแบบเริ่มต้นคือ JSON

คำขอตัวอย่างถูกสร้างขึ้นโดยใช้เครื่องมือ POSTMAN เพื่อตรวจสอบการทำงานของ API

ตัวอย่างของการแยกวิเคราะห์การตอบสนอง JSON ในจาวาสคริปต์แสดงอยู่ในข้อมูลโค้ดด้านล่าง

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373";function httpGet(theUrl) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", theUrl, เท็จ); // false สำหรับการร้องขอแบบซิงโครนัส xmlHttp.send(null); ส่งคืน xmlHttp.responseText; } var myVar = httpGet(url); var obj = JSON.parse (myVar); document.getElementById("aqi").innerHTML = obj.data[0].aqi; document.getElementById("temperature").innerHTML = Math.round(obj.data[0].temp) + "°C"; document.getElementById("temp").innerHTML = Math.round(obj.data[0].temp) + "°C"; document.getElementById("humidity").innerHTML = Math.round(obj.data[0].hum) + "%"; document.getElementById("pressure").innerHTML = Math.round(obj.data[0].pres) + " mb";

ซอร์สโค้ดของหน้า HTML ตัวอย่างที่แยกวิเคราะห์การตอบสนอง JSON มีอยู่ที่ส่วนท้ายของขั้นตอนนี้

หมายเหตุ: เปลี่ยนนามสกุลของไฟล์เป็น ".html"

ขั้นตอนที่ 9: ข้อจำกัดของโครงการนี้

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

ขั้นตอนที่ 10: การปรับปรุงเพิ่มเติมที่สามารถทำได้ในโครงการนี้

  • ความแม่นยำของโมดูลสามารถปรับปรุงเพิ่มเติมได้โดยการปรับแต่งเซ็นเซอร์เป็นพิเศษเพื่อวัตถุประสงค์เฉพาะ แทนที่จะใช้โมดูลทั่วไปที่มีอยู่ในตลาด
  • โมดูลสามารถปรับเปลี่ยนให้ทำงานได้อย่างอิสระมากขึ้นโดยใช้ชิปพิเศษที่สื่อสารแบบไร้สายกับเสาส่งสัญญาณเซลล์เพื่อส่งข้อมูลซึ่งจะช่วยปรับปรุงความทนทานต่อข้อผิดพลาด
  • แผงโซลาร์เซลล์และระบบแบตเตอรี่สามารถใช้ร่วมกับโหมด Deep Sleep ของ ESP ได้ ซึ่งจะช่วยปรับปรุงประสิทธิภาพการใช้พลังงานและทำให้เป็นอิสระจากแหล่งจ่ายไฟภายนอกมากขึ้น
  • สามารถใช้ POST เพื่อส่งข้อมูลด้วยกลไกการตรวจสอบสิทธิ์บางอย่าง เช่น การใช้รหัสแบบวนซ้ำสำหรับการส่งข้อมูลทุกครั้ง
  • แทนที่จะใช้ NodeMCU ซึ่งเป็นบอร์ดต้นแบบ เราสามารถใช้ไมโครคอนโทรลเลอร์แบบกำหนดเองในการผลิตจำนวนมาก ซึ่งไม่เพียงแต่ช่วยลดต้นทุน แต่ยังทำให้การใช้ทรัพยากรระบบให้เกิดประโยชน์สูงสุดอีกด้วย
  • ร่วมกับ Google geolocation API และการเชื่อมต่อกับ WIFI แบบเปิดที่มีอยู่ โมดูลสามารถทำงานได้โดยไม่ต้องกำหนดค่า พร้อมส่งข้อมูลออกจากโรงงานโดยไม่ต้องตั้งค่าใดๆ

ขั้นตอนที่ 11: คำสองสามคำสำหรับผู้ชม

คำสองสามคำสำหรับผู้ชม
คำสองสามคำสำหรับผู้ชม

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

ถ้าคุณต้องการความช่วยเหลือในการทำโปรเจกต์นี้หรืออะไรทำนองนี้ โปรดติดต่อฉันได้ที่ [email protected] หรือคุณสามารถแสดงความคิดเห็นได้เช่นเคย ฉันจะพยายามช่วยเหลือพวกคุณสุดความสามารถ

ขอขอบคุณ!!

แนะนำ: