สารบัญ:

เมาส์ 3D AIR - Arduino + การประมวลผล: 5 ขั้นตอน
เมาส์ 3D AIR - Arduino + การประมวลผล: 5 ขั้นตอน

วีดีโอ: เมาส์ 3D AIR - Arduino + การประมวลผล: 5 ขั้นตอน

วีดีโอ: เมาส์ 3D AIR - Arduino + การประมวลผล: 5 ขั้นตอน
วีดีโอ: Arduino Industrial application: Control anything on time basis | Arduino industrial automation 2024, กรกฎาคม
Anonim
เมาส์ 3D AIR | Arduino + การประมวลผล
เมาส์ 3D AIR | Arduino + การประมวลผล

เมาส์ 3D AIR | Arduino + Processing ฉันเป็นนักเรียนด้านการออกแบบอุตสาหกรรม และปีที่แล้วเป็นส่วนหนึ่งของหลักสูตรที่เรียกว่า "Technology as RAW material" ฉันสร้างโครงการนี้เป็นงานสุดท้ายของฉัน ฉันทำงานส่วนใหญ่กับ SolidWorks ซึ่งเป็นซอฟต์แวร์ CAD สำหรับการออกแบบและการสร้าง. การหมุนตัวทึบบนหน้าจอทำได้โดยใช้ปุ่มกลางของเมาส์ ฉันกำลังมองหาบางอย่างที่เข้าใจง่ายกว่า นี่คือวิธีที่ฉันได้ทำเมาส์ลม 3 มิติ ซึ่งการหมุนจริงของวัตถุทำได้โดยการเลื่อนเมาส์ไปกลางอากาศบนแกนทั้ง 3 อัน เช่นเดียวกับที่คุณจะหมุนวัตถุหากคุณถือมันไว้ในมือ ฉันใช้ Arduino เซ็นเซอร์สองสามตัวและภาพสเก็ตช์การประมวลผลหมายเหตุ: ณ ตอนนี้ นี่เป็นเพียงการสาธิตแนวคิดเท่านั้น เนื่องจากไม่มีปลั๊กอินจริงที่จะทำงานกับ SolidWork (แต่แน่นอน โปรดอย่าลังเลที่จะใช้ เขียนอย่างใดอย่างหนึ่งถ้าคุณรู้วิธี:)- เนื่องจากฮาร์ดแวร์ทั้งหมดไม่ใช่ของฉัน เมาส์ 3 มิติของจริงจึงหายไปนานแล้ว และฉันกำลังใช้รูปภาพและวิดีโอเพื่อพยายามทำความเข้าใจในสิ่งทั้งหมดนี้ และเพื่อให้คุณ แนวคิดบางอย่างถ้าคุณต้องการลองและสร้างด้วยตัวเอง…สนุกกับมัน… (มันเป็นคำสั่งแรกของฉัน) นี่คือวิดีโอสาธิตของโครงการที่เสร็จแล้ว

ขั้นตอนที่ 1: ฮาร์ดแวร์และสิ่งของ

ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ
ฮาร์ดแวร์และสิ่งของ

