Introduction
การปั่นจักรยานกลายเป็นส่วนสำคัญในชีวิตพี่ไปแล้ว พี่เลือกที่จะปั่นไปเรียนทุกครั้งที่มีโอกาส แต่มันมีปัญหาอยู่นิดนึงคือการส่งสัญญาณเลี้ยว โดยเฉพาะเวลารถเยอะๆบนถนน พี่เลยคิดไอเดียขึ้นมา: ติดไฟเลี้ยวให้กับจักรยานซะเลย! เวลาจะเลี้ยวขวา ก็แค่กดปุ่มที่ด้ามจับขวา เลี้ยวซ้ายก็กดปุ่มซ้าย ไอเดียคือทำให้การส่งสัญญาณง่ายเหมือนกดปุ่ม ไม่ต้องเอามือออกจากพวงมาลัยกลางถนนอีกต่อไป
การส่งสัญญาณมือตอนกลางคืนในเมือง รถที่วิ่งเร็วๆมองไม่เห็นเลย นั่นคือสูตรสำเร็จของอุบัติเหตุ! Direction Indicator for Bike ตัวนี้ใช้การสวิตช์แบบโซลิดสเตตอิเล็กทรอนิกส์เพื่อสร้างการแสดงผลที่ชัดเจน มองเห็นได้ชัวร์! โดยใช้ Arduino ควบคุมให้ไฟ LED กะพริบไล่ระดับสวยๆ แบบ "Audi-style" ผู้ปั่นสามารถสั่งสัญญาณเลี้ยวซ้ายหรือขวาจากสวิตช์คู่บนพวงมาลัยได้เลย รับรองว่ารถด้านหลังจะเห็นชัดแม้ในหมอกหนาหรือฝนตก
Step 1: Design
พี่ตัดสินใจติดไฟ LED เลี้ยวไว้ที่ท้ายจักรยาน (ที่วางของ) ตำแหน่งนี้จะทำให้คนขับรถด้านหลังมองเห็นได้ดี พี่วางแผนจะติด Arduino ไว้ด้านหลังไฟ LED ในกล่องไม้ที่ตัดด้วยเลเซอร์ และติดปุ่มกดที่พวงมาลัยด้วยชิ้นส่วนที่พิมพ์จากเครื่อง 3D Printer ให้พอดีกับจักรยานของพี่ ชิ้นส่วน 3D พวกนี้ต้องออกแบบให้เข้ากับขนาดจักรยานเป๊ะๆ พี่เลยสร้างภาพ Orthographic Projection ขึ้นมาเพื่อดูรูปร่างและขนาดให้ชัดเจน
Step 2: 3D Design and Printing
พี่ใช้ Autodesk Inventor ในการออกแบบชิ้นส่วน 3D พอออกแบบเสร็จก็ส่งไปพิมพ์ด้วยเครื่อง Tinkerine Ditto Pro 3D Printer เลยจ้า
Step 3: Laser Cutting
- ใช้ AutoCAD วาดแบบสำหรับกล่องไม้ สำหรับกล่องพี่เลือกฝาแบบสไลด์เพราะมันมีปัญหาน้อยสุดและทำง่าย รวมถึงเจาะรูสำหรับต่อ Power Bank เข้ากับ Arduino ด้วย พอวาดแบบเสร็จก็ส่งไปตัดด้วยเลเซอร์ Trotec Speedy 100 เลย
- ใช้กาวไม้ทาบริเวณร่องฟันปลา (finger) เพื่อประกอบกล่องแต่ละชิ้นเข้าด้วยกัน
Step 4: Wiring
- ติดกาว Mini Breadboard ไว้ที่ด้านข้างของกล่องไม้
- วาง Arduino ลงในกล่องไม้
- วาง Power Bank ลงในกล่องไม้ แล้วต่อสาย USB เข้ากับ Arduino
- บัดกรีตัวต้านทาน (Resistor) 470 โอห์มเข้ากับขาแคโทด (Cathode) ของ LED แต่ละดวง และบัดกรีสายไฟเข้ากับปลายตัวต้านทานและขาแอโนด (Anode) อย่าลืมใส่ท่อหดความร้อน (Heat-shrink tube) ให้กับจุดบัดกรีด้วยนะ
- ติดหัว Crimp Pin ที่ปลายสายไฟของ LED แต่ละดวง
- ต่อสายไฟจากขาแอโนดของ LED เข้ากับขา Data ของ Arduino (ไฟเลี้ยวซ้าย: ขา 12,11,10,9,8; ไฟเลี้ยวขวา: ขา 7,6,5,4,3)
- ต่อสายไฟจากขาแคโทดของ LED ทั้งหมดเข้ากับ Mini Breadboard ให้เชื่อมต่อถึงกัน
- ต่อสายไฟจากสายแคโทดที่เชื่อมกันแล้ว ไปยังขา Ground (GND) ของ Arduino
- บัดกรีสายไฟ 2 เส้นเข้ากับขาหนึ่งของปุ่มกดแต่ละปุ่ม สำหรับขาอีกด้าน (ที่ไม่ได้ต่อสายไฟ) ที่เราตัดสินใจจะต่อเข้ากับ Ground ของ Arduino ให้บัดกรีตัวต้านทาน (Resistor) 10k โอห์มและสายไฟเข้ากับปลายมัน อย่าลืมใส่ท่อหดความร้อนให้จุดบัดกรีด้วย
- บีบหัวต่อ (Crimp) เข้ากับปลายสายของปุ่มกดแต่ละปุ่มให้แน่นหนา
- ต่อขาของปุ่มกด (ขาที่อยู่ตรงข้ามกับขาที่อยู่ติดกัน) เข้ากับขา Data ของ Arduino (ปุ่มซ้าย: ขา 13; ปุ่มขวา: ขา 2)
- ต่อสายจากปุ่มกด (สายที่เราตัดสินใจจะต่อลง Ground ของ Arduino) เข้ากับขา Cathode ของ LED ที่ต่ออยู่บน Mini Breadboard
- ต่อสายที่เหลือจากปุ่มกด เข้ากับขา 5V ของ Arduino
รายละเอียดเทคนิคเพิ่มเติม: สวิตช์แมททริกซ์และ Pull-Up Resistor
ถ้าน้องต่อสวิตช์เข้ากับ Arduino โดยไม่มีแรงดันอ้างอิงที่เสถียร ขาดิจิตอลนั่นจะ "ลอย" (Float) ทำงานมั่วซั่วไปหมดเพราะสัญญาณรบกวนจากบรรยากาศ!
- สวิตช์บนมือจับจักรยาน (ซ้าย/ขวา) จะต่อตรงระหว่างขาดิจิตอล (เช่น ขา 2 และ 3) กับ GND
- Arduino ต้องเปิดใช้งานตัวต้านทาน Pull-Up ภายใน!
pinMode(LEFT_SWITCH, INPUT_PULLUP);- คำสั่งนี้จะล็อกขาให้อยู่ที่ 5V อย่างมั่นคง พอนักปั่นกดสวิตช์ มันจะทำให้ขาดิจิตอลนั้นต่อลง Ground ทันที ทำให้อ่านค่าได้เป็น
LOWอย่างชัดเจน!
void loop() {
if (digitalRead(LEFT_SWITCH) == LOW) { // นักปั่นต้องการเลี้ยวซ้าย!
// เปิดไฟ LED เป็นทิวแถวแบบสวยงาม!
for (int i=4; i<=7; i++) {
digitalWrite(i, HIGH); // เปิดไฟ LED ในแถวนั้น!
delay(50); // ให้เอฟเฟกต์ไล่แสง!
}
delay(200);
// ปิดไฟทั้งหมดเพื่อรีเซ็ตวงจร!
for (int i=4; i<=7; i++) { digitalWrite(i, LOW); }
delay(200);
}
}
รายละเอียดเทคนิคเพิ่มเติม: อัพเกรดไปใช้ LED Strip 12V ขนาดใหญ่
LED 5mm ธรรมดาของ Arduino นั้นมองไม่เห็นหรอกถ้าคนขับรถบรรทุกอยู่หลังเรา 100 เมตร
- น้องต้องใช้ LED Strip สีเหลือง 12 Volt ที่สว่างมากๆ หรือไม่ก็ WS2812B NeoPixels!
- Arduino ไฟไม่พอสำหรับ LED 12V โดยตรง แกต้องใช้ TIP120 Darlington Transistors หรือ IRLZ44N Logic-Level MOSFETs!
- Arduino จะส่งสัญญาณอ่อนๆ 5V ไปที่ขา "Gate" ของ MOSFET ซึ่งทำหน้าที่เหมือนประตูน้ำอิเล็กทรอนิกส์ พอเปิดก็จะปล่อยกระแสไฟจากแบตเตอรี่รถยนต์ 12V เข้าไปเลี้ยง LED Strip ได้เต็มที่!
รายละเอียดเทคนิคเพิ่มเติม: อุปกรณ์ระบบไฟสัญญาณสำหรับยานพาหนะ
- Arduino Nano หรือ Pro Mini (บอร์ดเล็กซ่อนง่ายในกระเป๋าใต้เบาะหรือท่อ PVC)
- สวิตช์แบบกดที่มือจับหรือปลายแฮนด์ (ต้องกันน้ำให้ดี ฝนตกจะได้ไม่พัง!)
- LED Strip สีเหลืองสว่างจ้า (WS2812B สำหรับเอฟเฟกต์ซับซ้อน, หรือ LED Strip 12V ธรรมดาสำหรับความสว่างสูงสุด)
- Logic Level N-Channel MOSFETs (จำเป็นมากสำหรับการสวิตช์กระแสสูงเพื่อให้ไฟสว่างพอสะกดสายตาคนขับข้างหลัง)
- แบตเตอรี่ Li-Ion แพ็ค 18650 แบบทนทาน (เพื่อจ่ายกระแสสูงที่จำเป็นสำหรับให้ไฟสว่างสุดขีดตลอดการปั่นหลายชั่วโมง)
ขั้นตอนที่ 5: ประกอบชิ้นส่วนและติดตั้งบนจักรยาน
พี่ใช้ น็อต สกรู และโบลท์ ในการยึดชิ้นส่วน 3D พิมพ์แต่ละชิ้นเข้าด้วยกัน และใช้กาวร้อน (Hot Glue) สำหรับยึดชิ้นส่วนอิเล็กทรอนิกส์เข้ากับชิ้นส่วนที่พิมพ์มา:
สำหรับสายยาวๆ ที่วิ่งจากปุ่มกดกับไฟ LED ไปหา Arduino นี่ พี่จัดการรวบมันด้วยสายรัด (zip ties) ติดกับตัวรถไปเลย งานนี้เรียบร้อย!
จุดที่ปรับปรุง/อัพเกรดได้ (สำหรับน้องที่อยากจัดหนัก)
- ทำไฟเลี้ยวให้อยู่ในกล่องเดียวกับ Arduino ซะเลย จะได้ดูโปร
- เพิ่มไฟเลี้ยวที่หน้าเสือด้วย สว่างกว่า ปลอดภัยกว่า
- จัดระเบียบสายไฟให้เรียบร้อยกว่านี้ งานจะได้ดูเทพๆ