สารบัญ:
- ขั้นตอนที่ 1: การทดลอง
- ขั้นตอนที่ 2: ฮาร์ดแวร์
- ขั้นตอนที่ 3: Google Cloud - การลงทะเบียน
- ขั้นตอนที่ 4: Google Cloud - Pub/Sub
- ขั้นตอนที่ 5: Google Cloud - IOT Core
- ขั้นตอนที่ 6: Google Cloud - ฟังก์ชั่นคลาวด์
- ขั้นตอนที่ 7: Google Cloud - Cloud DataStore
- ขั้นตอนที่ 8: Google Cloud - BigQuery
- ขั้นตอนที่ 9: Google Cloud - Data Studio
- ขั้นตอนที่ 10: ระยะการทำนาย
- ขั้นตอนที่ 11: รหัส
วีดีโอ: เครื่องตรวจจับการอุดตันของท่อระบายน้ำ: 11 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
อย่าปล่อยให้ท่อระบายน้ำอุดตันช้าลง! กลับมาจากวันหยุดพักร้อน ฉันและภรรยาประหลาดใจกับน้ำที่ท่วมพื้นอพาร์ตเมนต์ของเรา และเราพบว่าไม่ใช่น้ำสะอาดด้วยซ้ำ หลังจากล้างท่อระบายน้ำและทำความสะอาดพื้น ฉันมีคำถามนี้: ทำไมเราถึงไม่มีระบบเตือนว่าท่อระบายน้ำอาจอุดตัน? ท่อระบายน้ำที่อุดตันไม่เพียงแต่จะทำให้บ้านของคุณต้องหยุดชะงักเท่านั้น แต่ยังต้องใช้ค่าใช้จ่ายเพิ่มเติมจากกระเป๋าของคุณ โดยเฉลี่ย 206 ดอลลาร์สหรัฐฯ คือค่าใช้จ่ายในการเคลียร์ท่อระบายน้ำที่อุดตันตาม HomeAdvisor นอกเหนือจากค่าใช้จ่ายแอบแฝงของพรมที่เสียหาย เฟอร์นิเจอร์ไม้ ฯลฯ แนวคิดของเราคือให้เจ้าของบ้านและองค์กรต่างๆ เช่น แผนกบำรุงรักษาเมือง/สารประกอบ และผู้ให้บริการเฉพาะทาง มีระบบที่มีประสิทธิภาพและชาญฉลาด ซึ่งจะแจ้งเตือนใครก็ตามที่รับผิดชอบโดยเร็วที่สุดเพื่อดำเนินการ ซึ่งมีส่วนช่วยในการเสริมสร้างเมืองอัจฉริยะด้วยปัจจัยสำคัญ ลักษณะเฉพาะ.
ความคิดแม้ว่าการตรวจจับสิ่งอุดตันสามารถทำได้โดยใช้เทคนิคหลายอย่าง เช่น การใช้เซ็นเซอร์ก๊าซหรือกลไกภายใน แต่ทีมของเราก็เน้นไปที่การใช้เสียงเป็นข้อมูลป้อนเข้า เนื่องจากเรารู้ว่าการเคาะท่อที่เปิดออกนั้นแตกต่างจากเสียงที่เกิดขึ้น เมื่อถูกปิด ตามแนวคิดง่ายๆ นี้ หากเราสามารถฝึกแบบจำลองเสียงที่เกิดขึ้นบนพื้นผิวของท่อในระหว่างการอุดตัน รวมทั้งรูปแบบเหล่านั้นเกิดขึ้นในท่อที่เปิดอยู่ เราก็สามารถใช้แบบจำลองเพื่อตรวจจับในเชิงรุกเมื่อเกิดการอุดตัน จากนั้นเราก็ แหวนเงินบางส่วน
เครดิตสำหรับ
- โมฮาเหม็ด ฮัสซัน
- อาเหม็ด เอมาม
โปรเจ็กต์โดยละเอียดมีการดำเนินการ 3 เฟสในโปรเจ็กต์นี้: การรวบรวมข้อมูล การเรียนรู้ & การทำนาย
ก่อนนำระบบนี้ไปใช้ในชีวิตจริง เราจำเป็นต้องสร้างสภาพแวดล้อมการจำลองแบบบังคับ ซึ่งเรามีท่อ น้ำไหล และด้วยวิธีใดวิธีหนึ่งเพื่อจำลองการอุดตัน ดังนั้นเราจึงได้ท่อ ท่อน้ำที่มีแหล่งน้ำทำสิ่งนี้ในอ่างอาบน้ำ และใช้พื้นผิวของอ่างเพื่อปิดท่อที่แสดงถึงการอุดตัน ในวิดีโอนี้ เราจะอธิบายวิธีที่เราสร้างสภาพแวดล้อมและวิธีที่เรารวบรวมข้อมูลสำหรับการฝึกแบบจำลอง
และในวิดีโอหน้านี้จะแสดงให้เห็นว่าเราทำการทดสอบระบบและรุ่นอย่างไร ในโหมดเปิด จากนั้นในโหมดอุดตัน และกลับสู่โหมดเปิดอย่างไร
ดังนั้น มาสำรวจการใช้งานของเราทีละขั้นตอน:
ขั้นตอนที่ 1: การทดลอง
ในสถานการณ์นี้ เราใช้ท่อน้ำขนาดเล็กที่เชื่อมต่อกับฮาร์ดแวร์และเซ็นเซอร์เสียงของเรา ฮาร์ดแวร์อ่านค่าเซ็นเซอร์และส่งกลับไปยังคลาวด์ เสร็จสิ้นเป็นเวลา 10 นาทีสำหรับหลอดที่ถูกบล็อก และอีก 10 นาทีสำหรับหลอดที่ไม่ถูกบล็อก
ขั้นตอนที่ 2: ฮาร์ดแวร์
I- Arduino
ในการตรวจจับเสียงของน้ำภายในท่อ เราจำเป็นต้องมีเซ็นเซอร์เสียง อย่างไรก็ตาม Raspberry Pi 3 ไม่มี Analog GPIO เพื่อจัดการกับปัญหานี้ เราใช้ Arduino เนื่องจาก Arduino มี GPIO แบบอะนาล็อก ดังนั้นเราจึงเชื่อมต่อเซ็นเซอร์ Grove Sound กับ Grove Arduino shield และเชื่อมต่อ Shield กับ Arduino UNO 3 จากนั้นเราเชื่อมต่อ Arduino & Raspberry โดยใช้สาย USB หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับเซ็นเซอร์ Grove Sound คุณสามารถตรวจสอบเอกสารข้อมูลได้ คุณสามารถดูโค้ดตัวอย่างวิธีการอ่านค่าเซ็นเซอร์ได้ในแผ่นข้อมูล รหัสตัวอย่างที่เกือบจะใช้งานจะมีการเปลี่ยนแปลงเล็กน้อย ในรหัสด้านล่างเราเชื่อมต่อเซ็นเซอร์กับ A0 ในตัวป้องกัน ในการเขียนแบบอนุกรม เราใช้ฟังก์ชัน Serial.begin() ในการสื่อสารกับ Raspberry baud rate ที่ตั้งค่าเป็น 115200ข้อมูลจะถูกส่งไปยัง Raspberry หากสูงกว่าเกณฑ์ที่กำหนดในการตัดเสียงรบกวน มีการทดลองหลายครั้งเพื่อเลือกเกณฑ์ & ค่าการหน่วงเวลาที่ต้องการ เกณฑ์พบว่าเป็น 400 และค่าหน่วงเวลาเป็น 10 มิลลิวินาที เกณฑ์ได้รับเลือกเพื่อกรองสัญญาณรบกวนปกติ และทำให้แน่ใจว่าเฉพาะข้อมูลที่มีความหมายเท่านั้นที่จะถูกส่งไปยังระบบคลาวด์ มีการเลือกใช้การหน่วงเวลาเพื่อให้แน่ใจว่าเซ็นเซอร์ตรวจจับการเปลี่ยนแปลงใดๆ ของเสียงการไหลภายในหลอดทันที
II- Raspberry Pi 3 ในการดาวน์โหลดสิ่งของ Android บน Raspberry คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดได้จาก Android Things Console ในโครงการนี้ เราใช้เวอร์ชัน: OIR1.170720.017 ทำตามขั้นตอนในไซต์ Raspberry เพื่อติดตั้งระบบปฏิบัติการบนราสเบอร์รี่ สำหรับ windows คุณสามารถใช้ขั้นตอนเหล่านี้ หลังการติดตั้ง คุณสามารถเชื่อมต่อ Raspberry กับคอมพิวเตอร์ของคุณโดยใช้ USB จากนั้นในคอนโซลคอมพิวเตอร์ของคุณให้ใช้คำสั่งด้านล่างเพื่อรับ Raspberry IP
nmap -sn 192.168.1.*
หลังจากได้รับ IP แล้ว ให้เชื่อมต่อกับ Raspberry ของคุณโดยใช้คำสั่งด้านล่าง
เชื่อมต่อ adb
ในการเชื่อมต่อ Raspberry ของคุณกับ Wifi (เพิ่ม SSID และรหัสผ่านของคุณ)
adb am startservice
-n com.google.wifisetup/. WifiSetupService
-a WifiSetupService. Connect
-e ssid *****
-e ข้อความรหัสผ่าน ****
ขั้นตอนที่ 3: Google Cloud - การลงทะเบียน
Google เสนอระดับฟรีสำหรับผู้ใช้ทั้งหมดเป็นเวลาหนึ่งปีโดยมีเพดาน 300$ ขอบคุณ Google:) ทำตามหน้าจอเพื่อสร้างโครงการใหม่ใน Google Cloud
ขั้นตอนที่ 4: Google Cloud - Pub/Sub
Google Cloud Pub/Sub เป็นบริการส่งข้อความแบบเรียลไทม์ที่มีการจัดการเต็มรูปแบบ ซึ่งช่วยให้คุณส่งและรับข้อความระหว่างแอปพลิเคชันอิสระได้
ขั้นตอนที่ 5: Google Cloud - IOT Core
II- IOT CoreA บริการที่มีการจัดการเต็มรูปแบบเพื่อการเชื่อมต่อ จัดการ และนำเข้าข้อมูลจากอุปกรณ์ที่กระจายไปทั่วโลกได้อย่างง่ายดายและปลอดภัย IOT Core ยังคงเป็นรุ่นเบต้า หากต้องการเข้าถึง คุณต้องส่งคำขอด้วย Justification to Google เราได้ทำการร้องขอ เหตุผลของเราคือการแข่งขันครั้งนี้ Google อนุมัติแล้ว ขอบคุณ Google อีกครั้ง:) Raspberry จะส่งข้อมูลเซ็นเซอร์ไปยัง IOT Core ซึ่งจะส่งต่อการอ่านไปยังหัวข้อ PubSub ที่สร้างในขั้นตอนก่อนหน้า
ขั้นตอนที่ 6: Google Cloud - ฟังก์ชั่นคลาวด์
Cloud Functions เป็นสภาพแวดล้อมแบบไร้เซิร์ฟเวอร์สำหรับสร้างและเชื่อมต่อบริการคลาวด์ ทริกเกอร์สำหรับฟังก์ชันนี้คือหัวข้อ PubSup ที่สร้างขึ้นในขั้นตอนที่ 1;; ฟังก์ชันนี้จะถูกทริกเกอร์เมื่อเขียนค่าใหม่ใน PubSup และเขียนลงใน Cloud DataStore ด้วยชนิด "SoundValue"
ขั้นตอนที่ 7: Google Cloud - Cloud DataStore
Google Cloud Datastore เป็นฐานข้อมูลเอกสาร NoSQL ที่สร้างขึ้นสำหรับการปรับขนาดอัตโนมัติ ประสิทธิภาพสูง และความง่ายในการพัฒนาแอปพลิเคชัน แม้ว่าอินเทอร์เฟซ Cloud Datastore จะมีคุณลักษณะหลายอย่างที่เหมือนกันกับฐานข้อมูลแบบเดิม เนื่องจากฐานข้อมูล NoSQL จะแตกต่างจากคุณลักษณะดังกล่าวในลักษณะที่อธิบายความสัมพันธ์ระหว่างออบเจ็กต์ข้อมูล ไม่จำเป็นต้องตั้งค่าใดๆ เนื่องจากเมื่อ Cloud Functions เขียนค่าเซ็นเซอร์ไปยัง DataStore แล้ว ข้อมูลจะถูกเพิ่มไปยัง DataStore
ขั้นตอนที่ 8: Google Cloud - BigQuery
เรารวบรวมตัวอย่าง 10 นาทีจากท่อปกติและ 10 นาทีจากท่อที่ถูกบล็อกโดยมีความแตกต่าง 1 ชั่วโมงระหว่างการวนซ้ำ 2 ครั้ง หลังจากดาวน์โหลด DataStore และทำการปรับเปลี่ยนเพื่อเพิ่มการจัดประเภทสำหรับแต่ละแถว ตอนนี้เรามีไฟล์ csv 2 ไฟล์สำหรับแต่ละหมวดหมู่ ตามแนวทางปฏิบัติที่ดีที่สุดให้อัปโหลดไฟล์ CSV ข้อมูลไปยัง Cloud Storage ก่อน ในหน้าจอด้านล่าง เราสร้างที่เก็บข้อมูลใหม่ & อัปโหลดไฟล์ CSV 2 ไฟล์ เนื่องจากที่เก็บข้อมูลนี้จะใช้สำหรับการวิเคราะห์เท่านั้น ไม่จำเป็นต้องเลือกที่เก็บข้อมูลหลายภูมิภาค จากนั้นสร้างชุดข้อมูลใหม่และตารางใหม่ใน BigQuery แล้วอัปโหลดไฟล์ CSV 2 ไฟล์จากที่เก็บข้อมูลไปที่ โต๊ะใหม่
ขั้นตอนที่ 9: Google Cloud - Data Studio
จากนั้น เราใช้ Data Studio เพื่อวาดข้อมูลเชิงลึก Data Studio จะอ่านข้อมูลจากตาราง BigQuery จากกราฟ เราจะเห็นความแตกต่างระหว่าง 2 หมวดหมู่ในจำนวน telemetries และผลรวมของค่าต่อนาที จากข้อมูลเชิงลึกเหล่านี้ เราสามารถออกแบบโมเดลอย่างง่ายได้ ท่อจะถูกพิจารณาว่าถูกบล็อกหากใน 3 นาทีติดต่อกัน จำนวนค่า telemetries ที่สูงกว่าเกณฑ์สัญญาณรบกวน (400) มากกว่า 350 telemetries และใน 3 นาทีติดต่อกัน จำนวนค่าเทเลมาตรที่สูงกว่าเกณฑ์จุดประกายไฟ (720) จะมากกว่า 10 เทเลมาตร
ขั้นตอนที่ 10: ระยะการทำนาย
เราหมายถึงค่าที่อ่านได้เมื่อเกินค่าที่กำหนด (THRESHOLD_VALUE) ซึ่งตั้งค่าเป็น 350 ที่กรองสัญญาณรบกวนและลดอัตราการไหลของน้ำในท่อจากการพิจารณาเป็นค่าที่อ่านได้
การวิเคราะห์ข้อมูลแสดงให้เห็นว่าในโหมดเปิด จำนวนการอ่านจะน้อยกว่า 100 แต่ในโหมดอุดตัน ค่าจะสูงกว่ามาก (ถึง 900 ต่อนาที) แต่ในบางกรณีที่ไม่ค่อยพบก็น้อยกว่า 100 อย่างไรก็ตาม กรณีเหล่านี้จะไม่เกิดซ้ำ และเป็นเวลาสามนาทีที่ตามมา จำนวนการอ่านทั้งหมดจะเกิน 350 เสมอ การมีโหมดเปิดในสามนาทีเดียวกันจะรวมกันได้น้อยกว่า 300 เราสามารถวางกฎนี้อย่างมั่นใจ: กฎ # 1 สำหรับการอ่านข้อมูลดิบเป็นเวลาสามนาที หากการอ่านทั้งหมด > 350 จากนั้นตรวจพบการอุดตัน เราพบว่าค่าสูงสุดที่เข้าถึงได้ในโหมดเปิดไม่เกินค่าที่แน่นอน (SPARK_VALUE) ซึ่งพบว่าเป็น 770 ดังนั้นเราจึงเพิ่มกฎนี้: กฎ # 2 หากค่าการอ่าน > 350 แสดงว่ามีการอุดตันเป็นส่วนใหญ่
การรวมกฎทั้งสองเข้าด้วยกันทำให้เรามีวิธีง่ายๆ ในการใช้ตรรกะการตรวจจับดังที่แสดง โปรดสังเกตว่าโค้ดด้านล่างถูกปรับใช้บน Arduino ซึ่งจะประเมิน telemetries ที่ได้รับตามรุ่นของเราและส่งไปยังราสเบอร์รี่หากท่ออุดตันหรือเปิดอยู่
ขั้นตอนที่ 11: รหัส
โค้ดทั้งหมดสำหรับ Arduino, Raspberry & Cloud Function มีอยู่ใน Github
สำหรับข้อมูลเพิ่มเติมคุณสามารถตรวจสอบลิงค์นี้
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-