Project 05 • Smart People Counter

ระบบนับจำนวนผู้เข้า–ออกห้อง

หน้าเว็บตัวอย่างโครงงาน IoT สำหรับนักศึกษา โดยใช้เซ็นเซอร์ 2 จุดเพื่อตรวจทิศทางการเดินเข้าและออกจากห้อง ระบบจะเพิ่มจำนวนเมื่อมีผู้เข้า ลดจำนวนเมื่อมีผู้ออก และแจ้งเตือนเมื่อจำนวนคนเกินค่าที่กำหนด เหมาะสำหรับห้องเรียน ห้องประชุม หรือห้องปฏิบัติการ

2–4 คนขนาดทีมแนะนำ
3–5 สัปดาห์ระยะเวลาพัฒนา
Prototypeใช้ทดสอบจริงได้
Smart Room Counter
Entry / Exit Monitor
ONLINE
People

28

Status

NORMAL

IN / OUT

+1

Limit

40

Sensor A → Sensor B • ตรวจพบการเดินเข้า
Project Overview

แนวคิดโครงงาน

โครงงานนี้พัฒนาระบบนับจำนวนผู้เข้า–ออกห้อง โดยติดตั้งเซ็นเซอร์ 2 จุดบริเวณทางเข้า เช่น IR Sensor หรือ Ultrasonic Sensor เพื่อใช้ลำดับการตรวจจับในการแยกทิศทาง หาก Sensor A ทำงานก่อน Sensor B ให้ถือว่า “เข้า” และเพิ่มจำนวนคน หาก Sensor B ทำงานก่อน Sensor A ให้ถือว่า “ออก” และลดจำนวนคน ระบบสามารถแสดงจำนวนคนปัจจุบันบน OLED/Dashboard และแจ้งเตือนเมื่อจำนวนคนเกินค่าที่กำหนด

IR / Ultrasonic 2 จุด Direction Detection Arduino / ESP32 Over-capacity Alert

ข้อมูลสรุปโครงงาน

ระดับความยากกลาง
งบประมาณประมาณ 400–1,200 บาท
เหมาะกับPrototype ใช้งานจริง
ผลลัพธ์หลักนับเข้า–ออกตามทิศทาง
ดูรายการส่งงาน
System Infographic

แผนภาพอธิบายการทำงานภาพรวมของระบบ

ภาพด้านล่างแสดงลำดับการทำงานของระบบนับจำนวนผู้เข้า–ออกห้อง ตั้งแต่การตรวจจับที่เซ็นเซอร์ 2 จุด การวิเคราะห์ทิศทาง การปรับค่าจำนวนคน การแจ้งเตือนเมื่อเกินกำหนด และการแสดงผลบน Dashboard

ระบบนับจำนวนผู้เข้า–ออกห้อง Sensor A/B → Direction Logic → Count +/− → Alert → Dashboard 1 ตรวจจับ 2 จุด Sensor A และ Sensor B ติดตั้งบริเวณทางเข้า 2 อ่านลำดับสัญญาณ A → B = เข้า B → A = ออก 3 28 ปรับจำนวนคน เดินเข้า = Count +1 เดินออก = Count −1 4 ! ตรวจค่าความจุ ถ้าคนเกิน Limit ให้แจ้งเตือนทันที 5 แสดงผล Dashboard จำนวนคน สถานะห้อง และประวัติเข้า–ออก สรุปแนวคิดของระบบ Input: สัญญาณจาก Sensor A/B • Process: วิเคราะห์ลำดับการตรวจจับเพื่อระบุทิศทาง • Output: เพิ่ม/ลดจำนวนคนและแจ้งเตือนเมื่อเกินกำหนด เหมาะสำหรับ Prototype ใช้งานจริง เช่น ห้องเรียน ห้องประชุม ห้องปฏิบัติการ ห้องสมุด หรือพื้นที่ที่ต้องควบคุมจำนวนคน
Prototype Design

