ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือเซ็นเซอร์ที่แปลงท่าทางมือเป็นข้อความและคำพูด ซึ่งส่งมอบผ่านแอปพลิเคชัน Android ที่เชื่อมต่อด้วยบลูทูธ

ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

วัสดุที่ต้องใช้

ส่วนประกอบฮาร์ดแวร์

  • อาดูโน่ นาโน R3 × 1
  • โมดูลบลูทูธ HC-05 × 1
  • เครื่องวัดความเร่งแบบอนาล็อก Adafruit: ADXL335 × 1
  • จอแสดงผล LCD ตัวเลข 16 x 2 (ตัวเลือก) × 1
  • สายเชื่อมต่อ (ธรรมดา) ×20
  • เซ็นเซอร์ SparkFun Flex ×5
  • ตัวต้านทาน 10k โอห์ม x 5
    • คุณสามารถใช้ตัวต้านทานตั้งแต่ 10k ถึง 47.5k โอห์มได้ โปรดทราบว่าค่าตัวต้านทานแต่ละค่าที่ต่างกันจะส่งผลให้ได้ค่าแอนะล็อกที่อ่านได้จากตัวแบ่งแรงดันไฟฟ้าที่ต่างกัน
  • บอร์ดปลั๊กอินแบบไม่ต้องบัดกรี ขนาดเต็ม ทางเลือกแต่แนะนำ × 1
  • สาย USB-A ถึง Micro-USB x 1
    • ขึ้นอยู่กับขั้วต่อบน Nano ของคุณ ให้ใช้ขนาดที่คุณต้องการในการเชื่อมต่อ USB เข้ากับคอมพิวเตอร์ของคุณ
  • หน่วยวัดแรงเฉื่อย (IMU) (6 องศาอิสระ) x 1
    • ฉันว่าให้ใช้สิ่งนี้แทนเครื่องวัดความเร่งเพราะว่ามันมีคุณสมบัติที่ดีกว่าในแง่ของความแม่นยำของเซ็นเซอร์ตำแหน่งและการเคลื่อนไหว อย่างไรก็ตาม นั่นหมายถึงคุณจะต้องคิดหาวิธีผสมผสานมันด้วยตัวเอง

แอปพลิเคชันซอฟต์แวร์และบริการออนไลน์

  • MIT App Inventor 2
  • อาดูอิโน IDE

เครื่องมือช่างและเครื่องมือกล

  • หัวแร้งบัดกรี (ทั่วไป)
  • ลวดบัดกรีปลอดสารตะกั่ว
  • ที่จับ PCB, หัวแร้งบัดกรี
  • ปืนกาวร้อน (ทั่วไป)

เรื่องราว

แนะนำ

ตามที่ชื่อระบุ อุปกรณ์ดังกล่าวเป็นอุปกรณ์สวมใส่ที่ใช้เซ็นเซอร์ซึ่งสามารถแปลงท่าทางมือง่ายๆ เป็นข้อความและเสียงได้

สำหรับโครงการนี้ เครื่องมือและเทคโนโลยีที่จะนำมาใช้ ได้แก่ ไมโครโปรเซสเซอร์ Atmega328p, บลูทูธ (โมดูลบลูทูธ), เซ็นเซอร์ Flex, เครื่องวัดความเร่ง, โมดูลพลังงาน, ตัวต้านทาน และซอฟต์แวร์ Text to Speech (แอปพลิเคชันเทอร์มินัลบลูทูธ) เซ็นเซอร์ Flex วัดการงอของนิ้วขณะทำท่าทาง และส่งข้อมูลการเปลี่ยนแปลงของความต้านทานที่สอดคล้องกับปริมาณการงอ เครื่องวัดความเร่งจะวัดการเคลื่อนไหวเชิงเส้นของเข็มนาฬิกาบนแกน X, Y และ Z และส่งออกค่า X, Y และ Z ที่แตกต่างกันซึ่งสอดคล้องกับการเคลื่อนไหวบนแกนเหล่านี้

ข้อมูลทั้งหมดจากเซ็นเซอร์จะถูกประมวลผลโดย Arduino Nano ซึ่งเกี่ยวข้องกับการรวมค่าเชิงตรรกะของ IF/ELSE, AND และ OR ของเอาต์พุตเซ็นเซอร์ทั้งหมดเพื่อจับคู่เอาต์พุตที่ได้กับค่าที่เก็บไว้ล่วงหน้าของสัญลักษณ์ต่างๆ ที่เชื่อมโยงกับตัวอักษร เพื่อจุดนี้ จึงกำหนดช่วงที่เหมาะสมสำหรับตัวอักษรแต่ละตัวอักษร และสามารถจดจำคำศัพท์ได้ด้วยมือเดียว โดยอิงจากข้อมูลการวัดที่ได้จากการวัดซ้ำ โมดูลบลูทูธ HC-05 เชื่อมต่อกับ Arduino NANO จากนั้นข้อมูลที่ประมวลผลแล้วจะส่งต่อไปยังโมดูลบลูทูธ (เครื่องส่งสัญญาณ) ในรูปแบบสตริง โทรศัพท์มือถือระบบปฏิบัติการ Android ยังมีความสามารถ Bluetooth ในตัวอีกด้วย จากนั้นจับคู่อุปกรณ์ Bluetooth ทั้งสองเครื่องและส่งสตริงไปยังแอป Android

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

รูปที่ 1 แผนผังกล่องฮาร์ดแวร์

รูปที่ 2 แผนภาพกรณีซอฟต์แวร์

รูปที่ 3 แผนผังการทำงานของถุงมือเซ็นเซอร์

รูปที่ 4 แผนผังกระบวนการทำงานแอปพลิเคชัน Android

หลักการสำคัญเบื้องหลังการออกแบบระบบนี้ ได้แก่ การเปลี่ยนแปลงความต้านทาน ความเร่งเนื่องจากแรงโน้มถ่วง และระบบเรียลไทม์

