สารบัญ:

อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD): 4 ขั้นตอน
อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD): 4 ขั้นตอน

วีดีโอ: อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD): 4 ขั้นตอน

วีดีโอ: อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD): 4 ขั้นตอน
วีดีโอ: 💕แม่แอ๊ฟ ทักษอร สวยมาก 2024, พฤศจิกายน
Anonim
อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD)
อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD)
อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD)
อุปกรณ์ทดแทนและเสริมประสาทสัมผัสที่สั่นสะเทือน (SSAD)

โครงการนี้มีวัตถุประสงค์เพื่ออำนวยความสะดวกในการวิจัยด้านประสาทสัมผัสและการเสริม ฉันมีความเป็นไปได้ที่จะสำรวจวิธีการต่างๆ ในการสร้างต้นแบบ SSAD ที่สั่นสะเทือนภายในวิทยานิพนธ์ MSc ของฉัน เนื่องจาก Sensory Substitution and Augmentation เป็นหัวข้อที่ไม่เพียงแต่เกี่ยวข้องกับนักวิทยาศาสตร์คอมพิวเตอร์เท่านั้น แต่ยังรวมถึงนักวิจัยจากสาขาอื่นๆ เช่น วิทยาศาสตร์การรู้คิด การสอนแบบทีละขั้นตอนควรช่วยให้ผู้ที่ไม่ใช่ผู้เชี่ยวชาญในสาขาอิเล็กทรอนิกส์และวิทยาการคอมพิวเตอร์สามารถประกอบต้นแบบนี้ได้ด้วยตนเอง วัตถุประสงค์การวิจัย

ฉันไม่ได้ตั้งใจจะโฆษณาสำหรับแบรนด์/ผลิตภัณฑ์ประเภทใดประเภทหนึ่งเท่านั้น โครงการนี้ไม่ได้รับการสนับสนุนจากบริษัทใดๆ วัสดุที่ฉันใช้ได้รับการคัดเลือกเนื่องจากข้อกำหนดทางเทคนิคและความสะดวก (ความเร็ว/ต้นทุนในการจัดส่ง ความพร้อมใช้งาน ฯลฯ) สำหรับผลิตภัณฑ์ทั้งหมดที่กล่าวถึงในคำแนะนำนี้ มีทางเลือกอื่นที่เหมาะสมเท่าเทียมกัน

Instructable ปัจจุบันประกอบด้วยคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีสร้างต้นแบบ SSAD พื้นฐานด้วยมอเตอร์สูงสุด 4 ตัวและเซ็นเซอร์อะนาล็อก

นอกจากนี้ ในคำแนะนำนี้ ฉันได้สร้างส่วนขยายสามรายการ: ประการแรก ฉันเผยแพร่คำแนะนำเกี่ยวกับวิธีใช้มอเตอร์มากกว่าสี่ตัวกับต้นแบบ SSAD นี้ (https://www.instructables.com/id/Using-More-Than-4…) ประการที่สอง ฉันสร้างข้อกำหนดและตัวอย่างวิธีทำให้เครื่องต้นแบบนี้สวมใส่ได้ (https://www.instructables.com/id/Making-the-SSAD-W…) และวิธีปิดมอเตอร์ ERM โดยไม่ต้องมีมวลการหมุนที่ห่อหุ้ม (https:/ /www.instructables.com/id/Covering-Rotating…) นอกจากนี้ ยังมีการเผยแพร่ตัวอย่างวิธีการผสานรวมที่ไม่ใช่เซ็นเซอร์อะนาล็อก (ในกรณีนี้คือเซ็นเซอร์ระยะใกล้) กับต้นแบบด้วย (https://www.instructables.com/id/รวม-a-Proxi…)

"การทดแทนและเสริมประสาทสัมผัส" คืออะไร?

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

หากการกระตุ้นทางประสาทสัมผัสที่แปลโดยปกติมนุษย์ไม่สามารถรับรู้ได้ (เช่น แสงยูวี) วิธีการนี้เรียกว่าการเสริมประสาทสัมผัส

ทักษะใดที่จำเป็นในการสร้างต้นแบบนี้

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

มีเครื่องจักรหรือเครื่องมือที่จำเป็นที่มีราคาแพงหรือหาไม่ได้ง่ายๆ หรือไม่?

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

เสบียง

ส่วนประกอบหลัก (ประมาณ 65 ปอนด์สำหรับมอเตอร์ 4 ตัว ไม่รวมอุปกรณ์บัดกรี)

  • Arduino Uno (เช่น https://store.arduino.cc/arduino-uno-rev3, 20 ปอนด์)
  • Adafruit Motorshield v2.3 (เช่น https://www.adafruit.com/product/1438, 20 ปอนด์) และส่วนหัวซ้อนตัวผู้ (ปกติรวมอยู่ในการซื้อ motorshield)
  • มอเตอร์ ERM ทรงกระบอก (เช่น https://www.adafruit.com/product/1438, 5, 50 ปอนด์ / มอเตอร์)
  • หัวแร้งและลวดบัดกรี
  • สายไฟ

ไม่บังคับ (ดูส่วนขยาย)

หากซื้อมอเตอร์ ERM ที่มีมวลหมุนเปิดอยู่:

  • หลอดไวนิล
  • ซอฟท์บอร์ดแบบบาง
  • เครื่องพิมพ์ 3 มิติ (สำหรับเคส Arduino)

หากคุณต้องการใช้มอเตอร์มากกว่า 4 ตัว (สำหรับมากกว่า 8 ตัวอีกครั้ง):

  • Adafruit Motorshield v2.3 และส่วนหัวซ้อนตัวผู้
  • ส่วนหัวซ้อนตัวเมีย (เช่น
  • Arduino Mega สำหรับมอเตอร์มากกว่า 6 ตัว (เช่น

ขั้นตอนที่ 1: การบัดกรี

บัดกรี
บัดกรี

ประสานหมุดเข้ากับมอเตอร์ชิลด์

Adafruit นำเสนอบทแนะนำที่ครอบคลุมมากเกี่ยวกับวิธีประสานส่วนหัวเข้ากับ motorshield (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. ประการแรก ใส่ส่วนหัวที่ซ้อนกันลงในหมุดบน Arduino Uno
  2. จากนั้นวางแผงป้องกันด้านบนเพื่อให้ด้านสั้นของหมุดยื่นออกมา
  3. หลังจากนั้นให้บัดกรีหมุดทั้งหมดเข้ากับโล่และตรวจสอบให้แน่ใจว่าบัดกรีไหลไปรอบ ๆ หมุดและสร้างรูปทรงภูเขาไฟ (ดูรูปด้านบนซึ่งนำมาจาก https://cdn.sparkfun.com/assets/c/d/ a/a/9/523b1189…)

หากคุณเป็นมือใหม่ในการบัดกรี โปรดช่วยตัวเองด้วยบทช่วยสอนเพิ่มเติม เช่น

บัดกรีสายไฟที่ยาวขึ้นกับมอเตอร์

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

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

ขั้นตอนที่ 2: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
  1. ซ้อน motorshield บน Arduino
  2. ขันสกรูมอเตอร์เข้ากับมอเตอร์ชิลด์
  3. ต่อสายเซ็นเซอร์อะนาล็อกกับ Arduino (ในภาพใช้เซ็นเซอร์วัดแสง แต่วงจรเดียวกันจะดูเหมือนเซ็นเซอร์อะนาล็อกอื่นๆ)

ขั้นตอนที่ 3: การเข้ารหัส

การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส

1. ดาวน์โหลด

ดาวน์โหลดโฟลเดอร์ zip (SSAD_analogueInputs.zip) ที่แนบมาด้านล่าง เปิดเครื่องรูดมัน

ดาวน์โหลด Arduino IDE (https://www.arduino.cc/en/main/software)

เปิดไฟล์ Arduino (SSAD_analogueInputs.ino) ที่อยู่ในโฟลเดอร์ที่คลายซิปด้วย Arduino IDE

2. ติดตั้งไลบรารี

สำหรับการรันโค้ดที่ให้มา คุณต้องติดตั้งไลบรารี่บางตัว ดังนั้น หากไฟล์ Arduino ที่แนบมาท้ายบทความนี้เปิดอยู่ใน Arduino IDE ให้ทำดังนี้

  1. คลิก: เครื่องมือ → จัดการไลบรารี…
  2. มองหา "ห้องสมุด Adafruit Motor Shield V2" ในช่องกรองการค้นหาของคุณ
  3. ติดตั้งโดยคลิกที่ปุ่มติดตั้ง

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

3. เปลี่ยนรหัส

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

การเริ่มต้นมอเตอร์และเอาต์พุตทางประสาทสัมผัส

ก่อนอื่น ให้ประกาศว่าพินไหนที่มอเตอร์ใช้ รวมถึงช่วงที่มอเตอร์ทำงาน ตัวอย่างเช่น มอเตอร์ที่ต่อกับ M4 และทำงานในช่วง (ความเร็ว) ที่ 25 และ 175 ถูกประกาศเช่นนั้น (ใต้ความคิดเห็น MAIN):

มอเตอร์ motor1 = มอเตอร์ (4, 25, 175);

เมื่อทำงานกับมอเตอร์สั่นสะเทือนขนาดเล็กที่ขับเคลื่อนในช่วงสูงถึง 3V ต้องใช้ motorshield ด้วยความระมัดระวัง เนื่องจากใช้สำหรับมอเตอร์ที่ทำงานบน 4.5VDC ถึง 13.5VDC เพื่อไม่ให้มอเตอร์ 3V เสียหาย ฉันจึงจำกัดเอาท์พุตโวลต์ของชิลด์โดยทางโปรแกรมไว้ที่ 3V (ที่ 2.95V เท่านั้น) ฉันทำอย่างนั้นโดยการวัดความเร็วสูงสุดที่ 255 เป็นโวลต์ และวัดด้วยมัลติมิเตอร์ที่นี่คือ 4.3V ดังนั้นฉันจึงไม่เคยอนุญาตให้มอเตอร์ใช้ความเร็วสูงกว่า 175 ซึ่งประมาณ 3V

มอเตอร์แต่ละตัวจะเชื่อมต่อกับ SensoryOutput หนึ่งตัว

หนึ่ง SensoryOutput ประกอบด้วยสิ่งเร้าทางประสาทสัมผัสหนึ่งหรือหลายอย่าง ตัวอย่างเช่น มอเตอร์อาจสั่นสะเทือนตามเซ็นเซอร์ตัวเดียว หรือตามค่าเฉลี่ยของเซ็นเซอร์หลายตำแหน่งที่ต่างกัน

ดังนั้น ก่อนอื่นสำหรับมอเตอร์แต่ละตัว จะต้องมีการประกาศ SensoryOutput หนึ่งรายการ ตัวเลขในวงเล็บคือค่าต่ำสุดและสูงสุดที่เซ็นเซอร์ (กลุ่ม) สามารถรับรู้ได้ สำหรับเซ็นเซอร์อะนาล็อก ส่วนใหญ่เป็น 0 และ 1023:

เอาต์พุตทางประสาทสัมผัส1 = เอาต์พุตทางประสาทสัมผัส(0, 1023);

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

motor1.drive(output1.getValue(), output1.getMin(), output1.getMax());

หากต้องการ คุณสามารถให้มอเตอร์หลายตัว (เช่น motor1 และ motor2) ให้ SensoryOutput เดียวกัน (เช่น output1) ได้

นอกจากนี้ คุณสามารถระบุค่าของเซ็นเซอร์หลายตัวให้กับมอเตอร์ตัวเดียว (ดูหัวข้อถัดไป)

การกำหนดเซ็นเซอร์

ในฟังก์ชัน setup() จะต้องมีการประกาศให้ทราบว่าเซนเซอร์ตัวใดที่จะเป็นส่วนหนึ่งของการสั่นสะเทือนของมอเตอร์ (SensoryOutput) นี่คือตัวอย่างที่คุณกำหนดว่าเซ็นเซอร์ที่เชื่อมต่อกับ Arduino Pin A0 ควรแปลเป็นการสั่นสะเทือนด้วยมอเตอร์ 1 และผลลัพธ์ที่ตามมา 1:

output1.include(A0);

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

เอาท์พุท1.รวม(A1);

มิฉะนั้น ให้ดำเนินการกับผลลัพธ์ถัดไป:

output2.include(A1);

การรวมเซ็นเซอร์หลายตัว

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

อย่างไรก็ตาม หากคุณมีแนวคิดอื่นๆ เกี่ยวกับสิ่งที่คุณต้องการทำด้วยอินพุตประสาทสัมผัสดิบหนึ่งรายการหรือหลายรายการ คุณสามารถทำตามการเปลี่ยนแปลงในฟังก์ชัน int getValue() ในคลาส SensoryOutput ได้:

int getValue(){

ผลลัพธ์สุดท้าย = 0; // TODO ทำทุกอย่างที่คุณต้องการด้วยค่าทางประสาทสัมผัส // ที่นี่สร้างค่าเฉลี่ย หากรวมค่าหลายค่าเข้าด้วยกัน (int i = 0; i < curArrayLength; i++) { finalOutput += analogRead(valueArray); } ส่งคืน finalOutput / curArrayLength; }

4. อัปโหลดโค้ดไปยัง Arduino Prototype

เสียบ Arduino Prototype (จากขั้นตอนที่ 2) กับพีซีของคุณ

คลิกเครื่องมือ → พอร์ต → เลือกพอร์ตที่เขียน Arduino/Genuino Uno ในวงเล็บ

คลิกเครื่องมือ → บอร์ด → Arduino/Genuino Uno

ตอนนี้ มอเตอร์ควรทำงานตามอินพุตของเซ็นเซอร์อะนาล็อก หากต้องการ คุณสามารถถอด Arduino ออกจากพีซีของคุณและเสียบเข้ากับแหล่งพลังงานอื่น เช่น แบตเตอรี่ 9V

ขั้นตอนที่ 4: ส่วนขยายที่เป็นไปได้

ส่วนขยายที่เป็นไปได้
ส่วนขยายที่เป็นไปได้
ส่วนขยายที่เป็นไปได้
ส่วนขยายที่เป็นไปได้
ส่วนขยายที่เป็นไปได้
ส่วนขยายที่เป็นไปได้

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

  • ครอบคลุมการหมุนของมอเตอร์ ERM:
  • การสร้าง SSAD Wearable:
  • ใช้มอเตอร์มากกว่า 4 ตัว - ซ้อน motorshields หลายตัว:
  • การใช้เซ็นเซอร์ความใกล้ชิดอัลตราโซนิกเป็นอินพุต SSAD:

แนะนำ: