- วัสดุที่ต้องการ:
- แผนภาพวงจร Blind Stick:
- โปรแกรม Arduino สำหรับ Smart Blind Stick:
- Arduino Blind Stick ในการดำเนินการ:
เคยได้ยินชื่อ Hugh Herr ไหม? เขาเป็นนักปีนหน้าผาชาวอเมริกันที่มีชื่อเสียงซึ่งทำลายข้อ จำกัด ของความพิการของเขา เขาเชื่อมั่นอย่างยิ่งว่าเทคโนโลยีสามารถช่วยให้คนพิการสามารถใช้ชีวิตได้อย่างปกติสุข ในรายการ TED talk Herr ของเขากล่าวว่า“ มนุษย์ไม่ได้พิการ บุคคลไม่มีวันถูกทำลาย สภาพแวดล้อมที่สร้างขึ้นเทคโนโลยีของเราเสียและถูกปิดใช้งาน เราคนไม่จำเป็นต้องยอมรับข้อ จำกัด ของเรา แต่สามารถถ่ายโอนความพิการผ่านนวัตกรรมทางเทคโนโลยี ”สิ่งเหล่านี้ไม่ใช่แค่คำพูด แต่เขาใช้ชีวิตเพื่อพวกเขาทุกวันนี้เขาใช้ขาเทียมและอ้างว่าใช้ชีวิตได้ตามปกติ ใช่แล้วเทคโนโลยีสามารถต่อต้านความพิการของมนุษย์ได้ ด้วยเหตุนี้ให้เราใช้บอร์ด devlopment และเซ็นเซอร์ง่ายๆเพื่อสร้างไม้เท้าตาบอดอัลตราโซนิกโดยใช้ Arduino ที่สามารถทำหน้าที่ได้มากกว่าไม้เท้าสำหรับผู้พิการทางสายตา
แท่งอัจฉริยะนี้จะมีเซ็นเซอร์อัลตราโซนิกเพื่อตรวจจับระยะห่างจากสิ่งกีดขวางใด ๆ LDR เพื่อตรวจจับสภาพแสงและรีโมท RF ที่คนตาบอดสามารถค้นหาแท่งของเขาจากระยะไกลได้ คำตอบทั้งหมดจะมอบให้กับชายตาบอดผ่าน Buzzer แน่นอนว่าคุณสามารถใช้มอเตอร์ไวเบรเตอร์แทน Buzzer และก้าวไปอีกมากโดยใช้ความคิดสร้างสรรค์ของคุณ
วัสดุที่ต้องการ:
- Arduino Nano (ทุกรุ่นจะใช้งานได้)
- อัลตราโซนิกเซนเซอร์ HC-SR04
- LDR
- Buzzer และ LED
- 7805
- เครื่องส่งและตัวรับ RF 433MHz
- ตัวต้านทาน
- คาปาซิเตอร์
- ปุ่มกด
- คณะกรรมการ Perf
- ชุดบัดกรี
- แบตเตอรี่ 9V
คุณสามารถซื้อส่วนประกอบที่จำเป็นทั้งหมดสำหรับโครงการสมาร์ทบอดสติ๊กได้ จากที่นี่
แผนภาพวงจร Blind Stick:
โครงการArduino Smart Blind Stick นี้ต้องใช้วงจรสองวงจรแยกกัน หนึ่งคือวงจรหลักซึ่งจะติดอยู่บนไม้เท้าของคนตาบอด อีกอันคือวงจรส่งสัญญาณ RFระยะไกลขนาดเล็กซึ่งจะใช้ในการค้นหาวงจรหลัก แผนภาพวงจรของบอร์ดหลักเพื่อสร้างแท่งตาบอดโดยใช้เซ็นเซอร์อัลตราโซนิก แสดงไว้ด้านล่าง
อย่างที่เราเห็นArduino Nanoใช้เพื่อควบคุมเซ็นเซอร์ทั้งหมด แต่คุณยังสามารถสร้างแท่งตาบอดอัจฉริยะนี้โดยใช้ arduino unoแต่ทำตามพินเอาต์และโปรแกรมเดียวกัน บอร์ดทั้งหมดใช้พลังงานจากแบตเตอรี่ 9V ซึ่งควบคุมถึง + 5V โดยใช้ตัวควบคุมแรงดันไฟฟ้า 7805 เซ็นเซอร์อัลตราโซนิกถูกขับเคลื่อนโดย 5V และเรียกและ Echo ขาเชื่อมต่อกับ Arduino นาโนขา 3 และ 2 ตามที่แสดงไว้ข้างต้นLDRจะเชื่อมต่อกับความต้านทานของมูลค่า 10K ในรูปแบบการแบ่งที่มีศักยภาพและความแตกต่างในแรงดันไฟฟ้าที่จะถูกอ่านโดย Arduino ADC ขา A1 A0 ADC ขาใช้ในการอ่านสัญญาณจากตัวรับสัญญาณ RFเอาต์พุตของบอร์ดได้รับจากBuzzerซึ่งเชื่อมต่อกับพิน 12
วงจร RF ระยะไกลที่แสดงด้านล่าง นอกจากนี้ยังมีการอธิบายการทำงานเพิ่มเติม
ฉันใช้แฮ็คขนาดเล็กเพื่อทำให้วงจรควบคุมระยะไกล RF นี้ทำงานได้ โดยปกติในขณะที่ใช้โมดูล RF 433 MHz นี้ต้องใช้ตัวเข้ารหัสและตัวถอดรหัสหรือ MCU สองตัวในการทำงานเช่นเดียวกับในวงจร RF Transmitter and Receiver รุ่นก่อนหน้าของเราเราใช้ HT12D และ HT12E ตัวถอดรหัสและตัวเข้ารหัส IC ตามลำดับ แต่ในแอปพลิเคชันของเราเราต้องการเพียงเครื่องรับเพื่อตรวจจับว่าเครื่องส่งกำลังส่งสัญญาณหรือไม่ ดังนั้นขาข้อมูลของเครื่องส่งสัญญาณจึงเชื่อมต่อกับกราวด์หรือ Vcc ของแหล่งจ่าย
พินข้อมูลของเครื่องรับจะถูกส่งผ่านตัวกรอง RC จากนั้นมอบให้กับ Arduino ดังที่แสดงด้านล่าง ตอนนี้เมื่อใดก็ตามที่กดปุ่มตัวรับสัญญาณจะส่งออกค่า ADC คงที่ซ้ำ ๆ การทำซ้ำนี้ไม่สามารถสังเกตได้เมื่อไม่ได้กดปุ่ม ดังนั้นเราจึงเขียนโปรแกรม Arduino เพื่อตรวจสอบค่าซ้ำเพื่อตรวจสอบว่ามีการกดปุ่มหรือไม่ นั่นคือวิธีที่คนตาบอดสามารถติดตามไม้ของเขาได้ คุณสามารถตรวจสอบได้ที่นี่: วิธีการทำงานของเครื่องส่งและตัวรับ RF
ฉันใช้บอร์ด perfในการประสานการเชื่อมต่อทั้งหมดเพื่อให้มันเหมือนเดิมกับไม้ แต่คุณสามารถทำบนเขียงหั่นขนมได้ นี่คือบอร์ดที่ฉันสร้างขึ้นสำหรับโครงการ blind stick โดยใช้ arduino
โปรแกรม Arduino สำหรับ Smart Blind Stick:
เมื่อเราพร้อมกับฮาร์ดแวร์ของเราเราสามารถเชื่อมต่อ Arduino กับคอมพิวเตอร์ของเราและเริ่มการเขียนโปรแกรมได้ รหัสที่สมบูรณ์ใช้สำหรับหน้านี้สามารถพบได้ที่ด้านล่างของหน้านี้คุณสามารถอัปโหลดโดยตรงไปยังบอร์ด Arduino ของคุณ อย่างไรก็ตามหากคุณอยากรู้ว่าโค้ดทำงานอย่างไรให้อ่านเพิ่มเติม
เช่นโปรแกรมทั้งหมดที่เราเริ่มต้นด้วยการ เป็นโมฆะ การตั้งค่า () เพื่อ initialise หมุดขาออกขาเข้า ในโปรแกรมของเรา Buzzer และ Trigger pin เป็นอุปกรณ์ Output และขา Echo เป็นอุปกรณ์อินพุต นอกจากนี้เรายังเริ่มต้นมอนิเตอร์แบบอนุกรมสำหรับการดีบัก
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); pinMode (Buzz, เอาท์พุท); digitalWrite (Buzz, LOW); pinMode (ทริกเกอร์เอาท์พุท); pinMode (เสียงสะท้อน, อินพุต); }
ภายในลูป หลัก เรากำลังอ่านข้อมูลเซ็นเซอร์ทั้งหมด เริ่มต้นด้วยการอ่านข้อมูลเซ็นเซอร์ของเซ็นเซอร์อัลตราโซนิกสำหรับระยะทาง LDR สำหรับความเข้มของแสงและสัญญาณ RF เพื่อตรวจสอบว่ามีการกดปุ่มหรือไม่ ข้อมูลทั้งหมดเหล่านี้จะถูกบันทึกไว้ในตัวแปรตามที่แสดงด้านล่างเพื่อใช้ในอนาคต
คำนวณระยะทาง (ทริกเกอร์เสียงสะท้อน); สัญญาณ = analogRead (รีโมท); Intens = analogRead (แสง);
เริ่มต้นด้วยการตรวจสอบสัญญาณรีโมท เราใช้ตัวแปรที่เรียกว่า similar_count เพื่อตรวจสอบว่ามีการทำซ้ำค่าเดียวกันจากตัวรับ RF กี่ครั้ง การทำซ้ำนี้จะเกิดขึ้นก็ต่อเมื่อกดปุ่ม ดังนั้นเราจึงทริกเกอร์การเตือนแบบกดรีโมตหากการนับเกินค่า 100
// ตรวจสอบว่า Remote ถูกกด int temp = analogRead (Remote); Similar_count = 0; ในขณะที่ (Signal == temp) {Signal = analogRead (Remote); similar_count ++; } // ถ้ารีโมตกด if (similar_count <100) {Serial.print (similar_count); Serial.println ("รีโมทกด"); digitalWrite (Buzz, HIGH); ล่าช้า (3000); digitalWrite (Buzz, LOW); }
คุณยังสามารถตรวจสอบได้ใน Serial Monitor บนคอมพิวเตอร์ของคุณ:
ต่อไปเราจะตรวจสอบความเข้มของแสงรอบชายคนตาบอดหาก LDR ให้ค่าน้อยกว่า 200 จะถือว่ามืดมากและเราจะเตือนเขาผ่านเสียงกริ่งด้วยเสียงหน่วงเวลาเฉพาะ 200ms หากความเข้มสว่างมากซึ่งมากกว่า 800 เราจะเตือนด้วยเสียงอื่น เสียงเตือนและความเข้มสามารถเปลี่ยนแปลงได้ง่ายโดยเปลี่ยนค่าตามลำดับในรหัสด้านล่าง
// ถ้ามืดมากถ้า (Intens <200) {Serial.print (Intens); Serial.println ("ไฟสว่าง"); digitalWrite (Buzz, HIGH); ความล่าช้า (200); digitalWrite (Buzz, LOW); ความล่าช้า (200); digitalWrite (Buzz, HIGH); ความล่าช้า (200); digitalWrite (Buzz, LOW); ความล่าช้า (200); ล่าช้า (500); } // ถ้าสว่างมากถ้า (Intens> 800) {Serial.print (Intens); Serial.println ("แสงน้อย"); digitalWrite (Buzz, HIGH); ความล่าช้า (500); digitalWrite (Buzz, LOW); ความล่าช้า (500); digitalWrite (Buzz, HIGH); ความล่าช้า (500); digitalWrite (Buzz, LOW); ความล่าช้า (500); }
ในที่สุดเราก็เริ่มวัดระยะห่างจากสิ่งกีดขวางใด ๆ จะไม่มีสัญญาณเตือนหากระยะทางที่วัดได้มากกว่า 50 ซม. แต่ถ้ามันเป็นน้อยกว่า 50 ซมปลุกจะเริ่มต้นด้วยการ beeping กริ่งเมื่อวัตถุเข้าใกล้เสียงกริ่งมากขึ้นระยะการส่งเสียงบี๊บก็จะลดลงเช่นกัน ยิ่งวัตถุอยู่ใกล้มากเท่าไหร่เสียงกริ่งก็จะดังเร็วขึ้นเท่านั้น สิ่งนี้ทำได้โดยสร้างความล่าช้าที่เป็นสัดส่วนกับระยะทางที่วัดได้ เนื่องจากการ หน่วงเวลา () ใน Arduino ไม่สามารถรับตัวแปรได้เราจึงต้องใช้ for loop ซึ่ง loop ตามระยะทางที่วัดได้ดังที่แสดงด้านล่าง
ถ้า (dist <50) {Serial.print (dist); Serial.println ("การแจ้งเตือนวัตถุ"); digitalWrite (Buzz, สูง); สำหรับ (int i = dist; i> 0; i--) delay (10); digitalWrite (Buzz, LOW); สำหรับ (int i = dist; i> 0; i--) delay (10); }
เรียนรู้เพิ่มเติมเกี่ยวกับการวัดระยะทางโดยใช้เซ็นเซอร์อัลตราโซนิกและ Arduino
โปรแกรมสามารถปรับให้เข้ากับแอปพลิเคชันของคุณได้อย่างง่ายดายโดยการเปลี่ยนค่าที่เราใช้ในการเปรียบเทียบ คุณใช้มอนิเตอร์แบบอนุกรมในการดีบักหากมีการเรียกสัญญาณเตือนที่ผิด หากคุณมีปัญหาใด ๆ คุณสามารถใช้ส่วนความคิดเห็นด้านล่างเพื่อโพสต์คำถามของคุณ
Arduino Blind Stick ในการดำเนินการ:
ในที่สุดก็ถึงเวลาทดสอบโครงการarduino blind stickของเราตรวจสอบให้แน่ใจว่าการเชื่อมต่อเสร็จสิ้นตามแผนภาพวงจรและอัปโหลดโปรแกรมสำเร็จแล้ว ตอนนี้ให้จ่ายไฟทั้งสองวงจรโดยใช้แบตเตอรี่ 9V และคุณควรจะเริ่มเห็นผลลัพธ์ เลื่อนเซ็นเซอร์ Ultra Sonic เข้าใกล้วัตถุมากขึ้นและคุณจะสังเกตเห็นเสียงบี๊บของ Buzzer และความถี่ในการบี๊บจะเพิ่มขึ้นเมื่อแท่งไม้เข้าใกล้วัตถุมากขึ้น หาก LDR อยู่ในที่มืดหรือมีแสงสว่างมากเกินไปเสียงกริ่งจะส่งเสียงบี๊บ หากทุกอย่างเป็นปกติเสียงกริ่งจะไม่ส่งเสียงบี๊บ
เมื่อคุณกดปุ่มบนรีโมทเสียงกริ่งจะส่งเสียงบี๊บยาว ๆ การทำงานที่สมบูรณ์ของSmart Stick สำหรับคนตาบอดโดยใช้ Arduino จะแสดงในวิดีโอที่ให้ไว้ในตอนท้ายของหน้านี้ ฉันยังใช้แท่งไม้เล็ก ๆ เพื่อติดตั้งชุดประกอบทั้งหมดคุณสามารถใช้ไม้ที่ใหญ่กว่าหรือไม้ตาบอดจริงแล้วนำไปใช้งานได้
หากเสียงสัญญาณเตือนของคุณส่งเสียงบี๊บอยู่เสมอแสดงว่าสัญญาณเตือนดังกล่าวมีการกระตุ้นผิดพลาด คุณสามารถเปิดจอภาพอนุกรมเพื่อตรวจสอบพารามิเตอร์และตรวจสอบว่าตัวใดอยู่ในขั้นวิกฤตและปรับค่านั้น และเช่นเคยคุณสามารถโพสต์ปัญหาของคุณในส่วนความคิดเห็นเพื่อรับความช่วยเหลือ หวังว่าคุณจะเข้าใจโครงการและสนุกกับการสร้างบางสิ่งบางอย่าง