ล้ำจัด! ระบบตรวจจับคนด้วย Raspberry Pi AI Camera + OpenPLC แจ้งเตือนผ่านไฟ Tower แบบเรียลไทม์ 🚨

สวัสดีชาว Maker สาย Automation ทุกคนครับ! ปกติเวลาเราทำระบบตรวจจับคน (Person Detection) เรามักจะต้องส่งภาพจากกล้องขึ้น Cloud หรือส่งไปประมวลผลที่ PC ข้างนอกใช่ไหมครับ? ซึ่งนั่นทำให้เกิดปัญหาเรื่อง ความปลอดภัยของข้อมูล (Privacy) อย่างหลีกเลี่ยงไม่ได้

แต่วันนี้เรามีโซลูชันสุดเจ๋งมานำเสนอ! โปรเจกต์นี้จะใช้ Raspberry Pi AI Camera ที่สามารถรัน AI Inference ได้จบในตัวกล้องเลย (On-device) ทำให้ไม่มีการส่งภาพถ่ายออกสู่ภายนอก มีแค่ข้อมูล Metadata (สถานะและพิกัด) เท่านั้นที่ถูกส่งไปยัง OpenPLC (ซอฟต์แวร์จำลอง PLC) เพื่อสั่งงานเปิดไฟแจ้งเตือน (Stack Light) แบบเรียลไทม์ครับ!

เตรียมของให้พร้อม (Required Equipment)

โปรเจกต์นี้เราจะใช้บอร์ด Raspberry Pi ถึง 2 ตัว เพื่อแบ่งหน้าที่กันทำงาน (ตัวนึงรันกล้อง ตัวนึงรัน OpenPLC) มาดูรายการของกันครับ:

  • Raspberry Pi AI Camera (หัวใจหลักของงานนี้)
  • บอร์ด Raspberry Pi 5 (สำหรับรันกล้อง AI) และ Raspberry Pi 4 Model B (สำหรับรัน OpenPLC)
  • Micro SD Card (แนะนำ 32GB ขึ้นไป)
  • ไฟ Stack light (Tower light) และ Switching power supply 24V
  • Relay module และสาย Jumper GPIO
  • Heat sink & Case (แนะนำให้ติดฮีตซิงก์พัดลมเพื่อระบายความร้อนให้ Pi 5)
  • PC สำหรับลงโปรแกรม OpenPLC Editor

💡 Maker's Tip: งาน Automation แบบนี้ การจัดระเบียบสายไฟและการระบายความร้อนสำคัญมากครับ! หากเพื่อนๆ กำลังหา บอร์ด Raspberry Pi 4/5, Relay Module หรืออยากจะเอา เครื่อง 3D Printer ไปปริ้นท์เคสยึดกล้อง AI และขาตั้งไฟ Tower เจ๋งๆ แวะไปช้อปอุปกรณ์ IoT และเส้นพลาสติกคุณภาพสูงได้ที่ Globalbyte เลยครับ! มีของพร้อมลุยโปรเจกต์เพียบ!

Step 1: การติดตั้งฮาร์ดแวร์และกล้อง (Setup & Connection)

เริ่มจากการลง OS ให้ Raspberry Pi ผ่าน Raspberry Pi Imager จากนั้นนำกล้อง AI มาต่อเข้ากับบอร์ด Pi 5 โดยใช้สาย MIPI CSI 22-pin (สำหรับ Pi 5) ข้อควรระวังคือทิศทางของสายแพ (FPC cable) ต้องหันหน้าคอนแทคให้ถูกฝั่งนะครับ

เมื่อต่อเสร็จ ให้รันคำสั่งเพื่อทดสอบกล้อง หากกล้องตรวจจับหน้าคนหรือแอปเปิลได้ แสดงว่าพร้อมลุย!

AI Camera Kit Connect Camera Cable Orientation Apple Detection Sample
ตัวอย่างการเชื่อมต่อสายแพ และผลการทดสอบกล้อง AI ขั้นต้น

Step 2: การเขียนโค้ดฝั่งกล้อง AI (AI Camera & Modbus)

เราจะใช้โมเดล nanodet_plus_416x416.rpk ที่ถูกเทรนมาจาก COCO dataset ซึ่งรู้จักคลาส "person" อยู่แล้ว เราจะเขียนโค้ด Python เพื่อให้เมื่อกล้องเจอคน จะส่งสถานะ True/False ผ่านโปรโตคอล Modbus TCP (โดยใช้ไลบรารี pymodbus) ไปยัง OpenPLC ครับ

ด้านล่างคือตัวอย่างโค้ด Pymodbus ที่ช่วยอัปเดตสถานะของ Modbus Server หากตรวจพบคนในพื้นที่ (Detection Area) ที่กำหนด:

Python (Pymodbus Integration)
# Update di based on detection results
def update_di(context, in_person):
    if in_person:
        values = [1, 0, 0]
        context[0x01].setValues(2, 0, values)
    else:
        values = [0, 1, 0]
        context[0x01].setValues(2, 0, values)

# Check for person in detection area
def check_including_person(request):    
    global context
    detections = last_detections
    labels = get_labels()
    if detections == []:
        update_di(context, in_person=False)
        return 
    else:
        for detection in detections:
            if labels[int(detection.category)] == "person":
                if is_detection_area:
                    p_x, p_y, p_w, p_h = detection.box
                    if not((detection_area.x + detection_area.w <= p_x) or (p_x + p_w <= detection_area.x) or (detection_area.y + detection_area.h <= p_y) or (p_y + p_h <= detection_area.y)):
                        update_di(context, in_person=True)
                        return 
                else:
                    update_di(context, in_person=True)
                    return
        update_di(context, in_person=False)
        return 

Step 3: การตั้งค่า OpenPLC (PLC Logic Configuration)

ในฝั่งของบอร์ด Pi 4 เราจะลง OpenPLC Runtime ไว้ครับ โดยเราต้องเขียน Ladder logic ง่ายๆ (ภาษาควบคุมเครื่องจักร) ในโปรแกรม OpenPLC Editor บน PC เพื่อสั่งว่า "ถ้า Modbus ส่งค่ามาว่าเจอคน ให้สั่งเปิดไฟสีแดงที่ขา GPIO ถ้าไม่เจอ ให้เปิดไฟสีเขียว"

เมื่อเขียนเสร็จ ให้แปลงเป็นไฟล์ .st แล้วอัปโหลดขึ้นเว็บ Dashboard ของ OpenPLC Runtime พร้อมกับตั้งค่า Hardware Layer และ Slave Device ให้ตรงกับ IP ของ Pi 5 (ฝั่งกล้อง) ครับ

System Diagram Ladder Logic ST Compile Hardware Setup Slave Device Setup
โครงสร้างระบบ, การเขียน Ladder Logic และการตั้งค่าบน OpenPLC Dashboard

Step 4: ต่อวงจรไฟ Stack Light และรันระบบ!

เนื่องจากขา GPIO ของ Raspberry Pi ปล่อยไฟได้แค่ 3.3V หรือ 5V แต่ไฟ Stack light ของโรงงานใช้ไฟถึง 24V เราจึงต้องต่อ Relay Module คั่นกลางครับ โดยรับสัญญาณทริกเกอร์จาก Pi ไปเปิด/ปิดไฟ 24V จาก Power Supply

GPIO Relay Diagram

ผลลัพธ์การรันระบบ (Execution Results)

เมื่อกด Start PLC และรันโค้ด Python ฝั่งกล้องเสร็จแล้ว ลองเดินผ่านกล้องดูครับ!

  • หากไม่มีคน: ไฟ Stack light จะโชว์สีเขียว
  • เมื่อคนเดินเข้ากล้อง (หรือเข้าโซนที่กำหนด): ไฟ Stack light จะเปลี่ยนเป็นสีแดงทันที!

สรุป (Conclusion)

โปรเจกต์นี้พิสูจน์ให้เห็นว่าเราสามารถนำ Raspberry Pi AI Camera มาประยุกต์ใช้กับ OpenPLC เพื่อจำลองการควบคุมเครื่องจักรในโรงงาน (Automation) ได้อย่างสมบูรณ์แบบ แถมยังตอบโจทย์เรื่อง Privacy ขั้นสุด เพราะไม่ต้องส่งรูปภาพออกไปประมวลผลที่ไหนเลย เพื่อนๆ สามารถนำไอเดียนี้ไปต่อยอดทำระบบแจ้งเตือนของเสีย หรือนับจำนวนคนเข้าออกได้สบายๆ เลยครับ!

อ้างอิงข้อมูลจาก: Globalbyteshop Blog

ต้นฉบับโปรเจกต์โดย: Patrick Johnson | Original Hackster Link

Source Code ทั้งหมด: GitHub Repository | สอบถามเพิ่มเติมได้ที่ Raspberry Pi Forums

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

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี