สารบัญ:

ที่เปิดประตูอัตโนมัติโดยใช้ EV3: 6 ขั้นตอน
ที่เปิดประตูอัตโนมัติโดยใช้ EV3: 6 ขั้นตอน

วีดีโอ: ที่เปิดประตูอัตโนมัติโดยใช้ EV3: 6 ขั้นตอน

วีดีโอ: ที่เปิดประตูอัตโนมัติโดยใช้ EV3: 6 ขั้นตอน
วีดีโอ: LEGO® MINDSTORMS® Education EV3//EP.1 ใช้คำสั่ง Large Motor, Move Tank, Move Steering (อัพโหลดใหม่) 2024, พฤศจิกายน
Anonim
เครื่องเปิดปิดอัตโนมัติโดยใช้ EV3
เครื่องเปิดปิดอัตโนมัติโดยใช้ EV3
เครื่องเปิดปิดอัตโนมัติโดยใช้ EV3
เครื่องเปิดปิดอัตโนมัติโดยใช้ EV3

ฉันมีชุดม่านม้วนในห้องนอนของฉัน ซึ่งฉันมักจะลืมเปิดหรือปิดในตอนเช้าหรือตอนเย็น ฉันต้องการเปิดและปิดโดยอัตโนมัติ แต่จะมีการแทนที่เมื่อใดที่ฉันจะเปลี่ยน

ขั้นตอนที่ 1: แนวคิดหรือแนวทางแก้ไขที่เป็นไปได้

หลังจากดูในไซต์ต่างๆ เช่น YouTube, Instructables และ Thingiverse ฉันพบว่าวิธีแก้ปัญหาที่พบบ่อยที่สุดคือการใช้มอเตอร์แกนม้วนเก็บที่พันและคลายมู่ลี่โดยใช้สเต็ปเปอร์มอเตอร์หรือเซอร์โว ฉันพบ 2 ตัวเลือกหลักที่มีข้อดีและข้อเสียต่างๆ

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

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

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

ขั้นตอนที่ 2: การสร้างแอสเซมบลี

การทำแอสเซมบลี
การทำแอสเซมบลี
การทำแอสเซมบลี
การทำแอสเซมบลี

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

ขั้นตอนที่ 3: การออกแบบอุปกรณ์ตาบอด

การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด
การออกแบบอุปกรณ์ตาบอด

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

ขั้นตอนที่ 4: การเข้ารหัสคนตาบอด

การเข้ารหัสคนตาบอด
การเข้ารหัสคนตาบอด

ฉันต้องการรหัสที่จะเปิดและปิดม่านบังตาโดยอัตโนมัติเมื่อถึงระดับแสงที่กำหนด แต่ก็มีปุ่มลบล้างด้วยเพื่อให้คน ๆ นั้นสามารถเปิดหรือปิดม่านบังตาได้เมื่อต้องการ ฉันได้เชื่อมโยง GitHub ของฉันกับรหัสเวอร์ชันสุดท้ายที่นี่:https://github.com/TJSBearGithub/AutomaticBlindEV3Code

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

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

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

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

วงที่สามประกอบด้วยรายการตัวเลขของ 3 ตัวเลือกซึ่งโดยทั่วไปจะบอกคนตาบอดว่าต้องทำอะไร 0=คนตาบอด 1=คนตาบอด 2=ไม่ทำอะไรเลยเพราะคนตาบอดอยู่ในตำแหน่งที่ถูกต้อง วนรอบเริ่มต้นด้วยการอ่านตัวแปร "BlindShould" ซึ่งระบุงานที่ถูกต้องที่คนตาบอดควรทำ จากนั้นจึงทำงานนั้น เปลี่ยนตัวแปร "BlindOpen" ให้เป็นตัวเลือกที่ถูกต้อง จากนั้นจะไม่ทำงานจนกว่าตัวแปร "BlindShould" จะเปลี่ยนไป มันซ้ำ ใช้ค่า "RotationsNeeded" และพลัง +/- 100% เพื่อเลื่อนมู่ลี่เปิดหรือปิดจนสุด

ลูปที่สี่และรอบสุดท้ายนั้นซับซ้อนที่สุด นั่นคือลูป "Decider" ซึ่งจัดการข้อมูลทั้งหมดและตัดสินใจว่าจะทำอย่างไรกับการเปลี่ยนแปลงแต่ละครั้ง ทำได้โดยใช้ "ส้อมบนถนน" ตามตรรกะที่ "กดปุ่ม", "ระดับแสง", "คนตาบอด" เป็นคำถามจริงหรือเท็จ พีชคณิตทั้งหมดมีการตอบสนองแบบฮาร์ดโค้ด ซึ่งก็คือ 0=blind down, 1=blind up or 2= do nothing - ค่านี้ถูกเขียนไปยังตัวแปร “BlindShould” ซึ่งจะถูกจัดการโดยลูปก่อนหน้า การตอบสนองบางอย่างจะรอให้ตัวแปร "ItIsLight" และ/หรือ "ButtonPressed" เปลี่ยนก่อนที่จะจบสคริปต์ นี่เป็นเพียงกรณีสำหรับปุ่มที่เปิดใช้งานการเรียงสับเปลี่ยน มิฉะนั้นจะพยายามแก้ไขตำแหน่งในทันที ซึ่งหมายความว่าคนตาบอดจะกลับมา สู่สภาพเดิม กระบวนการนี้จะถูกวนซ้ำเพื่อสร้างระบบอัตโนมัติที่มีประสิทธิภาพและค่อนข้างง่าย ซึ่งสามารถเพิ่มและแก้ไขจุดบกพร่องได้อย่างง่ายดาย วุ้ย.

ขั้นตอนที่ 5: เสร็จสิ้นการสัมผัส

สัมผัสสุดท้าย
สัมผัสสุดท้าย

หลังจากนั้นฉันตัดสินใจต่อแหล่งจ่ายไฟ 9V เข้ากับ EV3 โดยใช้เดือยและสกรูไม้เป็น "แบตเตอรี่" ทำให้ผลิตภัณฑ์ไม่พึ่งพาแบตเตอรี่และทำให้ไม่ต้องเปลี่ยนแบตเตอรี่ทุกสองสามวัน

ขั้นตอนที่ 6: การประเมินโครงการ

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

แนะนำ: