MarineSentinel ทุ่น AI ใช้ Arduino UNO Q เฝ้าพลาสติกและคุณภาพน้ำ
พื้นที่ที่มีขยะพลาสติกในน้ำมากที่สุด อาจเป็นพื้นที่ที่มีข้อมูลต่อเนื่องน้อยที่สุดด้วย เพราะเครื่องวัดคุณภาพน้ำเชิงพาณิชย์ระดับมืออาชีพ มีต้นทุนสูงเกินกว่าที่ชุมชนหรือหน่วยงานท้องถิ่นบางแห่งจะติดตั้งได้หลายจุด
MarineSentinel จึงตั้งโจทย์อีกแบบ: ถ้าเราเอา Arduino UNO Q, กล้อง, Turbidity Sensor, Water Temperature, IMU และ GPS มารวมเป็นทุ่นขนาดเล็กที่สร้างซ้ำได้ใน Workshop เราจะเก็บข้อมูลน้ำและตรวจวัตถุลอยน้ำด้วย Edge AI โดยไม่ต้องส่งภาพขึ้น Cloud ได้ไหม?
คำตอบของผู้สร้างคือ Prototype ที่ให้ MCU อ่านโลกจริงแบบ Real-time ขณะที่ฝั่ง Linux ของ UNO Q รัน Object Detection, Web Dashboard และ Time-series Database อยู่บนบอร์ดเดียวกัน
- Arduino UNO Q แบ่งงานระหว่าง STM32U585 กับ Linux MPU บนบอร์ดเดียว
- Current GitHub ใช้ built-in YOLO-X Object Detection เป็นค่าเริ่มต้น
- Custom Edge Impulse Model สามารถนำมาใช้แทนได้ผ่าน App Lab
- Turbidity + Temperature ถูกอ่านทุก 2 วินาที, IMU ส่ง 10 Hz และ GPS 1 Hz ตาม Current Sketch
- Dashboard และ InfluxDB ทำงาน Local โดยไม่ต้องพึ่ง Cloud สำหรับ Runtime หลัก
- MarineSentinel ตรวจและรายงาน ไม่ได้เก็บขยะขึ้นจากน้ำ
- Enclosure มีไฟล์ STL / STEP และถูกสร้างด้วย 3D Printing
- Current Prototype ผ่าน Bench Test และ Water Test ระยะสั้น แต่การ Deploy หลายสัปดาห์ยังเป็น Future Work
- คำว่า “ต่ำกว่า $300” ใน Main Source หมายถึง BOM เพิ่มเติมที่ผู้สร้างระบุว่าไม่รวม UNO Q
ปัญหา: น้ำที่มีพลาสติกมาก กลับมีข้อมูลน้อยที่สุด
จุดเริ่มต้นของ MarineSentinel มาจากการเห็นขยะพลาสติกที่ Limbe Down Beach ใน Cameroon ทั้งขยะที่ถูกทิ้งลงน้ำโดยตรง และขยะที่ไหลออกจาก Drain / Inlet มาสู่ทะเล
Pain Point ของผู้สร้างไม่ใช่แค่ “มีขยะ” แต่คือไม่มีการวัดแบบต่อเนื่อง: ถ้ามีคนเข้า Site ถ่ายภาพหรือเก็บตัวอย่างเพียงครั้งคราว Pollution Event ที่เกิดหนึ่งวัน กับ Event ที่ต่อเนื่องหนึ่งเดือน อาจไม่มีข้อมูลมากพอให้แยกออกจากกัน
MarineSentinel คืออะไร — และไม่ได้ทำอะไร?
MarineSentinel เป็นทุ่น Monitoring ที่ถูกออกแบบให้ลอยอยู่บนผิวน้ำ พร้อมอ่าน Sensor และใช้ Camera + Edge AI ตรวจวัตถุที่ลอยผ่าน
ระบบปัจจุบันติดตาม:
- Turbidity
- Water Temperature
- Roll / Pitch / Yaw จาก IMU
- GPS
- Object Detection จาก Camera
- Alert State
แต่สิ่งที่ MarineSentinel ไม่ได้ทำ คือ Scoop หรือเก็บขยะออกจากน้ำ
Architecture: UNO Q หนึ่งบอร์ด แต่มีสองสมอง
จุดเด่นของ UNO Q ใน Project นี้ คือมีทั้ง MCU และ Linux MPU อยู่ในระบบเดียว
| ฝั่ง | หน้าที่ใน MarineSentinel |
|---|---|
| STM32U585 | Turbidity, DS18B20, MPU6050, GPS และ RGB Alert LED |
| Linux / MPU | Python, Object Detection, Dashboard, Alert Logic และ InfluxDB |
| Router Bridge | ส่ง sensor_data, imu_data, gps_data และ set_alert ระหว่างสองฝั่ง |
Current Code แบ่ง Cadence ชัดเจน:
IMU = 100 ms / 10 Hz
GPS = 1000 ms / 1 Hz
วิธีนี้ช่วยให้ IMU Update ได้เร็ว โดยไม่ต้องบังคับ Water Sensors ให้ทำงานด้วย Sampling Rate เดียวกัน
Hardware Stack ของ MarineSentinel
| Component | หน้าที่ |
|---|---|
| Arduino UNO Q | Main Compute — MCU + Linux MPU |
| USB Camera | Live Feed + Object Detection |
| Analog Turbidity Sensor | อ่านความขุ่นของน้ำ |
| DS18B20 | Water Temperature |
| MPU6050 | Accelerometer + Gyroscope สำหรับ Orientation |
| GPS | ตำแหน่ง, Speed, Course และ Satellite Count |
| RGB LED | Local OK / Alert Indicator |
| Solar Panel | ส่วนหนึ่งของ Power / Charging Concept |
Wiring ที่ต้องระวัง: D4 / D2 และ QWIIC คนละ Bus
| อุปกรณ์ | Current Sketch | หมายเหตุ |
|---|---|---|
| Turbidity | A0 | Analog Input |
| DS18B20 | D4 | Current sketch ใช้ D4 แต่ firmware/README ยังมี Table ที่เขียน D2 |
| MPU6050 | QWIIC / Wire1 | Wire1 = I2C4 ตาม Current Firmware |
| GPS | D20 RX / D21 TX | Serial3 ตาม Current Sketch |
| Alert | LED3_R / LED3_G | เขียว = Normal, แดง = Alert |
sketch.ino ใช้ D4 แต่ Technical README อีก Section ยังระบุ D2 หาก Build จาก Repo ควรยึด Firmware Revision ที่กำลัง Flash จริง ไม่ควรต่อจาก Table เก่าเพียงอย่างเดียวทำไม MPU6050 ต่อ QWIIC แล้วใช้ Wire ไม่ได้?
ผู้สร้างเจอปัญหาว่า MPU6050 ต่อ QWIIC แล้วเปิดไฟปกติ แต่ I2C Scan บน Default Wire กลับไม่เจอ Device
Current Firmware อธิบาย Mapping:
Wire → I2C2Wire1 → I2C4 / QWIICWire2 → I2C3Current Code จึงใช้ MPU6050 imu(Wire1) และ Wire1.begin()
Turbidity Sensor วัดอะไร และทำไมค่า NTU ต้องระวัง?
MarineSentinel อ่าน Analog Turbidity Sensor ผ่าน A0 แล้ว Current sensors.py แปลง ADC Reading เป็น NTU ด้วยสมการใน Project
Code ยังแบ่ง Label เป็น:
| ค่าใน Project | Label |
|---|---|
| < 100 NTU | Clear |
| 100–500 NTU | Moderate |
| > 500 NTU | Turbid / Alert |
NTU ใน Dashboard ยังไม่เท่ากับ Calibration Lab
Current Code มี Conversion Function แต่ Source ไม่ได้ให้ผล Calibration ของ MarineSentinel Build เทียบกับ Reference Turbidimeter, Standard Solution, Accuracy หรือ Measurement Uncertainty
ดังนั้นคำที่ปลอดภัยคือ: ระบบ แปลง Analog Reading เป็นค่า NTU ตาม Curve ใน Code ไม่ใช่การรับรองว่า MarineSentinel เป็นเครื่องวัด NTU ที่ผ่าน Calibration แล้ว
DFRobot Documentation ของ SEN0189 ระบุ Operating Voltage 5 V และ Analog Output สูงได้ประมาณ 4.5 V ขณะที่ UNO Q Analog Input อยู่ใน 3.3 V Domain
ดังนั้นบทความนี้จะไม่แนะนำให้ต่อ Analog Output ของ Module 5 V เข้ากับ A0 ตรง ๆ หากยังไม่ได้ Verify ว่า Hardware Revision มี Voltage Conditioning ที่เหมาะสม
Source ที่ให้มายังไม่ได้ให้วงจร Divider / Buffer ที่ยืนยันได้ จึงไม่ควรสร้างวงจรขึ้นเอง
MPU6050 รู้ได้อย่างไรว่าทุ่นเอียง?
MarineSentinel ใช้ MPU6050 เพื่อวัด Accelerometer + Gyroscope แล้ว Firmware Fuse ข้อมูลออกมาเป็น:
- Roll
- Pitch
- Yaw
Current Sketch Update Filter ต่อเนื่องใน Loop แต่ส่ง Orientation ขึ้นไปยัง Linux ทุก 100 ms หรือประมาณ 10 Hz
Dashboard จึงสามารถแสดง Capsule 3D ที่เอียงตาม Sensor ได้แบบต่อเนื่อง และ Current Alert Logic ใช้:
| Project Threshold | Label |
|---|---|
| Roll/Pitch ต่ำกว่า 45° | Upright |
| ตั้งแต่ 45° | Listing |
| ตั้งแต่ 120° | Capsized? |
แล้ว Yaw ล่ะ?
MPU6050 ไม่มี Magnetometer ทำให้ Yaw ไม่มี Absolute Heading Reference เหมือน Compass
Current Software ทำได้เพียง Wrap ค่าให้อยู่ในช่วง -180° ถึง 180° เพื่อให้อ่านง่าย แต่ไม่ได้แก้ Gyro Drift จริง
GPS และ Local Alert ทำให้ Detection มี Context มากขึ้น
GPS ใน Current Firmware ส่งข้อมูลขึ้น Linux ประมาณ 1 Hz:
- Fix State
- Latitude
- Longitude
- Speed
- Course
- Satellite Count
นี่สำคัญเพราะ Detection ที่รู้เพียงว่า “เจอขวด” มีประโยชน์น้อยกว่าข้อมูลที่รู้ว่า เจอที่ตำแหน่งไหนและเมื่อไร
นอกจากนี้ Python ยังส่ง Alert State กลับไปยัง STM32 ผ่าน Router Bridge เพื่อเปลี่ยน RGB LED บนบอร์ด:
Red = Alert
AI ตอนนี้ใช้ YOLO-X หรือ Edge Impulse?
คำตอบคือ: Project รองรับทั้งสองทาง แต่ Current GitHub Default ใช้ YOLO-X
Current app.yaml ระบุ:
bricks:
- arduino:video_object_detection:
model: yolox-object-detection
- arduino:web_ui: {}
- arduino:dbstorage_tsstore: {}
นั่นหมายความว่า Runtime Default ใช้ Built-in Object Detection Model ไม่ได้บังคับว่าต้องมี Custom Edge Impulse Model
แล้วมันรู้จัก “ขยะ” ยังไง?
Current sensors.py มีรายการ COCO Labels ที่ Project เลือกตีความว่าอาจเป็น Debris เช่น:
- bottle
- cup
- bowl
- backpack
- handbag
- suitcase
- umbrella
- sports ball
- book
- vase
- cell phone
Current Python Configuration ใช้ Confidence Threshold: 0.4 และ Debounce: 3 วินาที
ค่านี้เป็น Configuration ปัจจุบันของ Project ไม่ใช่ค่าที่ Source พิสูจน์แล้วว่า Optimal สำหรับแม่น้ำหรือชายฝั่งทุกพื้นที่
อยาก Train AI ให้รู้จักขยะของพื้นที่ตัวเอง ทำต่อยังไง?
Hackster แนะนำ Edge Impulse สำหรับ Training Model เฉพาะพื้นที่ โดย Workflow คือ:
Current Technical README อธิบายว่าสามารถ Register Custom Model แล้วนำ Model ID มาแทน yolox-object-detection ใน app.yaml
Dashboard ทำงานแบบ Local และเก็บ History ด้วย InfluxDB
Current App ไม่ได้ใช้ Streamlit เป็น Runtime หลักแล้ว แต่เปลี่ยนไปใช้:
arduino:web_uiarduino:video_object_detectionarduino:dbstorage_tsstore
เหตุผลที่ผู้สร้างย้ายจาก Streamlit คือเวอร์ชันเดิมจะเริ่ม App Logic เมื่อมี Browser เปิดหน้า Dashboard ซึ่งไม่เหมาะกับทุ่นที่ควรเริ่ม Sensor, AI และ Logging เองตั้งแต่ Boot
Current web_ui จึงเป็น Always-on Process: เปิดระบบขึ้นมาแล้ว Backend ทำงานทันที แม้ยังไม่มีคนเปิด Dashboard
Browser เปิดผ่าน Local Network ที่ Port 7000:
http://<board-ip>:7000
สิ่งที่ยืนยันได้คือ Dashboard ไม่ต้องพึ่ง Cloud สำหรับการดูข้อมูลบน LAN ไม่ควรฟันธงว่า Firmware ปัจจุบัน สร้าง Access Point ของตัวเองทุกกรณี
InfluxDB เก็บอะไร?
Current data_store.py ใช้ TimeSeriesStore / InfluxDB สำหรับ:
- Turbidity
- Temperature
- Roll
- Pitch
- Yaw
3D Capsule โดยไม่โหลด Three.js จาก Internet
ผู้สร้างต้องการให้ Orientation View ยังแสดงได้แม้ Browser ไม่มี Internet ออกไปหา CDN
Current Dashboard จึงใช้ CSS 3D Transform แทนการบังคับโหลด 3D Library ภายนอก
นี่เป็น Design Choice ที่น่าสนใจ: ถ้าระบบอยู่ริมแม่น้ำ Local Dashboard ควรยังทำงานได้ แม้ Internet ภายนอกจะไม่มี
3D Print ตัวทุ่น: 5 ส่วนหลัก + STEP File สำหรับแก้ CAD
MarineSentinel ถูกออกแบบใน Fusion 360 และ Main Source ระบุว่า Print ชิ้นส่วนด้วย PETG
โครงหลักแบ่งเป็น:
- Buoy Cover — ด้านบนสำหรับ Solar / GPS / Power Electronics
- Buoy Mid Body — ส่วน Camera
- Buoy Bottom — Sensor ใกล้น้ำ
- Floating Base — Flotation
- Electronics Enclosure — UNO Q, Battery และ Wiring
Source ระบุว่าหลายส่วน Snap-fit เข้าด้วยกัน และใช้เพียง 2 M3 Screws สำหรับยึดบาง Section
Floating Base มี Revision
Main Source ระบุว่า Floating Base เดิมถูกออกแบบเป็นชิ้นส่วน Printed แต่ Prototype รุ่นหลัง เปลี่ยนไปใช้ Polythene Foam สำหรับ Flotation
ดังนั้นแม้ STL ของ Floating Base ยังมีให้ดาวน์โหลด ก็ไม่ควรตีความว่าเป็น Final Flotation Method ที่ผู้สร้างใช้ล่าสุดเสมอ
Power + Solar: Source บอกอะไร และยังไม่บอกอะไร?
Source ยืนยันว่าระบบมี:
- Solar Panel — BOM ระบุ 2.5 W
- Build Step ระบุ 5 V Solar Panel
- Buck Converter
- Li-ion Battery
แต่ข้อมูล Battery มีรายละเอียดไม่ตรงกัน: BOM มีรายการ 1000 mAh ขณะที่ Build Instruction อีกจุด กล่าวถึง 7.4 V Battery Pack พร้อมตัวเลข 3 A
ดังนั้นเราเขียนได้ว่า:
แต่ยังไม่ควรเขียนว่า:
Water Test ไปถึงไหนแล้ว?
Main Source ระบุ Current Status เป็น:
- Bench proven
- Water tested
- AI Pipeline ทำงานบน Hardware จริง
- Dashboard ทำงาน End-to-end
- IMU / Sensor / Capsule ถูก Integrate แล้ว
แต่ Future Work ยังระบุชัดว่า การ Deploy แบบไม่มีคนดูแล เป็นระยะเวลาหลายสัปดาห์ ยังเป็นการทดสอบขั้นถัดไป
Source Code ที่น่าสนใจจาก Current GitHub
Project เปิด Source Files สำหรับทั้ง MCU, Python, Dashboard และ Mechanical Files
ตัวอย่างแรกคือ Sampling Cadence ที่ Firmware ใช้จริง:
const unsigned long SAMPLE_INTERVAL_MS = 2000;
const unsigned long IMU_SEND_INTERVAL_MS = 100;
const unsigned long GPS_SEND_INTERVAL_MS = 1000;
และ Current DS18B20 Pin:
#define TURBIDITY_PIN A0
#define DS18B20_PIN D4
ส่วน Object Detection Configuration ปัจจุบัน:
detector = VideoObjectDetection(
confidence=0.4,
debounce_sec=3.0,
camera_preview=True
)
ดาวน์โหลด STL / STEP / GitHub
คุณสามารถเปิด Source Project หรือดาวน์โหลดชิ้นส่วน Mechanical จากไฟล์ที่ผู้สร้างเผยแพร่ได้โดยตรง
เปิด GitHub Repository ดาวน์โหลด Bottom Half STL ดาวน์โหลด Buoy Top STL ดาวน์โหลด Buoy Mid Section STL ดาวน์โหลด Floating Base STL ดาวน์โหลด Electronics Case STLCurrent GitHub ยังมี MarineSentinel.step สำหรับผู้ที่ต้องการแก้ Geometry ใน CAD ต่อจาก Source Design
ข้อจำกัดที่ต้องแก้ก่อน Deploy เป็น Monitoring Node ระยะยาว
- AI ปัจจุบันยังเป็น General YOLO-X: ยังไม่ใช่ Plastic-specific Model ที่ผ่าน Validation สำหรับ Location นี้
- Turbidity Calibration: Current Code มี NTU Conversion แต่ไม่มีผล Calibration / Accuracy ของ Build จริง
- Analog Voltage: ต้อง Verify Signal Conditioning ก่อนใช้ Sensor ที่ Output เกิน 3.3 V กับ UNO Q ADC
- Yaw Drift: MPU6050 ไม่มี Magnetometer จึงไม่ให้ Absolute Compass Heading
- Power Budget: Source ยังไม่มี Validated Runtime หรือ Solar Energy Balance ระยะยาว
- Waterproofing: Prototype ถูก Water-tested แต่ไม่มี IP Rating หรือ Long-term Seal Validation
- Biofouling: การ Deploy เป็นสัปดาห์หรือเดือน อาจทำให้ Optical / Water-facing Sensor เปลี่ยนพฤติกรรม และยังเป็น Future Validation
- Pin Documentation: Current Sketch ใช้ DS18B20 D4 แต่ Technical README อีก Section ยังระบุ D2
- Logging: Current Runtime ใช้ InfluxDB ขณะที่ Planning Spec รุ่นก่อนมี microSD CSV Requirement
- Long Deployment: หลายสัปดาห์แบบ Unattended ยังไม่ได้ถูกพิสูจน์ใน Current Public Result
MarineSentinel เป็น Maker / Research Prototype ไม่ใช่ Certified Water Quality Instrument และไม่ควรใช้ค่าเพียงชุดเดียวจาก Prototype เพื่อออก Public Health Warning หรือสรุปว่าน้ำปลอดภัยสำหรับบริโภค โดยไม่มีวิธีตรวจยืนยันที่เหมาะสม
FAQ: MarineSentinel และ Arduino UNO Q
1. MarineSentinel คืออะไร?
เป็น Prototype ทุ่น Monitoring ที่ใช้ Arduino UNO Q รวม Sensor, GPS และ Edge AI เพื่อติดตามสภาพน้ำและวัตถุลอยน้ำ
2. MarineSentinel เก็บขยะขึ้นจากน้ำไหม?
ไม่ Project ทำหน้าที่ตรวจและรายงาน ไม่ได้เป็น Robot เก็บขยะ
3. ใช้บอร์ดอะไร?
Arduino UNO Q โดยแบ่งงานระหว่าง STM32U585 กับ Linux MPU
4. ใช้ AI Model อะไร?
Current GitHub app.yaml ใช้ built-in yolox-object-detection เป็น Default
5. ใช้ Edge Impulse ได้ไหม?
ได้ Technical README อธิบาย Workflow สำหรับนำ Custom Edge Impulse Model เข้า App Lab และเปลี่ยน Model ID ใน app.yaml
6. AI ปัจจุบันรู้จักพลาสติกโดยเฉพาะหรือไม่?
ไม่ Current Default เป็น General Object Detection และ Project เลือก COCO Labels บางกลุ่ม มาใช้เป็น Debris Events
7. Turbidity Sensor ต่อ Pin ไหน?
Current Sketch ใช้ A0 แต่ต้อง Verify Voltage Range ของ Sensor Output ก่อนต่อกับ UNO Q ADC
8. DS18B20 ต่อ D2 หรือ D4?
Current sketch.ino ใช้ D4 ขณะที่ Technical README อีก Table ยังระบุ D2 จึงควรยึด Firmware Revision ที่ใช้จริง
9. MPU6050 ใช้ Wire หรือ Wire1?
Current Code ใช้ Wire1 สำหรับ QWIIC Connector
10. Yaw คือ Compass Heading หรือไม่?
ไม่ MPU6050 ไม่มี Magnetometer Yaw จึงเป็น Gyro-integrated Relative Heading และ Drift ได้ตามเวลา
11. Dashboard ต้องใช้อินเทอร์เน็ตไหม?
Current Architecture สามารถให้ Browser บน Local Network เข้าหน้า Dashboard โดย Runtime หลักไม่ต้องพึ่ง Cloud
12. Dashboard อยู่ที่ Port ไหน?
Current README ใช้ Port 7000: http://<board-ip>:7000
13. เก็บข้อมูลลง microSD หรือ InfluxDB?
Current Implementation ที่ตรวจใช้ InfluxDB ผ่าน TimeSeriesStore ส่วน microSD CSV อยู่ใน Planning Requirement รุ่นก่อน
14. ตัวทุ่น Print ด้วยอะไร?
Main Source ระบุ PETG แต่ไม่ได้ให้ Printing Settings ครบ
15. มี STL ให้ดาวน์โหลดไหม?
มี ทั้ง Main Parts หลายชิ้น และ Current GitHub ยังมี STEP Source
16. MarineSentinel ราคา $300 จริงไหม?
Main Source ระบุ BOM เพิ่มเติม ประมาณ 157,506 XAF และต่ำกว่า US$300 โดยระบุชัดว่าไม่รวม UNO Q เอง จึงไม่ควรเรียกว่า Total Cost ทุกอย่างเท่ากับ $300
17. ทำงาน 24/7 ได้พิสูจน์แล้วหรือยัง?
Project ออกแบบเพื่อ Continuous Monitoring และผ่าน Bench / Water Test แต่การ Deploy หลายสัปดาห์แบบไม่มีคนดูแล ยังเป็น Future Work
18. ใช้ MarineSentinel ตัดสินว่าน้ำดื่มได้หรือไม่?
ไม่ควร Source ไม่ได้ระบุว่า Prototype เป็น Certified Water Quality Instrument หรือเครื่องมือรับรองความปลอดภัยสำหรับน้ำบริโภค
สรุป: จุดแข็งของ MarineSentinel คือการทำ Monitoring ให้สร้างซ้ำได้มากขึ้น
สิ่งที่น่าสนใจของ MarineSentinel ไม่ใช่แค่การเอา YOLO-X ไปตรวจขวดบนผิวน้ำ
แต่คือการนำ:
- Real-time MCU
- Linux
- Edge AI
- Water Sensors
- IMU
- GPS
- Local Dashboard
- Time-series Logging
- 3D Printed Enclosure
มาประกอบเป็น Monitoring Node ที่ผู้สร้างตั้งใจให้ Workshop ท้องถิ่น สามารถซ่อมหรือสร้างซ้ำได้ โดยไม่ต้องเริ่มจาก Commercial Buoy ราคาสูง
ในขณะเดียวกัน Current Source ก็ยังมี Caveat สำคัญ: Turbidity Calibration, Power Architecture, Long-term Waterproofing, AI Validation, Biofouling และ Deployment Duration ยังต้องพัฒนาต่อ
สำหรับ Maker Project นี้จึงน่าสนใจมาก เพราะมันไม่ได้สอนแค่ “ต่อ Sensor” แต่แสดงให้เห็นว่าพอ Hardware ลงไปอยู่ในโลกจริง เรื่อง Revision, Voltage, Sampling Rate, Dashboard Lifecycle และ Sensor Limitation กลายเป็นส่วนหนึ่งของ Engineering ทันที
โปรเจกต์นี้มีหลายระบบ แนะนำอ่านต้นฉบับควบคู่กัน
หากต้องการ Build MarineSentinel จริง ควรใช้ Hackster สำหรับ Story / Build Photos และ Current GitHub สำหรับ Firmware, Pin Assignment, App Lab Structure และ Mechanical Files
อ่าน MarineSentinel Tutorial ฉบับเต็มบน Hackster
ดู Source Code และ Mechanical Files บน GitHub
References / แหล่งข้อมูลต้นฉบับ
- Hackster — MarineSentinel
- GitHub — Asongnabrilan-nso/MarineSentinel_v1
- Arduino — Arduino UNO Q Documentation
- Edge Impulse — Edge Impulse Studio
- DFRobot — Gravity Analog Turbidity Sensor SEN0189 Documentation
- YouTube — MarineSentinel Live Demo
อยากลองทำ Environmental Monitoring หรือ Edge AI Project แบบนี้?
หากกำลังทดลอง Arduino, Development Board, GPS, IMU, Temperature Sensor, Camera หรือ Module สำหรับ Environmental Monitoring สามารถสอบถามทีม Globalbyte เรื่องอุปกรณ์ที่เหมาะกับ Project ได้
และถ้ามี STL / STEP สำหรับ Enclosure หรือ Prototype สามารถสอบถามเรื่องบริการพิมพ์ 3D ได้เช่นกัน โดยเฉพาะ Project ที่ต้องทดลอง Fit, Mounting หรือ Housing หลาย Revision
MarineSentinel เป็น Maker / Research Prototype ไม่ใช่ Certified Water Quality Instrument, Public Health Monitoring System หรืออุปกรณ์ที่ใช้รับรองว่าน้ำปลอดภัยสำหรับการบริโภค
Current GitHub ใช้ built-in
yolox-object-detection เป็น Default และใช้ COCO Object Labels บางประเภท เป็น Debris Events จึงไม่ควรตีความว่า Current Model เป็น Plastic-specific Classifier ที่ผ่าน Validation สำหรับสภาพน้ำทุกประเภท Custom Edge Impulse Workflow มีอยู่ใน Project แต่ Source ปัจจุบันไม่ได้ให้ Accuracy, Precision, Recall หรือ mAP ของ Final MarineSentinel Custom Model ที่เพียงพอสำหรับการสรุป Performance
Current sketch ใช้ DS18B20 ที่ D4 ขณะที่ Technical README อีก Section ยังระบุ D2 ควรตรวจ Current Firmware Revision ก่อน Wiring
DFRobot SEN0189 Documentation ระบุ Sensor Module ที่ 5 V และ Analog Output สามารถสูงกว่า 3.3 V Domain ของ UNO Q ADC บทความนี้จึงไม่ได้แนะนำ การต่อ Analog Output เข้ากับ A0 โดยตรง โดยไม่มีการ Verify Signal Conditioning และไม่ได้สร้างวงจร Voltage Divider / Buffer ขึ้นเอง
NTU Conversion และ Alert Thresholds ใน Current Source เป็น Logic ของ Project แต่ Source ไม่ได้ให้ Calibration Report, Measurement Accuracy, Uncertainty หรือการรับรองตามมาตรฐานคุณภาพน้ำ
MPU6050 ไม่มี Magnetometer ดังนั้น Yaw ของ Current System จะ Drift ตามเวลา และไม่ควรถูกใช้เป็น Absolute Compass Heading
Current Implementation ใช้ InfluxDB / TimeSeriesStore สำหรับ Data History แม้ Planning Specification รุ่นก่อน จะมี Requirement เรื่อง microSD CSV Logging
Source มีรายละเอียด Battery ที่ไม่สอดคล้องกันบางส่วน และไม่ได้ให้ BMS, Charge Controller, Fuse, Cell Configuration, Validated Runtime หรือ Solar Energy Budget ที่ครบถ้วน บทความนี้จึงไม่ได้สร้าง Power Wiring เพิ่มเอง
Main Source ระบุ BOM เพิ่มเติม ที่ต่ำกว่า US$300 โดยระบุว่าไม่รวม Arduino UNO Q ดังนั้นไม่ควรตีความว่า Total System Cost ทุกส่วนอยู่ที่ US$300 เสมอ ราคาและ Availability สามารถเปลี่ยนได้ตามพื้นที่และเวลา
Enclosure มี STL / STEP และ Main Source ระบุ PETG แต่ไม่ได้ให้ Printing Settings เช่น Layer Height, Infill, Wall Count, Nozzle, Print Temperature, Support หรือ Orientation ครบ บทความนี้จึงไม่ได้สร้างค่าดังกล่าวขึ้นเอง
การ 3D Print ไม่ได้ทำให้ชิ้นงาน Waterproof อัตโนมัติ และ Source ไม่ได้ระบุ IP Rating ของ MarineSentinel แม้ Prototype จะผ่าน Water Test ระยะสั้นแล้ว
Project ถูกออกแบบเพื่อ Continuous Monitoring แต่ผู้สร้างยังระบุ Long-duration Unattended Deployment หลายสัปดาห์ เป็น Future Work จึงไม่ควรใช้คำว่า “24/7 พิสูจน์แล้ว” สำหรับ Current Prototype