กลับไปหน้ารวมไฟล์
direction-indicator-for-bike-4edc32.md

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

  1. ใช้ AutoCAD วาดแบบสำหรับกล่องไม้ สำหรับกล่องพี่เลือกฝาแบบสไลด์เพราะมันมีปัญหาน้อยสุดและทำง่าย รวมถึงเจาะรูสำหรับต่อ Power Bank เข้ากับ Arduino ด้วย พอวาดแบบเสร็จก็ส่งไปตัดด้วยเลเซอร์ Trotec Speedy 100 เลย
  1. ใช้กาวไม้ทาบริเวณร่องฟันปลา (finger) เพื่อประกอบกล่องแต่ละชิ้นเข้าด้วยกัน

Step 4: Wiring

  1. ติดกาว Mini Breadboard ไว้ที่ด้านข้างของกล่องไม้
  2. วาง Arduino ลงในกล่องไม้
  3. วาง Power Bank ลงในกล่องไม้ แล้วต่อสาย USB เข้ากับ Arduino
  1. บัดกรีตัวต้านทาน (Resistor) 470 โอห์มเข้ากับขาแคโทด (Cathode) ของ LED แต่ละดวง และบัดกรีสายไฟเข้ากับปลายตัวต้านทานและขาแอโนด (Anode) อย่าลืมใส่ท่อหดความร้อน (Heat-shrink tube) ให้กับจุดบัดกรีด้วยนะ
  2. ติดหัว Crimp Pin ที่ปลายสายไฟของ LED แต่ละดวง
  3. ต่อสายไฟจากขาแอโนดของ LED เข้ากับขา Data ของ Arduino (ไฟเลี้ยวซ้าย: ขา 12,11,10,9,8; ไฟเลี้ยวขวา: ขา 7,6,5,4,3)
  4. ต่อสายไฟจากขาแคโทดของ LED ทั้งหมดเข้ากับ Mini Breadboard ให้เชื่อมต่อถึงกัน
  5. ต่อสายไฟจากสายแคโทดที่เชื่อมกันแล้ว ไปยังขา Ground (GND) ของ Arduino
  6. บัดกรีสายไฟ 2 เส้นเข้ากับขาหนึ่งของปุ่มกดแต่ละปุ่ม สำหรับขาอีกด้าน (ที่ไม่ได้ต่อสายไฟ) ที่เราตัดสินใจจะต่อเข้ากับ Ground ของ Arduino ให้บัดกรีตัวต้านทาน (Resistor) 10k โอห์มและสายไฟเข้ากับปลายมัน อย่าลืมใส่ท่อหดความร้อนให้จุดบัดกรีด้วย
  1. บีบหัวต่อ (Crimp) เข้ากับปลายสายของปุ่มกดแต่ละปุ่มให้แน่นหนา
  2. ต่อขาของปุ่มกด (ขาที่อยู่ตรงข้ามกับขาที่อยู่ติดกัน) เข้ากับขา Data ของ Arduino (ปุ่มซ้าย: ขา 13; ปุ่มขวา: ขา 2)
  1. ต่อสายจากปุ่มกด (สายที่เราตัดสินใจจะต่อลง Ground ของ Arduino) เข้ากับขา Cathode ของ LED ที่ต่ออยู่บน Mini Breadboard
  2. ต่อสายที่เหลือจากปุ่มกด เข้ากับขา 5V ของ Arduino

รายละเอียดเทคนิคเพิ่มเติม: สวิตช์แมททริกซ์และ Pull-Up Resistor

ถ้าน้องต่อสวิตช์เข้ากับ Arduino โดยไม่มีแรงดันอ้างอิงที่เสถียร ขาดิจิตอลนั่นจะ "ลอย" (Float) ทำงานมั่วซั่วไปหมดเพราะสัญญาณรบกวนจากบรรยากาศ!

  1. สวิตช์บนมือจับจักรยาน (ซ้าย/ขวา) จะต่อตรงระหว่างขาดิจิตอล (เช่น ขา 2 และ 3) กับ GND
  2. Arduino ต้องเปิดใช้งานตัวต้านทาน Pull-Up ภายใน!
  3. pinMode(LEFT_SWITCH, INPUT_PULLUP);
  4. คำสั่งนี้จะล็อกขาให้อยู่ที่ 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 สัญญาณเลี้ยว (ใช้กาวตราช้าง)
ปุ่มกดซ้าย (ใช้กาวร้อน)
ปุ่มขวา (กาวร้อน)

สำหรับสายยาวๆ ที่วิ่งจากปุ่มกดกับไฟ LED ไปหา Arduino นี่ พี่จัดการรวบมันด้วยสายรัด (zip ties) ติดกับตัวรถไปเลย งานนี้เรียบร้อย!

จุดที่ปรับปรุง/อัพเกรดได้ (สำหรับน้องที่อยากจัดหนัก)

  1. ทำไฟเลี้ยวให้อยู่ในกล่องเดียวกับ Arduino ซะเลย จะได้ดูโปร
  2. เพิ่มไฟเลี้ยวที่หน้าเสือด้วย สว่างกว่า ปลอดภัยกว่า
  3. จัดระเบียบสายไฟให้เรียบร้อยกว่านี้ งานจะได้ดูเทพๆ

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x AutoCAD 2023"
  - "1x Arduino IDE 1.8.13"
  - "1x Autodesk Inventor"
  - "1x Tinkerine Suite 3 (No longer supported; Use TInkerine Cloud)"
author: "luisc24"
category: "Wearables, Health & Fitness"
components:
  - "1x Plywood Sheets"
  - "1x USB Cable for Arduino UNO"
  - "1x Mini breadboard - White"
  - "1x Generic Pins"
  - "1x Hot glue gun (generic)"
  - "1x Trotec Speedy 100 Laser and Engraver"
  - "1x 5V Power Bank"
  - "1x Various cables, bolts, nuts and screws"
  - "1x Wood Glue"
  - "1x Zip ties"
  - "1x Solomon SL-30 Soldering Station"
  - "10x LED (generic)"
  - "10x 470 Ohm Resistor"
  - "2x 10k Ohm Resistor"
  - "1x Heat Shrink Tubing, Assorted Sizes"
  - "1x Tinkerine Ditto Pro 3D Printer"
  - "1x 3D printing filament"
  - "1x Arduino Uno Rev3"
  - "2x Tactile Push Button"
description: "Commuter safety electronics! Engineer an explicitly bright, massive solid-state LED directional matrix strapped directly to a bicycle frame, enforcing rigid sequential blinking algorithms entirely independent of typical dynamo constraints."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/f6164a20-b137-42f6-b517-5a450dccbaab.ino"
encryptedPayload: "U2FsdGVkX1/RMdCiUNFt8vBgMCb3GcV8rGr6fU9OzBVT99X+qGUG2HvRZ82Qr3fmERduqDjQMQhG1xhq2o+b6vR0KkV/+w/aQZF37gERgcNZgJAN+ebanFbT8D1cGpQ2/ziabyKhvhTR+4ExlM27AfRfSlhc59YNgjkvFZi8eyw44WZVaBtI/P0J6vaMugdmAy40eQdCy+kN7VAo6OpIikdjzxqm6vildgbQkUGYr7xuisXRCTXJx33+Y0uuVYeA"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/direction-indicator-for-bike-4edc32_cover.jpg"
lang: "en"
likes: 1
passwordHash: "0e7232690d687380f6f2d04165c4b59e0496fbfcf413b84814937a158090b187"
price: 3
seoDescription: "Build a Direction Indicator for your Bike. Stay safe and keep your hands on the handle bar while signaling at intersections."
tags:
  - "Lights"
  - "Transportation"
title: "ไฟเลี้ยวจักรยาน เทพๆ ปลอดภัยจัดเต็ม!"
tools: []
videoLinks:
  - "https://vimeo.com/885726327?share=copy#t=0"
views: 5998