ไอเดีย
เฮ้ น้อง!
โปรเจกต์นี้เกิดจากปัญหาที่จอดรถนี่แหละ คือมันจะบอกว่าจุดนั้นว่างหรือมีรถจอดอยู่ สำหรับการจำลองนี้ พี่จะใช้เซ็นเซอร์อัลตราโซนิกสองตัว เพื่อจำลองที่จอดรถสองจุด ใช้ LED แบบ RGB สองตัว เพื่อบอกสถานะว่าจุดนั้นว่างหรือไม่ และใช้จอ LCD แบบ I2C เพื่อแสดงข้อมูลพร้อมรูปภาพ
คิดแบบนี้แหละ พี่อยากทำโปรเจกต์ง่ายๆ เพื่อแสดงการจำลองนี้ และหวังว่าจะช่วยใครบางคนที่พยายามจะทำแต่ยังไม่มีไอเดียได้บ้าง
ทุกวันนี้ ปัญหาหาที่จอดรถในห้างสรรพสินค้าหรือลานจอดรถใหญ่ๆ เป็นเรื่องปวดหัวของคนขับรถทุกคน โปรเจกต์นี้เลยถูกพัฒนาขึ้นมาเพื่อจำลอง ระบบที่จอดรถอัจฉริยะ (Smart Parking System) ที่อัพเดทสถานะความว่างของที่จอดรถแบบเรียลไทม์
ในชุดจำลองนี้ พี่เลือกใช้ เซ็นเซอร์อัลตราโซนิก (Ultrasonic Sensors) สองตัวเพื่อตรวจจับวัตถุในแต่ละจุดจอดรถ สถานะจะแสดงผ่าน LED แบบ RGB (สีเขียว/แดง) และสรุปผลแสดงบนหน้าจอ LCD ที่เชื่อมต่อผ่านโปรโตคอล I2C เพื่อความสวยงามและใช้ง่าย วิธีนี้สามารถนำไปประยุกต์ใช้จริงในระบบ เมืองอัจฉริยะ (Smart City) หรือที่จอดรถสมัยใหม่ได้เลย
วิศวกรรมแก้ปัญหา
ไอเดียแรกคืออยากทำโปรเจกต์เล็กๆ ง่ายๆ และใช้งานได้จริง เลยจะไม่ใช้สายไฟหรือชิ้นส่วนอะไรมากมาย แทนที่จะใช้ LED สีแดงสองตัวและ LED สีเขียวสองตัว พี่จะใช้แค่ LED แบบ RGB สองตัว โดยใช้แค่แสงสีแดงและสีเขียวจากมันเท่านั้น ส่วนตรงนี้พี่ใช้จอ LCD แบบ I2C เพื่อแสดงรูปภาพ เพราะมันใช้สายไฟแค่สี่เส้นและไม่ใช้พอร์ตดิจิตอลเลย
หัวใจของโปรเจกต์นี้คือ "เรียบง่ายแต่มีประสิทธิภาพ" ซึ่งมีรายละเอียดทางวิศวกรรมที่น่าสนใจดังนี้:
- การจัดการ GPIO และการแสดงผล: แทนที่จะใช้ LCD แบบขนานที่ต้องใช้สายไฟเยอะ พี่เลือกใช้ จอ LCD แบบ I2C ซึ่งใช้สายสัญญาณแค่สองเส้น (SDA และ SCL) เท่านั้น ช่วยประหยัดพิน พอร์ตดิจิตอล (Digital Port) บนบอร์ด Arduino ได้อย่างมาก และทำให้การ จัดการสายไฟ (wire management) ดูสะอาดตาขึ้น
- การเลือกไฟแสดงสถานะ: แทนที่จะใช้ LED สีแดงและสีเขียวแยกกันสี่ตัว พี่เลือกใช้แค่ LED แบบ RGB สองตัว โดยควบคุมการผสมสีเพื่อแสดงแค่สีแดง (เมื่อมีรถจอด) และสีเขียว (เมื่อจุดจอดว่าง) วิธีนี้ช่วยลดพื้นที่บนแผงวงจรและทำให้อุปกรณ์ดูทันสมัยขึ้น
- UI แบบกำหนดเอง: เพื่อให้ผู้ใช้เข้าใจสถานะได้ทันที พี่ออกแบบ ตัวอักษรพิเศษ (Custom Characters) เพื่อแสดงรูปภาพสถานะจำลองบนหน้าจอ LCD ซึ่งทำได้โดยใช้เครื่องมือออกแบบ ทำให้อินเทอร์เฟซดูเป็นมืออาชีพมากกว่าการใช้ตัวอักษรภาษาอังกฤษธรรมดา
- การประมวลผลจากเซ็นเซอร์และระยะทาง: พี่เลือกใช้ ไลบรารี (Library) เฉพาะทางเพื่อจัดการสัญญาณ Echo และ Trigger ทำให้การเขียนโค้ดสำหรับวัดระยะทางแม่นยำและเสถียรขึ้น
การวิเคราะห์ตรรกะของระบบ
การทำงานของระบบถูกออกแบบมาให้เป็นลูปที่วนตรวจสอบสถานะตลอดเวลา (Continuous Polling) ขั้นตอนการทำงานมีดังนี้
- การตรวจจับด้วยค่าระดับ (Threshold Sensing): โปรแกรมจะส่งคลื่นเสียงออกไปและวัดเวลาที่เสียงสะท้อนกลับมา เพื่อคำนวณหาระยะทาง (หน่วยเซนติเมตร) จากนั้นจะตั้งค่าระดับอ้างอิงไว้ (เช่น ถ้าระยะทางน้อยกว่า 10-20 ซม. จะถือว่ามีรถจอด)
- การตัดสินใจ (Decision Making):
- กรณี: มีรถจอด (Occupied): เมื่อเซ็นเซอร์ตรวจจับวัตถุได้ภายในระยะที่กำหนด ระบบจะสั่งให้ขาที่เชื่อมต่อกับส่วนสีแดงของ RGB LED ติดสว่าง พร้อมทั้งส่งคำสั่งไปยังหน้าจอ LCD ให้แสดงไอคอน "รถ" หรือข้อความ "OCCUPIED" ในตำแหน่งของช่องจอดนั้น
- กรณี: ว่าง (Free): หากไม่พบวัตถุ ระบบจะสั่งให้ส่วนสีเขียวของ RGB LED ติดสว่าง และเปลี่ยนการแสดงผลบนหน้าจอเป็นสัญลักษณ์ช่องว่างหรือคำว่า "FREE"
- การรีเฟรชหน้าจอ (Display Refresh): ระบบจะวนลูปตรวจสอบทั้งสองช่องจอดสลับกันอย่างรวดเร็ว ทำให้การแสดงผลบนหน้าจอและไฟ LED ตอบสนองต่อการเปลี่ยนแปลงได้ทันที (Real-time update)
การทำงานของโปรเจค
นี่คือวิดีโอการทำงานของโปรเจค:
จากการทดสอบ ระบบสามารถแยกแยะช่องจอดรถว่างและมีรถจอดได้อย่างแม่นยำ RGB LED เปลี่ยนสีได้ถูกต้องตามเงื่อนไข และ I2C LCD แสดงข้อมูลสรุปได้ชัดเจน แม้จะใช้สายไฟเพียงไม่กี่เส้นก็ตาม
หวังว่าโปรเจคนี้จะเป็นไอเดียและแนวทางที่มีประโยชน์สำหรับน้องๆ ที่เริ่มต้นเรียนรู้ Arduino หรือกำลังมองหาต้นแบบระบบ Smart Parking แบบง่ายๆ ไว้พัฒนาต่อยอดนะ! สู้งานนะน้อง!