ไม่ใช่คำแนะนำที่ถูกที่สุด เนื่องจากใช้มาตรความเร่ง 3 แกน + เซ็นเซอร์เข็มทิศ สิ่งที่คุณต้องการ:* เมาส์ - เมาส์แบบใช้แล้วจะดีกว่า (เพราะว่าใช้แล้วและถูกกว่า) เมาส์ตัวใดก็ตามควรทำ คุณจำเป็นต้องมีพื้นที่เพียงพอสำหรับจัดเก็บเซ็นเซอร์และสายไฟเพิ่มเติม ดังนั้นอย่าเลือกใช้เมาส์ที่บางหรือเล็กเป็นพิเศษ* Compass Module with Tilt Compensation - HMC634 - นี่คือเซ็นเซอร์ 3 แกน ซื้อที่ SpurkFun ในราคา ~ $149* ตัวแปลงระดับลอจิก - ต้องมี! เนื่องจาก Arduino คือ 5V และเซ็นเซอร์ 3 แกนคือ 3.3V คุณจำเป็นต้องมีหนึ่งในนั้นเพื่อแปลง 5V เป็น 3.3V มีชื่อใหญ่ แต่ราคาเพียง 1.95 เหรียญที่ SpurkFun* เครื่องตรวจจับออปติคัลขนาดใหญ่ / โฟโตทรานซิสเตอร์ - นี่คือเซ็นเซอร์ออปติคัลธรรมดาที่ใช้ในโครงการนี้เพื่อตรวจจับเมื่อเมาส์ถูกยกขึ้นจากพื้นผิวการทำงาน ซื้อที่ SpurkFun ในราคา $2.25 หากคุณไม่มีพื้นที่เพียงพอสำหรับใส่เมาส์นี้ไว้ในเมาส์ที่คุณเลือก คุณสามารถใช้อันนี้ ซึ่งเล็กกว่าและถูกกว่า * LED หนึ่ง (1) ดวง - ไม่ต้องกังวลเรื่องสี ความสว่างเป็นพิเศษจะทำงานได้ดีกว่า* ตัวต้านทาน 2 ตัว - หนึ่ง (1) x 100Ω และหนึ่ง (1) x 100KΩ (สำหรับเซ็นเซอร์ออปติคัล)* บอร์ด Arduino - DA! ฉันใช้โมเดล Diecimila Duemilanove ที่ใหม่กว่ามีจำหน่ายที่ SpurkFun ในราคาประมาณ 29.95 ดอลลาร์ (ควรใช้งานได้ด้วย) + ติดตั้งซอฟต์แวร์ Arduino แล้ว* ติดตั้งซอฟต์แวร์ประมวลผลแล้ว* ซอร์สโค้ดของโปรเจ็กต์ (อย่ากังวล คุณจะสามารถดาวน์โหลดได้ในไม่กี่วินาที) บวก: บางส่วน กาวร้อน (เพื่อยึดสิ่งของเข้าที่) สกรูเล็กๆ สองสามตัว พุกไม้ขนาด 6 มม. (เส้นผ่านศูนย์กลาง) ประมาณ 10 ซม. ลวดเสริมบางตัว หัวแร้ง ฉันใช้มีดตัดกับตะไบ (เพื่อการขึ้นรูป) ("ตกลง อย่าเกลียดฉันสำหรับขั้นตอนนี้ ภาษาอังกฤษเป็นภาษาที่ 2 ของฉัน ถ้าฉันทำผิด ฉันขอโทษ ฉันแน่ใจว่าคุณจะเข้าใจสิ่งที่ฉันพูดในไม่กี่วินาทีเมื่อ คุณจะเห็นมันในภาพ")

ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์

อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์

ทุกอย่างต้องประสานเข้าด้วยกัน…ในทาง…หมายเหตุ: เซ็นเซอร์ 3 แกนเป็นสิ่งเล็กน้อยที่มีราคาแพง ตรวจสอบสายไฟอีกครั้งก่อนที่จะเปิดเครื่องทั้งหมด…ดูแผนผังที่แนบมาสำหรับการเดินสายทั้งหมดที่ใช้ในโครงการนี้ ซอร์สโค้ดที่แนบมา ใช้งานได้ก็ต่อเมื่อคุณใช้หมายเลขพินเดียวกันกับที่ฉันใช้ แต่คุณสามารถเปลี่ยนหมายเลขเหล่านี้ได้เมื่อเชื่อมต่อตราบใดที่คุณเปลี่ยนหมายเลขที่เหมาะสมในรหัส การเชื่อมต่อเซ็นเซอร์ 3 แกนกับตัวแปลงระดับลอจิก:Sensor VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> Converter TXI (Chan1)Converter TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> Converter TXI (Chan2)Converter TXO (Chan2) -> Arduino ANALOG IN 5Converter GND (อย่างน้อยหนึ่งตัว) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3Optical sensor ไปยัง Arduino: ดูภาพที่แนบมาDigital in = Pin 11 บน ArduinoLED:GND ถึงบางส่วน GND (ฉันใช้เซ็นเซอร์ออปติคัลตัวใดตัวหนึ่ง)+ กับ Arduino PIN 13 (ซึ่งทำได้เนื่องจากพินนี้มีตัวต้านทานออนบอร์ดอยู่แล้ว หากคุณใช้ตัวต้านทานอื่น อย่าลืมใช้ตัวต้านทานเพื่อไม่ให้ไฟ LED ไหม้)

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

