สารบัญ:

ตัวบ่งชี้จักรยานที่เรียบง่าย เปิดใช้งานระบบสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)
ตัวบ่งชี้จักรยานที่เรียบง่าย เปิดใช้งานระบบสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัวบ่งชี้จักรยานที่เรียบง่าย เปิดใช้งานระบบสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัวบ่งชี้จักรยานที่เรียบง่าย เปิดใช้งานระบบสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: #shorts #หินปูนเกาะหนามาก #scaling 2024, พฤศจิกายน
Anonim
Image
Image

สวัสดี! นี่เป็นคำสั่งสอนครั้งแรกของฉัน ฉันต้องการทำสิ่งต่าง ๆ จากศูนย์เสมอเพื่อดูว่ามันทำงานอย่างไรและใครไม่ชอบ DIY (ทำเอง) เมื่อคุณสามารถปรับเปลี่ยนบางสิ่งตามความต้องการของคุณได้ใช่ไหม แม้ว่างาน DIY จะน่าสนใจ แต่ก็ต้องใช้ความพยายามเล็กน้อยในการทำให้มันเกิดขึ้น การดูเว็บไซต์ Instructables เป็นวิธีที่ดีในการเริ่มต้นแรงบันดาลใจในการทำ DIY ของคุณ และนั่นคือวิธีที่ฉันเริ่มสร้างโครงการบางส่วนก่อนหน้านี้ แต่ฉันไม่เคยคิดเลยว่าจะทำอย่างนั้น

เมื่อโอกาสมาถึงแล้ว ฉันได้สร้างตัวบ่งชี้จักรยานด้วยการออกแบบที่เรียบง่ายและเปิดใช้งานระบบสัมผัส ฉันรู้ว่ามีคำแนะนำหรือแหล่งข้อมูลออนไลน์มากมายสำหรับตัวบ่งชี้จักรยาน แต่ส่วนใหญ่ใช้พื้นที่เพิ่มขึ้นหรือไม่ฉลาดพอที่จะปรับเปลี่ยนในลักษณะเฉพาะ หากคุณกำลังมองหาตัวบ่งชี้ที่ฉลาดพอที่จะตอบสนองความต้องการของคุณและให้โอกาสคุณในการปรับเปลี่ยนตามความต้องการของคุณ คำแนะนำนี้เหมาะสำหรับคุณ!

ทำไมตัวบ่งชี้จักรยาน?

ฉันชอบปั่นจักรยานรอบเมือง! ฉันใช้จักรยานของฉันและไปนั่งรถในตอนเช้าหรือตอนเย็น บางครั้งในตอนกลางคืนก็ยากที่จะขี่ เนื่องจากการจราจรด้านหลังคุณจะมองไม่เห็นคุณ และนั่นเป็นสัญญาณอันตราย นั่นคือเหตุผลที่ฉันต้องการสร้างอินดิเคเตอร์ด้วยวัสดุทั้งหมดที่ฉันมีที่บ้าน และยังดูดีบนจักรยานเมื่อคุณขี่ในเมืองโดยเปิดไฟสัญญาณ!

ทำโปรเจกต์แบบไม่ต้องเจอปัญหาก็ไม่เกิด! แต่ฉันจะบอกคุณถึงข้อผิดพลาดทั้งหมดที่ฉันทำในขณะที่สร้างสิ่งนี้เป็น "Handy Tip" เพื่อที่คุณจะได้ไม่พยายามทำมัน วิดีโอ YouTube ประกอบด้วยภาพประกอบเกี่ยวกับวิธีการสร้างโปรเจ็กต์ แอนิเมชั่นขนาดเล็กเพื่อสื่อถึงวิธีการทำงาน และลักษณะของตัวบ่งชี้เมื่ออยู่บนท้องถนน! ข้อมูลที่ซับซ้อนที่สุดจะได้รับในคำแนะนำนี้ ในขณะที่คุณดำเนินการ ฉันจะติดแท็กส่วนต่างๆ ของวิดีโอ youtube ของฉันเป็น "ไทม์ไลน์: " ในแต่ละขั้นตอนเพื่อให้คุณเห็นว่าสิ่งต่างๆ ทำงานอย่างไร คุณสามารถรับข้อมูลเพิ่มเติมได้โดยคลิกลิงก์ที่ไฮไลต์ที่ให้ไว้

คุณสมบัติของโครงการนี้:

  • ไฟเลี้ยวขวา
  • ไฟเลี้ยวซ้าย
  • ตัวบ่งชี้สายตากลางคืน
  • สัมผัสที่เปิดใช้งาน

ขั้นตอนที่ 1: วัสดุในการเริ่มต้น

ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ
  • ตัวต้านทาน (330 โอห์มและ 120 โอห์ม): 330 โอห์มและ 120 โอห์ม
  • Raspberry Pi 3: RPi 3
  • เขียงหั่นขนม: เขียงหั่นขนม
  • สายจัมเปอร์ (ชาย-ชาย, ชาย-หญิง, หญิง-หญิง): สายจัมเปอร์
  • สายไฟหลายเส้น: ลวดหลายเส้น
  • เซ็นเซอร์สัมผัสแบบ Capacitive (TTP223) - (2): Link
  • ไฟ LED RGB (ประเภทแคโทดทั่วไป) - (13): RGB LED แคโทดทั่วไป
  • ไฟ LED ปกติ - (2): LED
  • วัสดุบัดกรี: ชุดบัดกรี
  • บอร์ด Perf: บอร์ด Perf
  • พาวเวอร์แบงค์: พาวเวอร์แบงค์
  • 1 micro Farad Electrolytic Capacitor: ตัวเก็บประจุด้วยไฟฟ้า
  • LDR (ตัวต้านทานขึ้นอยู่กับแสง): LDR
  • เคเบิ้ลไทร์: เคเบิ้ลไทร์
  • เคเบิ้ล คอนซีลเลอร์: เคเบิ้ล คอนซีลเลอร์
  • สีอะครีลิคและแปรง (อุปกรณ์เสริม): สีและแปรง
  • กล่องเก็บของ 2 ช่องสำหรับประกอบ (1 ขนาดใหญ่และ 1 ขนาดกลาง)

ให้เพิ่มปริมาณตามที่ระบุไว้ข้างต้นเสมอ ฉันได้เชื่อมโยงส่วนประกอบใน Amazon และชุดซื้อที่ดีที่สุดสำหรับวัสดุบัดกรีแล้ว!

ไทม์ไลน์: รวบรวมวัสดุ

ขั้นตอนที่ 2: การทดสอบส่วนประกอบ

ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ
ส่วนประกอบการทดสอบ

มาทดสอบส่วนประกอบของคุณกันเถอะ! วิธีนี้มีประโยชน์มากในการแยกส่วนประกอบที่เสียหายหรือทำงานผิดปกติด้วยเหตุผลบางอย่าง และระยะนี้จะช่วยให้คุณได้รับประสบการณ์ใช้งานจริงเบื้องต้นกับส่วนประกอบต่างๆ และเรียนรู้สักเล็กน้อยก่อนที่จะสร้างโครงการทั้งหมด

ทดสอบชนิดของ RGB LED

มีไฟ LED RGB สองประเภทที่เราพบในตลาด ชนิดแคโทดทั่วไปและชนิดแอโนดทั่วไป

นี่เป็นคำแนะนำที่มีประโยชน์ (แต่ใหญ่กว่า) เนื่องจากฉันเชื่อมต่อ LED ตามที่เห็นจากวิดีโอนี้ และไฟ LED ไม่สว่างตามที่คาดไว้แม้จะตรวจสอบวงจรหลายครั้งแล้วก็ตาม จากนั้นฉันก็รู้ว่า LED นี้มีสองประเภทและเมื่อผ่านแผ่นข้อมูลฉันก็ได้วิธีแก้ปัญหา! ปัญหาเกี่ยวกับวงจรของฉันคือพินแคโทดทั่วไปเชื่อมต่อกับ 3.3V ตามที่กล่าวไว้และฉันได้เก็บ GPIO พินไว้ที่ HIGH ดังนั้นทั้งพินแคโทดทั่วไปและอีก 3 พินจึงมีศักยภาพเท่ากัน

วิธีแก้ปัญหา: ฉันเชื่อมต่อพินแคโทดทั่วไปกับพื้นและไฟ LED ติดสว่าง! เหตุผลที่ฉันไม่เปลี่ยนรหัสเพื่อให้หมุด GPIO ต่ำเพราะเราจะใช้ LED มากขึ้นในภายหลังและ RPi ให้สองพินที่ 3.3 V แก่เราซึ่งเราต้องการเพื่อวัตถุประสงค์อื่นเช่นกัน!

วิธีการทดสอบสำหรับประเภท?

ให้มัลติมิเตอร์อยู่ในโหมดความต่อเนื่อง แตะลีดที่ยาวที่สุดด้วยปลายสีแดงของมัลติมิเตอร์ และด้วยปลายสีดำ ให้แตะลีดอื่นๆ อันใดอันหนึ่ง หากไฟ LED สว่างขึ้นโดยทำตามขั้นตอนข้างต้น จะเป็นไฟ LED แบบ Common Anode RGB หากไม่เป็นเช่นนั้น ให้กลับด้านปลายมัลติมิเตอร์ทันที แตะลีดที่ยาวที่สุดด้วยปลายสีดำและปลายสีแดงกับลีดอื่นๆ ตอนนี้จะสว่างขึ้นเพื่อแสดงว่า LED เป็นไฟ LED แคโทด RGB ทั่วไป

เคล็ดลับที่มีประโยชน์: ฉันได้ใช้ประเภทแคโทดทั่วไปในโครงการนี้ พยายามรับประเภทเหล่านี้เท่านั้น แต่ถึงแม้ประเภทอื่นจะพร้อมใช้งานก็ไม่ต้องกังวล การเชื่อมต่อวงจรยังคงเหมือนเดิม ต้องสร้างความแตกต่างเพียงอย่างเดียวในรหัสที่ฉันจะให้เป็นความคิดเห็นถัดจากบรรทัดรหัสจริงที่คุณต้องเปลี่ยน หายใจเข้า

ไทม์ไลน์:ทดสอบ RGB

ข้อมูลอ้างอิง: วิธีทดสอบ RGB

ไฟ LED RGB สว่างขึ้น

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

สีแดง: ขา 11 (ตัวต้านทาน 330 โอห์ม)

สีเขียว: ขา 13 (ตัวต้านทาน 120 โอห์ม)

สีน้ำเงิน: ขา 15 (ตัวต้านทาน 120 โอห์ม)

ค่าตัวต้านทานแตกต่างกันไปเนื่องจากแรงดันไปข้างหน้าที่แตกต่างกันของลีด

เมื่อคุณเชื่อมต่ออย่างถูกต้องแล้ว ให้โค้ด RPi ใน python IDE ในตัวของมัน

นำเข้า RPi. GPIO เป็น GPIO

#หมายเลขพินสอดคล้องกับหมายเลขที่แน่นอนบน RPi GPIO Red_pin = 11 Green_pin = 13 Blue_pin = 15 #เชื่อมต่อพินแคโทดทั่วไปเข้ากับพิน 6 def turnOn(พิน): GPIO.setmode(GPIO. BOARD) GPIO.setup(พิน, GPIO. OUT) GPIO.output(pin, GPIO. HIGH) #GPIO.output(pin, GPIO. LOW) สำหรับประเภทขั้วบวกทั่วไป def turnOff(pin): GPIO.setmode(GPIO. BOARD) GPIO.setup(pin, GPIO. ออก) GPIO.output(pin, GPIO. LOW) #GPIO.output(pin, GPIO. HIGH) def redOn(): turnOn(Red_pin) def redOff(): turnOff(Red_pin) def greenOn(): turnOn(Green_pin) def greenOff(): turnOff(Green_pin) def blueOn(): turnOn(Blue_pin) def blueOff(): turnOff(Blue_pin) ลอง: while True: cmd = input("Type your command: ") if cmd == "red on ": #type คำสั่งอินพุตตามที่กล่าวไว้ภายใน "" redOn() elif cmd == "red off": redOff() elif cmd == "green on": greenOn() elif cmd == "green off": greenOff() elif cmd == "blue on": blueOn() elif cmd == "blue off": blueOff() else: print("Not a valid command") ยกเว้น KeyboardInterrupt: GPIO.cleanup()

ฉันอ้างถึงคำแนะนำนี้ โปรดตรวจสอบคำอธิบายโดยละเอียดและรหัสนี้!

ใช้รหัสเดียวกันด้านบนเพื่อตรวจสอบ LED หลายดวงร่วมกันโดยเชื่อมต่อแบบขนานบนเขียงหั่นขนมและนำจุดเดียวออกจากหมุดที่เชื่อมต่อเข้าด้วยกัน ใช้ค่าตัวต้านทานที่แตกต่างกันสำหรับแต่ละพินเพื่อตรวจสอบความสว่างของไฟ LED ของคุณ

เคล็ดลับที่มีประโยชน์: ตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อแบบขนานแบบพินเดียวกัน นั่นคือ หมุดสีแดงของ LED ดวงหนึ่งเชื่อมต่อกับหมุดสีแดงของ LED อีกดวงเท่านั้น

ไทม์ไลน์: ทำให้พวกเขาเปล่งประกาย!

การทดสอบทัชแพด

การเชื่อมต่อวงจรเป็นดังที่แสดงไว้ที่นี่ (ไทม์ไลน์) เชื่อมต่อตามที่แสดงและทดสอบทัชแพดของคุณโดยใช้รหัสต่อไปนี้

รหัส:

นำเข้า RPi. GPIO เป็น GPIO

จากเวลานำเข้า sleep GPIO.setmode(IO. BOARD) touchpad1 = 11 #pin 11 touchpad2 = 13 #pin 13 GPIO.setup(touchpad1, GPIO. IN) GPIO.setup(touchpad2, GPIO. IN) # เราสามารถคลับได้ทั้ง ข้อความข้างต้นรวมกันเป็น # GPIO.setup([touchpad1, touchpad2], GPIO. IN) ลอง: ในขณะที่ True: if(GPIO.input(touchpad1) == True): print ("Touchpad 1 touched") sleep(2) elif (GPIO.input(touchpad2) == True): print ("Touchpad 2 touched") sleep(2) else: print("Not Touched") ยกเว้น KeyboardInterrupt: GPIO.cleanup() #CTRL-C เพื่อออก

การทดสอบ LED

อ้างถึงคำแนะนำที่ยอดเยี่ยมนี้สำหรับการทดสอบ LED ของคุณ!

เมื่อคุณได้ทดสอบส่วนประกอบข้างต้นทั้งหมดแล้ว คุณก็พร้อมที่จะสร้างเวอร์ชันที่ใหญ่กว่านี้

ขั้นตอนที่ 3: บัดกรีแผงตัวบ่งชี้

บัดกรีแผงตัวบ่งชี้
บัดกรีแผงตัวบ่งชี้
บัดกรีแผงตัวบ่งชี้
บัดกรีแผงตัวบ่งชี้
บัดกรีแผงตัวบ่งชี้
บัดกรีแผงตัวบ่งชี้

หากคุณยังใหม่ต่อการบัดกรี ลองดูบทช่วยสอนนี้เพื่อเรียนรู้พื้นฐานบางอย่างที่นี่ (วิธีการบัดกรี) หากคุณเป็นผู้เชี่ยวชาญด้านการบัดกรี มาเริ่มกันเลย!

แผงตัวบ่งชี้

คุณสามารถหาภาพประกอบเกี่ยวกับวิธีการบัดกรีได้บนบอร์ดที่สมบูรณ์แบบในภาพด้านบน

เราใช้ไฟ LED RGB 13 ดวงสำหรับแผงควบคุม แยกออกเป็นสามส่วน: ซ้าย ขวา และตรงกลางเพื่อประสานตามลำดับ

สำคัญ: ระยะห่างของ LEDs

ฉันเหลือ 3 แถวระหว่าง LEDs ดังแสดงในภาพที่ 2 ซึ่งเป็นสิ่งสำคัญสำหรับแผง LED ที่จะดูดีและรู้สึกดี เราไม่ต้องการให้ LED อยู่ไกลเกินไปเพื่อเพิ่มพื้นที่หรือใกล้เกินไปจนแยกแสงจากที่ไกลออกไปไม่ได้

เคล็ดลับที่มีประโยชน์: เริ่มต้นด้วยการบัดกรี Common Cathode Pins ทั้งหมดก่อน

เคล็ดลับที่มีประโยชน์: ใช้สายไฟแบบหลายเส้นเพื่อเชื่อมต่อ LED เข้าด้วยกัน เนื่องจากมีความทนทานน้อยกว่าและงอได้ง่าย คุณสามารถใช้หมุดตัดพิเศษจากไฟ LED เพื่อเชื่อมต่อระยะทางที่สั้นลง

ส่วนขวา: (5 LEDs)

  • เชื่อมต่อหมุดสีแดงทั้งหมดเข้าด้วยกัน
  • เชื่อมต่อ Green Pins ทั้งหมดเข้าด้วยกัน
  • เชื่อมต่อพินแคโทดทั่วไปทั้งหมดเข้าด้วยกัน

ส่วนด้านซ้าย: (5 LEDs)

  • เชื่อมต่อหมุดสีแดงทั้งหมดเข้าด้วยกัน
  • เชื่อมต่อ Green Pins ทั้งหมดเข้าด้วยกัน
  • เชื่อมต่อพินแคโทดทั่วไปทั้งหมดเข้าด้วยกัน

ส่วนศูนย์: (ไฟ LED 3 ดวง)

