LEGO-EV3-Bildscanner
Bildscanner, gebaut mit dem LEGO Mindstorms EV3 Education-Set und einem zusätzlichen Rad. Enthält Quelle von Mindstorms EV3 Software und Bauanweisungen. Scannt 8,5 Zoll breites Papier, kann aber auch an ähnliche Seitenformate angepasst werden.
Eingaben
- Brick-Tasten – Zur Steuerung der Konfigurationsmenüs
- Ultraschall – Erkennt, wenn Papier eingelegt wird
- Berührungssensor – Farbsensorposition durch Kollision zurücksetzen
- Lichtsensor – Pixel scannen, um ein Bild zu erstellen
Ausgabe
- 44 x 32 Pixel 8-Bit-Graustufenbild
- CSV-Datei, die Graustufen-8-Bit-Bitmap-Datenwerte darstellt
- Gedithertes Bild auf dem Bildschirm
Teile
Für diesen Bau sind Teile aus einem LEGO MINDSTORMS EV3-Set und ein zusätzliches großes Rad erforderlich, das aus einem anderen gleichen Set oder einem Autoset erhalten werden kann.
Details zum Aufbau und Sensor
- Dieser Roboter verfügt über zwei Kraftgetriebekonfigurationen: eine zum Bewegen des Lichtsensors auf der horizontalen Achse durch eine Einschienenbahn, die zweite zur Bereitstellung eines Aufwickelmechanismus für das Papier, das das zu scannende Bild enthält.
- Sowohl der Spulmechanismus als auch die Einschienenbahn verwenden einen großen Motor.
- Ein Gegengewicht wird verwendet, um das Rad der Einschienenbahn entsprechend der Normalkraft auszurichten, die von der Oberfläche der Einschienenbahn ausgeübt wird.
- In der Nähe der Spule befindet sich ein Infrarotsensor, der erkennt, wann das Papier eingelegt wird.
- An jeder Ecke des Scanners sind zwei Berührungssensoren angebracht. Sie werden verwendet, um zu erkennen, wann die Einschienenbahn eine Ecke erreicht hat. Derzeit wird nur der Sensor auf der rechten Seite verwendet.
Softwarehinweise
Das Programm besteht aus vier Phasen: Benutzeroberfläche, Scannen, Bild drucken, Bild speichern. Die Benutzeroberfläche ist so aufgebaut, dass sie das MVC-Paradigma an die sequentielle Brick-Programmierung anpasst. Es ermöglicht n Konfigurationsbildschirme, wobei pro Bildschirm ein Wert konfiguriert werden kann. Später im Programm verwendete Variablen entsprechen jeweils einer Einstellung.
Konfigurationsbildschirme
- uiPrintScreen: bool – Wenn true, wird ein gedithertes 1-Bit-Bild auf dem Bildschirm des EV3 gedruckt, um dem Graustufenbild im RAM zu ähneln.
- uiSaveState: bool – Wenn true, wird aus den Daten im RAM eine CSV-Datei generiert. Diese Datei ähnelt einer Bitmap-Datei und kann mit einem externen Programm wie A-VEKT Image CSV Converter in eine Bitmap umgewandelt werden.
- XStartPos: numerisch – Gibt die Startposition in Zoll auf der X-Achse an.
- YStartPos: numerisch – Gibt die Startposition in Zoll auf der Y-Achse an.
- width : numerisch – Gibt die Breite des Bildes in Zoll an.
- Höhe: numerisch – Gibt die Höhe des Bildes in Zoll an.
Scanphase
- Vor dem Scannen wird der Benutzer aufgefordert, das zu scannende Papier einzulegen und die Position des Lichtsensors wird auf die Ausgangsposition zurückgesetzt.
- Beim Scannen wird der Bildsensor abwechselnd über die Einschienenbahn und das Papier über die Spule bewegt, um eine Matrix unabhängig gescannter Punkte zu erzeugen.
- Beim Scannen wird eine Zeile von rechts nach links und die nächste von links nach rechts gescannt. Dies reduziert die Scanzeit.
- Sobald der Scanvorgang abgeschlossen ist, wird das verbleibende Papier von der Rückseite des Scanners abgewickelt.
Druckphase
- Diese Phase ist optional und standardmäßig aktiviert. Dabei wird das Bild auf dem Bildschirm gedruckt.
- Das gescannte Bild enthält Graustufendaten, während der Bildschirm des EV3 1-Bit-Schwarzweißdaten enthält. Zum Ausgleich wird jedes gescannte Pixel mithilfe des geordneten (Bayer-)Ditherings in ein 4 x 4 Pixel großes Muster umgewandelt, das dann auf dem Bildschirm gedruckt wird.
Sparphase
- Diese Phase ist optional.
- Da der Dateiblock des EV3 darauf beschränkt ist, nur druckbare Zeichen zu speichern, kann ein Bitmap-Bild nicht programmgesteuert generiert werden. Stattdessen wird eine CSV-Datei verwendet.
- Die CSV-Datei kann mit „A-VEKT Image CSV Converter“ mit der 8-Bit-Alphakanal-Einstellung in eine Bitmap umgewandelt werden.
- Beim Erstellen der CSV-Datei werden die rückwärts gescannten Zeilen in einem zweiten Array neu angeordnet.
Verbesserungen
- Die Präzision des Scanners könnte mit einem zweiten Satz verbessert werden, mit dem anstelle einer Einschienenbahn eine X-Achse mit zwei Schienen erstellt werden könnte.
- Aufgrund der von den Kabeln ausgeübten Kräfte ist die Einschienenbahn manchmal instabil, was bei der Aufnahme einiger Pixel zu einem unterschiedlichen Fokus führt.
- Die Software kann verbessert werden. Ich veröffentliche es so, wie es war, als ich aufgehört habe, daran zu arbeiten.
- Ich habe nicht vor, dieses Projekt weiterzuentwickeln, bis LEGO eine Version von LEGO MINDSTORMS EV3 für Linux-Betriebssysteme veröffentlicht oder ich einen anderen überzeugenden Grund finde, ein eigenes Mindstorms EV3-Set zu kaufen.
Lizenzierung und Urheberrecht
- Quelldateien werden unter der GNU General Public License 2.0 geteilt
- Anleitungsbilder und zusätzliche Inhalte werden unter der Creative Commons-Lizenz Namensnennung 4.0 International geteilt
- Das Urheberrecht liegt zwischen der Universität von Puerto Rico in Arecibo und mir.
Haftungsausschluss
- Ich habe dies zum Spaß im Rahmen eines Einführungskurses in die Robotik an der Universität von Puerto Rico in Arecibo entwickelt.
- Dieser Scanner basiert lose auf dem Drucker aus „The Unofficial LEGO MINDSTORMS NXT 2.0 Inventor's Guide“.
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT sind Marken und/oder Urheberrechte der LEGO Group. Deren Nutzung bedeutet keine Zugehörigkeit zu ihnen oder eine Billigung durch sie.