LEGO-EV3-รูปภาพ-สแกนเนอร์
เครื่องสแกนภาพที่สร้างขึ้นโดยใช้ชุด LEGO Mindstorms EV3 Education และวงล้อเสริม รวมแหล่งที่มาจากซอฟต์แวร์ Mindstorms EV3 และคำแนะนำในการสร้าง สแกนกระดาษกว้าง 8.5 นิ้ว แต่อาจใช้อะแดปเตอร์ที่มีขนาดหน้าใกล้เคียงกัน
อินพุต
- ปุ่มอิฐ – เพื่อควบคุมเมนูการกำหนดค่า
- อัลตราซาวนด์ - ตรวจจับเมื่อใส่กระดาษ
- เซ็นเซอร์สัมผัส – รีเซ็ตตำแหน่งเซ็นเซอร์สีโดยการชนกัน
- เซ็นเซอร์วัดแสง - สแกนพิกเซลเพื่อสร้างภาพ
เอาท์พุต
- ภาพขนาด 44 x 32 พิกเซล ระดับสีเทา 8 บิต
- ไฟล์ CSV ตัวแทนของค่าข้อมูลบิตแมป 8 บิตระดับสีเทา
- ภาพที่บิดเบี้ยวบนหน้าจอ
อะไหล่
โครงสร้างนี้ต้องใช้ชิ้นส่วนจากชุด LEGO MINDSTORMS EV3 หนึ่งชุดและล้อขนาดใหญ่เพิ่มเติม ซึ่งสามารถหาได้จากชุดอื่นในชุดเดียวกันหรือชุดรถยนต์
รายละเอียดการสร้างและเซ็นเซอร์
- หุ่นยนต์นี้ใช้การกำหนดค่าเกียร์บังคับสองแบบ แบบแรกเพื่อเคลื่อนเซ็นเซอร์แสงบนแกนนอนผ่านโมโนเรล และแบบที่สองเพื่อจัดเตรียมกลไกการม้วนสำหรับกระดาษที่มีรูปภาพที่จะสแกน
- ทั้งกลไกการสปูลลิ่งและโมโนเรลใช้มอเตอร์ขนาดใหญ่
- เครื่องถ่วงน้ำหนักใช้เพื่อจัดแนวล้อของโมโนเรลให้ตรงกับแรงปกติที่กระทำโดยพื้นผิวของโมโนเรล
- ใกล้กับแกนม้วนเป็นเซ็นเซอร์อินฟราเรดที่ช่วยให้ตรวจจับได้เมื่อใส่กระดาษ
- มีเซ็นเซอร์สัมผัสสองตัววางอยู่ที่แต่ละมุมของเครื่องสแกน ใช้เพื่อตรวจจับเมื่อโมโนเรลมาถึงทางโค้งแล้ว ขณะนี้มีการใช้งานเฉพาะเซ็นเซอร์ทางด้านขวาเท่านั้น
หมายเหตุซอฟต์แวร์
โปรแกรมประกอบด้วยสี่ขั้นตอน: UI, Scan, Print Image, Save Image UI ถูกสร้างขึ้นเพื่อปรับกระบวนทัศน์ MVC ให้เข้ากับการเขียนโปรแกรมแบบอิฐตามลำดับ อนุญาตให้มีหน้าจอการกำหนดค่า n หน้าจอ โดยกำหนดค่าได้หนึ่งค่าต่อหน้าจอ ตัวแปรที่ใช้ภายหลังในโปรแกรมจะสอดคล้องกับการตั้งค่าแต่ละรายการ
หน้าจอการกำหนดค่า
- uiPrintScreen : bool – หากเป็นจริง รูปภาพขนาด 1 บิตแบบ dithered จะถูกพิมพ์บนหน้าจอของ EV3 เพื่อให้คล้ายกับภาพระดับสีเทาใน RAM
- uiSaveState : bool – หากเป็นจริง ไฟล์ CSV จะถูกสร้างขึ้นจากข้อมูลใน RAM ไฟล์นี้มีลักษณะคล้ายกับไฟล์บิตแมปและสามารถแปลงเป็นบิตแมปได้โดยใช้โปรแกรมภายนอก เช่น A-VEKT Image CSV Converter
- XStartPos : ตัวเลข – ระบุตำแหน่งเริ่มต้นเป็นนิ้วบนแกน X
- YStartPos : ตัวเลข – ระบุตำแหน่งเริ่มต้นเป็นนิ้ว บนแกน Y
- width : ตัวเลข – ระบุความกว้างของรูปภาพเป็นนิ้ว
- height : ตัวเลข – ระบุความสูงของรูปภาพเป็นนิ้ว
เฟสการสแกน
- ก่อนการสแกน ผู้ใช้จะได้รับแจ้งให้ใส่กระดาษที่จะสแกน และตำแหน่งของเซ็นเซอร์วัดแสงจะถูกรีเซ็ตไปที่ตำแหน่งเริ่มต้น
- การสแกนประกอบด้วยการเปลี่ยนการเคลื่อนเซ็นเซอร์ภาพข้ามรางเดี่ยวและกระดาษข้ามแกนม้วน เพื่อสร้างเมทริกซ์ของจุดที่สแกนอย่างอิสระ
- เมื่อสแกน บรรทัดหนึ่งจะถูกสแกนจากขวาไปซ้าย และบรรทัดถัดไปจะถูกสแกนจากซ้ายไปขวา ซึ่งจะช่วยลดเวลาในการสแกน
- เมื่อการสแกนเสร็จสิ้น กระดาษที่เหลือจะถูกเก็บพักออกจากด้านหลังของสแกนเนอร์
เฟสการพิมพ์
- เฟสนี้เป็นทางเลือกและเปิดใช้งานตามค่าเริ่มต้น ประกอบด้วยการพิมพ์ภาพบนหน้าจอ
- ภาพที่สแกนมีข้อมูลระดับสีเทา แต่หน้าจอของ EV3 เป็นขาวดำ 1 บิต เพื่อชดเชย แต่ละพิกเซลที่สแกนจะถูกเปลี่ยนเป็นรูปแบบพิกเซล 4 x 4 โดยใช้การไดเทอร์ริ่งแบบ Ordered (Bayer) จากนั้นจึงพิมพ์บนหน้าจอ
เฟสออมทรัพย์
- เฟสนี้เป็นทางเลือก
- เนื่องจากบล็อกไฟล์ของ EV3 ถูกจำกัดให้บันทึกเฉพาะอักขระที่พิมพ์ได้ ภาพบิตแมปจึงไม่สามารถสร้างโดยทางโปรแกรมได้ แต่จะใช้ไฟล์ CSV แทน
- CSV สามารถแปลงเป็นบิตแมปได้โดยใช้ “A-VEKT Image CSV Converter” พร้อมการตั้งค่าช่องอัลฟา 8 บิต
- เมื่อสร้าง CSV บรรทัดที่ถูกสแกนแบบย้อนกลับจะถูกจัดเรียงใหม่ในอาร์เรย์ที่สอง
การปรับปรุง
- สามารถปรับปรุงความแม่นยำของสแกนเนอร์ได้ด้วยชุดที่สอง ซึ่งสามารถใช้สร้างแกน x แบบสองรางแทนโมโนเรลได้
- เนื่องจากแรงที่กระทำโดยสายเคเบิล บางครั้งโมโนเรลจึงไม่เสถียร ซึ่งนำไปสู่การโฟกัสแบบแปรผันเมื่อถ่ายภาพบางพิกเซล
- สามารถปรับปรุงซอฟต์แวร์ได้ ฉันปล่อยมันเหมือนตอนที่ฉันหยุดทำมัน
- ฉันไม่มีแผนที่จะพัฒนาโครงการนี้ต่อไปจนกว่า LEGO จะออก LEGO MINDSTORMS EV3 เวอร์ชันสำหรับระบบปฏิบัติการ Linux หรือพบเหตุผลอื่นที่น่าสนใจในการซื้อชุด Mindstorms EV3 ของตัวเอง
ใบอนุญาตและลิขสิทธิ์
- ไฟล์ต้นฉบับจะถูกแชร์ภายใต้ GNU General Public License 2.0
- รูปภาพคำแนะนำและเนื้อหาเพิ่มเติมได้รับการแชร์ภายใต้ Creative Commons License Attribution 4.0 International
- ลิขสิทธิ์มีการแบ่งปันระหว่างมหาวิทยาลัยเปอร์โตริโกที่ Arecibo และฉัน
ข้อสงวนสิทธิ์
- ฉันพัฒนาสิ่งนี้เพื่อความสนุกสนานโดยเป็นส่วนหนึ่งของชั้นเรียนวิทยาการหุ่นยนต์เบื้องต้นจากมหาวิทยาลัยเปอร์โตริโกที่อาเรซิโบ
- เครื่องสแกนนี้มีพื้นฐานมาจากเครื่องพิมพ์จาก “The Unofficial LEGO MINDSTORMS NXT 2.0 Inventor's Guide”
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT เป็นเครื่องหมายการค้าและ/หรือลิขสิทธิ์ของ LEGO Group การใช้สิ่งเหล่านี้ไม่ได้หมายความถึงความเกี่ยวข้องหรือการรับรองจากพวกเขา