แบบ Prototype ระบบนับจำนวนผู้เข้า–ออกห้อง

ภาพนี้แสดงแนวคิดการออกแบบ Prototype สำหรับระบบนับจำนวนผู้เข้า–ออกห้อง โดยใช้ Sensor A และ Sensor B ตรวจจับลำดับการเดินผ่านประตู กล่องควบคุมแสดงจำนวนคนบน OLED พร้อมไฟ LED แสดงสถานะและ Buzzer แจ้งเตือน เมื่อจำนวนคนเกินค่าที่กำหนด รวมถึงส่วนประกอบภายใน เช่น ESP32/Arduino, เซ็นเซอร์, โมดูลจ่ายไฟ และการเชื่อมต่อ Dashboard

Prototype ระบบนับจำนวนผู้เข้าออกห้อง IoT Project05
ส่วนตรวจจับทิศทาง

ใช้ Sensor A และ Sensor B ติดตั้งบริเวณประตูเพื่ออ่านลำดับการเดินผ่าน หาก A → B ให้นับเป็นการเดินเข้า และหาก B → A ให้นับเป็นการเดินออกจากห้อง

ส่วนแสดงผลและแจ้งเตือน

แสดงจำนวนคนปัจจุบัน สถานะห้อง จำนวนเข้า–ออก และค่า Limit บน OLED พร้อมไฟ LED เขียว/เหลือง/แดง และ Buzzer เพื่อแจ้งเตือนเมื่อจำนวนคนเกินกำหนด

ส่วนควบคุมและ Dashboard

ใช้ ESP32/Arduino วิเคราะห์ Direction Logic และส่งข้อมูลจำนวนคนแบบ Real-time ไปยัง Dashboard เพื่อดูสถานะห้องและประวัติการเข้า–ออกย้อนหลัง

Problem & Motivation

ปัญหาและแนวทางแก้ไข

ห้องเรียนหรือห้องประชุมบางแห่งต้องจำกัดจำนวนผู้ใช้งาน แต่การนับด้วยคนอาจผิดพลาดและไม่สามารถติดตามแบบ Real-time ได้ ระบบนี้จึงใช้เซ็นเซอร์ 2 จุดเพื่อตรวจทิศทางการเดินเข้า–ออก ทำให้ทราบจำนวนคนปัจจุบัน สถานะความหนาแน่น และแจ้งเตือนเมื่อเกินจำนวนที่กำหนด

ควบคุมจำนวนคน

ทราบจำนวนคนในห้องแบบ Real-time และลดความแออัด

รู้ทิศทางเข้า–ออก

ใช้ลำดับ Sensor A/B เพื่อแยกว่าเดินเข้าหรือเดินออก

แจ้งเตือนเมื่อเกินกำหนด

แจ้งเตือนด้วยไฟ เสียง หรือ Dashboard เมื่อจำนวนคนเกิน Limit

Objectives

วัตถุประสงค์ของโครงงาน

1
ตรวจจับการผ่านประตู

ใช้เซ็นเซอร์ 2 จุดตรวจจับการเดินผ่านบริเวณทางเข้า

2
วิเคราะห์ทิศทาง

แยกทิศทางเข้า–ออกจากลำดับการทำงานของเซ็นเซอร์

3
นับจำนวนคน

เพิ่มหรือลดจำนวนคนปัจจุบันให้ถูกต้องและไม่ติดลบ

4
แจ้งเตือนและแสดงผล

แสดงสถานะห้องและแจ้งเตือนเมื่อจำนวนคนเกินที่กำหนด

Scope

ขอบเขตของโครงงาน

ขอบเขตที่ควรทำให้สำเร็จ
  • อ่านค่าสถานะจากเซ็นเซอร์ 2 จุดได้อย่างต่อเนื่อง
  • ตรวจลำดับ Sensor A → Sensor B เพื่อเพิ่มจำนวนคน
  • ตรวจลำดับ Sensor B → Sensor A เพื่อลดจำนวนคน
  • ป้องกันค่าจำนวนคนติดลบ และกำหนดความจุสูงสุดของห้องได้
  • แสดงจำนวนคน สถานะห้อง และแจ้งเตือนเมื่อเกินกำหนด
ข้อจำกัดของ Prototype
  • ถ้ามีหลายคนเดินสวนกันพร้อมกัน ระบบอาจนับคลาดเคลื่อน
  • ระยะห่างของเซ็นเซอร์ต้องเหมาะกับความเร็วการเดิน
  • ต้องกำหนด Timeout เพื่อป้องกันการนับค้างเมื่อหยุดกลางประตู
  • ควรทดสอบแสงรบกวนและมุมติดตั้งหากใช้ IR Sensor
Equipment

อุปกรณ์และเทคโนโลยีที่ใช้

อุปกรณ์หน้าที่หมายเหตุ
IR Sensor 2 ตัวตรวจจับการผ่านจุด A และ Bเหมาะสำหรับทางเดินแคบหรือประตูจำลอง
Ultrasonic Sensor 2 ตัวทางเลือกสำหรับวัดระยะคนผ่านเหมาะเมื่อใช้ระยะตรวจจับแบบปรับค่าได้
Arduino UNO / ESP32อ่านเซ็นเซอร์ วิเคราะห์ทิศทาง และคำนวณจำนวนคนESP32 เหมาะเมื่อต้องการ Wi‑Fi Dashboard
OLED/LCD Displayแสดงจำนวนคนและสถานะห้องเช่น ว่าง/ปกติ/หนาแน่น/เกินกำหนด
LED RGB / Buzzerแจ้งสถานะและเตือนเมื่อคนเกินไฟเขียว/เหลือง/แดง หรือเสียงเตือน
Blynk / ThingSpeak / Web Dashboardแสดงข้อมูลและบันทึกประวัติเหมาะสำหรับทีมที่ใช้ ESP32
System Architecture

สถาปัตยกรรมระบบ

Input

Sensor A/B ตรวจจับคนผ่านทางเข้า

Controller

Arduino/ESP32 วิเคราะห์ทิศทางและนับจำนวน

Output

OLED/LED/Buzzer แจ้งจำนวนและสถานะ

Dashboard

แสดงจำนวนคนและประวัติเข้า–ออกย้อนหลัง

Circuit Connection

ตารางการต่อวงจร

อุปกรณ์ขาอุปกรณ์ต่อกับ Arduino/ESP32คำอธิบาย
IR Sensor AOUTD2 / GPIO25ตรวจจับจุดแรกของทางเข้า
IR Sensor BOUTD3 / GPIO26ตรวจจับจุดที่สองของทางเข้า
IR Sensor A/BVCC / GND5V หรือ 3.3V / GNDจ่ายไฟให้เซ็นเซอร์
LED RGBR/G/BD8/D9/D10 หรือ GPIO16/17/18แสดงสถานะว่าง/ปกติ/หนาแน่น/เกินกำหนด
BuzzerSignalD7 / GPIO27แจ้งเตือนเมื่อจำนวนคนเกิน Limit
OLED I2CSDA/SCLA4/A5 หรือ GPIO21/22แสดงจำนวนคนปัจจุบันและสถานะห้อง
ข้อควรระวัง: ควรติดตั้งเซ็นเซอร์ A และ B ให้ห่างกันพอเหมาะ เช่น 10–25 ซม. เพื่อให้ระบบแยกทิศทางได้ชัดเจน และควรทดสอบ Timeout เมื่อมีคนหยุดค้างระหว่างเซ็นเซอร์
Working Process

กระบวนการทำงานของระบบ

1
อ่านสถานะ Sensor A และ B

ระบบอ่านสัญญาณจากเซ็นเซอร์ทั้งสองจุดอย่างต่อเนื่องเพื่อตรวจจับการเดินผ่านประตู

2
บันทึกลำดับการตรวจจับ

เมื่อ Sensor A หรือ B ตรวจพบก่อน ระบบจะจำสถานะเริ่มต้นและรออีกจุดทำงานภายในเวลาที่กำหนด

3
วิเคราะห์ทิศทาง

ถ้า A → B ให้นับเป็น “เข้า” และถ้า B → A ให้นับเป็น “ออก” โดยใช้ Timeout ป้องกันการนับผิด

4
ปรับจำนวนคน

เพิ่มหรือลดค่าจำนวนคนปัจจุบัน พร้อมป้องกันค่าติดลบและกำหนดจำนวนสูงสุดของห้อง

5
แสดงผลและแจ้งเตือน

แสดงจำนวนคนและสถานะห้องบน OLED/Dashboard และแจ้งเตือนหากจำนวนคนเกิน Limit

Example Code

ตัวอย่างโค้ด Arduino เบื้องต้น

const int sensorA = 2; const int sensorB = 3; const int ledGreen = 8; const int ledRed = 9; const int buzzer = 7; int peopleCount = 0; int limitCount = 40; unsigned long firstDetectedTime = 0; char firstSensor = 'N'; const unsigned long timeoutMs = 1200; void setup() { pinMode(sensorA, INPUT); pinMode(sensorB, INPUT); pinMode(ledGreen, OUTPUT); pinMode(ledRed, OUTPUT); pinMode(buzzer, OUTPUT); Serial.begin(9600); } void loop() { bool a = digitalRead(sensorA) == LOW; // ปรับตามชนิดเซ็นเซอร์ bool b = digitalRead(sensorB) == LOW; if (firstSensor == 'N') { if (a) { firstSensor = 'A'; firstDetectedTime = millis(); } else if (b) { firstSensor = 'B'; firstDetectedTime = millis(); } } else { if (firstSensor == 'A' && b) { peopleCount++; resetDirection(); } else if (firstSensor == 'B' && a) { if (peopleCount > 0) peopleCount--; resetDirection(); } if (millis() - firstDetectedTime > timeoutMs) { resetDirection(); } } if (peopleCount >= limitCount) { digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); tone(buzzer, 1000, 200); } else { digitalWrite(ledGreen, HIGH); digitalWrite(ledRed, LOW); } Serial.print("People Count = "); Serial.println(peopleCount); delay(80); } void resetDirection() { firstSensor = 'N'; firstDetectedTime = 0; }
แนวทางต่อยอด: หากใช้ ESP32 สามารถส่งจำนวนคนปัจจุบันและประวัติเข้า–ออกไปยัง Dashboard หรือ Google Sheet ได้
Dashboard Design

แนวทางออกแบบ Dashboard

Dashboard ควรแสดงข้อมูลที่จำเป็นต่อการติดตามจำนวนคนในห้อง เช่น จำนวนคนปัจจุบัน จำนวนเข้า–ออก สถานะความหนาแน่น และประวัติย้อนหลัง

  • จำนวนคนปัจจุบัน เช่น 28 คน
  • ความจุสูงสุดของห้อง เช่น 40 คน
  • สถานะห้อง: ว่าง / ปกติ / หนาแน่น / เกินกำหนด
  • จำนวนเข้าและออกในแต่ละช่วงเวลา
  • กราฟจำนวนคนย้อนหลังรายชั่วโมงหรือรายคาบเรียน
IoT Dashboard

Smart Room Counter

ONLINE
Current People

28

Limit

40

Today IN

126

Today OUT

98

Room Capacity
Testing Plan

แผนการทดสอบระบบ

กรณีทดสอบวิธีทดสอบผลที่คาดหวัง
เดินเข้า 1 คนให้ Sensor A ทำงานก่อน Sensor Bจำนวนคนเพิ่มขึ้น 1
เดินออก 1 คนให้ Sensor B ทำงานก่อน Sensor Aจำนวนคนลดลง 1 และไม่ติดลบ
หยุดค้างกลางประตูให้ Sensor แรกทำงานแต่ Sensor ที่สองไม่ทำงานภายใน Timeoutระบบยกเลิกการนับ ไม่เพิ่ม/ลดจำนวน
จำนวนคนเกินกำหนดจำลองให้ Count มากกว่าหรือเท่ากับ Limitไฟแดงหรือ Buzzer แจ้งเตือน
Dashboardดูค่าผ่านมือถือหรือเว็บข้อมูลจำนวนคนและสถานะอัปเดตต่อเนื่อง
Development Plan

แผนพัฒนาโครงงาน

แบ่งงานเป็นรอบสั้น ๆ เพื่อให้ทีมตรวจความคืบหน้าได้ต่อเนื่องและลดความเสี่ยงตอนรวมระบบ

ช่วงเวลากิจกรรมผลลัพธ์ที่ต้องได้
สัปดาห์ที่ 1วิเคราะห์ปัญหา กำหนด Requirement และออกแบบตำแหน่งติดตั้งเซ็นเซอร์Requirement, รายการอุปกรณ์, Block Diagram
สัปดาห์ที่ 2ต่อวงจร Sensor A/B และทดสอบการอ่านค่าตารางทดสอบระยะและตำแหน่งติดตั้ง
สัปดาห์ที่ 3เขียน Logic วิเคราะห์ทิศทาง A→B และ B→Aระบบนับเข้า–ออกได้ถูกต้องในกรณีพื้นฐาน
สัปดาห์ที่ 4เพิ่ม Dashboard และระบบแจ้งเตือนเมื่อเกิน LimitDashboard แสดงจำนวนคนและสถานะห้อง
สัปดาห์ที่ 5ทดสอบรวมระบบ ปรับปรุงกล่อง/สายไฟ และเตรียมนำเสนอPrototype พร้อมวิดีโอ รายงาน และสไลด์

รายการส่งงาน Project05

นักศึกษาควรส่งทั้งชิ้นงาน Prototype ไฟล์โค้ด วิดีโอสาธิต และรายงานสรุปผลการทดสอบ เพื่อแสดงให้เห็นว่าระบบทำงานได้จริง

  • แผนภาพการต่อวงจร Sensor A/B + Controller + OLED/LED/Buzzer
  • โค้ด Arduino/ESP32 พร้อมคำอธิบาย Logic การตรวจทิศทางและ Timeout
  • ภาพหรือวิดีโอสาธิตการเดินเข้า–ออกและการเปลี่ยนจำนวนคน
  • Dashboard หรือหน้าจอแสดงจำนวนคน สถานะห้อง และประวัติย้อนหลัง
  • ตารางผลการทดสอบอย่างน้อย 5 กรณี พร้อมสรุปข้อจำกัดของระบบ
Optional Extensions

แนวทางต่อยอดเพื่อเพิ่มคะแนน

บันทึกตามคาบเรียน

แยกข้อมูลตามวัน เวลา หรือคาบเรียนเพื่อวิเคราะห์การใช้งานห้อง

แจ้งเตือนมือถือ

ส่งแจ้งเตือนเมื่อจำนวนคนเกินกำหนดหรือระบบนับผิดปกติ

วิเคราะห์ความหนาแน่น

ทำกราฟช่วงเวลาที่มีคนเข้าใช้งานสูงสุดและจำนวนเฉลี่ยต่อวัน

เพิ่มการตรวจผิดพลาด

เพิ่ม Reset/Calibration และตรวจกรณีคนเดินสวนกันหรือหยุดค้าง

พร้อมพัฒนา Prototype ระบบนับจำนวนผู้เข้า–ออกห้อง

ใช้หน้านี้เป็นแนวทางสำหรับวางแผนโครงงาน เขียนรายงาน ทำสไลด์ และสาธิตผลงานปลายภาคในรายวิชา IoT