เคล็ดลับที่มีประโยชน์: ส่วนนี้ต้องใช้ความระมัดระวังเพียงพอ อย่าประสานหมุดทั้งหมดเข้าด้วยกันเหมือนที่เราทำในสองส่วนด้านบน!

  • เชื่อมต่อหมุดสีแดงทั้งหมดเข้าด้วยกัน
  • เชื่อมต่อ Green Pin ของ LED ด้านบนและด้านล่างเท่านั้น
  • เชื่อมต่อพินแคโทดทั่วไปทั้งหมดเข้าด้วยกัน

สายไฟ

เราต้องการสายไฟที่ยาวขึ้นเพื่อเชื่อมต่อแผงกับบอร์ด GPIO

เคล็ดลับที่มีประโยชน์:

  • ใช้สายไฟเส้นเดียว! พวกมันแข็งแรงพอที่จะทนต่อแรงกดทางกลที่ใช้กับมัน!
  • ให้สายไฟยาวกว่าความยาวจริงที่จำเป็นระหว่างแผงควบคุมและ RPi เล็กน้อย (ซึ่งสะดวกมากในขณะที่จัดการสายไฟในภายหลัง! (ไทม์ไลน์: การวัด)
  • กันความร้อนหลังบัดกรี! สำคัญมาก

ใช้ลวดจัมเปอร์และสายเดี่ยวในการบัดกรี ปลายด้านหนึ่งของสายจัมเปอร์จะต้องเป็นขั้วต่อตัวเมีย บัดกรีตามที่แสดงไว้ที่นี่ (ไทม์ไลน์)

รหัสสีสายไฟเป็นสีแดงสีเขียวและสีดำ ซึ่งสอดคล้องกับพินสีแดง พินสีเขียว และพินแคโทดทั่วไปตามลำดับ

เราต้องการสายสีดำ 3 เส้น สายสีแดง 3 เส้น และสายสีเขียว 3 เส้น

เมื่อสายไฟพร้อม บัดกรีสายไฟเข้ากับไฟ LED แสดงสถานะ

เคล็ดลับที่มีประโยชน์:

  • ตรวจสอบให้แน่ใจว่าได้บัดกรี LED ตามการเชื่อมต่อที่ให้มา
  • ตรวจสอบให้แน่ใจว่าคุณได้บัดกรีค่าตัวต้านทานที่ถูกต้องแล้ว หากค่าเปลี่ยนไปจะส่งผลต่อความสว่างของ LEDs
  • วิธีหนึ่งเพื่อให้แน่ใจว่าไฟ LED ทั้งหมดของคุณทำงานโดยใช้มัลติมิเตอร์ที่ระบุในขั้นตอนที่ 2 ซึ่งมีประโยชน์มากเพราะคุณจะรู้ว่ามีการลัดวงจรหรือไม่ ไฟ LED จะไม่สว่างขึ้น
  • อย่าดึงปลายสายไฟออกนานเกินความจำเป็น นี้จะเป็นเรื่องยากที่จะเก็บไว้ในสถานที่และยังมีความเสี่ยงสูงที่จะเกิดไฟฟ้าลัดวงจร
  • ใช้ลวดหลายเส้นเพื่อเชื่อมต่อระหว่าง LEDs
  • ใช้ลวดเกลียวเดี่ยวเพื่อเชื่อมต่อส่วนต่างๆ กับ RPi

ขั้นตอนที่ 4: ใส่แผงตัวบ่งชี้ไปที่การทดสอบ

นำแผงตัวบ่งชี้ไปที่การทดสอบ
นำแผงตัวบ่งชี้ไปที่การทดสอบ
นำแผงตัวบ่งชี้ไปที่การทดสอบ
นำแผงตัวบ่งชี้ไปที่การทดสอบ
นำแผงตัวบ่งชี้ไปที่การทดสอบ
นำแผงตัวบ่งชี้ไปที่การทดสอบ

รุ่งโรจน์! หากคุณได้บัดกรีแผงอย่างถูกต้อง มาเริ่มเขียนโค้ดอินดิเคเตอร์กันเลย!

ดังที่ได้กล่าวไว้ก่อนหน้านี้ เราจะระบุให้เลี้ยวขวา เลี้ยวซ้าย และเปิด/ปิดกล้องมองกลางคืน

อ้างถึงการเชื่อมต่อของวงจรในขั้นตอนที่ 3

ต่อสายไฟของแผงตามที่ระบุด้านล่าง:

  • แดง ขวา -- พิน 7
  • เขียวขวา -- พิน 11
  • แคโทดทั่วไปขวา - ขา 6 (GND)
  • แดง ซ้าย -- พิน 13
  • เขียวซ้าย -- พิน 15
  • แคโทดทั่วไปซ้าย - พิน 9 (GND)
  • Center Red -- พิน 16
  • สีเขียวกลาง (บนและล่าง) -- พิน 18
  • Center Common Cathode - พิน 14 (GND)

รหัสทดสอบ:

นำเข้า RPi. GPIO เป็น GPIO

จากเวลานำเข้าโหมดสลีป #เชื่อมต่อตามหมายเลขพินด้านล่าง Red_right = 7 Green_right = 11 Red_left = 13 Green_left = 15 Red_center = 16 Green_top_bottom = 18 GPIO.setmode(GPIO. BOARD) def right_turn(): พิมพ์ ("เลี้ยวขวา") กะพริบ (Green_right, Green_top_bottom, 0) def left_turn(): พิมพ์ ("เลี้ยวซ้าย") กะพริบ (Green_left, Green_top_bottom, 0) def กะพริบ (pin1, pin2, pin3): if(pin3 == 0): GPIO.setup([pin1, pin2], GPIO. OUT) สำหรับ x ในช่วง (10): GPIO.output([pin1, pin2], GPIO. HIGH) sleep(0.5) GPIO.output([pin1, pin2], GPIO. LOW) sleep (0.5) อื่นๆ: GPIO.setup([pin1, pin2, pin3], GPIO. OUT) for x in range(10): GPIO.output([pin1, pin2, pin3], GPIO. HIGH) sleep(0.5) GPIO.output([pin1, pin2, pin3], GPIO. LOW) sleep(0.5) def night_sight(): print("Night Sight ON") กะพริบ (Red_left, Red_right, Red_center) ลอง: ในขณะที่ True: cmd = input(" ทดสอบ LED สำหรับ: ") ถ้า cmd == "เลี้ยวขวา": right_turn() elif cmd == "เลี้ยวซ้าย": left_turn() elif cmd == "night sight": night_sight() else: print("Invalid Command") ยกเว้น Ke yboardInterrupt: GPIO.cleanup ()

หากแผงของคุณล้างขั้นตอนการทดสอบทั้งหมดตามในโค้ด ทำได้ดีมาก! เตรียมพร้อมสำหรับขั้นตอนต่อไป

หากแผงไม่สว่างขึ้น ตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนทั้งหมดอย่างถูกต้องและอ่านคำแนะนำที่เป็นประโยชน์ก่อนหน้านี้ หากปัญหายังคงอยู่ คุณสามารถแสดงความคิดเห็นด้านล่าง เราพร้อมที่จะช่วยเหลือ

เส้นเวลา: ทดสอบ ONE (ตรวจสอบวิดีโอสำหรับต้นแบบการทำงาน)

ขั้นตอนที่ 5: การรวมแผงตัวบ่งชี้กับทัชแพด

การรวมแผงตัวบ่งชี้ด้วยทัชแพด
การรวมแผงตัวบ่งชี้ด้วยทัชแพด
การรวมแผงตัวบ่งชี้ด้วยทัชแพด
การรวมแผงตัวบ่งชี้ด้วยทัชแพด
การรวมแผงตัวบ่งชี้ด้วยทัชแพด
การรวมแผงตัวบ่งชี้ด้วยทัชแพด

การเชื่อมต่อกับ RPi

ทำการเชื่อมต่อตามที่แสดงในภาพด้านบน

แผงขวา

ทัชแพด:

  • พิน GND - พิน 34
  • พิน VCC - พิน 1
  • พิน SIG -- พิน 29

นำ:

ขั้วบวก (+) ขา - ขา 33

แผงด้านซ้าย

ทัชแพด:

  • พิน GND - พิน 30
  • พิน VCC - พิน 17
  • SIG pin - พิน 31

นำ:

ขั้วบวก (+) ขา - ขา 35

Common GND: Pin 39 (สำหรับทั้งแคโทดของ LEDs) - Common Ground Soldering (ไทม์ไลน์)

รหัสทดสอบ:

นำเข้า RPi. GPIO เป็น GPIO

จากเวลานำเข้า sleep Red_right = 7 Green_right = 11 Red_left = 13 Green_left = 15 Red_center = 16 Green_top_bottom = 18 right_touch = 29 left_touch = 31 right_led = 33 left_led = 35 triggered = 0 GPIO.setmode(GPIO. BOARD) GPIO.setup([right_led, left_led], GPIO. OUT) GPIO.setup(right_touch, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(left_touch, GPIO. IN, pull_up_down = GPIO. PUD_UP) def right_turn (ช่อง): GPIO.output (right_led, GPIO. HIGH) global triggered triggered = 1 พิมพ์ ("เลี้ยวขวา") กะพริบ (Green_right, Green_top_bottom) def left_turn (ช่อง): GPIO.output (left_led, GPIO. HIGH) global triggered triggered = 1 พิมพ์ ("Turning ซ้าย") กะพริบ (Green_left, Green_top_bottom) GPIO.add_event_detect (right_touch, GPIO. FALLING, โทรกลับ = right_turn, bouncetime = 500) GPIO.add_event_detect (left_touch, GPIO. FALLING, โทรกลับ = left_turn, bouncetime = 500) def กะพริบ pin2): GPIO.setup([pin1, pin2], GPIO. OUT) for x in range(10): GPIO.output([pin1, pin2], GPIO. HIGH) sleep(0.5) GPIO.outpu t([pin1, pin2], GPIO. LOW) sleep(0.5) GPIO.output([right_led, left_led], GPIO. LOW) global triggered triggered = 0 def night_sight(): while (True): GPIO.setup([) Red_center, Red_left, Red_right], GPIO. OUT) global ทริกเกอร์หาก (triggered == 0): print ("Night Sight ON") GPIO.output([Red_center, Red_left, Red_right], GPIO. HIGH) sleep(0.27) GPIO.output([Red_center, Red_left, Red_right], GPIO. LOW) sleep(0.27) else: print ("Night Sight OFF") GPIO.output([Red_center, Red_left, Red_right], GPIO. LOW) ลอง: night_sight() ยกเว้น KeyboardInterrupt: GPIO.cleanup()

