ภาพรวมโครงงาน (Overview)
โครงงานนี้เหมาะสำหรับ นักศึกษา, Maker มือใหม่ หรือช่างไฟฟ้าที่อยากเริ่มทำระบบอัตโนมัติ โดยใช้บอร์ด ESP32 ควบคุม Servo Motor และ IR Sensor เพื่อทำระบบที่จอดรถอัตโนมัติ สามารถนับจำนวนรถเข้า-ออกได้แบบ Real-time และสั่งเปิด/ปิดไม้กั้นอัตโนมัติ
จุดเด่นของระบบนี้:
- ไม่ต้องใช้คอมพิวเตอร์ควบคุมตลอดเวลา
- สามารถแสดงผลจำนวนรถคงเหลือผ่านจอ LCD / OLED
- ขยายระบบเชื่อมต่อ WiFi หรือส่งข้อมูลเข้าแอป Smart Farm / IoT ได้ง่าย
- เป็นพื้นฐานต่อยอดระบบคิดค่าจอดหรือแจ้งเตือนผ่านมือถือ
อ่านเพิ่มเติม: ESP32 คืออะไร
อุปกรณ์ที่ใช้ (Components)
- ESP32 Dev Module
- IR Sensor แบบดิจิตอล จำนวน 2 ตัว (ตัวแรกวางที่ทางเข้า, ตัวที่สองวางที่ทางออก)
- Servo Motor (แนะนำ SG90 หรือ MG996R ถ้าต้องการแรงบิดสูง)
- จอ LCD 16×2 I2C หรือ OLED SSD1306 (ทางเลือก)
- สาย Jumper, Breadboard
- แหล่งจ่ายไฟ 5V 2A สำหรับ Servo
📌 แนะนำให้ดูการต่อจอ LCD เพิ่มเติม: การใช้งาน LCD I2C กับ ESP32
หลักการทำงานของระบบ (How It Works)
IR Sensor ทำงานแบบ beam break (ตัดลำแสงอินฟราเรด)
เมื่อ IR1 ตรวจจับรถเข้า → เพิ่มตัวแปร
carCount++เมื่อ IR2 ตรวจจับรถออก → ลดตัวแปร
carCount--ถ้า
carCountน้อยกว่าหรือเท่ากับ 0 ให้คงค่าไว้ที่ 0 (ป้องกันค่าติดลบ)Servo Motor ทำหน้าที่เปิด-ปิดไม้กั้นอัตโนมัติ
แสดงจำนวนรถบนจอ LCD / OLED แบบ Real-time
📌 อ่านเพิ่มเติมเกี่ยวกับการควบคุมอุปกรณ์: ESP32 Web Server Control Relay Module
การต่อวงจร (Circuit Diagram)
- IR1 ต่อเข้าขา GPIO 14 ของ ESP32
- IR2 ต่อเข้าขา GPIO 27 ของ ESP32
- Servo ต่อ GPIO 18 (PWM)
- จอ LCD ต่อ SDA/SCL ของ ESP32
- Servo ใช้ไฟ 5V จากแหล่งจ่ายภายนอกเพื่อป้องกันรีเซ็ตบอร์ด
ดูภาพรวมตำแหน่งขา GPIO และการใช้งานเพิ่มเติมได้ที่ ESP32 Pinout Devkit V1
โค้ดตัวอย่าง Arduino IDE (Source Code)
กรุณา เข้าสู่ระบบ เพื่อดาวน์โหลด
เริ่มต้นกับ Arduino esp32 ง่าย ๆ เพียงอ่าน Arduino IDE Guide — อธิบายตั้งแต่การติดตั้งจนถึงการอัปโหลดโค้ดให้บอร์ด
อธิบายโค้ด (Code Explanation) – เวอร์ชัน ESP32
โค้ดนี้ใช้ไลบรารี ESP32Servoเพื่อให้ทำงานได้กับบอร์ด ESP32 โดยไม่ติดปัญหาความเข้ากันของไลบรารีเดิม
กำหนดพิน (Pin Mapping)
IR1_PIN= GPIO14 สำหรับ IR Sensor ด้านทางเข้าIR2_PIN = GPIO27 สำหรับ IR Sensor ด้านทางออก
SERVO_PIN= GPIO18 ใช้ควบคุม Servo Motor แบบ PWMจอ LCD เชื่อมผ่าน I2C (SDA/SCL) ของ ESP32
setup()
ตั้งค่า Pin ของ IR Sensor ให้เป็น
INPUT_PULLUPเพื่อกันสัญญาณลอยเริ่มต้น Servo ที่ความถี่ 50Hz และมุมปิดไม้กั้น (
closeGate())เริ่มต้นจอ LCD และแสดงค่าเริ่มต้นของ
carCount
loop()
อ่านค่าจาก IR1 และ IR2 (Active-LOW → LOW = มีรถตัดลำแสง)
ตรวจจับขอบสัญญาณขึ้น (rising edge) เพื่อป้องกันการนับซ้ำ
IR1 ตรวจจับ →
carCount++IR2 ตรวจจับ →
carCount--(มีเช็กไม่ให้ติดลบ)
เรียก
openGatePulse()เพื่อเปิดไม้กั้น 2 วินาทีแล้วปิดอัปเดตค่าบนจอ LCD ด้วย
printCount()
ฟังก์ชันเสริม
openGate()/closeGate()→ สั่ง Servo เปิดหรือปิดopenGatePulse()→ เปิดชั่วคราวตามเวลาที่กำหนดprintCount()→ แสดงจำนวนรถคงเหลือบนจอ LCD
📌 จุดเด่นโค้ดนี้
ใช้ไลบรารีที่รองรับ ESP32 โดยตรง → คอมไพล์ผ่านไม่ต้องแก้ core
มีระบบ debounce ด้วย
delay(DEBOUNCE_MS)เพื่อกันการนับซ้ำจากการสั่นของเซ็นเซอร์ป้องกันค่าจำนวนรถติดลบในตัว
📌 เพิ่มลูกเล่น: ส่งข้อมูลไปหน้าเว็บด้วย ESPAsyncWebServer Guide
การต่อยอดระบบ (Next Steps)
- เชื่อม WiFi → ส่งข้อมูลเข้า แอป PoPo
- บันทึก Log จำนวนรถด้วย Preferences
- ทำระบบคิดค่าจอดโดยจับเวลารถเข้า/ออก
- เพิ่มเซ็นเซอร์ตรวจจับช่องจอดว่าง
สรุป (Conclusion)
ระบบ ESP32 ที่จอดรถอัตโนมัติด้วย IR Sensor นี้
ทำงานแม่นยำ ใช้งานง่าย
ใช้ต้นทุนต่ำ เหมาะสำหรับการเรียนรู้และทำโครงงาน
สามารถต่อยอดเป็นระบบจริงขนาดเล็ก หรือเชื่อมต่อ IoT ได้ทันที
คำถามที่พบบ่อย (FAQ – ESP32 Parking)
Q: IR Sensor แบบไหนใช้ได้กับ ESP32?
A: → แบบ Digital Output ทำงานง่ายที่สุด
Q: Servo ต้องจ่ายไฟแยกไหม?
A: → แนะนำให้แยก เพื่อป้องกัน ESP32 รีเซ็ต
Q: ทำไม carCount ติดลบ?
A: → ต้องมีเงื่อนไขไม่ให้ค่าติดลบในโค้ด
Q: ใช้ 3 จุดนับรถได้ไหม?
A: → ได้ แต่ต้องเพิ่มเงื่อนไขในโค้ด
Q: ระบบจะพังไหมถ้าไฟดับ?
A: → ถ้าไม่เก็บค่าด้วย Preferences ค่า carCount จะหาย
Q: ทำให้เปิด-ปิดช้าลงได้ไหม?
A: → ปรับค่า delay ในฟังก์ชัน openGate() ตัวแปร GATE_OPEN_TIME
Q: ใช้จอ OLED แทน LCD ได้หรือไม่?
A: → ได้ เพียงเปลี่ยนไลบรารีและโค้ดแสดงผล
Q: ESP32 ต้องต่อกับ Breadboard ตลอดหรือเปล่า?
A: → ไม่จำเป็น ทำเป็น PCB ก็ได้
Q: สามารถใช้กับ Arduino UNO ได้ไหม?
A: → ได้ แต่จะไม่มี WiFi ในตัว
Q: เชื่อมต่อแอปมือถือควรใช้วิธีไหน?
A: → ใช้ WebSocket หรือ MQTT ผ่าน WiFi






