หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ DIY Bi-Directional Counter โดยใช้ Arduino และ IR Sensors

อยากสร้าง Bidirectional Visitor Counter ของคุณเองไหม? เพียงแค่มี Arduino และ IR Sensors หนึ่งคู่ คุณสามารถสร้าง Counter แบบ real-time ที่แทร็คคนเข้าและออกได้อย่างง่ายดาย จากนั้นจะแสดงผลบนหน้าจอ LCD โปรเจกต์ DIY นี้เหมาะสำหรับ Beginners อย่างยิ่ง

โปรเจกต์ DIY Bi-Directional Counter โดยใช้ Arduino และ IR Sensors

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

30,589 การดู
3 ถูกใจ

รายการอุปกรณ์และเครื่องมือ

1x Breadboard 100x160
🛒 สั่งซื้อ
1x Arduino UNO R3 - Made in italy
🛒 สั่งซื้อ
10x connecting wires
🛒 สั่งซื้อ
1x 12V DC Power Supply
🛒 สั่งซื้อ
1x 16x2 LCD display with I²C interface
🛒 สั่งซื้อ
}

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

คุณเคยสงสัยไหมว่า ห้างสรรพสินค้า, ลานจอดรถ หรือสถานที่จัดงานต่าง ๆ ติดตามจำนวนคนหรือรถยนต์ที่อยู่ภายในได้อย่างไร? คุณอาจจะนึกถึงกล้องที่ใช้ AI ขั้นสูง แต่ในความเป็นจริงแล้ว **ระบบที่ใช้ Sensor แบบง่ายๆ** ก็สามารถทำสิ่งนี้ได้อย่างมีประสิทธิภาพ! ด้วยการวาง IR Sensor ไว้ที่จุดเข้า/ออกเพียงจุดเดียว ระบบเหล่านี้จะตรวจจับทิศทางการเคลื่อนที่และนับจำนวนได้อย่างแม่นยำ โดยไม่ต้องใช้เทคโนโลยีที่ซับซ้อนเลย

โปรเจกต์ DIY นี้เหมาะอย่างยิ่งสำหรับการเรียนรู้:

  1. การจัดการ IR Sensor
  2. เทคนิคด้าน Hardware และ Software ที่ชาญฉลาด

พร้อมที่จะเริ่มกันหรือยัง? ติดตามคู่มือสอนทำโปรเจกต์แบบทีละขั้นตอน (Step-by-step) และสร้าง Bidirectional Counter ของคุณให้ใช้งานได้ตั้งแต่วันนี้! เริ่มสร้างสรรค์สิ่งใหม่ๆ กันเลย 🚀

ขั้นตอนที่ 1: เริ่มเตรียมอุปกรณ์ที่จำเป็นสำหรับการสร้าง

นี่คือรายการอุปกรณ์ที่เราต้องใช้ในการพัฒนาโปรเจกต์ของเรา

  1. Arduino UNO R3 Development Board
  2. IR Sensor หนึ่งคู่
  3. 16x2 I2C LCD Display
  4. Breadboard
  5. สายเชื่อมต่อ (Connecting wires)
  6. 12V Barrel Jack Power Adaptor

ก่อนที่จะไปดูแผนผังวงจรจริง ผมขอแนะนำให้คุณทำความเข้าใจเกี่ยวกับ System's Architecture ของ Bidirectional Counter ซึ่งจะช่วยให้เข้าใจการทำงานของระบบทั้งหมดได้อย่างรวดเร็วเพียงชั่วพริบตา

ไม่จำเป็นต้องพึ่งพาคำศัพท์ทางเทคนิคที่ยุ่งยาก... โดยเฉพาะอย่างยิ่งหากคุณเป็นมือใหม่ในด้าน Embedded ซึ่งอาจจะรู้สึกว่ามันซับซ้อนเกินไป

ขั้นตอนที่ 2: มาสร้าง Circuit Diagram สำหรับ Bidirectional Counter กัน

ด้านบนนี้ คุณจะพบกับแผนผังวงจรที่สมบูรณ์สำหรับ Bidirectional Counter โดยใช้ Arduino แผนผังวงจรด้านล่างแสดงวิธีเชื่อมต่อ Arduino, IR Sensor หนึ่งคู่ และ LCD Display เข้าด้วยกันเพื่อสร้างระบบที่ใช้งานได้จริง

อย่างที่ผมได้บอกไปก่อนหน้านี้ว่า หากคุณลองศึกษา System's Architecture ของ Bidirectional Counter คุณจะเข้าใจได้ง่ายว่าวงจรนี้ทำงานอย่างไร ทำไมเราถึงต้องใช้ IR Sensor สองตัว และ ทำไม IR Sensor เพียงตัวเดียวถึงไม่พอ

ยังไม่เข้าใจใช่ไหม? ไม่ต้องกังวล ลองดูบทความนี้ How IR sensor detects direction of Visitor movement? ซึ่งผมได้อธิบายทุกอย่างตั้งแต่ต้นจนจบโดยคำนึงถึงเหล่านักประดิษฐ์มือใหม่ (Blooming Makers) เป็นหลัก

ขั้นตอนที่ 2: พร้อมสำหรับการสร้าง Hardware จริง

ในภาพด้านบน คุณจะพบกับ Hardware setup จริงของระบบ Bidirectional Counter โดยใช้ Arduino และ IR Sensor โดยใช้แผนผังวงจรด้านบนเป็นข้อมูลอ้างอิง

สำหรับแหล่งจ่ายไฟ (Power supply) ผมเลือกใช้ 12V DC Power Adaptor เพื่อจ่ายไฟให้กับระบบทั้งหมดผ่านทาง Barrel jack connector

สำหรับวิดีโอสาธิตการเปลี่ยนอุปกรณ์ที่กระจัดกระจายอยู่บนโต๊ะทำงานของคุณให้กลายเป็น Bidirectional Counter ที่ใช้งานได้จริง สามารถดูได้ที่ลิงก์ YouTube นี้ - https://www.youtube.com/watch?v=khwQ4_nA5S4

ขั้นตอนที่ 3: เริ่มเขียน Code สำหรับ Arduino

ผมจะแนะนำคร่าวๆ เกี่ยวกับ Code นี้ โดยปกติแล้ว Code นี้จะทำให้ Arduino ตรวจสอบอย่างต่อเนื่องว่า Sensor ตัวไหนถูกกระตุ้น (Triggered) ก่อน จากนั้นจะตรวจสอบว่า Sensor ตัวถัดไปถูกกระตุ้นภายในระยะเวลา Timeout ที่กำหนดหรือไม่ จากข้อมูลดังกล่าว ระบบจะตรวจจับและนับจำนวนคนที่เดินเข้าไปข้างในและคนที่เดินออกมาข้างนอก จากนั้นจะคำนวณ จำนวนคนปัจจุบัน และแสดงผลค่าเหล่านั้นบน Display

หากคุณต้องการคำอธิบาย Code อย่างละเอียดทีละขั้นตอน สามารถเข้าไปดูได้ที่ Bidirectional Counter Code Walkthrough .

#include <LiquidCrystal_I2C.h>

// เริ่มต้นการทำงานของ LCD ด้วย I2C address 0x27

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int irPin1 = 2; // IR sensor 1 (ตัวตรวจจับทางเข้า) เชื่อมต่อกับ digital pin 2

const int irPin2 = 3; // IR sensor 2 (ตัวตรวจจับทางออก) เชื่อมต่อกับ digital pin 3

int in_count = 0; // ตัวแปรสำหรับเก็บจำนวนคนที่เดินเข้าไปข้างใน

int out_count = 0; // ตัวแปรสำหรับเก็บจำนวนคนที่เดินออกมาข้างนอก

int current_count = 0; // ตัวแปรสำหรับเก็บจำนวนคนปัจจุบันที่อยู่ข้างใน

const unsigned long timeout = 50; // ระยะเวลา Timeout สำหรับการตรวจจับวัตถุ (มิลลิวินาที)

void setup() {

/* เริ่มต้นการทำงานของ LCD Display */

lcd.init();

lcd.backlight();

lcd.setCursor(0, 0);

lcd.print("IN: 0 OUT: 0");

lcd.setCursor(0, 1);

lcd.print("Current: 0");


/* กำหนดค่า Pull up ให้กับ input pins */

pinMode(irPin1, INPUT_PULLUP);

pinMode(irPin2, INPUT_PULLUP);

}

void loop() {

/* ตรวจสอบว่า Sensor ตัวแรกถูกกระตุ้นหรือไม่ */

if (digitalRead(irPin1) == LOW) {

unsigned long startTime = millis();

while ((millis() - startTime) < timeout) {

if(digitalRead(irPin2) == LOW){

++in_count;

updateDisplay();

break;

}

}

// รอจนกว่า Sensor ทั้งสองตัวจะกลับสู่สถานะปกติ

while(!digitalRead(irPin1) || !digitalRead(irPin2));

}


/* ตรวจสอบว่า Sensor ตัวที่สองถูกกระตุ้นหรือไม่ */

else if (digitalRead(irPin2) == LOW) {

unsigned long startTime = millis();

while ((millis() - startTime) < timeout) {

if(digitalRead(irPin1) == LOW){

if(out_count < in_count){

++out_count;

updateDisplay();

break;

}

}

}

// รอจนกว่า Sensor ทั้งสองตัวจะกลับสู่สถานะปกติ

while(!digitalRead(irPin1) || !digitalRead(irPin2));

}


}

void updateDisplay() {

lcd.setCursor(4, 0);

lcd.print(" ");

lcd.setCursor(4, 0);

lcd.print(in_count);

lcd.setCursor(13, 0);

lcd.print(" ");

lcd.setCursor(13, 0);

lcd.print(out_count);

current_count = in_count - out_count;

lcd.setCursor(9, 1);

lcd.print(" ");

lcd.setCursor(9, 1);

lcd.print(current_count);

}

ขั้นตอนที่ 4: อัปโหลด Code ลงใน Arduino

ตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนที่แสดงในภาพด้านบนเพื่ออัปโหลด (Dump) Code ลงใน Arduino

หากขั้นตอนการอัปโหลดนี้ไม่สำเร็จ ให้ลองดูคู่มือ 10 Most Common Mistakes while using Arduino เพื่อแก้ไขปัญหา

ขั้นตอนที่ 5: มาทดสอบกันเลย

นี่คือช่วงเวลาที่น่าตื่นเต้นที่สุด ถึงเวลาทดสอบนวัตกรรมของเราแล้ว หากทุกอย่างถูกต้อง คุณจะเห็นการทำงานจริงตามที่แสดงใน Bidirectional Counter Working Demo.

เครื่องนับจำนวนแบบสองทิศทางนี้ ไม่เพียงแต่แสดงจำนวนคนหรือวัตถุปัจจุบันที่อยู่ภายในเท่านั้น แต่ยังติดตามและแสดงประวัติจำนวนคนที่เข้ามาและออกไปข้างนอกด้วย

สำหรับวิดีโอตัวเต็มตั้งแต่การตั้งค่าจนถึงการสาธิต: https://www.youtube.com/watch?v=khwQ4_nA5S4

ต้องการค้นพบโปรเจกต์เจ๋งๆ เพิ่มเติมหรือไม่? ลองเข้าไปดูคอลเลกชัน Arduino IoT Projects | Arduino Robotics Projects | Arduino AI Projects | Arduino Home Automation Projects | Raspberry Pi Projects | ESP32 Projects เพื่อสร้างแรงบันดาลใจในการสร้างสรรค์ครั้งต่อไปของคุณ!

Code

🔒 ปลดล็อก Code

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

รหัสอ้างอิงโปรเจกต์: diy-bi-directional-counter-using-arduino-ir-sensors-f23efb
1120 บาท
PromptPay QR Code