แตะทัชแพดเพื่อดูแสงของคุณ

ไทม์ไลน์ (ไม่มีไฟ LED แสดงสถานะ): ทดสอบสอง

ไทม์ไลน์ (พร้อมไฟ LED แสดงสถานะ): ทดสอบ 3

คำอธิบายโค้ด: เราต้องการให้ระบบการมองเห็นตอนกลางคืนทำงานอย่างต่อเนื่อง และเมื่อเราแตะทัชแพด ระบบควรหยุดและดำเนินการฟังก์ชันของทัชแพด ในการทำสิ่งนี้พร้อมกัน เราใช้สิ่งที่เรียกว่า "Interrupts" ใน python ซึ่งช่วยให้เราสามารถเรียกใช้โค้ดปกติของเราซึ่งเป็นโหมดกลางคืนที่นี่ และยังเรียกเหตุการณ์เมื่อตรวจพบการสัมผัส เราใช้ตัวแปรทริกเกอร์เป็นแฟล็กเพื่อหยุดการมองเห็นตอนกลางคืน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการขัดจังหวะ โปรดดูที่ลิงค์นี้

ประสานแผง

ตอนนี้มาประสานแผงทัชแพดซึ่งจะไปที่แฮนด์ของจักรยาน อ้างถึงการเชื่อมต่อตามที่ระบุในภาพด้านบน