การเตรียมเมาส์
การเตรียมเมาส์
การเตรียมเมาส์
การเตรียมเมาส์
การเตรียมเมาส์
การเตรียมเมาส์

นี่คือตำแหน่งที่เซ็นเซอร์พบตำแหน่งภายในเคสของเมาส์ หาตำแหน่งที่ดีที่สุดในการแก้ไขเซ็นเซอร์ 3 แกน ตรวจสอบให้แน่ใจว่าได้ปรับระดับและคำนึงถึงการวางแนวแล้ว (คุณจะรู้ว่าเมื่อคุณมีเซ็นเซอร์อยู่ในมือ) คุณสามารถแก้ไขได้ตามที่คุณต้องการ ฉันใช้สมอไม้สั้น 2 ชิ้นเจาะเพื่อรับสกรูเล็ก ๆ 2 ตัว และติดกาวร้อนบนกระดานหลักของเมาส์ สำหรับเซ็นเซอร์ออปติคัล ให้สร้างรูสี่เหลี่ยมที่ด้านล่างของเมาส์ แนวคิดคือให้เซ็นเซอร์ "เห็น" ตารางตลอดเวลา เมื่อยกเมาส์ขึ้นและสถานะเซ็นเซอร์ "เปิด" (ไม่มีโต๊ะให้ดู) เมาส์จะเปลี่ยนเป็นโหมด 3 มิติ (เรียกใช้ภาพสเก็ตช์การประมวลผล) สร้างรูอีกรูสำหรับกำหนดเส้นทางสายพิเศษ (จากเซ็นเซอร์ไปยัง Arduino) ออกจาก ตัวเรือนพลาสติก ของฉันอยู่ทางด้านขวามือของเมาส์ แก้ไขไฟ LED ที่ซึ่งจะแสดง ในโครงการนี้ LED เป็นตัวบ่งชี้โหมด 3 มิติ ฉันวางของฉันไว้ข้างล้อเมาส์ซิลิโคน เมื่อยกเมาส์ขึ้น วงล้อจะมีแสงสีน้ำเงินสวยงาม

ขั้นตอนที่ 4: ซอร์สโค้ด

รหัสสำหรับ Arduino เขียนโดย Shachar Geiger ครูของฉัน และฉันแก้ไขโดยฉันสำหรับโครงการนี้ รหัสลูกบาศก์ 3 มิติเป็นรหัสพื้นฐานที่พบในเว็บไซต์การประมวลผล ฉันแก้ไขเล็กน้อยในโค้ด ส่วนนี้จะแปลงข้อมูลดิบที่มาจากเซ็นเซอร์ (โดยทั่วไปคือ -180 ถึง 180 x 10) เป็น 0-255 getHeading();Serial.write ('x');x = (x +1800) / 14;Serial.write(x);Serial.write('y');y = (y+1800) / 14;Serial.write(y);Serial.write('z');z= (z+1800) / 14;Serial.write(z); ข้อมูลจากเซ็นเซอร์และ Arduino ไปที่ร่างการประมวลผลสำหรับแต่ละแกนแยกกัน แต่ด้วยตัวอักษรของแกนนำหน้า (สำหรับ exp. X12 Y200 Z130) โค้ดต่อไปนี้จะทิ้งตัวอักษรและเหลือเพียงค่าที่จะส่งไปยัง COM พอร์ต while(port.available() == 0){}char reading = 0;while (reading != 'x') {while(port.available() == 0){}reading = (char)port.read ();}X = port.read();while (reading != 'y') {while(port.available() == 0){}reading = (char)port.read();}Y = port.read();while (อ่าน != 'z') {while(port.available() == 0){}reading = (char)port.read();}Z = port.read(); โค้ดส่วนนี้ลดค่าลบทั้งหมด… ถ้า ((X != -1) && (Y != -1) && (Z != -1)){rotateZ(-(float)Y/25.0);rotateX((float)X/25.0);rotateY((float)Z/25.0);pX = X;pY = Y;pZ = Z;} อื่น {rotateZ(-(float)pY/25.0);rotateX((float)pX /25.0);rotateY((float)pZ/25.0);} ไฟล์ ZIP ที่แนบมามีทั้ง Arduino และรหัสการประมวลผล

ขั้นตอนที่ 5: วิดีโอ

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