CamRead

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche

CamRead bietet die Möglichkeit Printmedien und Dokumente auf ein beliebiges Ausgabegerät zu streamen.

Das Medium wird dafür in ein hierfür angefertigtes Kameragehäuse gelegt. Bei Bedarf lässt sich die Kameraposition per Joystick via Bluetooth anpassen.

Materialliste

Name Anzahl Preis pro Stück
ESP32 2 5-10€
Stromversorgungsmodul 12V -> 3.3V & 5V 1 1€
Schrittmotor 28BYJ-48 5V & ULN2003 Driver Board 2 3€
Analog Joystick 1 2.50€

Umsetzung

Die beiden Systeme (Joystick und Kameragehäuse) bestehen aus jeweils einem ESP32 Mikrocontroller. Ein ESP verschickt die korrigierten Eingangssignale des Joysticks. Der Empfangende ESP passt daraufhin die Bewegungsrichtung der Schrittmotoren an, welche mittels Zahnriemen die Kameraposition steuern.

Zur Kommunikation zwischen den Systemen wird Bluetooth Low Energy (BLE) verwendet, da die benötigten Datenmengen sehr gering sind. Außerdem verbraucht BLE im Vergleich zu klassichem Bluetooth deutlich weniger Strom.

Die Kamera ist über ein Microusb-Kabel oder wahlweise WIFI mit einem Ausgabegerät (Computer oder Smartdevice) verbunden und überträgt auf diese den zu darstellenden Text in skalierter Form. Die Skalierung der Textgröße wird aufgrund von der qualitätsmindernden internen Zoomfunktion der Kamera Digital über die auf den Endgeräten vorhandene Software reguliert. So ist CamRead in der Lage eine für den Nutzer angepasste und dynamische Darstellungsweise zu garantieren.

Kameragehäuse

Schaltung der Motorsteuerungseinheit

Das Gehäuse besteht aus zwei Komponenten, der Elektronik und der Mechanik.

Elektronik

Betrieben wird das Gehäusesystem mittels eines 5V Netzteils sowie eines Stromversorgungsmoduls. Das Modul bietet einen Eingang für das Netzteil sowie 3.3V und 5V Ausgänge. Daher können sowohl die Motoren mit den benötigten 5V, als auch der ESP mit 3.3V versorgt werden.

Ein ESP alleine kann nicht genug Strom für einen Schrittmotor liefern. Aus diesem Grund werden ULN2003 Driver Boards zur Steuerung der Schrittmotoren verwendet. Ein solches Board bietet Eingänge für einen Arduino, Ausgänge für einen Schrittmotor sowie 5V und GND Pins zur Stromversorgung. Der ESP ändert, abhängig vom zuletzt empfangenen X und Y Signal des Joysticks, die Geschwindigkeit der Schrittmotoren und steuert so die Position der Kamera.

Zur Steuerung der Motoren wurde eine überarbeitete Version vom Arduino Forennutzer kerimil der AccelStepper Bibliothek von Mike McCauley verwendet, da diese normalerweise nicht mit den verwendeten Schrittmotoren funktioniert. Die Bibliothek unterliegt der GPL-2.0 Lizenz.

Mechanik

Das Grundgestell ist aus MakerBeam-Elementen gefertigt. Mittels 3D-Druck-Objekten, konstruiert mit Autodesk Fusion 360 wurde das Kameragehäuse erstellt, um die Kamera auf der X- und Y-Achse verschieben zu können. Die Konstruktion ist jeweils in den 4 Ecken an dem MakerBeam-Gestell über 3D-Druck-Elemente befestigt. Die Kamera ist an einer im 3D-Drucker gefertigten Halterung befestigt. Diese Halterung ist geführt auf 2 Stäben zur Verschiebung in die Y-Richtung. Die Halterung, welche selbst auch nochmal geführt auf 2 Stäben ist, kann zusätzlich in X-Richtung verschoben werden. Die Verschiebung wird über einen Keilriemen ermöglicht, welche von den Motoren angetrieben werden.

Joystick

Die Steuereinheit besteht aus einem Gehäuse, einem ESP und einem analogen Joystick

Gehäuse

Das Gehäuse wurde ursprünglich mittels 3D-Druck gefertigt, jedoch mussten die ESP Module nach einem Arbeitsunfall ausgetauscht werden. Die neuen Module passten dementsprechend nicht mehr ins Gehäuse und es musste neu gefertigt werden. Dabei wurde aus Zeitmangel improvisiert. Die Konstruktion orientiert sich dennoch stark am ursprünglichen 3D-Modell.

Elektronik

Schaltung des Joysticks

Der Joystick belegt 4 Pins am ESP, zwei zur Stromversorgung und jeweils einer für X- und Y-Ausgangssignale.

Im ESP sind Analog zu Digital Converter (ADC) verbaut, welche die Eingangsspannung an bestimmten Pins auf einen maximal 12 Bit großen Ausgangswert abbilden. Je nach Use-Case ist hierbei zu beachten, dass die Converter lediglich bis 3.3V entsprechende Ausgangswerte produzieren. Jede Eingangsspannung darüber erzeugt den maximalen Ausgangswert (z.B. 255 bei 8 Bit).

Die Eingangswerte werden nun eingelesen, mittels einer Funktion auf die Werte -1, 0 oder 1 abgebildet und anschließend an den ESP im Gehäusesystem verschickt. Ein Kommunikationsversuch findet nur statt, wenn die neu gemessenen Werte nicht mit den alten übereinstimmen.

Bluetooth Kommunikation

Bluetooth Low Energy funktioniert, anders als klassisches Bluetooth, mithilfe von Services welche Daten über Characteristics zur Verfügung stellen. Jeder Service und jede Characteristic ist über eine UUID identifizierbar, welche vom Programmierer festgelegt wird. Um eine Verbindung zwischen zwei ESP32 herzustellen, benötigt der Client die Gerätenummer des Servers. Anschließend registriert der Client beim Server sein Interesse an Benachrichtigungen. Sobald der Server nun eine Benachrichtigung herausschickt, wird beim Client der Benachrichtigungs Callback aufgerufen, welcher die Characteristic mit den aktuellsten Daten als Parameter erhält und verarbeiten kann.

Problematiken

TODO

Motorsteuerung

Joystick

Bluetooth

Mechanik