ตอนนี้คุณได้ทดสอบ LED และทัชแพดแล้ว คุณก็พร้อมแล้วที่จะไป หากคุณยังไม่ได้ทำการทดสอบ โปรดอ้างอิงถึงขั้นตอนนี้และขั้นตอนก่อนหน้า

วางทัชแพดไว้ใกล้กับแฮนด์บาร์ตามที่แสดงในวิดีโอ นั่นคือ สำหรับทัชแพดด้านขวา ทัชแพดจะอยู่ทางขวาและซ้ายไปทางซ้าย ในทำนองเดียวกัน สำหรับทัชแพดด้านซ้าย ไฟ LED จะอยู่ที่ด้านขวาและทัชแพดทางด้านซ้าย ซึ่งทำให้นิ้วหัวแม่มือเอื้อมได้ง่ายขึ้น

PS: ฉันไม่ได้บัดกรีทัชแพดกับบอร์ดประสิทธิภาพเพราะฉันจะใช้ซ้ำอีกครั้ง ดังนั้นฉันจึงวางมันลงบนแผงด้วยเทปกาวสองหน้า

เชื่อมต่อพาเนลกับ RPi โดยใช้สายที่ยาวกว่า

ขั้นตอนที่ 6: ทำให้มันฉลาด

ทำให้มันฉลาด!
ทำให้มันฉลาด!
ทำให้มันฉลาด!
ทำให้มันฉลาด!
ทำให้มันฉลาด!
ทำให้มันฉลาด!

ใช่! ตอนนี้เรามีข้อมูลสำคัญเกี่ยวกับอินดิเคเตอร์ที่พร้อมใช้งานแล้ว ก้าวไปอีกขั้นเพื่อทำให้ฉลาดขึ้น

ที่นี่สมาร์ทกำหนดประหยัดแบตเตอรี่เช่นกัน คุณอาจสังเกตเห็นว่าระบบการมองเห็นตอนกลางคืนเปิดอยู่เสมอ และบางครั้งอาจไม่จำเป็นต้องใช้ในวันที่มีแดดจ้า ในการเอาชนะปัญหานี้ ให้รวม LDR (Light Dependent Resistor) เพื่อให้ข้อมูลความเข้มของแสงแก่เรา ซึ่งเราสามารถรวบรวมและประมวลผลตัวบ่งชี้ของเราตามนั้น

การทดสอบ LDR

ฉันอ้างถึงเว็บไซต์นี้เพื่อทดสอบ LDR เพื่อตรวจสอบความเข้มของแสงและค่าที่ส่งคืน

อ้างถึงเว็บไซต์ที่ติดแท็กด้านบนสำหรับวงจรและโค้ดตัวอย่างสำหรับการทำงานของ LDR

การรวม LDR เข้ากับโค้ดของเรา

ประสาน LDR เข้ากับแผงด้านขวาของทัชแพดตามที่แสดงในแผนภาพการเชื่อมต่อด้านบน

หลังจากบัดกรีหมุดในตำแหน่งที่ถูกต้องแล้วก็ถึงเวลาสำหรับการเข้ารหัสบิตสุดท้าย รหัสสุดท้าย!

  • เชื่อมต่อจุดร่วมของแคโทด (-) ของตัวเก็บประจุและ LDR กับพิน 36 บน RPi
  • ขั้วบวกของตัวเก็บประจุเชื่อมต่อกับจุดกราวด์ทั่วไปที่อ้างถึงในขั้นตอนที่5

รหัสสุดท้าย:

นำเข้า RPi. GPIO เป็น GPIO

