โปรเจกต์ Edge AI: สร้างระบบรักษาความปลอดภัยออฟไลน์ด้วย Raspberry Pi และ Google Coral

Edge AI Intrusion Sentinel Project

เคยหงุดหงิดไหมครับเวลาระบบกันขโมย DIY ทั่วไปมักจะแจ้งเตือนมั่วซั่ว (False alarms) แค่หมาแมวเดินผ่านก็ดังลั่นบ้าน หรือบางทีก็ต้องพึ่งพาระบบ Cloud ตลอดเวลา พอเน็ตหลุดทีระบบก็ล่มตามไปด้วย? วันนี้เราจะมาแก้ปัญหานี้ด้วยการสร้าง ระบบรักษาความปลอดภัยออฟไลน์ (Offline Smart Security System) ที่เน้นความเป็นส่วนตัว (Privacy-first) ขั้นสุด!

โปรเจกต์นี้เราจะจับคู่ความไวของเซนเซอร์จับความเคลื่อนไหว (PIR Motion Sensing) เข้ากับความฉลาดของ Computer Vision (AI) เพื่อให้มันคัดกรองได้ว่าสิ่งที่ขยับอยู่คือ "คน" จริงๆ หรือเปล่า ผลลัพธ์ที่ได้คือระบบที่ แม่นยำ + รวดเร็ว + และไม่ต้องง้ออินเทอร์เน็ตเลยครับ!

🎯 ฟีเจอร์เด่น (Features)

  • ตรวจจับมนุษย์แบบเรียลไทม์ (ใช้เวลาประมวลผล Inference เร็วกว่า 200 ms)
  • ไม่ต้องใช้ Cloud / ไม่มีปัญหาข้อมูลส่วนตัวรั่วไหล
  • ถ่ายภาพนิ่ง (Snapshot) เก็บไว้ทันทีเมื่อตรวจพบผู้บุกรุก
  • มีระบบเสียงแจ้งเตือน (Audible alert)
  • ขยายต่อยอดได้สบายๆ (เช่น ส่งแจ้งเตือนเข้า Telegram, ส่งอีเมล ฯลฯ)

🛠️ อุปกรณ์ที่ต้องใช้ (Hardware Components)

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

  • Raspberry Pi 4 Model B x1
  • Google Coral USB Accelerator x1 (ตัวเร่งประมวลผล AI สุดโหด)
  • PIR Motion Sensor (รุ่นทั่วไป) x1
  • Buzzer (ลำโพงขนาดเล็ก) x1
  • สาย Jumper wires x1 ชุด
  • อแดปเตอร์จ่ายไฟ Digilent 5V 4000mA Switching Power Supply x1
  • โมดูลกล้อง (Camera Module) สายแพ CSI

🔌 การต่อวงจร (Wiring Diagram)

การต่อสายง่ายมากๆ ครับ ต่อตามขาพิน (GPIO) ด้านล่างนี้ได้เลย:

  • PIR Sensor → Raspberry Pi
    • VCC → 5V
    • GND → GND
    • OUT → GPIO17
  • Buzzer → Raspberry Pi
    • ขั้วบวก (+) → GPIO27
    • ขั้วลบ (-) → GND
  • Camera: เสียบสายแพ (Ribbon cable) เข้าที่พอร์ต CSI ของ Raspberry Pi
  • Coral USB: เสียบเข้าที่พอร์ต USB 3.0 สีฟ้าของ Raspberry Pi ได้เลยครับ

🧠 สถาปัตยกรรมระบบ (System Architecture)

เพื่อให้เห็นภาพว่าระบบมันทำงานยังไง ลองดู Flow การทำงานตามนี้ครับ:

  1. [PIR Trigger]: เซนเซอร์ PIR ตรวจจับความเคลื่อนไหวได้
  2. [Capture Image]: สั่งให้กล้องถ่ายภาพทันที
  3. [AI Model (Edge TPU)]: ส่งภาพเข้าไปประมวลผลใน Google Coral
  4. [Person Detected?]: AI วิเคราะห์ว่าเป็น "มนุษย์" หรือไม่?
    • ถ้า YES (ใช่) → สั่งให้ [Alert] เสียง Buzzer ดัง
    • ถ้า NO (ไม่ใช่)[Ignore] ข้ามไป ไม่ต้องแจ้งเตือน

⚙️ การตั้งค่าซอฟต์แวร์ (Software Setup)

เปิด Terminal บน Raspberry Pi แล้วทำตามสเตปด้านล่างนี้ได้เลยครับ:

1. Install OS: แฟลช Raspberry Pi OS (เวอร์ชัน 64-bit) ลงใน MicroSD Card ให้เรียบร้อย

2. Install Dependencies: พิมพ์คำสั่งเพื่อลงไลบรารีที่จำเป็น

Terminal
sudo apt update
sudo apt install python3-pip
pip3 install opencv-python numpy pillow

3. Install Coral TPU Runtime: ติดตั้งไดรเวอร์สำหรับ Google Coral USB Accelerator

Terminal
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt update
sudo apt install libedgetpu1-std

📦 Download Model: สำหรับโปรเจกต์นี้เราจะใช้โมเดล AI ที่คอมไพล์มาแล้วสำเร็จรูปชื่อว่า: mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite ครับ

💻 โค้ด Python ฉบับเต็ม (Full Python Code)

เมื่อเตรียมทุกอย่างพร้อมแล้ว นำโค้ดด้านล่างนี้ไปเซฟเป็นไฟล์ (เช่น security.py) และรันได้เลยครับ! โค้ดนี้จะคอยเฝ้ารอสัญญาณจาก PIR พอมีคนเดินผ่านปุ๊บ มันจะเรียก AI มาตรวจจับใบหน้า ถ้าเจอคนเมื่อไหร่ เสียงเตือนจะดังทันทีและเซฟรูปผู้บุกรุกเก็บไว้ด้วยครับ

Python
import cv2
import time
import RPi.GPIO as GPIO
from pycoral.adapters import common
from pycoral.adapters import detect
from pycoral.utils.edgetpu import make_interpreter

# GPIO setup
PIR_PIN = 17
BUZZER_PIN = 27

GPIO.setmode(GPIO.BCM)
GPIO.setup(PIR_PIN, GPIO.IN)
GPIO.setup(BUZZER_PIN, GPIO.OUT)

# Load model
interpreter = make_interpreter('model.tflite')
interpreter.allocate_tensors()

cap = cv2.VideoCapture(0)

def alert():
    GPIO.output(BUZZER_PIN, True)
    time.sleep(1)
    GPIO.output(BUZZER_PIN, False)

while True:
    if GPIO.input(PIR_PIN):
        print("Motion detected!")

        ret, frame = cap.read()
        if not ret:
            continue

        _, scale = common.set_resized_input(
            interpreter, (frame.shape[1], frame.shape[0]), lambda size: cv2.resize(frame, size)
        )

        interpreter.invoke()
        objs = detect.get_objects(interpreter, 0.5, scale)

        for obj in objs:
            if obj.id == 0:  # person class
                print("Human detected!")
                cv2.imwrite("intruder.jpg", frame)
                alert()
                break

    time.sleep(0.5)

🚀 แนวทางการพัฒนาในอนาคต (Future Improvements)

โปรเจกต์นี้ยังสามารถต่อยอดความเจ๋งได้อีกเยอะเลยครับ เช่น:

  • เพิ่มระบบส่งแจ้งเตือนเข้า Telegram alerts
  • ใส่ระบบ Face recognition เพื่อแยกคนในบ้านกับคนนอก
  • ปรับแต่งกล้องให้รองรับ Night vision สำหรับมองตอนกลางคืน
  • เพิ่มระบบ Battery backup สำรองไฟตอนไฟดับ
  • สร้าง Web dashboard เอาไว้ดูภาพคนบุกรุกผ่านเบราว์เซอร์

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

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

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

 

แท็ก


Blog posts

เข้าสู่ระบบ

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

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