ความเกี่ยวข้องของตัวต้านทานอยู่ที่วิธีการทำงานของเซ็นเซอร์แบบยืดหยุ่น ยิ่งเซ็นเซอร์ความยืดหยุ่นโค้งงอมากเท่าใด ความต้านทานก็จะยิ่งมากขึ้นเท่านั้น หมึกนำไฟฟ้าที่พิมพ์บนเซ็นเซอร์ทำหน้าที่เป็นตัวต้านทาน เมื่อเซนเซอร์ตรง ความต้านทานจะอยู่ที่ประมาณ 25k ชั้นนำไฟฟ้าจะถูกยืดออกเมื่อเซ็นเซอร์งอ ส่งผลให้หน้าตัดมีน้อยลง หน้าตัดที่ลดลงส่งผลให้ความต้านทานเพิ่มขึ้น ที่มุม 90° ความต้านทานนี้จะอยู่ที่ประมาณ 100KΩ

เมื่อเซ็นเซอร์ถูกยืดตรงอีกครั้ง ความต้านทานจะกลับไปสู่ค่าเดิม สามารถตรวจสอบได้ว่าเซ็นเซอร์โค้งงอมากแค่ไหนโดยการวัดความต้านทาน วิธีที่ง่ายที่สุดในการอ่านเซ็นเซอร์โค้งงอคือการเชื่อมต่อกับตัวต้านทานค่าคงที่ (ปกติคือ 10 หรือ 47 kΩ) เพื่อสร้างตัวแบ่งแรงดันไฟฟ้าตามที่แสดงในรูปที่ 5 โดยปลายด้านหนึ่งของเซ็นเซอร์จะเชื่อมต่อกับแหล่งกำเนิด และปลายอีกด้านหนึ่งจะเชื่อมต่อกับตัวต้านทานแบบดึงลง จากนั้นจุดกึ่งกลางระหว่างตัวต้านทานดึงลงค่าคงที่และเซ็นเซอร์โค้งงอจะเชื่อมต่อกับอินพุต ADC ของ Arduino ด้วยวิธีนี้ เราสามารถสร้างเอาต์พุตแรงดันไฟฟ้าแบบแปรผันได้ ซึ่งสามารถอ่านได้โดยอินพุต ADC ของ Arduino

รูปที่ 5 ตัวแบ่งแรงดันไฟฟ้า

โมดูลเซ็นเซอร์โค้งงอ

บนถุงมือมีการติดตั้งเซ็นเซอร์ความยืดหยุ่น 5 ตัวสำหรับนิ้ว 5 นิ้วที่แตกต่างกัน เซ็นเซอร์ Flex จะเปลี่ยนความต้านทานขึ้นอยู่กับปริมาณการงอของนิ้ว พิน 1 ของเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับ 3.3 โวลต์บน Arduino Nano จากนั้นพิน 2 เชื่อมต่อกับตัวต้านทาน 10k โอห์ม ซึ่งทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า จุดระหว่างตัวต้านทานแบบดึงลงและเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับพินอนาล็อกบน Arduino รูปที่ 6 แสดงโมดูลเซ็นเซอร์โค้งงอ

รูปที่ 6 โมดูลเซ็นเซอร์โค้งงอ

โมดูลเซนเซอร์ตำแหน่ง

เครื่องวัดความเร่ง (ADXL 335) ในระบบนี้ใช้เป็นเครื่องตรวจจับการเอียง มีเอาต์พุตอะนาล็อกที่เปลี่ยนแปลงตั้งแต่ 1.5 โวลต์ ถึง 3.5 โวลต์ ADXL335 เป็นวงจรรวมเครื่องวัดความเร่งแอนะล็อกสามแกน (IC) ที่อ่านค่าความเร่งในแกน X, Y และ Z เป็นแรงดันไฟฟ้าแอนะล็อก เครื่องวัดความเร่งสามารถระบุมุมเอียงเทียบกับพื้นดินได้โดยการวัดปริมาณความเร่งเนื่องจากแรงโน้มถ่วง ด้วยการตรวจจับปริมาณการเร่งความเร็วแบบไดนามิก เครื่องวัดความเร่งจึงสามารถระบุความเร็วและทิศทางของการเคลื่อนไหวของอุปกรณ์ได้ ฟังก์ชันพื้นฐานของอุปกรณ์นี้คือตรวจจับการเอียงของมือและส่งข้อมูลที่เกี่ยวข้องตามท่าทางที่มีความหมายไปยังไมโครคอนโทรลเลอร์เพื่อรับและบันทึกข้อมูล รูปที่ 7 แสดงการเชื่อมต่อ Arduino nano กับเครื่องวัดความเร่งเพื่อสร้างโมดูลเซ็นเซอร์ตำแหน่ง

รูปที่ 7 โมดูลเซ็นเซอร์ตำแหน่ง

โมดูลการส่งสัญญาณ

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

รูปที่ 8 โมดูลส่งสัญญาณ

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

ฉันใช้สาย USB สำหรับ Arduino Nano เป็นแหล่งจ่ายไฟ แต่คุณอาจตัดสินใจใช้แบตเตอรี่ก็ได้ เรียนรู้วิธีใช้แบตเตอรี่ด้วยตัวเอง ไม่ใช่เรื่องยาก ฉันเลือกที่จะไม่ใช้แบตเตอรี่เนื่องจากพื้นที่ในอุปกรณ์ไม่เพียงพอและความไม่สะดวก

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

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

เมื่อคุณบัดกรีเสร็จแล้ว ผลิตภัณฑ์ขั้นสุดท้ายควรมีลักษณะดังนี้:

รูปที่ 9 ต้นแบบ

สำหรับแอพ Android คุณสามารถเลือกสร้างแอพด้วยตัวเองได้โดยใช้ MIT App Inventor 2 หรือเครื่องมืออื่นใดที่คุณเชี่ยวชาญในฐานะนักพัฒนา Android หากคุณต้องการให้สร้างแอปของฉัน โปรดระบุไว้ในความคิดเห็นเนื่องจากคุณจะต้องพูดคุยกับฉันโดยตรง แอปพลิเคชันมีลักษณะดังต่อไปนี้:

รูปที่ 10 แอป Android

แผนภาพ

แผนผังวงจร

แผนผังวงจรนี้สร้างขึ้นโดยใช้วิธีการประกอบด้วยมือและแสดงให้เห็นวิธีเชื่อมต่อส่วนประกอบต่างๆ เข้าด้วยกัน

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

สุดท้ายฉันใช้ Arduino Mega ในแผนผังแต่ใช้ Nano ในต้นแบบสุดท้าย

แผนผังวงจร

แผนภาพนี้แสดงภาพรวมทั่วไปว่าส่วนประกอบต่างๆ เชื่อมต่อกันอย่างไร ได้รับการออกแบบด้วยการฟริตซิ่ง

รหัส

โค้ดสำหรับ การทำงานของArduino

ทำการปรับเปลี่ยนที่จำเป็น จากนั้นอัปโหลดโค้ดไปยัง Arduino Nano

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

  const int flex1 = A0;
  const int flex2 = A1;
  const int flex3 = A2;
  const int xpin = A3;                  // x-axis of the accelerometer
  const int ypin = A4;                  // y-axis
  const int zpin = A5;                  // z-axis (only on 3-axis models)


void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 mySerial.begin(9600);
 delay(15000);
}

void loop() {
  // put your main code here, to run repeatedly:
  int x = analogRead(xpin);
  delay(50);

  int y = analogRead(ypin);
  delay(50);

  int z = analogRead(zpin);
  delay(50);
  int thumb;
  int pointer;
  int middle;
  int nomx;
  int nomy;
  int nomz;
  
  thumb = analogRead(flex1);
  pointer = analogRead(flex2);
  middle = analogRead(flex3);
  nomx = x-265;
  nomy = y-253;
  nomz = z-323;

 
  Serial.print(thumb);
   Serial.print("\t");
  Serial.print(pointer);
   Serial.print("\t");
  Serial.print(middle);
   Serial.print("\t");
  Serial.print(nomx);
  Serial.print("\t");
  Serial.print(nomy);
  Serial.print("\t");
  Serial.print(nomz);
  Serial.print("\n");
  Serial.println("");
  delay(500);


   //group1
  if ((thumb > 175)  && (thumb < 210) && (pointer > 210) && (pointer < 235) && (nomy > 75) && (nomy < 95))  {
    mySerial.print("LOOK FORWARD");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 235) && (nomy > 160) && (nomy < 175))  {
    mySerial.print("LOOK DOWN");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 230)&& (nomy > 20) && (nomy < 35))  {
    mySerial.print("LOOK UP");
    }

  //group2
   else if ((thumb > 160)  && (thumb < 195) &&(pointer > 160) && (pointer < 200) && (nomy > 28) && (nomy < 43))  {
    mySerial.print("OKAY");
  }
  else if ((thumb > 190)  && (thumb < 210) && (pointer > 180) && (pointer < 200) && (nomy > 160) && (nomy < 180))  {
    mySerial.print("HOLD");
    }
    else if ((thumb > 160)  && (thumb < 200) &&(pointer > 160) && (pointer < 190) && (nomy > 60) && (nomy < 75))  {
    mySerial.print("PRONTO");
  }

   //group3
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >80) && (nomy < 100))  {
    mySerial.print("CALL ME");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >105) && (nomy < 125))  {
    mySerial.print("THUMBS DOWN");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 189) && (nomy >58) && (nomy < 70))  {
    mySerial.print("I LOVE YOU");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 220) && (pointer < 235) && (nomy > 80) && (nomy < 105))  {
    mySerial.print("GIVE ME");
    }
    else if ((thumb > 175)  && (thumb < 195) && (pointer > 170) && (pointer < 190) && (nomy > 90) && (nomy < 110))  {
    mySerial.print("GIVE ME SOME");
    }     
  else{
    mySerial.print("...");
  }
  }

ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือเซ็นเซอร์ที่แปลงท่าทางมือเป็นข้อความและคำพูด ซึ่งส่งมอบผ่านแอปพลิเคชัน Android ที่เชื่อมต่อด้วยบลูทูธ

นักเขียนบทความ
by 
นักเขียนบทความ
ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือเซ็นเซอร์ที่แปลงท่าทางมือเป็นข้อความและคำพูด ซึ่งส่งมอบผ่านแอปพลิเคชัน Android ที่เชื่อมต่อด้วยบลูทูธ

วัสดุที่ต้องใช้

ส่วนประกอบฮาร์ดแวร์

  • อาดูโน่ นาโน R3 × 1
  • โมดูลบลูทูธ HC-05 × 1
  • เครื่องวัดความเร่งแบบอนาล็อก Adafruit: ADXL335 × 1
  • จอแสดงผล LCD ตัวเลข 16 x 2 (ตัวเลือก) × 1
  • สายเชื่อมต่อ (ธรรมดา) ×20
  • เซ็นเซอร์ SparkFun Flex ×5
  • ตัวต้านทาน 10k โอห์ม x 5
    • คุณสามารถใช้ตัวต้านทานตั้งแต่ 10k ถึง 47.5k โอห์มได้ โปรดทราบว่าค่าตัวต้านทานแต่ละค่าที่ต่างกันจะส่งผลให้ได้ค่าแอนะล็อกที่อ่านได้จากตัวแบ่งแรงดันไฟฟ้าที่ต่างกัน
  • บอร์ดปลั๊กอินแบบไม่ต้องบัดกรี ขนาดเต็ม ทางเลือกแต่แนะนำ × 1
  • สาย USB-A ถึง Micro-USB x 1
    • ขึ้นอยู่กับขั้วต่อบน Nano ของคุณ ให้ใช้ขนาดที่คุณต้องการในการเชื่อมต่อ USB เข้ากับคอมพิวเตอร์ของคุณ
  • หน่วยวัดแรงเฉื่อย (IMU) (6 องศาอิสระ) x 1
    • ฉันว่าให้ใช้สิ่งนี้แทนเครื่องวัดความเร่งเพราะว่ามันมีคุณสมบัติที่ดีกว่าในแง่ของความแม่นยำของเซ็นเซอร์ตำแหน่งและการเคลื่อนไหว อย่างไรก็ตาม นั่นหมายถึงคุณจะต้องคิดหาวิธีผสมผสานมันด้วยตัวเอง

แอปพลิเคชันซอฟต์แวร์และบริการออนไลน์

  • MIT App Inventor 2
  • อาดูอิโน IDE

เครื่องมือช่างและเครื่องมือกล

  • หัวแร้งบัดกรี (ทั่วไป)
  • ลวดบัดกรีปลอดสารตะกั่ว
  • ที่จับ PCB, หัวแร้งบัดกรี
  • ปืนกาวร้อน (ทั่วไป)

เรื่องราว

แนะนำ

ตามที่ชื่อระบุ อุปกรณ์ดังกล่าวเป็นอุปกรณ์สวมใส่ที่ใช้เซ็นเซอร์ซึ่งสามารถแปลงท่าทางมือง่ายๆ เป็นข้อความและเสียงได้

สำหรับโครงการนี้ เครื่องมือและเทคโนโลยีที่จะนำมาใช้ ได้แก่ ไมโครโปรเซสเซอร์ Atmega328p, บลูทูธ (โมดูลบลูทูธ), เซ็นเซอร์ Flex, เครื่องวัดความเร่ง, โมดูลพลังงาน, ตัวต้านทาน และซอฟต์แวร์ Text to Speech (แอปพลิเคชันเทอร์มินัลบลูทูธ) เซ็นเซอร์ Flex วัดการงอของนิ้วขณะทำท่าทาง และส่งข้อมูลการเปลี่ยนแปลงของความต้านทานที่สอดคล้องกับปริมาณการงอ เครื่องวัดความเร่งจะวัดการเคลื่อนไหวเชิงเส้นของเข็มนาฬิกาบนแกน X, Y และ Z และส่งออกค่า X, Y และ Z ที่แตกต่างกันซึ่งสอดคล้องกับการเคลื่อนไหวบนแกนเหล่านี้

ข้อมูลทั้งหมดจากเซ็นเซอร์จะถูกประมวลผลโดย Arduino Nano ซึ่งเกี่ยวข้องกับการรวมค่าเชิงตรรกะของ IF/ELSE, AND และ OR ของเอาต์พุตเซ็นเซอร์ทั้งหมดเพื่อจับคู่เอาต์พุตที่ได้กับค่าที่เก็บไว้ล่วงหน้าของสัญลักษณ์ต่างๆ ที่เชื่อมโยงกับตัวอักษร เพื่อจุดนี้ จึงกำหนดช่วงที่เหมาะสมสำหรับตัวอักษรแต่ละตัวอักษร และสามารถจดจำคำศัพท์ได้ด้วยมือเดียว โดยอิงจากข้อมูลการวัดที่ได้จากการวัดซ้ำ โมดูลบลูทูธ HC-05 เชื่อมต่อกับ Arduino NANO จากนั้นข้อมูลที่ประมวลผลแล้วจะส่งต่อไปยังโมดูลบลูทูธ (เครื่องส่งสัญญาณ) ในรูปแบบสตริง โทรศัพท์มือถือระบบปฏิบัติการ Android ยังมีความสามารถ Bluetooth ในตัวอีกด้วย จากนั้นจับคู่อุปกรณ์ Bluetooth ทั้งสองเครื่องและส่งสตริงไปยังแอป Android

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

รูปที่ 1 แผนผังกล่องฮาร์ดแวร์

รูปที่ 2 แผนภาพกรณีซอฟต์แวร์

รูปที่ 3 แผนผังการทำงานของถุงมือเซ็นเซอร์

รูปที่ 4 แผนผังกระบวนการทำงานแอปพลิเคชัน Android

หลักการสำคัญเบื้องหลังการออกแบบระบบนี้ ได้แก่ การเปลี่ยนแปลงความต้านทาน ความเร่งเนื่องจากแรงโน้มถ่วง และระบบเรียลไทม์

ความเกี่ยวข้องของตัวต้านทานอยู่ที่วิธีการทำงานของเซ็นเซอร์แบบยืดหยุ่น ยิ่งเซ็นเซอร์ความยืดหยุ่นโค้งงอมากเท่าใด ความต้านทานก็จะยิ่งมากขึ้นเท่านั้น หมึกนำไฟฟ้าที่พิมพ์บนเซ็นเซอร์ทำหน้าที่เป็นตัวต้านทาน เมื่อเซนเซอร์ตรง ความต้านทานจะอยู่ที่ประมาณ 25k ชั้นนำไฟฟ้าจะถูกยืดออกเมื่อเซ็นเซอร์งอ ส่งผลให้หน้าตัดมีน้อยลง หน้าตัดที่ลดลงส่งผลให้ความต้านทานเพิ่มขึ้น ที่มุม 90° ความต้านทานนี้จะอยู่ที่ประมาณ 100KΩ

เมื่อเซ็นเซอร์ถูกยืดตรงอีกครั้ง ความต้านทานจะกลับไปสู่ค่าเดิม สามารถตรวจสอบได้ว่าเซ็นเซอร์โค้งงอมากแค่ไหนโดยการวัดความต้านทาน วิธีที่ง่ายที่สุดในการอ่านเซ็นเซอร์โค้งงอคือการเชื่อมต่อกับตัวต้านทานค่าคงที่ (ปกติคือ 10 หรือ 47 kΩ) เพื่อสร้างตัวแบ่งแรงดันไฟฟ้าตามที่แสดงในรูปที่ 5 โดยปลายด้านหนึ่งของเซ็นเซอร์จะเชื่อมต่อกับแหล่งกำเนิด และปลายอีกด้านหนึ่งจะเชื่อมต่อกับตัวต้านทานแบบดึงลง จากนั้นจุดกึ่งกลางระหว่างตัวต้านทานดึงลงค่าคงที่และเซ็นเซอร์โค้งงอจะเชื่อมต่อกับอินพุต ADC ของ Arduino ด้วยวิธีนี้ เราสามารถสร้างเอาต์พุตแรงดันไฟฟ้าแบบแปรผันได้ ซึ่งสามารถอ่านได้โดยอินพุต ADC ของ Arduino

รูปที่ 5 ตัวแบ่งแรงดันไฟฟ้า

โมดูลเซ็นเซอร์โค้งงอ

บนถุงมือมีการติดตั้งเซ็นเซอร์ความยืดหยุ่น 5 ตัวสำหรับนิ้ว 5 นิ้วที่แตกต่างกัน เซ็นเซอร์ Flex จะเปลี่ยนความต้านทานขึ้นอยู่กับปริมาณการงอของนิ้ว พิน 1 ของเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับ 3.3 โวลต์บน Arduino Nano จากนั้นพิน 2 เชื่อมต่อกับตัวต้านทาน 10k โอห์ม ซึ่งทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า จุดระหว่างตัวต้านทานแบบดึงลงและเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับพินอนาล็อกบน Arduino รูปที่ 6 แสดงโมดูลเซ็นเซอร์โค้งงอ

รูปที่ 6 โมดูลเซ็นเซอร์โค้งงอ

โมดูลเซนเซอร์ตำแหน่ง

เครื่องวัดความเร่ง (ADXL 335) ในระบบนี้ใช้เป็นเครื่องตรวจจับการเอียง มีเอาต์พุตอะนาล็อกที่เปลี่ยนแปลงตั้งแต่ 1.5 โวลต์ ถึง 3.5 โวลต์ ADXL335 เป็นวงจรรวมเครื่องวัดความเร่งแอนะล็อกสามแกน (IC) ที่อ่านค่าความเร่งในแกน X, Y และ Z เป็นแรงดันไฟฟ้าแอนะล็อก เครื่องวัดความเร่งสามารถระบุมุมเอียงเทียบกับพื้นดินได้โดยการวัดปริมาณความเร่งเนื่องจากแรงโน้มถ่วง ด้วยการตรวจจับปริมาณการเร่งความเร็วแบบไดนามิก เครื่องวัดความเร่งจึงสามารถระบุความเร็วและทิศทางของการเคลื่อนไหวของอุปกรณ์ได้ ฟังก์ชันพื้นฐานของอุปกรณ์นี้คือตรวจจับการเอียงของมือและส่งข้อมูลที่เกี่ยวข้องตามท่าทางที่มีความหมายไปยังไมโครคอนโทรลเลอร์เพื่อรับและบันทึกข้อมูล รูปที่ 7 แสดงการเชื่อมต่อ Arduino nano กับเครื่องวัดความเร่งเพื่อสร้างโมดูลเซ็นเซอร์ตำแหน่ง

รูปที่ 7 โมดูลเซ็นเซอร์ตำแหน่ง

โมดูลการส่งสัญญาณ

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

รูปที่ 8 โมดูลส่งสัญญาณ

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

ฉันใช้สาย USB สำหรับ Arduino Nano เป็นแหล่งจ่ายไฟ แต่คุณอาจตัดสินใจใช้แบตเตอรี่ก็ได้ เรียนรู้วิธีใช้แบตเตอรี่ด้วยตัวเอง ไม่ใช่เรื่องยาก ฉันเลือกที่จะไม่ใช้แบตเตอรี่เนื่องจากพื้นที่ในอุปกรณ์ไม่เพียงพอและความไม่สะดวก

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

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

เมื่อคุณบัดกรีเสร็จแล้ว ผลิตภัณฑ์ขั้นสุดท้ายควรมีลักษณะดังนี้:

รูปที่ 9 ต้นแบบ

สำหรับแอพ Android คุณสามารถเลือกสร้างแอพด้วยตัวเองได้โดยใช้ MIT App Inventor 2 หรือเครื่องมืออื่นใดที่คุณเชี่ยวชาญในฐานะนักพัฒนา Android หากคุณต้องการให้สร้างแอปของฉัน โปรดระบุไว้ในความคิดเห็นเนื่องจากคุณจะต้องพูดคุยกับฉันโดยตรง แอปพลิเคชันมีลักษณะดังต่อไปนี้:

รูปที่ 10 แอป Android

แผนภาพ

แผนผังวงจร

แผนผังวงจรนี้สร้างขึ้นโดยใช้วิธีการประกอบด้วยมือและแสดงให้เห็นวิธีเชื่อมต่อส่วนประกอบต่างๆ เข้าด้วยกัน

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

สุดท้ายฉันใช้ Arduino Mega ในแผนผังแต่ใช้ Nano ในต้นแบบสุดท้าย

แผนผังวงจร

แผนภาพนี้แสดงภาพรวมทั่วไปว่าส่วนประกอบต่างๆ เชื่อมต่อกันอย่างไร ได้รับการออกแบบด้วยการฟริตซิ่ง

รหัส

โค้ดสำหรับ การทำงานของArduino

ทำการปรับเปลี่ยนที่จำเป็น จากนั้นอัปโหลดโค้ดไปยัง Arduino Nano

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

  const int flex1 = A0;
  const int flex2 = A1;
  const int flex3 = A2;
  const int xpin = A3;                  // x-axis of the accelerometer
  const int ypin = A4;                  // y-axis
  const int zpin = A5;                  // z-axis (only on 3-axis models)


void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 mySerial.begin(9600);
 delay(15000);
}

void loop() {
  // put your main code here, to run repeatedly:
  int x = analogRead(xpin);
  delay(50);

  int y = analogRead(ypin);
  delay(50);

  int z = analogRead(zpin);
  delay(50);
  int thumb;
  int pointer;
  int middle;
  int nomx;
  int nomy;
  int nomz;
  
  thumb = analogRead(flex1);
  pointer = analogRead(flex2);
  middle = analogRead(flex3);
  nomx = x-265;
  nomy = y-253;
  nomz = z-323;

 
  Serial.print(thumb);
   Serial.print("\t");
  Serial.print(pointer);
   Serial.print("\t");
  Serial.print(middle);
   Serial.print("\t");
  Serial.print(nomx);
  Serial.print("\t");
  Serial.print(nomy);
  Serial.print("\t");
  Serial.print(nomz);
  Serial.print("\n");
  Serial.println("");
  delay(500);


   //group1
  if ((thumb > 175)  && (thumb < 210) && (pointer > 210) && (pointer < 235) && (nomy > 75) && (nomy < 95))  {
    mySerial.print("LOOK FORWARD");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 235) && (nomy > 160) && (nomy < 175))  {
    mySerial.print("LOOK DOWN");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 230)&& (nomy > 20) && (nomy < 35))  {
    mySerial.print("LOOK UP");
    }

  //group2
   else if ((thumb > 160)  && (thumb < 195) &&(pointer > 160) && (pointer < 200) && (nomy > 28) && (nomy < 43))  {
    mySerial.print("OKAY");
  }
  else if ((thumb > 190)  && (thumb < 210) && (pointer > 180) && (pointer < 200) && (nomy > 160) && (nomy < 180))  {
    mySerial.print("HOLD");
    }
    else if ((thumb > 160)  && (thumb < 200) &&(pointer > 160) && (pointer < 190) && (nomy > 60) && (nomy < 75))  {
    mySerial.print("PRONTO");
  }

   //group3
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >80) && (nomy < 100))  {
    mySerial.print("CALL ME");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >105) && (nomy < 125))  {
    mySerial.print("THUMBS DOWN");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 189) && (nomy >58) && (nomy < 70))  {
    mySerial.print("I LOVE YOU");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 220) && (pointer < 235) && (nomy > 80) && (nomy < 105))  {
    mySerial.print("GIVE ME");
    }
    else if ((thumb > 175)  && (thumb < 195) && (pointer > 170) && (pointer < 190) && (nomy > 90) && (nomy < 110))  {
    mySerial.print("GIVE ME SOME");
    }     
  else{
    mySerial.print("...");
  }
  }

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือภาษามืออิเล็กทรอนิกส์ DIY

ถุงมือเซ็นเซอร์ที่แปลงท่าทางมือเป็นข้อความและคำพูด ซึ่งส่งมอบผ่านแอปพลิเคชัน Android ที่เชื่อมต่อด้วยบลูทูธ

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

วัสดุที่ต้องใช้

ส่วนประกอบฮาร์ดแวร์

  • อาดูโน่ นาโน R3 × 1
  • โมดูลบลูทูธ HC-05 × 1
  • เครื่องวัดความเร่งแบบอนาล็อก Adafruit: ADXL335 × 1
  • จอแสดงผล LCD ตัวเลข 16 x 2 (ตัวเลือก) × 1
  • สายเชื่อมต่อ (ธรรมดา) ×20
  • เซ็นเซอร์ SparkFun Flex ×5
  • ตัวต้านทาน 10k โอห์ม x 5
    • คุณสามารถใช้ตัวต้านทานตั้งแต่ 10k ถึง 47.5k โอห์มได้ โปรดทราบว่าค่าตัวต้านทานแต่ละค่าที่ต่างกันจะส่งผลให้ได้ค่าแอนะล็อกที่อ่านได้จากตัวแบ่งแรงดันไฟฟ้าที่ต่างกัน
  • บอร์ดปลั๊กอินแบบไม่ต้องบัดกรี ขนาดเต็ม ทางเลือกแต่แนะนำ × 1
  • สาย USB-A ถึง Micro-USB x 1
    • ขึ้นอยู่กับขั้วต่อบน Nano ของคุณ ให้ใช้ขนาดที่คุณต้องการในการเชื่อมต่อ USB เข้ากับคอมพิวเตอร์ของคุณ
  • หน่วยวัดแรงเฉื่อย (IMU) (6 องศาอิสระ) x 1
    • ฉันว่าให้ใช้สิ่งนี้แทนเครื่องวัดความเร่งเพราะว่ามันมีคุณสมบัติที่ดีกว่าในแง่ของความแม่นยำของเซ็นเซอร์ตำแหน่งและการเคลื่อนไหว อย่างไรก็ตาม นั่นหมายถึงคุณจะต้องคิดหาวิธีผสมผสานมันด้วยตัวเอง

แอปพลิเคชันซอฟต์แวร์และบริการออนไลน์

  • MIT App Inventor 2
  • อาดูอิโน IDE

เครื่องมือช่างและเครื่องมือกล

  • หัวแร้งบัดกรี (ทั่วไป)
  • ลวดบัดกรีปลอดสารตะกั่ว
  • ที่จับ PCB, หัวแร้งบัดกรี
  • ปืนกาวร้อน (ทั่วไป)

เรื่องราว

แนะนำ

ตามที่ชื่อระบุ อุปกรณ์ดังกล่าวเป็นอุปกรณ์สวมใส่ที่ใช้เซ็นเซอร์ซึ่งสามารถแปลงท่าทางมือง่ายๆ เป็นข้อความและเสียงได้

สำหรับโครงการนี้ เครื่องมือและเทคโนโลยีที่จะนำมาใช้ ได้แก่ ไมโครโปรเซสเซอร์ Atmega328p, บลูทูธ (โมดูลบลูทูธ), เซ็นเซอร์ Flex, เครื่องวัดความเร่ง, โมดูลพลังงาน, ตัวต้านทาน และซอฟต์แวร์ Text to Speech (แอปพลิเคชันเทอร์มินัลบลูทูธ) เซ็นเซอร์ Flex วัดการงอของนิ้วขณะทำท่าทาง และส่งข้อมูลการเปลี่ยนแปลงของความต้านทานที่สอดคล้องกับปริมาณการงอ เครื่องวัดความเร่งจะวัดการเคลื่อนไหวเชิงเส้นของเข็มนาฬิกาบนแกน X, Y และ Z และส่งออกค่า X, Y และ Z ที่แตกต่างกันซึ่งสอดคล้องกับการเคลื่อนไหวบนแกนเหล่านี้

ข้อมูลทั้งหมดจากเซ็นเซอร์จะถูกประมวลผลโดย Arduino Nano ซึ่งเกี่ยวข้องกับการรวมค่าเชิงตรรกะของ IF/ELSE, AND และ OR ของเอาต์พุตเซ็นเซอร์ทั้งหมดเพื่อจับคู่เอาต์พุตที่ได้กับค่าที่เก็บไว้ล่วงหน้าของสัญลักษณ์ต่างๆ ที่เชื่อมโยงกับตัวอักษร เพื่อจุดนี้ จึงกำหนดช่วงที่เหมาะสมสำหรับตัวอักษรแต่ละตัวอักษร และสามารถจดจำคำศัพท์ได้ด้วยมือเดียว โดยอิงจากข้อมูลการวัดที่ได้จากการวัดซ้ำ โมดูลบลูทูธ HC-05 เชื่อมต่อกับ Arduino NANO จากนั้นข้อมูลที่ประมวลผลแล้วจะส่งต่อไปยังโมดูลบลูทูธ (เครื่องส่งสัญญาณ) ในรูปแบบสตริง โทรศัพท์มือถือระบบปฏิบัติการ Android ยังมีความสามารถ Bluetooth ในตัวอีกด้วย จากนั้นจับคู่อุปกรณ์ Bluetooth ทั้งสองเครื่องและส่งสตริงไปยังแอป Android

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

รูปที่ 1 แผนผังกล่องฮาร์ดแวร์

รูปที่ 2 แผนภาพกรณีซอฟต์แวร์

รูปที่ 3 แผนผังการทำงานของถุงมือเซ็นเซอร์

รูปที่ 4 แผนผังกระบวนการทำงานแอปพลิเคชัน Android

หลักการสำคัญเบื้องหลังการออกแบบระบบนี้ ได้แก่ การเปลี่ยนแปลงความต้านทาน ความเร่งเนื่องจากแรงโน้มถ่วง และระบบเรียลไทม์

ความเกี่ยวข้องของตัวต้านทานอยู่ที่วิธีการทำงานของเซ็นเซอร์แบบยืดหยุ่น ยิ่งเซ็นเซอร์ความยืดหยุ่นโค้งงอมากเท่าใด ความต้านทานก็จะยิ่งมากขึ้นเท่านั้น หมึกนำไฟฟ้าที่พิมพ์บนเซ็นเซอร์ทำหน้าที่เป็นตัวต้านทาน เมื่อเซนเซอร์ตรง ความต้านทานจะอยู่ที่ประมาณ 25k ชั้นนำไฟฟ้าจะถูกยืดออกเมื่อเซ็นเซอร์งอ ส่งผลให้หน้าตัดมีน้อยลง หน้าตัดที่ลดลงส่งผลให้ความต้านทานเพิ่มขึ้น ที่มุม 90° ความต้านทานนี้จะอยู่ที่ประมาณ 100KΩ

เมื่อเซ็นเซอร์ถูกยืดตรงอีกครั้ง ความต้านทานจะกลับไปสู่ค่าเดิม สามารถตรวจสอบได้ว่าเซ็นเซอร์โค้งงอมากแค่ไหนโดยการวัดความต้านทาน วิธีที่ง่ายที่สุดในการอ่านเซ็นเซอร์โค้งงอคือการเชื่อมต่อกับตัวต้านทานค่าคงที่ (ปกติคือ 10 หรือ 47 kΩ) เพื่อสร้างตัวแบ่งแรงดันไฟฟ้าตามที่แสดงในรูปที่ 5 โดยปลายด้านหนึ่งของเซ็นเซอร์จะเชื่อมต่อกับแหล่งกำเนิด และปลายอีกด้านหนึ่งจะเชื่อมต่อกับตัวต้านทานแบบดึงลง จากนั้นจุดกึ่งกลางระหว่างตัวต้านทานดึงลงค่าคงที่และเซ็นเซอร์โค้งงอจะเชื่อมต่อกับอินพุต ADC ของ Arduino ด้วยวิธีนี้ เราสามารถสร้างเอาต์พุตแรงดันไฟฟ้าแบบแปรผันได้ ซึ่งสามารถอ่านได้โดยอินพุต ADC ของ Arduino

รูปที่ 5 ตัวแบ่งแรงดันไฟฟ้า

โมดูลเซ็นเซอร์โค้งงอ

บนถุงมือมีการติดตั้งเซ็นเซอร์ความยืดหยุ่น 5 ตัวสำหรับนิ้ว 5 นิ้วที่แตกต่างกัน เซ็นเซอร์ Flex จะเปลี่ยนความต้านทานขึ้นอยู่กับปริมาณการงอของนิ้ว พิน 1 ของเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับ 3.3 โวลต์บน Arduino Nano จากนั้นพิน 2 เชื่อมต่อกับตัวต้านทาน 10k โอห์ม ซึ่งทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า จุดระหว่างตัวต้านทานแบบดึงลงและเซนเซอร์แบบยืดหยุ่นเชื่อมต่อกับพินอนาล็อกบน Arduino รูปที่ 6 แสดงโมดูลเซ็นเซอร์โค้งงอ

รูปที่ 6 โมดูลเซ็นเซอร์โค้งงอ

โมดูลเซนเซอร์ตำแหน่ง

เครื่องวัดความเร่ง (ADXL 335) ในระบบนี้ใช้เป็นเครื่องตรวจจับการเอียง มีเอาต์พุตอะนาล็อกที่เปลี่ยนแปลงตั้งแต่ 1.5 โวลต์ ถึง 3.5 โวลต์ ADXL335 เป็นวงจรรวมเครื่องวัดความเร่งแอนะล็อกสามแกน (IC) ที่อ่านค่าความเร่งในแกน X, Y และ Z เป็นแรงดันไฟฟ้าแอนะล็อก เครื่องวัดความเร่งสามารถระบุมุมเอียงเทียบกับพื้นดินได้โดยการวัดปริมาณความเร่งเนื่องจากแรงโน้มถ่วง ด้วยการตรวจจับปริมาณการเร่งความเร็วแบบไดนามิก เครื่องวัดความเร่งจึงสามารถระบุความเร็วและทิศทางของการเคลื่อนไหวของอุปกรณ์ได้ ฟังก์ชันพื้นฐานของอุปกรณ์นี้คือตรวจจับการเอียงของมือและส่งข้อมูลที่เกี่ยวข้องตามท่าทางที่มีความหมายไปยังไมโครคอนโทรลเลอร์เพื่อรับและบันทึกข้อมูล รูปที่ 7 แสดงการเชื่อมต่อ Arduino nano กับเครื่องวัดความเร่งเพื่อสร้างโมดูลเซ็นเซอร์ตำแหน่ง

รูปที่ 7 โมดูลเซ็นเซอร์ตำแหน่ง

โมดูลการส่งสัญญาณ

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

รูปที่ 8 โมดูลส่งสัญญาณ

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

ฉันใช้สาย USB สำหรับ Arduino Nano เป็นแหล่งจ่ายไฟ แต่คุณอาจตัดสินใจใช้แบตเตอรี่ก็ได้ เรียนรู้วิธีใช้แบตเตอรี่ด้วยตัวเอง ไม่ใช่เรื่องยาก ฉันเลือกที่จะไม่ใช้แบตเตอรี่เนื่องจากพื้นที่ในอุปกรณ์ไม่เพียงพอและความไม่สะดวก

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

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

เมื่อคุณบัดกรีเสร็จแล้ว ผลิตภัณฑ์ขั้นสุดท้ายควรมีลักษณะดังนี้:

รูปที่ 9 ต้นแบบ

สำหรับแอพ Android คุณสามารถเลือกสร้างแอพด้วยตัวเองได้โดยใช้ MIT App Inventor 2 หรือเครื่องมืออื่นใดที่คุณเชี่ยวชาญในฐานะนักพัฒนา Android หากคุณต้องการให้สร้างแอปของฉัน โปรดระบุไว้ในความคิดเห็นเนื่องจากคุณจะต้องพูดคุยกับฉันโดยตรง แอปพลิเคชันมีลักษณะดังต่อไปนี้:

รูปที่ 10 แอป Android

แผนภาพ

แผนผังวงจร

แผนผังวงจรนี้สร้างขึ้นโดยใช้วิธีการประกอบด้วยมือและแสดงให้เห็นวิธีเชื่อมต่อส่วนประกอบต่างๆ เข้าด้วยกัน

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

สุดท้ายฉันใช้ Arduino Mega ในแผนผังแต่ใช้ Nano ในต้นแบบสุดท้าย

แผนผังวงจร

แผนภาพนี้แสดงภาพรวมทั่วไปว่าส่วนประกอบต่างๆ เชื่อมต่อกันอย่างไร ได้รับการออกแบบด้วยการฟริตซิ่ง

รหัส

โค้ดสำหรับ การทำงานของArduino

ทำการปรับเปลี่ยนที่จำเป็น จากนั้นอัปโหลดโค้ดไปยัง Arduino Nano

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

  const int flex1 = A0;
  const int flex2 = A1;
  const int flex3 = A2;
  const int xpin = A3;                  // x-axis of the accelerometer
  const int ypin = A4;                  // y-axis
  const int zpin = A5;                  // z-axis (only on 3-axis models)


void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 mySerial.begin(9600);
 delay(15000);
}

void loop() {
  // put your main code here, to run repeatedly:
  int x = analogRead(xpin);
  delay(50);

  int y = analogRead(ypin);
  delay(50);

  int z = analogRead(zpin);
  delay(50);
  int thumb;
  int pointer;
  int middle;
  int nomx;
  int nomy;
  int nomz;
  
  thumb = analogRead(flex1);
  pointer = analogRead(flex2);
  middle = analogRead(flex3);
  nomx = x-265;
  nomy = y-253;
  nomz = z-323;

 
  Serial.print(thumb);
   Serial.print("\t");
  Serial.print(pointer);
   Serial.print("\t");
  Serial.print(middle);
   Serial.print("\t");
  Serial.print(nomx);
  Serial.print("\t");
  Serial.print(nomy);
  Serial.print("\t");
  Serial.print(nomz);
  Serial.print("\n");
  Serial.println("");
  delay(500);


   //group1
  if ((thumb > 175)  && (thumb < 210) && (pointer > 210) && (pointer < 235) && (nomy > 75) && (nomy < 95))  {
    mySerial.print("LOOK FORWARD");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 235) && (nomy > 160) && (nomy < 175))  {
    mySerial.print("LOOK DOWN");
    }
    else if ((thumb > 175)  && (thumb < 200) && (pointer > 210) && (pointer < 230)&& (nomy > 20) && (nomy < 35))  {
    mySerial.print("LOOK UP");
    }

  //group2
   else if ((thumb > 160)  && (thumb < 195) &&(pointer > 160) && (pointer < 200) && (nomy > 28) && (nomy < 43))  {
    mySerial.print("OKAY");
  }
  else if ((thumb > 190)  && (thumb < 210) && (pointer > 180) && (pointer < 200) && (nomy > 160) && (nomy < 180))  {
    mySerial.print("HOLD");
    }
    else if ((thumb > 160)  && (thumb < 200) &&(pointer > 160) && (pointer < 190) && (nomy > 60) && (nomy < 75))  {
    mySerial.print("PRONTO");
  }

   //group3
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >80) && (nomy < 100))  {
    mySerial.print("CALL ME");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 180) && (nomy >105) && (nomy < 125))  {
    mySerial.print("THUMBS DOWN");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 150) && (pointer < 189) && (nomy >58) && (nomy < 70))  {
    mySerial.print("I LOVE YOU");
    }
    else if ((thumb > 230)  && (thumb < 250) && (pointer > 220) && (pointer < 235) && (nomy > 80) && (nomy < 105))  {
    mySerial.print("GIVE ME");
    }
    else if ((thumb > 175)  && (thumb < 195) && (pointer > 170) && (pointer < 190) && (nomy > 90) && (nomy < 110))  {
    mySerial.print("GIVE ME SOME");
    }     
  else{
    mySerial.print("...");
  }
  }