จากเวลานำเข้า sleep Red_right = 7 Green_right = 11 Red_left = 13 Green_left = 15 Red_center = 16 Green_top_bottom = 18 right_touch = 29 left_touch = 31 right_led = 33 left_led = 35 ldr = 36 triggered = 0 GPIO.setmode (GPIO. BOARD) GPIO ตั้งค่า ([right_led, left_led], GPIO. OUT) GPIO.setup (right_touch, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (left_touch, GPIO. IN, pull_up_down = GPIO. PUD_UP) def right_turn (ช่อง): GPIO.output(right_led, GPIO. HIGH) global triggered triggered = 1 print ("Turning Right") กะพริบ (Green_right, Green_top_bottom) def left_turn(channel): GPIO.output(left_led, GPIO. HIGH) global triggered triggered = 1 print ("เลี้ยวซ้าย") กะพริบ (Green_left, Green_top_bottom) GPIO.add_event_detect (right_touch, GPIO. FALLING, โทรกลับ = right_turn, เวลาตีกลับ = 500) GPIO.add_event_detect (left_touch, GPIO. FALLING, โทรกลับ = left_turn, def lighttime_sening = 500) (ldr): count = 0 #Output บนพินสำหรับ GPIO.setup(ldr, GPIO. OUT) GPIO.output(ldr, GPIO. LOW) sleep(0.1) #Chang e พินกลับไปที่อินพุต GPIO.setup(ldr, GPIO. IN) #Count จนกว่าพินจะสูงในขณะที่ (GPIO.input(ldr) == GPIO. LOW): นับ += 1 นับกลับ def กะพริบ (pin1, pin2): GPIO.setup([pin1, pin2], GPIO. OUT) สำหรับ x ในช่วง (10): GPIO.output([pin1, pin2], GPIO. HIGH) sleep(0.5) GPIO.output([pin1, pin2], GPIO. LOW) สลีป (0.5) GPIO.output ([right_led, left_led], GPIO. LOW) ทริกเกอร์ทั่วโลก = 0 def night_sight (): ในขณะที่ (จริง): GPIO.setup ([Red_center, Red_left, Red_right], GPIO. OUT) โกลบอลทริกเกอร์ if(light_sensing(ldr) > 7800): if (triggered == 0): print ("Night Sight ON") GPIO.output([Red_center, Red_left, Red_right], GPIO. HIGH) sleep (0.27) GPIO.output([Red_center, Red_left, Red_right], GPIO. LOW) sleep(0.27) อื่น: พิมพ์ ("Night Sight OFF") GPIO.output([Red_center, Red_left, Red_right], GPIO. LOW) ลอง: night_sight() ยกเว้น KeyboardInterrupt: GPIO.cleanup()

โว้ว! และตัวบ่งชี้ก็พร้อมที่จะหมุน

เคล็ดลับที่มีประโยชน์: ก่อนประกอบ RPi และส่วนประกอบอื่นๆ เข้ากับวงจร ตรวจสอบให้แน่ใจว่าคุณได้ทดสอบโปรแกรมนี้อย่างถูกต้องแล้ว! เรียกใช้สองสามครั้งเพื่อแก้ไขข้อผิดพลาด

ขั้นตอนที่ 7: การทาสีและการประกอบ

จิตรกรรมและการประกอบ
จิตรกรรมและการประกอบ
จิตรกรรมและการประกอบ
จิตรกรรมและการประกอบ
จิตรกรรมและการประกอบ
จิตรกรรมและการประกอบ

วัสดุที่จำเป็น:

  • เครื่องมือตัด/ปอกสายไฟ
  • กล่องเก็บของขนาดใหญ่หนึ่งช่องสำหรับใส่ Raspberry Pi
  • กล่องเก็บของขนาดเล็กหนึ่งช่องสำหรับใส่แผงแสดงสถานะ
  • สี
  • แปรงทาสี

เริ่มต้นด้วยการทาสีแผงตัวบ่งชี้และแผงทัชแพดด้วยสีดำ ฉันใช้สีอะครีลิคที่นี่ คุณสามารถใช้มันตามที่คุณต้องการซึ่งเข้ากันได้ดีกับบอร์ดที่สมบูรณ์แบบ ใช้พื้นหลังสีดำเพื่อทำให้แผง LED สว่างสดใสและโดดเด่นยิ่งขึ้น ทำรูโดยใช้ไขควงอุ่นหรือใช้วัตถุที่เป็นโลหะเพื่อละลายพลาสติก

หมายเหตุ: โปรดใช้ความระมัดระวังในขณะที่ทำหลุม

ไทม์ไลน์:ระบายสี

เคล็ดลับที่มีประโยชน์: ฉันใช้กล่องพลาสติกและสีหลุดออกมาอย่างง่ายดาย ใช้สีที่มีคุณภาพ

เมื่อทาสีอินดิเคเตอร์และแผงหน้าปัดแล้ว ผึ่งแดดให้แห้งและเตรียมพร้อมสำหรับการประกอบ

ฉันได้ตัดขอบพิเศษของบอร์ด perf ในแผงตัวบ่งชี้และแผงด้านหน้าเพื่อประหยัดพื้นที่

ตรวจสอบวิดีโอสำหรับการประกอบ!

ไทม์ไลน์: อเวนเจอร์ส! ประกอบ. (ประกอบแผงไฟแสดงสถานะและ RPi พร้อมกล่อง)

ตามที่เห็นในวิดีโอ วางสายไฟตามลำดับโดยทำสามรูในกล่องที่ใหญ่ขึ้น หนึ่งอันสำหรับสายไฟพาวเวอร์แบงค์ RPi หนึ่งอันสำหรับแผงทัชแพด และอีกอันสำหรับแผงตัวบ่งชี้ กล่องขนาดเล็กต้องการเพียงหนึ่งรูเท่านั้น

เคล็ดลับที่มีประโยชน์: ตรวจสอบฉนวนของสายไฟและตรวจสอบว่าสายไฟบัดกรีถูกต้องหรือไม่ก่อนเชื่อมต่อในกล่อง

ขั้นตอนที่ 8: การทดสอบระยะไกลด้วย VNC และ Final Code

การทดสอบระยะไกลด้วย VNC และ Final Code
การทดสอบระยะไกลด้วย VNC และ Final Code
การทดสอบระยะไกลด้วย VNC และ Final Code
การทดสอบระยะไกลด้วย VNC และ Final Code

การทดสอบครั้งสุดท้ายก่อนที่ตัวบ่งชี้จะพร้อมอย่างเต็มที่ เชื่อมต่อ RPi ของคุณกับ VNC Viewer และเรียกใช้โปรแกรม

ฉันใช้เซิร์ฟเวอร์ VNC เพื่อเรียกใช้โปรแกรมและแก้ไขข้อผิดพลาดในโปรแกรมเสมอ วิธีนี้ทำให้ฉันสามารถวาง RPi ลงในตำแหน่งที่ต้องการทดสอบได้โดยตรงโดยไม่ต้องเชื่อมต่อจอภาพจากภายนอก

ตรวจสอบหน้านี้เพื่อเชื่อมต่อ RPi ของคุณกับเซิร์ฟเวอร์ VNC (เซิร์ฟเวอร์ VNC)

เมื่อคุณเชื่อมต่อ RPi กับ VNC Server แล้ว คุณสามารถเรียกใช้โค้ดบนเดสก์ท็อปเสมือนและแก้ไขข้อผิดพลาดได้

ไทม์ไลน์:เรียกใช้เมื่อเริ่มต้น

เคล็ดลับที่มีประโยชน์: เมื่อคุณเชื่อมต่อ Raspberry Pi กับเดสก์ท็อปเสมือนแล้ว คุณจะลงชื่อเข้าใช้ด้วยที่อยู่ IP ของ RPi แต่ถ้าคุณได้รับข้อผิดพลาดที่ระบุว่า RPi ปฏิเสธการเชื่อมต่อ นั่นเป็นเพราะการเปลี่ยนแปลงที่อยู่ IP ใน RPI สิ่งนี้สามารถเกิดขึ้นได้เมื่อคุณรีสตาร์ทเราเตอร์หรือฮอตสปอต WiFi แล้วลองเข้าสู่ระบบด้วยที่อยู่เดิม เราเตอร์จะกำหนด IP ใหม่ทุกครั้งที่คุณรีสตาร์ท แต่ถ้าคุณจำที่อยู่ IP เก่าของ RPi ได้ ให้เพิ่มตัวเลขหลักสุดท้ายทีละ 1 แล้วเข้าสู่ระบบ ตัวอย่าง: หากที่อยู่ IP เก่าคือ 190.148.1.100 ให้เข้าสู่ระบบโดยใช้ 190.148.1.101

เมื่อคุณได้ตรวจสอบว่าทั้งหมดทำงานอย่างถูกต้องหรือไม่ ก็ถึงเวลาสำหรับการประกอบขั้นสุดท้าย

เราไม่สามารถมีเดสก์ท็อปเสมือนเพื่อตรวจสอบหรือเรียกใช้สคริปต์หลามได้เสมอ ให้เราทำอย่างนั้นเมื่อเริ่มต้น

เราต้องการให้โปรแกรมของเราทำงานเมื่อ RPi เริ่มทำงาน ตรวจสอบเว็บไซต์นี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้!

หาก RPi ของคุณอยู่ในการตั้งค่าการเข้าสู่ระบบอัตโนมัติ ให้ดำเนินการต่อ

รันคำสั่งต่อไปนี้ในเทอร์มินัลของ RPi

sudo nano /etc/profile

เลื่อนไปที่ด้านล่างและเพิ่มบรรทัดต่อไปนี้:

sudo python file_path &

file_path ที่นี่อ้างอิงถึงเส้นทางของไฟล์ python ที่จัดเก็บรหัสสุดท้ายของคุณ

หมายเหตุ: ควรเพิ่มเครื่องหมายและ (&) ที่ส่วนท้ายของไฟล์ เพื่อให้โปรแกรมของคุณทำงานขนานกับการบูตระบบ เนื่องจากโปรแกรมของเราประกอบด้วยการวนซ้ำไม่รู้จบ ขั้นตอนนี้จึงจำเป็น ดังนั้นแม้ว่าโปรแกรมจะไม่ทำงานตามที่คาดไว้ เรายังคงสามารถใช้เดสก์ท็อป RPi เพื่อเปลี่ยนการตั้งค่าได้

หลังจากนี้ให้กด CTRL-X แล้วกด Ypress Enter สองครั้งแล้วคุณจะกลับไปที่เทอร์มินัลคำสั่ง

รีบูต Pi

ตอนนี้รหัสควรทำงานเมื่อเริ่มต้น

ขั้นตอนที่ 9: การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย

การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย
การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย
การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย
การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย
การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย
การจัดการสายเคเบิลและการประกอบขั้นสุดท้าย

ยินดีด้วย! ในการจบโครงการนี้ ฉันให้คำว่า Minimal ตามที่คุณเห็นว่าเราใช้ LED น้อยลงเพื่อแสดงสิ่งบ่งชี้ทั้งหมดที่จำเป็นและด้วยสีที่กำหนดเอง คุณสามารถใช้สีต่างๆ สำหรับไฟ LED ของคุณ เช่น สีเหลืองสำหรับไฟเลี้ยวหรืออื่นๆ

หากคุณทำโปรเจ็กต์นี้เสร็จแล้ว ให้คลิกที่ "ฉันทำมัน" และแบ่งปันประสบการณ์ของคุณ แบ่งปันความคิดของคุณและข้อเสนอแนะหรือความคิดเห็นเกี่ยวกับโครงการนี้ ฉันชอบที่จะได้ยินว่า!

การจัดการสายเคเบิล

ใช่! อย่างที่คุณอาจสังเกตเห็นว่ามีสายไฟจำนวนมากเข้าและรอบรอบ และการจัดการสายไฟนั้นค่อนข้างยุ่งยาก ฉันใช้แท็กสายไฟ เทปฉนวน และปลอกหุ้มสายไฟเพื่อซ่อนสายไฟและทาให้เป็นสีดำตามที่คุณเห็นในรูปภาพ

เคล็ดลับที่มีประโยชน์: เนื่องจากคุณมีสายเคเบิลเหลืออยู่เกินความจำเป็น การจัดการสายเคเบิลอย่างถูกต้องโดยไม่ต้องเครียดในขณะนี้จึงมีประโยชน์! หากไฟ LED ดวงใดดวงหนึ่งของคุณสว่างขึ้นและอีกดวงหนึ่งไม่ทำแม้ว่าคุณจะทำทุกอย่างถูกต้องแล้ว ปัญหาก็ยังคงอยู่ สายจัมเปอร์ที่เชื่อมต่อกับ RPi จะมีหน้าสัมผัสหลวม หากยังคงเป็นเช่นนี้ ให้ใช้สายจัมเปอร์ตัวผู้กับตัวเมียเพื่อต่อสายและต่อเข้าด้วยกัน ใช้ที่รัดสายไฟเพื่อยึดสายไฟไว้ไม่ให้เคลื่อนที่

ตอนนี้ตัวบ่งชี้พร้อมสำหรับการขี่แล้ว! สนุกกับมัน

PS: ในคำแนะนำเพิ่มเติมฉันชอบที่จะลดจำนวนสายไฟในวงจรและคิดแผนที่ดีขึ้น ถ้าฉันทำอย่างนั้นฉันจะแบ่งปันคำแนะนำเกี่ยวกับสิ่งนั้น!

ขั้นตอนที่ 10: รูปภาพบางส่วนของตัวบ่งชี้

รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้
รูปภาพบางส่วนของตัวบ่งชี้

ขอบคุณที่อ่านคำแนะนำนี้ ฉันหวังว่าคุณจะสนุกกับมันมากที่สุดเท่าที่ฉันทำ

ไทม์ไลน์: การทดสอบครั้งสุดท้ายในส่วนข้างต้น คุณจะเห็นได้ว่าทันทีที่ห้องมืดลง "โหมดกลางคืน" จะเปิดขึ้น และเมื่อสว่างขึ้นก็จะดับลงทันที!

ไทม์ไลน์:วิดีโอที่พร้อมจะฉายบางวิดีโอที่ฉันถ่ายเพื่อแสดงตัวบ่งชี้ในไฟแก็ซ เครดิตทั้งหมดสำหรับการปั่นจักรยานของพี่สาวฉันสำหรับวิดีโอ!

แนะนำ: