Schwarz auf Weiß

Auch als Buch mit dem Titel '10 Selbstbauprojekte', ISBN-Nr. 978-3-7448-3433-9 und als e-book mit der ISBN-Nr. 9783744806299 erschienen.

Besuchen Sie auch meine Art site https://khomet.de

Sonntag, 2. September 2018

Lesegerät mit Raspberry


Inhaltsverzeichnis

Motivation
Bedienung
Aufbau
Hardware
Software
Technische Daten
Entwicklungsumgebung
Downloads


Motivation
Dieses Konzept eines Lesegerätes soll Sehbehinderten helfen, ohne größere Umstände, Zeitungen, Bücher etc. mühelos lesen zu können. 

Das fertige Gerät im Einsatz

Desktop


Kamera-Startbildschirm nach dem Einschalten des Gerätes

Bedienung
Die Bedienung ist denkbar einfach. Das Gerät ist mit einem Linux Betriebssystem ausgestattet und wird mit der linken Taste hochgefahren. Es erscheint nach kurzer Zeit ein Startbildschirm für die Kamera des Lesekopfes.



Der Bildschirm ist ein Touch Screen, so dass einfach, wenn die Einstellungen ok sind, mit dem Finger die "Starte Kamera"-Schaltfläche berührt wird. Das Kamerabild erscheint nach einer kurzen Einstellzeit für Focus, Helligkeit, Kontrast und Weißabgleich. Nun kann der Lesekopf, wie eine übergroße Maus, auf die zu lesende Stelle verschoben werden. Mit der rechten Taste kann die Verstärkung gewählt werden:

Zoom x1:  Buchstabenhöhe real: 1,8 mm  Buchstabenhöhe Bildschirm: 2,2 mm
Zoom x2:  Buchstabenhöhe real: 1,8 mm  Buchstabenhöhe Bildschirm: 3,9 mm
Zoom x3:  Buchstabenhöhe real: 1,8 mm  Buchstabenhöhe Bildschirm: 6,1 mm

Das Lesegerät kann zu jeder Zeit mit der linken Taste wieder runtergefahren werden. Dabei blinkt die Taste langsam 3x.


Aufbau
Die Elektronik ist in einem Dreiecksgehäuse untergebracht. Das hat den Vorteil, dass das Display immer optimal abgelesen werden kann. Der Lesekopf ist über ein Kabel abgesetzt kann wie eine große Maus über das Dokument (Buch, Zeitung etc.) bewegt werden. Die Beleuchtung wird per Ring-LED in Höhe der Kamera realisiert. Der Bediener wird durch die sehr helle Beleuchtung nicht irritiert, da der Lesekopf bis zum Dokument heruntergezogen ist. 

Grundplatte mit Anschlussleiste
Frontplatte mit montiertem Display

Detail

Frontplatte eingehängt in Grundplatte
Seitenwände provisorisch hingestellt, die Griffe sind optional



unter dem Raspberry sieht man den DC-DC-Wandler für 5 auf 12 V (Power für die Ring-LED's), über dem Raspberry sieht man den Übergang HDMI-Buchse zu Flachbandkabel zur CSI-2 Kamera-Schnittstelle

Detail Übergang HDMI-Buchse zu Flachbandkabel zur CSI-2 Kamera-Schnittstelle auf dem Raspberry


In der Entwicklungsphase mit WiFi und Dongle für Tastatur und Maus

Gehäuse zusammengebaut
Lesekopf Gehäuse, Halter für Ring-LED und Halter für Kamera
Lesekopf Gehäuse, Halter Ring-LED eingebaut, Klemmraum
Lesekopf Gehäuse, Klemmraumdeckel und Kabelverschraubung
HDMI-Kabel, Kabelenden abisoliert
Lesekopf Gehäuse, HDMI-Kabel angeschlossen
Lesekopf Gehäuse, Ring-LED und Kamera eingebaut
Lesekopf fertig, der Sockel dient der Abstimmung auf den Focus der Kamera


Hardware
Raspberry Pi 2 B+ V1.2, Kühlkörper für Prozessor.
7" LCD 1024 x 600 Pixel, Touch Funktion, intern über HDMI an Raspberry, Stromversorgung über USB Raspberry, DC-DC-Wandler 5 auf 12 V.
Kamera 8 MP, Still: 3280 x 2464 Pixel, Video: 1080p 30fps, Bildsensor: 1/4",                          Anschluss an Raspberry Schnittstelle CSI-2, Netzteil 5 VDC/3A.


Schaltplanauszug Netzteil und DCDC-Wandler für Ring-LED im Lesekopf


Schaltplanauszug Tasten und LED's
Schaltplanauszug Pi-Camera Klemmraum (Flachbandkabel)
Schaltplanauszug Klemmraum
Schaltplanauszug Klemmraum Raspi (HDMI-Kabel, Flachbandkabel)



Software
Das Abbild zu diesem Projekt für eine 8GB SD Card kann unter Downloads heruntergeladen werden. Nach dem Formatieren mit SD Formatter 4.0 sollte zum Beschreiben mit dem Image der Win32Diskimager verwendet werden. Das angepasste Raspbian Jessie wurde vom Display-Hersteller verwendet. Zum shutdown wird der GPIO3 Eingang (linke Taste) verwendet. An der ACT-LED (die Tasten-LED ist anstatt der LED auf der Raspberry-Platine angeschlossen) kann der Status abgelesen werden. Der Eingang wird auch im heruntergefahrenen Zustand abgefragt, so dass man damit das System auch wieder hochfahren kann. Der Eingang GPIO17 (rechte Taste) wird im Hintergrund abgefragt, wenn die Kamera aktiv ist. In raspi-config müssen die Kamera, expand memory (sonst werden nur 2GB anerkannt) und boot in Desktop enabled werden. Die  Bootparameter sind in /boot/config.txt abgespeichert. Falls die Touchfunktion des Displayes nicht geht, mit sudo apt-get -y upgrade probieren (dauert sehr lange). Sollte der Strom für das Display nicht ausreichen, in die config.txt max_usb_current=1 schreiben (nur bei Raspberry Pi 2 B+ möglich). Die Einstellparameter für die Kamera werden in eine Datei '/home/pi/cam/camstartconfig.py' geschrieben. Beim Start wird mit '/home/pi/picamera/camera.py die Kamera mit diesen Daten initialisiert. Die Bedienoberfläche wurde mit PyQt4 geschrieben. Qt4 kann installiert werden mit sudo apt-get install qtcreator. Dazu kommt noch sudo apt-get install qt4-dev-tools. Wenn die KITS fehlen (man kann kein Projekt anlegen): Tools -> Options, wähle Build & Run links, öffne  Kits Tab. Es sollte da sein Manual -> Desktop (default) als Listenpunkt. Wähle diesen Punkt. Nun wähle z. B. Qt 5.5.1 (qt5) für die Qt Version in der Combobox und klicke den Apply Button. Nun sollte es möglich sein, ein Projekt anzulegen, zu kompilieren und auszuführen. Wichtig ist, ausführbare Dateien immer mit chmod +x script ausführbar machen. 

Technische Daten
Prozessor:              Raspberry Pi 2 B+ V1.2    4 x 900 MHz
Operating System. Raspbian Jessie (Linux)
Stromversorgung:   Netzteil 5 VDC/3A, 
Display:                   7" LCD 1024 x 600 Pixel, Touch Funktion
Kamera:                  8 MP, Still: 3280 x 2464 Pixel

Entwicklungsumgebung
Raspbian, PyQt4, FreeCAD, Eagle 7.7 Hobbyist

Downloads
FreeCAD 0.16 Dateien: 0-Dreiecksgehäuse.zip
Qt Creator 4 Dateien:    StartPicamera.zip
Eagle 7.7:                      LesegeraetLG01.zip

SD-Card Abbild:            Image_save_2016_08_10 


                 



Freitag, 17. August 2018

RC Car mit PIC18F25K22


Inhaltsverzeichnis

Motivation
Aufbau
Power Modul
Hauptplatine

Software
Entwicklungsumgebung
Downloads
Fotostrecke

Motivation
Der Reiz war, ein Auto eines 14in1 ROBOT SET's mit einer Lenkung, einer Motorsteuerung und einer Fernbedienung im low-cost Bereich auszustatten. 







Aufbau
Als Grundlage dient der Solar-Motor, der Getriebeblock und die angetriebene Hinterachse des 14in1 Robot Kits. Die Vorderachse wird am Servo SG90 befestigt. Die Solarzelle wird durch einen Knopfzellenakku LIR2477 und einer Ladeeinrichtung mit USB-Anschluss ersetzt. Die Hauptplatine nimmt den PIC18F25K22, das Servo SG90, die H-Bridge ZXMHC6A07T8 und den IR-Receiver vs1838b auf. In Version 1 kommt noch eine Hinderniserkennung, Blinken links und rechts und Bremslicht bei Drücken der Taste '0' hinzu. Die Leiterplatte ist so gestaltet, dass der Kühlergrill und die Montageteile abgetrennt werden können. Der Zusammenbau erfolgt durch Löten. Das Fernbedienungskit ist z. B. von KEYES und wird über ebay angeboten.

Power Modul
Das Power Modul versorgt die Hauptplatine mit nominal +3,6 V. Um einen Wechsel der Knopfzelle zu vermeiden, wird eine Lithium-Akku Knopfzelle verwendet. Die Aufladung erfolgt über ein USB-Kabel. Der LTC4054 kontrolliert das Laden. Mit R6 und R7 wird der Ladestrom programmiert, hier CC=90 mA (0,5C). Die Ladeschlussspannung beträgt 4,20 V. Bei CC=0,074C wird die Ladung beendet. Eine LED signalisiert den Ladestatus. Der Akku darf max. mit 1C=180 mA entladen werden. Dieser Strom könnte dann über 1 h entnommen werden.
Um zu verhindern, dass bei der Ladung des Akkus Strom entnommen wird, ist ein Schalter, bestehend aus der H-Brücke ZXMHC6A07T8, vorgesehen. Die zwei n-chan MOSFETs leiten nicht, weil UGS=0 V ist. Die zwei p-chan MOSFETs sind parallel geschaltet, um einen Durchgangswiderstand von ca. 0,2 Ohm zu realisieren. Die Gates sind über 1k parallel geschaltet und werden von einem Spannungsteiler, gespeist aus den +5 V der USB Spannung, angesteuert. Ist kein USB Kabel angeschlossen, schalten die p-chan MOSFETS durch und die Batteriespannung steht am Ausgang zur Verfügung. Um die Stromaufnahme der Hauptplatine kontrollieren zu können, ist ein entsprechender Jumper vorgesehen. 
Die Hauptplatine benötigt mindestens eine Batteriespannung von 3,25 V. Das entspricht einer Ladung von 15%. Ausgehend von einer voll aufgeladenen Zelle stehen also 85% Ladung zum Betrieb zur Verfügung. Das ergibt ca. 50 Minuten Fahrspaß.  

Schaltplan des Power Moduls





Platine Bestückungsseite des Power Moduls
Platine Lötseite des Power Moduls
Platine des Power Moduls Bestückungsseite bestückt
Platine des Power Moduls Lötseite bestückt
Ladestrom und Kapazität über die Zeit
Ladestrom und Batteriespannung über die Zeit



Hauptplatine

Die Hauptplatine besteht aus dem Prozessor PIC18F25K22, dem Micro-Servo SG90, dem IR-Empfänger VS1838B und dem Motortreiber für den Solarmotor (H-Brücke ZXMHC6A07T8). Die Hinderniserkennung ist in Version 1 hinzugekommen. Sie kann mit einem Jumper über JP19 und JP18 aktiviert oder deaktiviert werden. 



Schaltbild Hauptplatine V1




Hauptplatine Bestückungsseite
Hauptplatine Lötseite
Hauptplatine zerlegt
Montage Kühlergrill

Montage Laschen für Getriebeblock

Montage seitliche Halterung
Animation Zusammenbau Vorderachse





Software
Die Firmware für den PIC18F25K22 ist in C für den XC8 Compiler Version 1.34 geschrieben. Um Strom zu sparen, wird der PIC mit 1 MHz getaktet. Weiterhin werden alle nicht benutzten Ein-/Ausgänge als Ausgang mit Ausgangspegel 0 V initialisiert.


IR-Receiver VS1838B



Die Fernbedienung verwendet das NEC Protokoll. Es setzt sich zusammen aus der Startsequenz, einer 8-Bit Startadresse, einer invertierten 8-Bit Startadresse, dem 8-Bit Command Wort und dem invertierten 8-Bit Command Wort. Der Carrier hat eine Frequenz von 38 kHz.





komplettes NEC-Protokoll für die OK-Taste



8-Bit Command Wort nicht invertiert für die OK-Taste 





komplettes NEC-Protokoll wenn die OK-Taste länger gedrückt wird

Der Ausgang des VS 1838B wird dem CCP2 (Pin12) des PIC zugeführt. Der CCP2 detektiert jede abfallende Flanke und löst dabei einen Interrupt aus. Mit Timer3 wird die Zeit von Interrupt zu Interrupt gemessen. Die Startsequenz mit 9 ms low und 4,5 ms high ergibt ca. 159 counts. Alle folgenden Bits haben 131 counts bei high und 16 counts bei low. Die counts je Bit werden sequentiell in einem Array gespeichert und entsprechend interpretiert. Es wird nur das nicht invertierte Command-Wort ausgewertet [17] ... [24], da die Adresse (die ersten 16 Bits) immer konstant ist. 

NEC-Protokoll (z. B. OK Taste): 0x00  0xFF  0x40  0xBF   




Motor Driver ZXMHC6A07T8
Der ZXMHC6A07T8 ist eine H-Brücke bestehend aus 2 n-chan MOSFET's 2 p-chan MOSFET's. Der Solarmotor ist zwischen D1/D2 und D3/D4 angeschlossen.

H-Bridge mit Solarmotor


Der PIC18F25K22 bietet die Möglichkeit, über 4 Ports direkt eine H-Bridge anzusteuern.
Dazu wird das Modul  ECCP1 mit dem CCP1CON-Register für Fullbridge und  Forward/Reverse initialisiert. Die Ausgänge liegen auf den Ports P1A/RC2/pin 13, P1B/RB2/pin 23, P1C/RB1/pin 22, P1D/RB4/pin 25. Mit CCPR1L kann die Pulsweite und damit die Speed eingestellt werden. Timer 4 stellt die Zeitbasis des PWM dar und wird auf eine Periode von 4,08 ms eingestellt. Die Diagramme wurden mit der Logikanalysator-Funktion des PICkit3.5 aufgenommen, deshalb sind jeweils nur 3 Kanäle zu sehen. Um alle 4 Kanäle darzustellen, wurden 2 Aufnahmen mit entsprechender Kanalkombination gemacht.

Motor-Forward P1A - P1C - P1D, Periodendauer 4,08 ms

Motor-Forward P1B - P1C - P1D, Periodendauer 4,08 ms

Motor-Reverse P1A - P1B - P1C, Pulsweite 580 us (speed=10%)

Motor-Reverse P1B - P1C - P1D, Pulsweite 580 us (speed=10%)

Lenkung mit Servo SG90
Der Servo Eingang wird vom PWM5 des PIC angesteuert (Pin 6). Basis Counter ist Timer 2. Die Periodendauer beträgt 20 ms. Der aktuelle Lenkeinschlag wird dem Register SetDCPWM5 übergeben.

Servo Linksanschlag

Servo Mittelstellung

Servo Rechtsanschlag
Servo Periodendauer



Messung der Batteriespannung
Um einer Tiefentladung vorzubeugen, wird laufend die Batteriespannung am Eingang AN2/Pin4 gemessen. Unterschreitet diese 3,25 V, blinken alle LED's. Dann sollte die Akku-Zelle wieder aufgeladen werden. 

Entwicklungsumgebung

C-Compiler für den PIC18F25K22 ist der freie XC8 Version 1.34 (hier ist die plib noch enthalten). Editor und Umgebung ist das ebenfalls freie, komfortable MPLAB X IDE V4.01. Als In-Circuit Emulator/Debugger wird das PICkit 3.5 eingesetzt. Das  3D-Modell für die Konstruktion der Leiterplatte wurde mit FreeCAD 0.17 64Bit Version 13519 (Git) erstellt. Die Leiterplatten-Layouts wurden mit Eagle 7.7.0 Hobbyist 64Bit realisiert. Alle Werkzeuge laufen unter Windows 10. Für die Oszillogramme wurde ein zweites PICkit3.5 eingesetzt, das mittels der PICkit3-Software mit einem OS beschrieben wurde. Dadurch öffnet sich die Möglichkeit einen Logikanalysator zu verwenden. 


Downloads
Source C-Programm: mainV1.zip
Eagle:                        14in1_Eagle_V1.zip 
FreeCAD:                    14in1_FreeCAD_V1.zip           



Fotostrecke
Die folgenden Bilder zeigen die Version 0 der Leiterplatten. Deshalb gibt es noch diverse Korrekturen in Form von Drahtbrücken. 

Das funktionsfähige Modell, die Frontscheinwerfer sind eingeschaltet



Rücklichter und Rückfahrlicht (Fahrrichtung rückwärts) sind eingeschaltet

Unteransicht

Lenkung, das Ruderhorn des Servos befindet sich zwischen den beiden schmalen Platinen unter der Achse


Antrieb Hinterrad
Die Fernbedienung z. B. von KEYES