CamRead: Unterschied zwischen den Versionen

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche
(Problematik)
Zeile 65: Zeile 65:
 
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 [https://www.uuidgenerator.net/ UUID] identifizierbar, welche vom Programmierer festgelegt wird. Um eine Verbindung zwischen zwei ESP32 herzustellen, benötigt der Client die [https://techtutorialsx.com/2018/03/09/esp32-arduino-getting-the-bluetooth-device-address/ 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.
 
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 [https://www.uuidgenerator.net/ UUID] identifizierbar, welche vom Programmierer festgelegt wird. Um eine Verbindung zwischen zwei ESP32 herzustellen, benötigt der Client die [https://techtutorialsx.com/2018/03/09/esp32-arduino-getting-the-bluetooth-device-address/ 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.
  
== Problematik ==
+
== aufgetretene Probleme ==
 
TODO
 
TODO
  

Version vom 9. April 2019, 13:06 Uhr

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.

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

TODO

Joystick

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

Gehäuse

TODO

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.

aufgetretene Probleme

TODO

Motorsteuerung

Joystick

Bluetooth

Mechanik