โปรเจกต์ การทำ Aquatic Ultrasonic Imaging และ Chemical Water Testing แบบ AI-based
ระบุ noxious air bubbles ที่ซ่อนอยู่ใน substrate ด้วย ultrasonic scans และประเมิน water pollution จาก chemical tests ไปพร้อมๆ กัน
ระบุ noxious air bubbles ที่ซ่อนอยู่ใน substrate ด้วย ultrasonic scans และประเมิน water pollution จาก chemical tests ไปพร้อมๆ กัน
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
Project Supporter Team
โพสต์โดย
ถึงแม้ว่าพวกเราส่วนใหญ่จะมองว่าการปนเปื้อนในน้ำเป็นเหตุการณ์ที่เกิดขึ้นอย่างค่อยเป็นค่อยไป โดยเฉพาะในพื้นที่ที่ระบบนิเวศกำลังรุ่งเรือง แต่แท้จริงแล้วมลพิษที่กำลังจะเกิดขึ้นสามารถแพร่กระจายเข้าสู่แหล่งน้ำได้ในทันที ในกรณีของแหล่งน้ำระบบปิด เช่น ทะเลสาบปิด สารปนเปื้อนที่เป็นอันตรายสามารถเกิดขึ้นได้ภายในสัปดาห์เดียวและคุกคามสภาพแวดล้อมทางน้ำ แม้ว่าจะไม่มีสัญญาณบ่งชี้ใดๆ ปรากฏออกมาก็ตาม มลพิษที่แพร่กระจายอย่างลับๆ เหล่านี้ยังสามารถส่งผลกระทบต่อสุขภาพของสัตว์บกได้ด้วย ไม่เพียงแต่การทำให้แหล่งน้ำล้ำค่ามีพิษ แต่ยังทำให้พืชน้ำเหี่ยวเฉาอีกด้วย
ในกรณีส่วนใหญ่ การทดสอบคุณภาพน้ำเพียงแค่ระดับพื้นผิวนั้นไม่เพียงพอที่จะระบุตำแหน่งของมลพิษที่ซ่อนอยู่ได้ เนื่องจากสารปนเปื้อนสามารถก่อตัวขึ้นในชั้นดินใต้น้ำ (Substrate) จากการสะสมของสารเคมีเริ่มต้น ปฏิกิริยาเคมีใต้น้ำเหล่านี้มักถูกกระตุ้นโดยเศษซากพืชซากสัตว์ (Detritus) น้ำเสียจากโรงงานอุตสาหกรรม และตะกอนที่มีสารพิษซึ่งมีอยู่มากมายในชั้นดินใต้น้ำ หลังจากสิ้นสุดการจมตัวของเศษซากเหล่านี้ ปฏิกิริยาดังกล่าวสามารถทำให้เกิดปรากฏการณ์น้ำเปลี่ยนสี (Algal blooms), ภาวะขาดออกซิเจน (Dead zones) และการขยายตัวของพื้นที่ร้างเปล่าใต้น้ำ [1] เนื่องจากเหตุการณ์ที่กล่าวมาข้างต้นเป็นเพียงผลลัพธ์ของมลพิษทางน้ำที่ยืดเยื้อ จึงนำไปสู่กระบวนการที่ไม่อาจยับยั้งได้ของปฏิสัมพันธ์ทางเคมีที่มีพิษและซับซ้อน แม้กระทั่งกับขยะพลาสติก [2] ดังนั้น การจัดลำดับความสำคัญจึงต้องให้กับการระบุเงื่อนไขเบื้องหลังของปฏิกิริยาเคมีใต้น้ำที่เพิ่มขึ้น
โดยเฉพาะอย่างยิ่งในระดับชั้นดินที่ต่ำลงไป ก่อนที่จะถึงปริมาณที่เป็นอันตราย ปฏิกิริยาเคมีที่รวมตัวกันระหว่างสารปนเปื้อนจะสร้างโมเลกุลก๊าซที่เพียงพอต่อการสะสมเป็นฟองอากาศขนาดเล็กถึงปานกลางใต้น้ำ ช่องก๊าซที่แฝงตัวอยู่เหล่านี้ส่งผลกระทบต่อระบบรากของพืชน้ำ นำพาสารปนเปื้อนที่เป็นอันตรายขึ้นสู่ระดับพื้นผิว และเปลี่ยนแปลงคุณภาพน้ำอย่างที่คาดเดาไม่ได้เนื่องจากสารปนเปื้อนอุบัติใหม่ที่แพร่หลาย ผลจากการพุ่งสูงขึ้นของช่องอากาศที่มีพิษ แหล่งน้ำที่ได้รับผลกระทบอาจเผชิญกับการลดลงของสิ่งมีชีวิตทางน้ำอย่างไม่สม่ำเสมอ เริ่มต้นจากการตายของสัตว์ไม่มีกระดูกสันหลังและลูกปลา (หรือตัวอ่อน) แม้ว่าตัวอย่างของกิจกรรมฟองอากาศใต้น้ำทั้งหมดจะไม่ได้ถูกระบุว่าเป็นความเสี่ยงจากมลพิษที่เป็นพิษที่ใกล้เข้ามาเสมอไป แต่พวกมันก็สามารถนำมาใช้เป็นตัวบ่งชี้สำคัญในการทดสอบคุณภาพน้ำเพื่อป้องกันอันตรายต่อสิ่งแวดล้อมที่อาจเกิดขึ้นได้
นอกเหนือจากการปกป้องแหล่งน้ำปิดตามธรรมชาติแล้ว การตรวจจับมลพิษใต้น้ำที่สะสมอยู่ยังมีประโยชน์และทำกำไรให้กับการเพาะพันธุ์สัตว์น้ำเชิงพาณิชย์หรือการเก็บเกี่ยวพืชน้ำ ซึ่งรู้จักกันอย่างแพร่หลายในชื่อ การเพาะเลี้ยงสัตว์น้ำ (Aquaculture) เนื่องจากการเพาะเลี้ยงสัตว์น้ำต้องการการเพาะเลี้ยงสิ่งมีชีวิตในน้ำอย่างมีการควบคุมในแหล่งน้ำปิดที่สร้างขึ้น (น้ำจืดหรือน้ำกร่อย) เช่น บ่อปลาและตู้ปลา การขยายตัวของฟองอากาศใต้น้ำที่ส่งต่อมลพิษที่เป็นอันตรายไปยังพื้นผิวสามารถทำให้สัตว์น้ำตายอย่างกะทันหัน พืชน้ำเหี่ยวเฉา และความสูญเสียทางการเงินอย่างมหาศาล โดยเฉพาะสำหรับการเลี้ยงปลา (Pisciculture) ที่เกี่ยวข้องกับสายพันธุ์ที่ดูแลยาก การสะสมของฟองอากาศในชั้นดินใต้น้ำสามารถเริ่มปฏิกิริยาลูกโซ่ที่ส่งผลให้ปลาทั้งหมดที่ปรับตัวเข้ากับแหล่งน้ำปิดนั้นตายลง ในกรณีที่รุนแรง สิ่งนี้สามารถนำไปสู่สภาพแวดล้อมจำลองที่ปกคลุมด้วยสาหร่ายซึ่งคุกคามสัตว์บกและการลดลงอย่างต่อเนื่องของอัตราการรอดชีวิต
หลังจากศึกษาเอกสารวิจัยล่าสุดเกี่ยวกับการระบุฟองอากาศในชั้นดินใต้น้ำ ผมสังเกตว่ายังไม่มีการประยุกต์ใช้งานจริงที่เน้นการตรวจจับฟองอากาศใต้น้ำและการประเมินมลพิษทางน้ำควบคู่กันเพื่อวินิจฉัยสารปนเปื้อนที่เป็นพิษที่อาจเกิดขึ้นก่อนที่จะส่งผลเสียต่อสิ่งแวดล้อมทางธรรมชาติหรือฟาร์มปลาเชิงพาณิชย์ ดังนั้น ผมจึงตัดสินใจพัฒนาอุปกรณ์ AIoT ที่มีฟีเจอร์ครบครันเพื่อระบุฟองอากาศใต้น้ำผ่าน Neural network model โดยใช้ Ultrasonic imaging เป็นวิธีการตรวจสอบแบบ Nondestructive และเพื่อประเมินมลพิษทางน้ำอย่างต่อเนื่องตามการทดสอบคุณภาพน้ำทางเคมีหลายรายการผ่าน Object detection model นอกจากฟังก์ชันที่ขับเคลื่อนด้วย AI แล้ว ผมยังตัดสินใจสร้าง User interfaces ที่มีความสามารถและบริการแจ้งเตือนแบบ Push notification ผ่าน Telegram อีกด้วย
ก่อนที่จะเริ่มขั้นตอนการรวบรวมข้อมูลและการฝึกฝน Model ผมได้ค้นหาสภาพแวดล้อมทางธรรมชาติหรือที่สร้างขึ้นซึ่งแสดงให้เห็นถึงการขึ้นลงของความเป็นพิษในชั้นดินใต้น้ำเนื่องจากจำนวนประชากรที่หนาแน่นเกินไปและเศษซากที่เน่าเปื่อย อย่างไรก็ตาม ผมไม่สามารถหาตัวเลือกที่เหมาะสมใกล้บ้านเกิดได้เนื่องจากสิ่งมีชีวิตในน้ำที่ใกล้สูญพันธุ์ การทำลายที่อยู่อาศัยอย่างไม่หยุดยั้ง และการทิ้งขยะเคมีที่ส่วนใหญ่เกิดจากกิจกรรมของมนุษย์ ดังนั้น ผมจึงตัดสินใจจัดตั้งสภาพแวดล้อมทางน้ำจำลองขึ้นเพื่อจำลองฟองอากาศที่เป็นอันตรายในชั้นดินใต้น้ำและความเสี่ยงจากมลพิษทางน้ำที่อาจเกิดขึ้น หลังจากทำการวิเคราะห์อย่างละเอียดเกี่ยวกับสิ่งมีชีวิตในน้ำที่แพร่พันธุ์ได้ดีซึ่งผมสามารถจำลองสภาวะของฟาร์มปลาในตู้ปลาขนาดกลางได้ ผมจึงตัดสินใจตั้งตู้ปลาน้ำจืดที่มีพืชไม้น้ำสำหรับสายพันธุ์ที่อยู่ร่วมกันอย่างกลมกลืนและขยายพันธุ์ได้เร็ว ได้แก่ ปลาหางนกยูง (Guppies), กุ้งแคระ (Neocaridina shrimp), กุ้งเครย์ฟิชขนาดแคระ (Cambarellus Diminutus) เป็นต้น ในขั้นตอนต่อๆ ไป ผมจะอธิบายสิ่งมีชีวิตทั้งหมดในสภาพแวดล้อมที่มีการควบคุมของผม (ตู้ปลา) พร้อมคำแนะนำโดยละเอียด
เนื่องจากหัวใจสำคัญของการระบุฟองอากาศใต้น้ำและการประเมินมลพิษทางน้ำพร้อมกันนั้นต้องการการพัฒนาอุปกรณ์ที่ขับเคลื่อนด้วย AI ซึ่งรองรับ Machine learning models หลายชุด ผมจึงตัดสินใจสร้างชุดข้อมูลสองชุดที่แตกต่างกัน ได้แก่ ข้อมูล Ultrasonic scan (buffer) และภาพผลการทดสอบคุณภาพน้ำทางเคมี (รหัสสี), สร้าง Machine learning models สองแบบที่แตกต่างกัน ได้แก่ Neural network และ Object detection และรัน Model ที่ฝึกฝนแล้วบนบอร์ดพัฒนาแยกกัน ในส่วนนี้ ผมสามารถโปรแกรม User interfaces ที่แตกต่างกันและมีฟีเจอร์ครบครันสำหรับบอร์ดพัฒนาแต่ละบอร์ด โดยเน้นไปที่แง่มุมที่ต่างกันของกระบวนการตรวจจับที่ซับซ้อนตาม AI และช่วยหลีกเลี่ยงปัญหาการจัดสรร Memory, ความหน่วง (Latency), ความแม่นยำของ Model ที่ลดลง และวิธีการรวบรวมข้อมูลที่ยุ่งยากเนื่องจากความขัดแย้งของ Sensor หลายตัว
เนื่องจาก Nano ESP32 เป็นบอร์ดพัฒนา Arduino IoT ประสิทธิภาพสูงรุ่นใหม่ล่าสุดที่มาพร้อมกับโมดูล u-blox® NORA-W106 (ESP32-S3), Flash ขนาด 16 MB (128 Mbit) และเสาอากาศในตัว ผมจึงตัดสินใจใช้ Nano ESP32 เพื่อเก็บข้อมูล Ultrasonic scan (imaging) และรัน Neural network model ของผม เนื่องจากผมจำเป็นต้องใช้อุปกรณ์ที่จมน้ำได้เพื่อสร้างภาพ Ultrasonic scan ทางน้ำที่แม่นยำ ผมจึงตัดสินใจเชื่อมต่อ Ultrasonic sensor รุ่น DFRobot URM15 - 75KHZ (ผ่านโมดูลอะแดปเตอร์ RS485-to-UART) และ Sensor วัดอุณหภูมิกันน้ำ DS18B20 เข้ากับ Nano ESP32 เพื่อสร้างภาพ Ultrasonic ที่แม่นยำจากจุดข้อมูลเดียวและให้ตรงกับรูปร่างของภาพที่กำหนด (20 x 20 — 400 จุด) ผมได้เพิ่ม DFRobot 6-axis accelerometer เข้าไปด้วย ในตอนท้าย ผมได้เชื่อมต่อจอแสดงผล SSD1306 OLED และปุ่มควบคุมสี่ปุ่มเพื่อโปรแกรม User interface ที่มีฟีเจอร์ครบครัน
ผมยังใช้ Nano ESP32 เพื่อส่งข้อมูล Ultrasonic scan ที่สร้างขึ้นและคลาสของฟองอากาศที่เลือกไปยัง Web application พื้นฐาน (พัฒนาด้วย PHP) ผ่าน HTTP POST request ในแง่นี้ ผมสามารถบันทึกแต่ละ Ultrasonic scan buffer พร้อมกับคลาสฟองอากาศที่กำหนดลงในไฟล์ข้อความ (TXT) แยกต่างหาก และสร้างชุดข้อมูลของผมได้อย่างง่ายดาย ผมจะอธิบายฟีเจอร์ที่เหลือของ Web application ด้านล่าง
หลังจากเสร็จสิ้นการสร้างชุดข้อมูล Ultrasonic scan ผมได้สร้าง Artificial Neural Network model (ANN) ด้วย Edge Impulse เพื่อระบุฟองอากาศที่เป็นอันตรายที่แฝงตัวอยู่ในชั้นดินใต้น้ำ เมื่อพิจารณาถึงโครงสร้างที่เป็นเอกลักษณ์ของข้อมูล Ultrasonic imaging ผมได้ใช้ Ridge classifier ในตัวเป็น Model classifier ซึ่งให้บริการโดย Edge Impulse Enterprise ในฐานะที่เป็นวิธีการ Logistic regression พร้อมการทำ L2 regularization การจำแนกประเภทแบบ Ridge จะรวมเทคนิคการจำแนกประเภทแบบดั้งเดิมและ Ridge regression สำหรับงานจำแนกประเภทหลายคลาส (Multi-class classification) เนื่องจาก Edge Impulse เข้ากันได้กับ Microcontroller และบอร์ดพัฒนาเกือบทั้งหมด แม้กระทั่งสำหรับ Linear models ของ Sklearn ที่ซับซ้อน ผมจึงไม่พบปัญหาใดๆ ในขณะอัปโหลดและรัน Model ขั้นสูงของผมบน Nano ESP32 ในส่วนของ Label ผมเพียงแยกความแตกต่างของตัวอย่าง Ultrasonic scan ตามการมีอยู่ของฟองอากาศใต้น้ำ:
หลังจากฝึกฝนและทดสอบ Neural network model ด้วย Ridge classifier แล้ว ผมได้ Deploy ตัว Model เป็น Arduino library และอัปโหลดไปยัง Nano ESP32 ดังนั้น อุปกรณ์จึงสามารถระบุฟองอากาศใต้น้ำได้โดยการรัน Neural network model โดยไม่ต้องมีขั้นตอนเพิ่มเติมหรือความหน่วงใดๆ
เนื่องจาก UNIHIKER เป็นคอมพิวเตอร์บอร์ดเดี่ยวที่กะทัดรัดเป็นพิเศษ มีหน้าจอสัมผัสในตัว โมดูล Python ในตัว และรองรับ Edge connector ที่เข้ากันได้กับ micro:bit ผมจึงตัดสินใจใช้ UNIHIKER เพื่อเก็บภาพผลการทดสอบคุณภาพน้ำทางเคมี (รหัสสี) และรัน Object detection model ของผม เพื่อบันทึกตัวอย่างภาพของการทดสอบคุณภาพน้ำหลายรายการ ผมได้เชื่อมต่อ USB webcam คุณภาพสูงเข้ากับ UNIHIKER จากนั้นผมได้โปรแกรม User interface (GUI) ที่มีฟีเจอร์ครบครันและแสดงอินเทอร์เฟซแบบโต้ตอบบนหน้าจอสัมผัสในตัวโดยใช้โมดูล Python ที่รวมอยู่ใน Thonny
หลังจากเสร็จสิ้นการสร้างชุดข้อมูลรูปภาพ ผมได้สร้าง Object detection model ด้วย Edge Impulse เพื่อประเมินระดับมลพิษทางน้ำตามการทดสอบคุณภาพน้ำทางเคมีที่ใช้ เนื่องจากการตรวจจับระดับมลพิษทางน้ำตามรหัสสีของการทดสอบทางเคมีเป็นงานที่ซับซ้อน ผมจึงตัดสินใจใช้อัลกอริทึม Machine learning ขั้นสูงจาก NVIDIA TAO Toolkit ที่รองรับโดย Edge Impulse Enterprise อย่างเต็มรูปแบบ ซึ่งก็คือ RetinaNet (ซึ่งเป็นอัลกอริทึมที่ยอดเยี่ยมสำหรับการตรวจจับวัตถุขนาดเล็ก) เนื่องจาก Edge Impulse Enterprise มี Backbone ที่กำหนดค่าได้สำหรับ RetinaNet และเข้ากันได้กับบอร์ดพัฒนาเกือบทุกรุ่น ผมจึงไม่พบปัญหาใดๆ ในขณะอัปโหลดและรัน NVIDIA TAO RetinaNet object detection model บน UNIHIKER สำหรับ Label ผมได้ใช้ระดับมลพิษที่กำหนดจากการสังเกตการทดสอบทางเคมี:
หลังจากฝึกฝนและทดสอบ RetinaNet object detection model แล้ว ผมได้ Deploy ตัว Model เป็นแอปพลิเคชัน Linux (AARCH64) (.eim) และอัปโหลดไปยัง UNIHIKER ดังนั้น อุปกรณ์จึงสามารถประเมินระดับมลพิษทางน้ำตามการทดสอบคุณภาพน้ำทางเคมีที่ใช้โดยการรัน Object detection model ได้อย่างอิสระโดยไม่ต้องมีขั้นตอนเพิ่มเติม ไม่ลดความแม่นยำ หรือมีความหน่วง
แม้ว่าอุปกรณ์ตรวจจับฟองอากาศใต้น้ำและมลพิษทางน้ำนี้จะประกอบด้วยบอร์ดพัฒนาสองบอร์ดแยกกัน แต่ผมเน้นที่การสร้างฟีเจอร์ AIoT ที่สมบูรณ์แบบพร้อมการผสานรวมที่ราบรื่น และช่วยให้ผู้ใช้สามารถเข้าถึงฟีเจอร์ของอุปกรณ์ที่เชื่อมต่อถึงกันภายในอินเทอร์เฟซที่ใช้งานง่ายและมีฟีเจอร์มากมาย ดังนั้น ผมจึงตัดสินใจพัฒนา Web application อเนกประสงค์ขึ้นมาใหม่ทั้งหมดเพื่อรับค่า Ultrasonic scan buffer ที่สร้างขึ้น (20 x 20 — 400 จุดข้อมูล) พร้อมกับคลาสฟองอากาศที่เลือกผ่าน HTTP POST request จาก Nano ESP32 และบันทึกข้อมูลที่ได้รับเป็นไฟล์ข้อความ (TXT) นอกจากนี้ เช่นเดียวกับตัวอย่าง Ultrasonic scan ตัว Web application สามารถบันทึกผลการตรวจจับของ Model ซึ่งก็คือ buffer ที่ส่งไปยัง Neural network model และ Label ที่ตรวจพบ เป็นไฟล์ข้อความในโฟลเดอร์แยกต่างหาก
จากนั้น ผมได้ใช้ Web application เพื่อสื่อสารกับ UNIHIKER เพื่อสร้างไฟล์ CSV ที่มีรูปแบบล่วงหน้าจากไฟล์ข้อความตัวอย่างที่เก็บไว้ (บันทึกข้อมูล Ultrasonic scan) และส่งต่อผลการตรวจจับ Neural network model ล่าสุด (Ultrasonic scan buffer และ Label ที่ตรวจพบ) ผ่าน HTTP GET request
ตามที่กล่าวซ้ำๆ ว่าแต่ละ Ultrasonic scan buffer ที่สร้างขึ้นจะมีจุดข้อมูล 400 จุดเป็นภาพ Ultrasonic ขนาด 20 x 20 แม้ว่า Nano ESP32 จะไม่สามารถใช้ buffer ที่กำหนดเพื่อสร้างภาพ Ultrasonic หลังจากรัน Neural network model ด้วย Ridge classifier ได้ก็ตาม ดังนั้น หลังจากได้รับผลการตรวจจับ Model ล่าสุดผ่าน Web application ผมจึงใช้ UNIKIHER เพื่อแก้ไขภาพ Template (สี่เหลี่ยมสีดำ) ผ่านฟังก์ชัน OpenCV ในตัวเพื่อแปลง Ultrasonic scan buffer ที่กำหนดให้เป็นไฟล์ JPG และบันทึกภาพที่แก้ไขแล้วเพื่อแสดงผลภาพ Ultrasonic scan ทางน้ำล่าสุดพร้อมพิกเซลที่เข้ารหัสอย่างละเอียด
เนื่องจาก RetinaNet object detection model ให้การวัด Bounding box ที่แม่นยำ ผมจึงใช้ UNIHIKER เพื่อแก้ไขภาพผลลัพธ์เพื่อวาด Bounding box ที่เกี่ยวข้อง และบันทึกภาพผลลัพธ์ที่แก้ไขแล้วเป็นไฟล์ JPG เพื่อการตรวจสอบเพิ่มเติม
หลังจากทำการทดลองกับทั้งสอง Model และได้ผลลัพธ์ที่สำคัญ ผมจึงตัดสินใจตั้งค่า Telegram bot พื้นฐานเพื่อแจ้งให้ผู้ใช้ทราบถึงผลการตรวจจับของ Model ล่าสุด โดยการส่งภาพ Ultrasonic ล่าสุดที่สร้างขึ้นพร้อมคลาสฟองอากาศที่ตรวจพบ และภาพผลลัพธ์ที่แก้ไขล่าสุดของ Object detection model เนื่องจาก Telegram เป็นบริการส่งข้อความบน Cloud ข้ามแพลตฟอร์มพร้อม Bot API พื้นฐาน HTTP ที่รองรับอย่างเต็มที่ Telegram bots จึงสามารถรับภาพจากที่เก็บข้อมูลในเครื่องได้โดยตรงโดยไม่ต้องใช้บริการ Hosting ดังนั้น ผมจึงสามารถส่งภาพที่แก้ไขแล้ว (ของทั้งสอง Model) จาก UNIHIKER ไปยัง Telegram bot ได้โดยไม่ต้องสร้างการเชื่อมต่อ SSL
เมื่อพิจารณาถึงสภาพการใช้งานที่ยุ่งยากใกล้กับโรงเพาะเลี้ยงสัตว์น้ำและการจัดหาโครงสร้างอุปกรณ์แบบหน่วยเดียว ผมจึงตัดสินใจออกแบบ PCB ที่ไม่ซ้ำใครหลังจากทดสอบการเชื่อมต่อทั้งหมดของ Prototype ผ่าน Breadboard เนื่องจากผมต้องการให้การออกแบบ PCB ของผมเป็นตัวแทนของชีวิตสัตว์น้ำใต้น้ำที่น่าหลงใหลและลึกลับ ผมจึงตัดสินใจออกแบบ PCB ที่ได้รับแรงบันดาลใจจากปลาหมึก (Squid-inspired) ด้วย Edge connector ที่เข้ากันได้กับ micro:bit ผมจึงสามารถติดตั้งส่วนประกอบและบอร์ดพัฒนาทั้งหมดเข้ากับ PCB ได้อย่างราบรื่น
สุดท้าย เพื่อให้อุปกรณ์มีความทนทานและกะทัดรัดที่สุดเท่าที่จะเป็นไปได้ ผมได้ออกแบบเคสธีมสัตว์น้ำที่เข้าชุดกัน (แบบ 3D printable) พร้อมตัวยึดแบบ Modular ที่หุ้มโครงร่างของ PCB, ตัวยึดแบบแขวนขอบตู้ปลาที่ติดตั้งเข้ากับตัวยึด PCB, ตัวยึดกล้องแบบแขวนเพื่อวาง USB webcam คุณภาพสูงเมื่อไม่ได้ใช้งาน และฝาปิดด้านบนแบบถอดได้ที่ช่วยให้ผู้ใช้สามารถเชื่อมต่อ Sensor เข้ากับช่องที่กำหนด ตัวยึดรูปครึ่งวงกลมได้รับการออกแบบมาเป็นพิเศษเพื่อให้บรรจุ Sensor วัดอุณหภูมิแบบกันน้ำได้พอดี
และนี่คือโปรเจกต์ของผมโดยสรุปครับ 😃








































สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้