Mario(s)Kart

25.9.2020

Nach der Seifenkiste mit dem Akkuschrauber als Antrieb gehe ich nun einen Schritt weiter und baue mal was richtiges. Ein Kart mit zwei BLDC-Motoren aus einem Hoverboard als Antrieb und gehackter Hoverboard Firmware auf der originalen Steuerplatine. 

Vorgaben:

  • Größe passend für meine Kinder und für Erwachsene ebenso, also ein verstellbarer Sitz,
  • Orientierung an der eFKV (Elektrokleinstfahrzeuge Verordnung),
  • d.h. zwei unabhängige Bremsen,
  • maximale Breite 700mm,
  • Beleuchtung vorn und hinten,
  • zulässige maximale Geschwindigkeit 20km/h,

 

 

Die Motoren

Als Antrieb habe ich mich für zwei Hoverboard Räder entschieden. Die Räder haben 8,5″ Durchmesser und je 350W. Die Räder haben je drei Phasenwicklungen und integrierte Hall Sensoren zur Positionserkennung.

Auf dem Bild sieht man im Vordergrund die beiden Antriebsräder und im Hintergrund die beiden Vordrräder mit Bremsscheiben.

Die Antriebsräder im Vordergrund
geöffnetes Rad mit integriertem BLDC-Motor

Fortsetzung folgt!

Die e-Seifenkiste

Vor längerer Zeit hatte mein Sohn Interesse an einer Seifenkiste angemeldet. Ich habe eine sehr schöne Bauanleitung für eine Seifenkiste bei OBI gefunden.

Quelle: OBI.de

Wer sie nachbauen möchte findet die Bauanleitung hier: OBI Seifenkiste

So, kurzerhand nachgebaut sieht das ganze dann so aus.

Werbeanzeigen

Leider hat mein Sohn dann irgendwie das Interesse daran verloren und die Seifenkiste stand sehr lange ungenutzt in der Garage. Ein Versuch sie bei Ebay-Kleinanzeigen zu verkaufen war nicht erfolgreich. Zum Glück, denn irgendwann ist ihm die Idee gekommen ob man nicht einen Motor anbauen könnte. Da hat er bei mir offene Türen eingerannt.

Die einfachste und billigste Methode schien mir ein Akkuschrauber zu sein. Da ist ein zweistufige Getriebe dran, ein Drehzahlregler, Akkus und ein Ladegerät und das ganze für 30€ bei Real im Angebot.

Quelle: Real.de

Als Übertagungselement dient ein Kettenantrieb für ein Pocketbike mit einer T8F-Kette, einem 11er Ritzel am Antrieb und einem 54er Ritzel am Abtrieb. Hier wird man bei Ebay fündig,

Werbeanzeigen

Zwei Lagerböcke sollen die Querbelastung vom Akkuschrauber abhalten was sehr gut funktioniert.

Der Akkuschrauber wurde vom Akkuhalter und vom Bedienknopf befreit um diese Bauteile an anderer Stelle an der Seifenkiste zu verbauen.

Akkuhalter
Bedienknopf zum Gasgeben, Vor- und Rückwärtsfahren

Das große Ritzel habe ich direkt am Hinterrad verschraubt.

Der Rest vom Akkuschrauber wurde mit Blechwinkeln mehr oder weniger professionell an der Unterseite befestigt, aber es funktioniert

Ansicht von unten

Und fertig ist das ganze. Die Kinder lieben es und jeder hat einen Akku zum Leerfahren. Dann gibt es weniger Streit.

Staatssicherheit der DDR

Stasi in a Box

Dem ehemaligen DDR Bürger ist der Name „Stasi in a Box“ sicher recht. Alle anderen dürfen auch gern mit dem Namen „Big Brother“ Vorlieb nehmen.

Mir persönlich ist das Erstere lieber, weil es mit meiner Vergangenheit mehr gemein hat obwohl ich tatsächlich nur einmal in meinem Leben Berührung mit der Stastassicherheit hatte. Während meiner Lehrausbildung zum Werkzeugmacher hatte man tatsächlich versucht uns für die Arbeit bei der Staatssicherheit der DDR zu werben. Jeder musste einzeln zum Gespräch ins kleine Kämmerlein und wurde dort mehr oder weniger unter Druck gesetzt. Glücklicherweise habe ich stand gehalten und abgelehnt.

Irgendwann, viele jahre später, die DDR war Geschichte, hatte ich die Idee für ein kleines Arduino Projekt. Es gab im Netz schon ein paar Basteleien mit sich bewegenden Augen aber eben nicht mit diesem geschichtlichen Hintergrund.

„Das ist sie, die „Stasi in a Box“ Box

geöffnete Box

Du hast keine Chance, Du kannst nicht entkommen…

Nimmt man den Deckel im Inneren der Box ab, ergibt sich folgendes Bild.

Big Brother Stasi in a Box

Blick auf die inneren Werte

Ein Arduino Nano, ein Batteriehalter mit vier AA-Batterien und das Herzstück, die Machanik. An einem 3D gedruckten Grundkörper sind sowohl das bewegliche Auge als auch die beiden Miniaturservos befestigt, welche das Auge über zufällig ermittelte Werte bewegen. Die Zufallswerte für x und y sowie die Pausenzeiten werden mittels Zufallszahlen ermittelt.

Die Mechanik von oben

Mechanik von unten

Mechanik in Bewegung

Hier ist der Code. Ich glube da gibt es nicht viel zu sagen.

#include <Servo.h>

Servo myservo1; //links und rechts
Servo myservo2; //auf und ab

void setup() 
{
  myservo1.attach(9);  
  myservo2.attach(11);
 }

void loop()

{
  myservo1.write(random(60, 120));
  delay(random(400, 2000));
    
  myservo2.write(random(60, 120));
  delay(random(400, 2000));
}

Smart Kindle Picture Frame

Bilderrahmen mit Kindle Paperwhite


Smart Kindle Picture Frame

Der Kindle von Amazon hat, wie viele ähnliche E-Book Reader, ein sogenanntes E-Ink Display. Diese Displayart hat die nette Eigenschaft, dass nur zur Aktualisierung Strom benötigt wird und der angezeigte Inhalt dann stromlos für einen sehr langen Zeitraum erhalten bleibt. Wer mehr wissen will kann sich hier (Wikipedia) schlau machen.

Das Display kann Bilder im JPG oder PNG Format anzeigen. Dabei müssen einige Vorraussetzungen erfüllt sein. Das Bild muss je nach Readerversion eine entsprechende Auflösung aufweisen und es muss in Graustufen konvertiert sein. Ich habe die Erfahrung gemacht, dass es entgegen anderslautender Aussagen nicht auf 16 Farben beschränkt sein muss abhängig von der benutzten Programmbibliothek.

Ein Bilderrahmen für die Großeltern

Die Idee ist es, den Großeltern einen digitalen Bilderrahmen zu schenken dessen Inhalt sich in regelmäßigen Abständen aktualisiert. Hierzu weckt die Software des Bilderrahmens diesen auf, greift auf einen FTPS-Server zu, holt sich ein gespeichertes Bild, konvertiert dieses ins richtige Format, stellt es auf dem Bildschirm dar und schaltet den den Bilderrahmen wieder in den Stand-By Modus um Strom zu sparen.

Dadurch bekommen die Großeltern regelmäßig ein schönes Bild ihrer Kinder und Enkel jenseits von Whatsapp & Co und das auch noch in einem schönen Rahmen.

Das Erscheinungsbild des Bilderrahmens steht dem eines mit echtem Foto in fast nichts nach. Manchmal wünscht man sich ein etwas besseres Reflektionsverhalten also die Fähigkeit einfallendes Licht zurückzuwerfen. Ein weißes Blatt Papier liegt hier bei ca 75%-80%. Der Kindle Paperwhite liegt mit seinem E-Ink Bildschirm nur bei ca. 40%, aber das ist ok.

Der JailBreake

Was ist das?

Um den Kindle in einen digitalen Bilderrahmen zu verwandeln, bietet es sich an den vorhandenen Bildschirmschoner zu nutzen. Leider kann dieser im Originalzustand nur die von Amazon hinterlegten Bilder darstellen. Möchte man hier etwas eigenes, dann muss der Kindle gehackt werden. In Fachkreisen nennt man das dann JailBreake.

Um den Kindle hat sich in den Jahren seit seiner Markteinführung eine große Gemeinschaft gebildet.

Link zum Mobileread Forum

Ziel war es den Kindle zu personalisieren und eigene Software laufen zu lassen, handelt es sich doch um ein Linux Gerät. Anfangs war der JailBreake noch über Softwarelösungen durchführbar. Leider schläft Amazon nicht auf dem Baum und hat deshalb fiese Sperren in seine Firmware eingebaut.

Mein Kindle hatte schon beim Gebrauchtkauf die aktuellste Firmwareversion 12.1.2. An einen JailBreake per Software war nicht im Traum zu denken. Nun haben findige Leute einen Weg gefunden über die serielle Schnittstelle auf dem Mainboard den Kindle zu hacken.

Anleitung zum Serial JailBreake gibt es hier!

Ich habe es getan und es ist beiweitem nicht so schlimm wie es sich aufs Erste anhört. Die folgenden Bilder sind von einem Paperwhite 2 (anderes Projekt) der sich aber nur geringfügig von einem Paperwhite unterscheided. Die Vorgehensweise ist die gleiche.

Zuersteinmal muss der Kindle geöffnet werden. Das lässt sich mit einem nicht allzu scharfem Küchenmesser bewerkstelligen. Der Frontrahmen ist nur geklebt und lässt sich leicht entfernen. Im unteren Bereich wo der Schriftzug ist bitte etwas vorsichtig sein, da sind die LEDs für den Bildschirm der Hall Sensor für das Cover. Weiterhin kann man die Bildschirmschutzfolie ablösen wenn man mit dem Messer zu weit hineintaucht.

open a kindle

Danach liegen das Gehäuse und das Mainboard vor uns.

IMG_5475
entfernter Abdeckrahmen

Jetzt werden alle Schrauben gelöst. Beim Paperwhite 2 3G sind es 10 Stück, vermutlich wegen der 3G Antenne. Beim Paperwhite sind es 11 Stück

IMG_5476
Lösen der Befestigungsschrauben
IMG_5475
Position der Befestigungsschrauben
IMG_5477
Kindle ohne Gehäuse, Ansicht von oben
IMG_5478
Kindle ohne Gehäuse, Ansicht von unten

Das Modem und die Sim Karte habe ich ausgebaut, weil ich mir dadurch einen geringeren Stromverbrauch verspreche. Kann auch nur Einbildung sein. Den Antennenaschluss lässt man einfach baumeln oder fixiert ihn mit Klebeband.

IMG_5483
3G Modem und SIM Karte ausgebaut

So, Akku raus und los gehts. Der Akku ist nur mit drei Schrauben befestigt.

IMG_5480
Akku ausgebaut

Die serielle Schnittstelle ist schnell gefunden.

Kindle serial jailebrake

Jetzt gehts ans Löten. Wer sich das nicht zutraut, es gibt ganz gute Methoden zum lötfreien Kontaktieren. (lötfreies Kontaktieren) Man sollte bevor man anfängt zu Löten auf alle Fälle den Akku und ausbauen. Sicher ist sicher.

IMG_5504
serielle Schnittstelle mit angelöteten Kabeln

Der gelbe Draht geht zu TX am Adapter, der orange Draht zu RX und der grüne zu Masse (siehe unten). Den USB-RS232 Adapter habe ich bei Amazon gekauft. Hier muss man unbedingt darauf achten, dass er sich auf 1,8V stellen lässt oder von haus aus ein 1,8V Typ ist. Sonst kann man sich von seinem Kindle verabschieden!!!

Hier der Link zum USB-RS232 Adapter!

USB-RS232_Adapter
Serieller Adapter (Quelle: Amazon)
Adapterbeschaltung
Verbindung zum seriellen USB Adapter

Wenn man die Kabel noch etwas mit Klebeband fixiert, kann das nicht schaden.

Ich werde jetzt hier nicht den ganzen Vorgang des Jailbreakes beschreiben. Das habe andere schon sehr detailliert getan. Siehe hier!

Das Kindle root Passwort bekommt man übrigens sehr komfortabel mit dem Kindle Password Tool heraus.

Was muss auf dem Kindle installiert werden:

  • Jailbreake
  • Jailbreake Hotfix
  • KUAL
  • KUAL helper um ab Firmware 5.6.x Softwarepakete installieren zu können,
  • Usbnet für den Zugriff auf den Kindle über WLAN
  • Python 
  • Screen Saver Hack für den Bildschirmschoner und etwas mehr, dazu später

Alle benötigen Softwarepakete bekommt man hier.

Die Installationsanweisungen findet man in den jewiligen Readme Dateien der Softwarepakete. Bei USBnet bitte unbedingt die Readme Datei lesen, hier kann viel schief gehen. Um genau zu sein, kann man sich, wenn´s dumm läuft, den Zugriff auf den Kindle komplett verbauen.

Eine sehr gute Anleitung für USBnet findet man hier.

Was muss auf dem PC installiert werden:

  • PuTTy (Link) um mit dem Kindle in Kontakt zu treten
  • Notepad++ (Link) um Dateianpassungen vornehmen zu können, Windows Editor funktioniert nich mit Linux Dateien, da er die Linux Line Endings entfernt,
  • FTP Programm z.B. WinSCP (Link) um Dateien auf den Kindle zu transferieren. Das geht auch über USB ist aber mit WinSCP über WLAN viel komfortabler.
  • RNDIS Treiber um den Kindle als Netzwerkkarte zu benutzen (Link)

Da ich auch zu der Gruppe Menschen gehöre, die ungern Anleitungen liest, habe ich sehr viel Zeit mit dem Versuch verbracht, mich über WLAN am Kindle anzumelden. Leider wurde mir der Zugang verwehrt da ich angeblich nicht über das richtige Passwort verfügte. In der README.txt von USBnet steht eindeutig drin, dass man sich zuerst über Telnet anmelden soll.

Einstellungen für Telnet in PuTTY
Einstellungen in PuTTY für Telnet

WLAN muss am Kindle ausgeschaltet sein und der Kindle über USB im Modus USBNet enabled (kein MassStorage) sein. Die IP-Adresse ist die, welche in der config Datei im Ordner usbnet/ect, festgelegt ist.

USBnet_Config

Telnet verlangt kein Passwort aber der Zugang über WLAN mit PuTTY. Also auf alle Fälle das Passwort als root mit

  • mntroot rw    (Lese- und Schreibrechte auf Root System vergeben)
  • passwd

ändern. Hat man das erledigt setzt man das Root system wieder auf read only.

  • mntroot ro

Danach sollte die Anmeldung über WLAN funktionieren. Die Einstellungen für PuTTy findet man in der Serial Jailbreake Beschreibung unter Punkt 3. Set up PuTTy)

Der Rahmen

Der Rahmen ist für ein Foto der Größe 13×18. Der Ausschnitt im Passepartout hat die Maße 118mm x 88mm. Damit hat man eine ungefähre Randabdeckung des Kindle Bildschirmes von umlaufend 1mm.

Den Kindle selbst habe ich mit doppelseitigem Klebeband auf die Rückseite des Passepartouts geklebt. Im Rahmen wurde ein Loch eingearbeitet um an die USB Buchse des Kindles zu kommen. Somit lässt sich der Bilderrahmen auch einigermaßen komfortabel aufladen.

Die Aufbereitung der Bilder für den Screen Saver Hack funktioniert am Besten mit Gimp. Das ist kostenlos und ein sehr guter Photoshop Ersatz. Die Anforderungen an ein Screen Saver Bild sind folgende:

  • Auflösung muss der des Bildschirmes entsprechen sonst sieht das nachher sehr wild aus. Der Paperwhite und der Paperwhite 2 haben 758 x 1024.
  • Das Bild sollte in Graustufen mit 8bit Auflösung konvertiert werden und als .png gespeichert werden
  • Manch Leute fordern noch eine Reduzierung auf 16 Graustufen (Indiziert) was ich aber nicht bestätigen kann. Es funktioniert auch mit mehr Graustufen.
  • Das Bild muss 90° gegen den Uhrzeigersin gedreht werden, damit es auf dem Bilderrahmen im Querformat richtig dargestellt wird es sei denn man will einen Bilderrahmen im Hochkantformat haben.

Die Bilder müssen eine fortlaufende Nummerierung haben. Die Bilder einfach im Ordner:

/mnt/us/linkss/screensavers/

abspeichern und den Kindle neu starten. Der Screen Savers Hack benennt angeblich alle Bilder nach seinen Vorstellungen um. Ich habe das nie probiert. Ich habe alle Bilde im Vornherein schon in fortlaufender Nomenklatur benannt.

  • bg00_medium_001
  • bg00_medium_002
  •  
  •  

Wozu dient der Kühlschrankmagnet

Kindle_001
Bilderrahmen Version 1

Da ich den Kindle als Bilderrahmen benutzen möchte und nicht nur als Bildschirmschoner auf einem normal genutzten Kindle muss eine Möglichkeit her, die Bilder auf einfache Weise zu wechseln ohne auf einen Knopf zu drücken ect.

Für den Kindle gibt es eine Hülle, welche ihn beim Zuklappen in den Ruhezustand versetzt. Dafür hat der Kindle am unteren Rand in der Leiste wo sich auch die LEDs für die Bildschirmbeleuchtung befinden einen Hall-Sensor und die Hülle hat einen engesetzten Magneten. Schließt man nun die Hülle wird der Hall Sensor aktiviert und der Kindle geht in den Standby.

Hall_Sensor
Position des Hall-Sensors

Diese Funktion habe ich mir zunutze gemacht und schalte nun die einzelnen Bilder mit dem Kühlschrankmagnet, der links unten in der Ecke vom Bilderrahmen liegt, durch. Schiebt man ihn kurz zur Seite startet der Kindle und schiebt man den Magnet zurück, dan wird das nächste Bild als Bildschirmschoner geladen.

Der Akku hält übrigens beim einmaligen Wechsel pro Tag ziemlich lange. Ich will nicht übertreiben, aber es sollten mindestens 200 Tage wenn nicht mehr sein, da man auch nicht jeden Tag wechselt.

Einen automatischen Wechsel kann man auch realiseren und genau darum geht es im Folgenden.


 

Der Bilderrahmen der alles alleine macht und fast ein Jahr lang durchhält!

Smart Kindle Picture Frame
fertiger Bilderrahmen mit geladenem Bild

Das Ziel war es von Anfang an einen digitalen Bilderrahmen zu bauen, der nicht permanent am Netzteil hängen muss und wenn möglich mindestens ein halbes Jahr oder mehr ohne aufladen auskommt. Aus diesem Grund ist die Entscheidung ja auch auf ein E-Ink Display gefallen.

Im Mobilereader Forum gibt es ein Script mit dem Namen Onlinescreensaver. Dieses Script wird einfach auf den Kindle kopiert und läd dann automatisch nach einem selbstdefiniertem Zeitraum ein PNG-Bild von einer Web-Adresse.

Leider war es mir nicht möglich dieses Script zum Laufen zu bekommen.

Ich bin dann nach einigen Recherchen auf die Seite von Nico Hartung gestoßen. Er benutzt den Kindle um ein mit Python erstelltes Bild mit Daten von einer Wetterstation als Wetterdisplay anzuzeigen. Das Bild holt sich der Kindle von einem eigens eingerichteten Server wo die Daten der Wetterstation gesammelt und in ein Bild gepackt werden.

Auf Basis von Nicos Script habe ich ein eigenes Script geschrieben, welches den Kindle  einmal am Tag aufweckt, auf einen FTP-Server zugreift, ein dort hinterlegtes Bild herunterläd, es mit Imagemagick (später mehr) auf dem Kindle bearbeitet um den Kindle Konventionen zu entsprechen, dieses dann auf dem Bildschirm darstellt, einen Logfile an den FTPS Srever sendet und den Kindle dann wieder schlafen schickt. Als Aufwachzeit habe ich mich für Mitternacht entschieden. Da schlafen die meisten Leute und wenn man morgens aufsteht, kann man sich über ein neues Bild freuen.

Das Script läuft permanet durch, weckt den Kindle auf, aktualisiert den Bildschirm und schickt den Kindle wieder schlafen. Möchte man eine Aktualisierung erzwingen, kann man den Kindle duch drücken der Taste aufwecken oder einen Magneten and den HALL-Sensor (siehe oben) halten. Das hat den gleichen Effekt, als würde er um Mitternacht selbstständig aufwachen. Wenn der Kindle schläft, befindet sich das Programm im RAM. Hier wird der Schlafmodus Suspend to RAM (ACPI Modus S3) genutzt. Alle ungenutzen

Hier das Script:

#!/bin/sh

###########################################################
### Programmer: Nico Hartung <nicohartung1@googlemail.com>#
### chnaged for Picture Frame Mario Deuse <mdauso@web.de> #
###########################################################

###########################################################
## Install                                                #
## copy onlinepictureframe folder to mnt/us/extensions/   #
## activate or deaktivate as usual in KUAL                #
###########################################################

#VERSION
# - 20200307_V010
# - due to it´s speed on paperwhite 2 the script ends before midnight
#   120 seconds added to make shure the script sets the wakeup time to next day

# - 20200218_V009
# - status bar deactivated

# - 20200217_V008
# - imagemagick optimized for better dithering and cropping of pictures to fill screen even
#   if the aspect ration doesn`t fit to screen aspect ratio
#   to prevent from bars on upper and lower side of the picture

# - 20200212_V007
# - checking for new script on server, copy to script direction and reboot
# - Hostname added for picture frame location

# - 20200212_V006
# - V005 not used
# - DynDNS from MyFritz used from now on
# - tmp folder removed from script,
#   downloaded pictures will now be stored inside bin folder,

# - 20200207_V004
# - usage of FTPS instead of FTP from now on

# - 20200206_V003
# - V002 not used
# - sleep 4 min after STR when battery level is low, when connecting charger the Kindle wakes up but the battery
# - will not be over minimum level and the script would go into STR again

############################################################
# Variables
NAME=pictureframe
NAMEOLD=pictureframe_old
SCRIPTDIR="/mnt/us/extensions/onlinepictureframe/bin/"
TEMPDIR="/mnt/us/documents/"
LOG="${SCRIPTDIR}/${NAME}.log"
LOGOLD="${SCRIPTDIR}/${NAMEOLD}.log"


#FTPS Server the pictures are located on
USER="xxx"                            # FTPS user
PASSWORT="xxx"                        # FTPS password
PORT="xxx"                            # port of FTPS-Server
FTPADRESSE="xxx"                      # DynDNS adress of FTPS server

#Where will the picture frame be located
#HOSTNAME="xxx"
HOSTNAME="xxx"
#HOSTNAME="xxx"

ROUTERIP="192.168.178.1"              # Standard Gateway AVM Fritz!Box
#ROUTERIP="192.168.2.1"               # Standard Gateway Telekom Speedport

#!!!Be sure to have this folder structure on FTPS-Sever or change the script here!!!
ORT="/Bilderrahmen/Bilder/${HOSTNAME}/abc.JPG"              # location of picture on server
FTPLOG="/Bilderrahmen/Logfiles/${HOSTNAME}/"                # location of Logfile on server
NEWSCRIPT="/Bilderrahmen/Newscript/${HOSTNAME}/${NAME}.sh"  # new script on server

#!!!The picture on FTPS-server must have the right name and ending: "abc.JPG" !!!
TEMPFILEJPG="${SCRIPTDIR}/abc.jpg"
TEMPFILEPNG="${SCRIPTDIR}/abc.png"

LOGCOUNTER=0                                                # number of Log entries
LOGCOUNTERALL=1                                             # number of Log´s

NET="wlan0"

LIMG="${SCRIPTDIR}"
LIMGBATT="${SCRIPTDIR}/pictureframebattery.png"
LIMGERR="${SCRIPTDIR}/pictureframeerror_image.png"
LIMGERRWLAN="${SCRIPTDIR}/pictureframeerror_wlan.png"
LIMGWEISS="${SCRIPTDIR}/weiss.png"
LIMGNEWSCRIPT="${SCRIPTDIR}/newscript.png"


SUSPENDFORS=600                                             # short sleeping time in case of ERROR
BATTERYALERT=10                                             # from this Battery Level on to lower values a info will be displayed
BATTERYLOW=6                                                # from this Battery Level on to lower values the picture frame will go into STR an show a "Please Charge Picture"
BATTERYSLEEP=432000                                         # 5 days sleep time when Battery Level is equal or below "BATTERYLOW"

###################################################################################
### Functions
kill_kindle() {
  initctl stop framework    > /dev/null 2>&1                # "powerd_test -p" doesnt work, other command found
  initctl stop cmd          > /dev/null 2>&1
  initctl stop phd          > /dev/null 2>&1
  initctl stop volumd       > /dev/null 2>&1
  initctl stop tmd          > /dev/null 2>&1
  initctl stop webreader    > /dev/null 2>&1
  killall lipc-wait-event   > /dev/null 2>&1
}

customize_kindle() {
  mkdir /mnt/us/update.bin.tmp.partial                      # prevent from Amazon updates
  touch /mnt/us/WIFI_NO_NET_PROBE                           # do not perform a WLAN test
}

#return true if keyword not found
wait_wlan() {
  return `lipc-get-prop com.lab126.wifid cmState | grep CONNECTED | wc -l`
}

###################################################################################
### Script

### stop Kindle pocesses
kill_kindle

### customize Kindle
customize_kindle

###################################################################################
### Loop

while true; do

 echo "." >> ${LOG} 2>&1
 echo "." >> ${LOG} 2>&1
 echo "========================================================" >> ${LOG} 2>&1
 
 echo "`date '+%Y-%m-%d_%H:%M:%S'` Logbucheintrag Nr. ${LOGCOUNTER} von Logbuch Nr. ${LOGCOUNTERALL}" >> ${LOG} 2>&1
 
 echo "========================================================" >> ${LOG} 2>&1

### activate CPU Powersave
 echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
 echo "`date '+%H:%M:%S'` CPU runtergetaktet." >> ${LOG} 2>&1

### switch off screen saver
 lipc-set-prop com.lab126.powerd preventScreenSaver 1 >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Bildschirmschoner ausgeschaltet." >> ${LOG} 2>&1
 
### switch off the top status bar
 lipc-set-prop com.lab126.pillow disableEnablePillow disable
 
 #lipc-set-prop com.lab126.pillow interrogatePillow '{"pillowId": "default_status_bar", "function": "nativeBridge.hideMe();"}'
 #PILLOW_SOFT_DISABLED="yes"
 echo "`date '+%H:%M:%S'` Statusleiste deaktiviert." >> ${LOG} 2>&1

### check battery level and maybe start STR
  CHECKBATTERY=`gasgauge-info -s`
if [ ${CHECKBATTERY} -le ${BATTERYLOW} ]; then
 echo "`date '+%H:%M:%S'`  Akkuladung bei 5%, statisches Batteriezustandsbild gesetzt!" >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'`  Logfile an Sever gesendet." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'`  STR, bitte Akku aufladen!" >> ${LOG} 2>&1
 eips -f -g "${LIMGBATT}"
 /mnt/us/usbnet/bin/curl -T ${LOG} -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${FTPLOG}           # send Logfile to server
 rtcwake -d /dev/rtc1 -m no -s ${BATTERYSLEEP}                                                                                                        # picture frame will sleep for X days or wakes up in case of charging.
 echo "mem" > /sys/power/state
 sleep 300                                                                                                                                            # waiting time when charging until battery level is higher than "BATTERYLOW" otherwise it will fall into sleep again
else
 echo "`date '+%H:%M:%S'` Verbleibende Akkuladung: `gasgauge-info -c` "  >> ${LOG} 2>&1
fi

### activate WLAN
 lipc-set-prop com.lab126.wifid enable 1 >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` WLAN aktivieren. " >> ${LOG} 2>&1

 WLANNOTCONNECTED=0
 WLANCOUNTER=0
 SHORTSUSPEND=0

### wait for WLAN
while wait_wlan; do
  if [ ${WLANCOUNTER} -gt 30 ]; then
 echo "`date '+%H:%M:%S'` Kein bekanntes WLAN verfügbar." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` DEBUG ifconfig > `ifconfig ${NET}`" >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` DEBUG cmState > `lipc-get-prop com.lab126.wifid cmState`" >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` DEBUG signalStrength > `lipc-get-prop com.lab126.wifid signalStrength`" >> ${LOG} 2>&1
 eips -f -g "${LIMGERRWLAN}"
 WLANNOTCONNECTED=1
 SHORTSUSPEND=1                                                                                                                                       #short sleeptime will be activated 
 break
  fi
 let WLANCOUNTER=WLANCOUNTER+1
 echo "`date '+%H:%M:%S'` | ${HOSTNAME} | Warte auf WLAN (Versuch ${WLANCOUNTER})." >> ${LOG} 2>&1
 sleep 1
done


### connected to WLAN?
if [ ${WLANNOTCONNECTED} -eq 0 ]; then
 echo "`date '+%H:%M:%S'` Mit WLAN verbunden." >> ${LOG} 2>&1

### lost Standard Gateway if WLAN`s not available
 GATEWAY=`ip route | grep default | grep ${NET} | awk '{print $3}'`
 echo "`date '+%H:%M:%S'` ausgelesener Standard-Gateway:  ${GATEWAY}." >> ${LOG} 2>&1
  if [ -z "${GATEWAY}" ]; then
 route add default gw ${ROUTERIP} >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Standard-Gateway nach Sleep nicht mehr vorhanden." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Standard-Gateway wird neu auf ${ROUTERIP} gesetzt." >> ${LOG} 2>&1
  fi

### Check new Script
    /mnt/us/usbnet/bin/curl --silent --time-cond ${SCRIPTDIR}/${NAME}.sh --output ${TEMPDIR}/${NAME}.sh -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${NEWSCRIPT}
 #-r File Name  (File exists and is readable) 
  if [ -r ${TEMPDIR}/${NAME}.sh ]; then
  cp ${TEMPDIR}/${NAME}.sh ${SCRIPTDIR}/${NAME}.sh
  rm ${TEMPDIR}/${NAME}.sh
  echo "`date '+%H:%M:%S'` Skript aktualisiert, Neustart durchführen." >> ${LOG} 2>&1
  chmod 777 ${SCRIPTDIR}/${NAME}.sh
  eips -f -g ${LIMGNEWSCRIPT}
  sleep 5
  reboot
  exit
 else
 echo "`date '+%H:%M:%S'` Kein neues Skript auf dem Server gefunden." >> ${LOG} 2>&1
  fi
 

### download picture and send to screen

### download using cURL
 /mnt/us/usbnet/bin/curl -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${ORT} -o ${TEMPFILEJPG}

### Is there any picture?
 #-r File Name  (File exists and is readable) 
  if [ -r ${TEMPFILEJPG} ]; then
 echo "`date '+%H:%M:%S'` Bild auf Server gefunden und heruntergeladen." >> ${LOG} 2>&1

### edit picture with Imagemagick to fulfill eips demands
 /mnt/us/linkss/bin/convert ${TEMPFILEJPG} -auto-orient -filter LanczosSharp -brightness-contrast 3x15 -resize x758 -gravity center -crop 1024x758+0+0 +repage -rotate 270 -colorspace Gray -dither FloydSteinberg -remap /mnt/us/linkss/etc/kindle_colors.gif -quality 75 -define png:color-type=0 -define png:bit-depth=8 ${TEMPFILEPNG}

 echo "`date '+%H:%M:%S'` Bild mit Imagemagick bearbeitet." >> ${LOG} 2>&1

### send picture to screen
 eips -f -g ${LIMGWEISS}           #cover the screen in white to prevent from shadows
 sleep 1                           #let´s sleep a second, e-ink´s are not the fastest
 eips -f -g ${TEMPFILEPNG}         #load picture to screen
 echo "`date '+%H:%M:%S'` Bildschirm aktualisiert." >> ${LOG} 2>&1
  else 
 eips -f -g ${LIMGWEISS}           #cover the screen in white to prevent from shadows
 sleep 1                           #let´s sleep a second, e-ink´s are not the fastest
 eips -f -g ${LIMGERR}             #show error picture
 echo "`date '+%H:%M:%S'` Kein Bild gefunden, Error-Bild gesetzt." >> ${LOG} 2>&1
 SHORTSUSPEND=1                    #short sleep time will be activated
  fi

### delete temp. files
 rm ${TEMPFILEJPG}
 rm ${TEMPFILEPNG}
 echo "`date '+%H:%M:%S'` Temporaere Dateien entfernt." >> ${LOG} 2>&1
 
if [ ${CHECKBATTERY} -le ${BATTERYALERT} ]; then
 eips 2 2 -h " Akku bei 10 Prozent, bitte aufladen "
fi

fi

### calculate and set WAKEUPTIMER
if [ ${SHORTSUSPEND} -eq 1 ]; then
 TODAY=$(date +%s)
 WAKEUPTIME=$(( ${TODAY} + ${SUSPENDFORS} ))
 echo "." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Ein Fehler ist aufgetreten, neuer Versuch am: `date -d @${WAKEUPTIME} '+%Y-%m-%d_%H:%M:%S'`" >> ${LOG} 2>&1
 echo "." >> ${LOG} 2>&1
 rtcwake -d /dev/rtc1 -m no -s ${SUSPENDFORS}
else
 TOMORROW=$(date +%s -d 23:59)
 TODAY=$(date +%s)
 SUSPENDFORL=$((${TOMORROW} - ${TODAY} + 120)) #120 seconds added to make shure it´s past midnight
 WAKEUPTIME=$((${TODAY} + ${SUSPENDFORL}))
 echo "." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Alles OK, Bilderrahmen wird am: `date -d @${WAKEUPTIME} '+%Y-%m-%d_%H:%M:%S'` neu gestartet" >> ${LOG} 2>&1
 echo "." >> ${LOG} 2>&1
 rtcwake -d /dev/rtc1 -m no -s ${SUSPENDFORL}

fi

### at 365 Log entries the Log will be saved as "pictureframe_old.log" on FTP server, the Log on Kindle will be deleted and a new Log will be created with number +1
 let LOGCOUNTER=LOGCOUNTER+1
if [ ${LOGCOUNTER} -gt 365 ]; then
 cp ${LOG} ${LOGOLD}
 echo "`date '+%H:%M:%S'` Alter Logfile wird auf dem Sever gesichert und vom Bilderrahmen geloescht." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Ruhezustand wird gestartet." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Bye Bye!" >> ${LOG} 2>&1
 /mnt/us/usbnet/bin/curl -T ${LOGOLD} -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${FTPLOG}
 rm ${LOGOLD} && rm ${LOG}
 LOGCOUNTER=0
 let LOGCOUNTERALL=LOGCOUNTERALL+1
else
### send Logfile to FTP Server
 echo "`date '+%H:%M:%S'` Aktueller Logfile wird an den Sever gesendet." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Ruhezustand wird gestartet." >> ${LOG} 2>&1
 echo "`date '+%H:%M:%S'` Bye Bye!" >> ${LOG} 2>&1
 /mnt/us/usbnet/bin/curl -T ${LOG} -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${FTPLOG}
fi

### Go into STR
 echo "mem" > /sys/power/state

done

Erklärungen zum Script:

# Variables
NAME=pictureframe
NAMEOLD=pictureframe_old
SCRIPTDIR="/mnt/us/extensions/onlinepictureframe/bin/"
TEMPDIR="/mnt/us/documents/"
LOG="${SCRIPTDIR}/${NAME}.log"
LOGOLD="${SCRIPTDIR}/${NAMEOLD}.log"

SCRIPTDIR und TEMPDIR:

Der Teil  /mnt/us/extensions des Ordners SCRIPTDIR ist vorhanden wenn nach dem Jailbreake KUAL installiert wurde. Die Erweiterung onlinepictureframe/bin/ ist Bestandteil des Scripts und wird beim Kopieren des Scriptes in den „extensions“ Ordner von KUAL erzeugt. Der Ordner TEMPDIR ist bereits auf dem Kindle vorhanden.

FTPS-Server

#FTPS Server the pictures are located on
USER="xxx" 						# FTPS user
PASSWORT="xxx" 						# FTPS password
PORT="xx" 						# port of FTPS-Server
FTPADRESSE="xxx" 					# DynDNS adress of FTPS server

#Where will the picture frame be located
#HOSTNAME="xxx"
HOSTNAME="xxx"

ROUTERIP="192.168.178.1" 	 	# Standard Gateway AVM Fritz!Box
#ROUTERIP="192.168.2.1" 		# Standard Gateway Telekom Speedport

USER, PASSWORT, PORT und FTPADRESSE

Hier werden die Zugangsdaten, die Serveradresse und der Port für den FTPS Server eingetragen. In meinem Falle ist es die heimische Fritz!Box mit freigegebem Datenspeicher. Hierbei ist es wichtig, dass eine dynamische DNS Adresse verwendet wird. Da der Internetprovider die Verbindung einmal am Tag kappt und neu aufbaut, ändert sich die IP-Adresse des Routers ständig und er ist im Netz nicht mehr zu finden. AVM bietet mit der Fritz!Box und dem Dienst MyFritz bereits eine DynDNS an. Man kann sich aber auch bei vielen Anbietern einen DynDNS Dienst einrichten. Google ist auch hier Dein Freund.

HOSTNAME

Den Hostnamen brauche ich, da ich zwei Bilderrahmen an unterschiedlichen Orten in Betrieb habe. Die beiden Rahmen werden mit unterschiedlichen Bildern gefüttert und müssen somit auch auf verschiedene Ordner auf dem FTPS Server zugreifen.

ROUTERIP

Der Standardgateway (ROUTERIP) wird angegeben, weil der Kindle diesen manchmal aus ungeklärtem Grund vergisst und dann nicht mehr ins Internet kommt. Sollte das der Fall sein, dann wird der hier angegebene Standardgateway je nach Router neu gesetzt.

Ordnerstruktur auf dem FTPS- Server

#!!!Be shure to have this folder structure on FTPS-Sever or change the script here!!!

ORT="/Bilderrahmen/Bilder/${HOSTNAME}/abc.JPG"              # location of picture on server
FTPLOG="/Bilderrahmen/Logfiles/${HOSTNAME}/"                # location of Logfile on server
NEWSCRIPT="/Bilderrahmen/Newscript/${HOSTNAME}/${NAME}.sh"  # new script on server

#!!!The picture on FTPS-server must have the right name and ending: "abc.JPG" !!!

TEMPFILEJPG="${SCRIPTDIR}/abc.jpg"
TEMPFILEPNG="${SCRIPTDIR}/abc.png"

Das Script verlangt eine bestimmte Ordnerstruktur auf dem Server. Entweder man hält sich daran oder man schreibt das Script um. Das kann jeder machen wie er will. Bei mir gibt es zwei Bilderrahmen an unterschiedlichen Orten in der Republik. Dies wird mit dem Hostnamen gesteuert.

  • ORT: Wo liegt das Bild auf dem FTPS-Server
  • FTPLOG: Wo soll der Logfile abgespeichert werden.
  • NEWSCRIPT: Hier wird nach einem aktuellerem als dem, auf dem Kindle laufenden, Script geschaut. Sofern vorhanden und neueren Datums, wird dieses heruntergeladen und im Scriptordner unter dem Scriptnamen abgespeichert, danach wird ein Neustart durchgeführt und das neue Script geladen.

Bisher ist es mir nicht gelungen mittels Wildcards (*.JPG , abc.* oder *.*) einfach irgendeine Datei herunterzuladen. Kann sein, dass das Linux auf dem Kindle keine Wildcards unterstützt. Aus diesem Grund muss das herunterzuladende Bild abc.JPG heißen. Warum? Das hab ich mir so ausgedacht.

Tempfile

  • TEMPFILEJPG: Diese Angabe dient dazu, damit cURL weiß, wo es die heruntergeladene Dateie hinspeichern soll.
  • TEMPFILEPNG: Diese Angabe dient dazu, damit Imagemagick (später mehr zu cURL und Imagemagick) weiß, wo es das bearbeitete Bild hinspeichern soll.
  • Beide Dateien sowohl TEMPFILEJPG als auch TEMPFILEPNG werden nach erfolgreicher Aktualisierung des Bildschirmes gelöscht.

Zeiten

SUSPENDFORS=600                                    # short sleeping time in case of ERROR
BATTERYALERT=10                                    # from this Battery Level on to lower values a info will be displayed
BATTERYLOW=6                                       # from this Battery Level on to lower values the picture frame will go into STR an show a "Please Charge Picture"
BATTERYSLEEP=432000                                # 5 days sleep time when Battery Level is equal or below "BATTERYLOW"
  • SUSPENDFORS: Kürzere Schlafzeit im Falle eines Fehlers. Falls das Script kein Bild auf dem Server findet oder kein WLAN erreichbar ist geht der Kindle nur für 10 Minuten schlafen, statt bis Mitternacht zu warten, und versucht es dann nochmal.
  • BATTERYALERT: Gibt an, ab welchem Akkuladezustand ein Schriftzug auf dem Bildschirm erscheint, mit der Aufforderung den Bilderrahmen aufzladen, da der Akku nur noch 10% hat.
  • BATTERYLOW: Ab 6% Akkuladung geht der Bilderrahmen in den Ruhezustand und wacht erst nach BATTERYSLEEP ( in diesem Falle 5 Tagen ) oder beim Anstöpseln des Ladegerätes wieder auf. Wird nicht aufgeladen geht der Bilderrahmen nach 5 Tagen wieder in den Ruhezustand.

Weitere Programmschritte

Wenn das Script startet werden zuerst einige nicht benötigte Prozesse auf dem Kindle gestoppt um Energie zu sparen.

Es wird ein Ordner angelegt, der Amazon vorgaugelt, es wird gerade ein update geladen. Damit soll verhindert werden, dass Amazon über automatische Updates eine neue Firmware aufspielt und der Jailbreake dadurch zerstört wird.

### Functions

kill_kindle() {
  initctl stop framework    > /dev/null 2>&1                # "powerd_test -p" doesnt work, other command found
  initctl stop cmd          > /dev/null 2>&1
  initctl stop phd          > /dev/null 2>&1
  initctl stop volumd       > /dev/null 2>&1
  initctl stop tmd          > /dev/null 2>&1
  initctl stop webreader    > /dev/null 2>&1
  killall lipc-wait-event   > /dev/null 2>&1
}

customize_kindle() {
  mkdir /mnt/us/update.bin.tmp.partial                      # prevent from Amazon updates
  touch /mnt/us/WIFI_NO_NET_PROBE                           # do not perform a WLAN test

Im weiteren Verlauf wird die CPU Frequenz reduziert, der Bildschirmschoner deaktiviert und die obere Menueleiste incl. Statusleiste (Akku, WLAN, Uhrzeit…) ausgeschaltet. Manchmal hatte ich den Effekt, dass nach erfolgreicher Aktualisierung des Bildschirmes plötzlich noch die obere Statusleiste geladen wird und im Bild verbleibt. Das wird damit verhindert.

### activate CPU Powersave
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "`date '+%H:%M:%S'` CPU runtergetaktet." >> ${LOG} 2>&1

### switch off screen saver
lipc-set-prop com.lab126.powerd preventScreenSaver 1 >> ${LOG} 2>&1
echo "`date '+%H:%M:%S'` Bildschirmschoner ausgeschaltet." >> ${LOG} 2>&1

### switch off the top status bar
lipc-set-prop com.lab126.pillow disableEnablePillow disable
echo "`date '+%H:%M:%S'` Statusleiste deaktiviert." >> ${LOG} 2>&1

Download der Bilder über FTPS

Anfangs habe ich die Bilder über FTP mit wget vom Server geladen. Das war mir aber zu unsicher, wobei unsicher relativ ist, und ich habe mich für FTPS entschieden. Mehr gibt die Fritzbox leider nicht her. Nun kann wget aber kein FTPS. Da kommt cURL ins Spiel. cURL kann ziemlich viel, auch FTPS. Die Version von cURL, welche in der Kindle Linux Version mitgeliefert wird ist aber so alt, dass diese kein FTPS unterstützt.

Nach langem Suchen konnten mir die Leute aus dem Mobilereader Forum helfen. Im UsbNet Hack (welches im Rahmen des Jailbreake Prozedere installiert wurde!!!) ist eine neuere version von cURL enthalten. Wenn man im Script auf diesen Ordner referenziert wird diese Version benutzt und dann funktioniert es auch mit FTPS.

Man kann die Funktionalität von cURL recht einfach über den Befehl curl –version (2 Bindestriche!) in der Konsole herausfinden. Im Beispiel unten hab ich das mal schnell im Windows getan. Ja, cURL gibts auch unter Windows.

curl options
### download using cURL
 /mnt/us/usbnet/bin/curl -k --ftp-ssl --tlsv1 --ftp-ssl-reqd --ftp-pasv ftp://${USER}:${PASSWORT}@${FTPADRESSE}:${PORT}/${ORT} -o ${TEMPFILEJPG}

Bearbeitung der Bilder mit Imagemagick

Imagemagick ist ein Befehlszeilen Bildbearbeitungsprogramm und ist im Screen Saver Hack enthalten. Diese Befehlszeile öffnet das heruntergeldene Bild bearbeitet es und speichert es im passenden Format wieder ab.

Vielen Dank an NiLuJe für die hilfreichen Hinweise.

### edit picture with Imagemagick to fulfill eips demands
 /mnt/us/linkss/bin/convert ${TEMPFILEJPG} -auto-orient -filter LanczosSharp -brightness-contrast 0x20 -resize x758 -gravity center -crop 1024x758+0+0 +repage -rotate 270 -colorspace Gray -dither FloydSteinberg -remap /mnt/us/linkss/etc/kindle_colors.gif -quality 75 -define png:color-type=0 -define png:bit-depth=8 ${TEMPFILEPNG}

Ich werde hier nicht auf alle aufgerufenen Funktionen eingehen aber auf die wichtigsten.

  • auto-orient: hier wird geprüft, wie die Orientierung des Bildes bei der Aufnahme war und das Bild dementsprechend ausgerichtet, auch wenn es auf dem Kopf steht.
  • resize x758 -gravity center -crop 1024×758+0+0 +repage: Das Bild wird auf eine Höhe von 758 Pixel geändert ohne Rücksicht auf die Breite. Dann wird das Bild zentriert und auf eine Breite von 1024 Pixel beschnitten. Danach werden mit repage die Offset und Canvas Werte aus dem Header des Bildes entfernt, da diese sonst falsch stehen bleiben würden.
  • Mit -rotate 270 wird das Bild gedreht, da ja der Kindle im Landscape Modus benutzt und sozusagen auf die Seite gelegt wird.
  • colorspace Gray -dither FloydSteinberg: Diese beiden Befehle sorgen dafür, dass das Bild erstens in Graustufen umgewandelt wird und zweitens die Übergänge im Bild mit den verfügbaren 16 Graustufen so bearbeitet werden, dass keine Farbränder entstehen. Extrem würde das ausfallen bei gleichmäßigen Farbübergängen wie zum Beispiel bei Bildern mit bewölktem Himmel oder Nebel. (Beschreibung hier)
Kindle_002
Bild ohne dithering

 

IMG_6449
Bild mit dithering

 

Der Rahmen

Den Bilderrahmen habe ich bei IDEAL-Trend GmbH in Berlin gekauft.

Dieser Rahmen ist perfekt, da er die nötige Tiefe bereitstellt. Somit ist genügend Platz für den Kindle, den USB Anschluss und die Verlängerung für den Taster. Das Passepartout (aussen 18cm x 24cm, innen 8,8cm x 11,8 cm) kann man sich im Netz bei unzähligen Shops anfertigen lassen oder man geht zum örtlichen Rahmenbauer. Der Kindle ist mit doppelseitigem Klebeband von hinten am Passepartout befestigt.

Hier ein Profilschnitt des Rahmens und die Darstellung der verschiedenen Möglichkeiten des Zusammenbaus.  (Quelle: IDEAL Trend GmbH Berlin)

Bilderrahmen_Schnitt

Die Variante welche ich benutze ist hier aber nicht dargestellt. Der Rahmen ist also wirklich sehr flexibel.

IMG_6394
Online-Bilderrahmen Innenansicht
IMG_6395
USB-Verlängerung und Tasterbetätigung
IMG_6397
USB Anschluss und Tasterbetätigung von aussen

Der Holzstab zur Betätigung des Tasters ist hier noch nicht gekürzt und auch noch nicht schwarz eingefärbt. Links davon der in den Rahmen eingelassene USB Anschluss.

IMG_6453
Tasterbetätigung gekürzt und eingefärbt
IMG_6160
USB Verlängerung von DeLOCK

Das USB Kabel oder besser, die USB Verlängerung gibts bei Ebay. Der Knickschutz auf der Steckerseite muss entfernt werden, sondt passt es nicht. (siehe Bild weiter oben)

IMG_6159
so sieht die Tüte aus

 

Wie kommen die Bilder auf den Bilderrahmen

Der einfachste Weg ist es ein Bild per FTPS auf den Server zu übertragen und es hinterher in abc.JPG umzubenennen. Leider hat diese Methode zwei Nachteile. Erstens wird die Bilddatei nicht verkleinert. Das führt zu längerer Laufzeit des Scripts einmal beim Herunterladen des Bildes vom Server und weiterhin beim Umwandeln mit Imagemagick. Zweitens muss man sich nochmals per FTPS auf dem Server anmelden um das Bild umzubenennen. Dieses auf dem Smartphone vorher zu tun führt nur zu noch mehr Arbeitsschritten.

Nach langem Suchen habe ich tatsächlich eine App gefunden, die meine Anforderungen voll erfüllt.

  • FTPS Support,
  • mehrere FTP-Server,
  • Bilder komprimieren,
  • Bilder umbenennen,
  • überschreiben auf Server ohne nachfragen,

Die App PhotoSync gibt es für iOS und Android. (klick ins Bild)

Picturesync

Nachdem man die App installiert hat, kann man aus der Bildergallerie auf Teilen klicken und PhotoSync auswählen, aber zuerst sollte man die App einrichten.

PhotoSync einrichten

Nach dem Start der App klickt man unten rechts auf das kleine Zahnrad und landet im Einstellungsmenue. Hier klickt man auf Konfigurieren und landet im nächsten Menue.

Photosync_005
 

Da es sich beim Server, auf dem die Bilder gesendet werden sollen (Fritz!Box) um einen FTP-Server handelt wählt man hier FTP aus.

Photosync_006

 

Hier sind bereits die beiden Hosts eingerichtet, da es ja auch zwei verschieden Bilderrahmen gibt. In einem jungfräulichen PhotoSync wählt man „Konfiguration hinzufügen…“

 

Photosync_007

 

Photosync_008

Im Reiter „FTP/SFTP Account einrichten“ trägt man die Dyns-Adresse des Servers, den Benutzernamen, das Passwort und den Port ein. Oben wählt man FTPS aus sofern man dieses Protokoll nutzen möchte. Sonst gibt es noch FTP und SFTP.

010

Als Titel gibt man am Besten den Standort des Bilderrahmens ein. Der Zielordner eintspricht dem entsprechenden Ordner auf dem Server.
Unterverzeichnisse sollen nicht erstellt werden.
Vor Übertr. wählen muss aus sein, sonst fragt PhotoSync jedes mal nach, wo das Bild hin soll. Das nervt.
Dateinahmen hat ein extra Menue. Das kommt als nächstes.
Dann kann man noch die Qualität des Uploads einstellen. Damit reduziert PhotoSync sowohl die Bildgröße als auch die Dateigröße. Hier habe ich „Hohe Qualität“ gewählt. Dadurch dauert der Download auf dem Bildschirm nicht solange und Qualitätsprobleme konnte ich nicht feststellen.

Scrollt man weiter nach unten, kann man noch die Qualitätsstufe für den mobilen Upload einstellen.

Photosync_009

Aber der Clou ist der Reiter Dateinamen.

Hier kann man einen eigenen Dateinamen vergeben. PhotoSync benennt die Datei dann selbstständig um und überschreibt die auf dem Server vorhandene Datei ohne nachzufragen wenn man im vorherigen Menue „Überschreiben zulassen“ aktiviert hat.

Der eigen Dateiname muss „abc.JPG“ sein wenn man das Script für den Kindle nicht ändern möchte.

Photosync_011

Der Bilderupload

Der Upload eines Bildes sollte nun denkbar einfach vonstatten gehen. In der Galerie wählt man ein Bild aus und klickt auf Teilen. Danach erscheint folgender Bildschirm.

Photosync_001

Nun wählt man PhotoSync als Übertragungsmedium aus. Dann gehts weiter zu folgendem Menue.

Photosync_002

Hier wählt man FTP aus. Ich habe alle anderen Möglichkeiten ausgeblendet, dann sieht es übersichtlicher aus. Im folgenden Menue muss man noch die FTP-Konfiguration wählen, die man zuvor eingerichtet hat und gelangt im Anschluss ins Sendemenue.

Photosync_007
Photosync_004

Hier muss man nichts weiter tun als zu warten bis der Upload abgeschlossen ist.

Das war´s.

Jetzt kann man am Bilderrahmen den Knopf betätigen und hat in ca. zwei Minuten ein neues Bild, oder man geht schlafen und freut sich auf ein neues Bild welches einem den Morgen versüßt.

IMG_6452
fertiger Bilderrahmen mit geladenem Bild
IMG_6454
Rückseite

Casablanca

Eine Sache noch. Ihr hab Euch sicher gefragt, was das ganze gekostet hat. Hier noch eine kurze Auflistung.

  • gebrauchter Kindle 25€ -50€ + Versand bei Ebay
  • RS232-USB Adapter 10€ + Versand bei Amazon
  • Bilderrahmen 9€ + Versand bei Ideal Trend GmbH Berlin
  • Passepartout 16€ incl. Versand bei AllesRahmen.de
  • USB Verlängerung 3€ + Versand bei Ebay
  • PhotoSync Pro App 5,49€ im App-Store

Viel Spaß beim Nachbauen!

Mario

 

Download „Online Picture Frame“

4.3.2020 Nachtrag

Mittlerweile konnte ich das ursprünglich auf dem Paperwhite entwickelte Script auch auf einem Paperwhite 2 erfolgreich testen. Was mich total überrascht hat, ist die Verarbeitungsgeschwindigkeit auf dem Paperwhite 2.

Ich habe mal die Zeiten aus den Logfiles verglichen. Beide Bilderrahmen haben das gleiche Bild geladen.

Paperwhite

komplettes Script verarbeiten: 1:13 Minuten

Bild mit Imagemagick bearbeiten: 53 Sekunden

Paperwhite 2

komplettes Script verarbeiten: 21 Sekunden

Bild mit Imagemagick bearbeiten: 9 Sekunden

Fals Ihr euch also entscheided den Bilderrahmen nachzubauen, empfehle ich einen Paperwhite 2 zu nehmen. Das sollte die Akkulebensdauer midestens verdoppeln.

Viel Spaß!

Mario

Die Stunde der Wahrheit

img_2321


Heute war Termin auf dem Leistungsprüfstand, jetzt bin ich ein wenig traurig. Die Messwerte bewegen sich im Bereich der Serienangabe. Trotz Stufe-1 Nockenwelle, TM42-6 Vergaser, längerem Ansaugstutzen und K&N Luftfilter keine Leistungs-, bzw. Drehmomenterhöhung. Es ist zwar der originale Auspuff verbaut, aber der sei laut MZ-Forum sogar für ein Stufe-2 Tuningpaket gut genug. Ein bisschen Hoffnung macht mir, die zum momentanen Zeitpunkt, noch ausgeschaltete Beschleunigerpumpe. Die könnte in Bezug auf das Drehmoment noch etwas rausreißen. Bei der Leistungsmessung muss der Gashahn im vierten Gang aus niedriger Drehzahl heraus schlagartig aufgerissen werden. Dabei hat sich der Motor ziemlich heftig verschluckt. Vielleicht (hoffentlich) hat das einen negativen Einfluss auf die Leistungsmessung. Wenn dem so ist, sollte das Ergebnis mit aktivierter Beschleunigerpumpe, zumindest im unteren Drehzahlbereich, bezogen auf das Drehmoment besser aussehen. Mit der Leistung kann ich leben aber das Drehmoment ist enttäuschend.

Hier ist das Messprotokoll vom Leistungsprüfstand:

Mesprotokoll_geschwaerzt

 

Vergasereinstellung mit Breitbandsonde

Um den TM42-6 Vergaser in der MZ richtig abstimmen zu können, habe ich mich entschieden, eine Breitbandsonde inclusive AFR Anzeige zu kaufen. Ich habe mich für das MTX-L System von Innovate für 220,00€ entschieden. Das System arbeitet mit einer Bosch LSU 4.9 Sonde.

img_1636.jpg

Für die Lambdasonde hatte ich im Voraus schon eine Anschweißmutter bestellt, es liegt dem System aber eine bei. Das Loch im Auspuffkrümmer war schnell gemacht und die Mutter habe ich beim Metallbauer meines Vertrauens anschweißen lassen.

IMG_1605

IMG_1606

Die AFR Anzeige habe ich mit einer Provisorischen Halterung neben dem Tacho platziert.

img_1936.jpg

Hier kann man sehr schön sehen, dass der Motor im Standgas mit einem AFR von 12,5 läuft. Das entspricht Lambda 0,85.

Die folgende Tabelle zeigt den Werdegang meines Unterfangens inclusive aller durchgeführten Änderungen.

Vergasereinstellung_1

Es hat sich gezeigt, dass es immer gut ist sich an einen Experten zu wenden. Bezüglich der Düsennadel habe ich beim Mikuni Gott Stephen Topham nachgefragt. Es ging um den Bereich 1/3 – 2/3 Gas. Die Nadel hing schon fast ganz unten und eine Besserung war mit der letzten möglichen Nadelstellung nicht zu erwarten. Stephen Topham schlug vor eine 0,01mm dickere Nadel zu verwenden, was dann auch zu den erwarteten Ergebnis geführt hat. Das Gemisch ist im mittleren Bereich merklich abgemagert. Weiterhin habe ich auf Ebay Hauptdüsen fraglicher Herkunft gekauft. Hier hatte ich den Eindruck, dass eine kleinere Hauptdüse keine Gemischabmagerung im Vergleich zur größeren bewirkt. Letztendlich habe ich doch bei Topham gekauft.

Man muss auch sagen, dass es teilweise sehr schwer ist, die AFR Werte abzulesen, da man einerseits auf die Straße achten muss, die Sonne unter Umständen auf das Display scheint und andererseits die Anzeige doch etwas springt.

Die Beschleunigerpumpe habe ich irgendwann deaktiviert um erstmal die Grundeinstellung des Vergasers durchführen zu können. Ich werde sie wieder aktivieren, da man beim Aufreißen des Gases deutlich ein Loch merkt und die AFR Anzeige sofort in den mageren Bereich springt.

Bezüglich des Springens bzw. der „nervösen“ Anzeige bei hohen Drehzahlen bzw. Volllast könnte die Ursache in der Stromversorgung des Systems liegen. Ich habe hierzu einen sehr interessanten Artikel auf der Homepage von Innovate gefunden:

„You’re Grounded Young Man“

 

Es gibt noch etwas sehr wichtiges beim Betrieb von Lambdasonden zu beachten. Die Sonde darf nicht betrieben werden bevor der kalte Motor startet, es sei denn, man hat nicht vor den Motor zu starten. Wird die Lambdasonde eingeschaltet beginnt das Steuergerät umgehend damit die Sonde aufzuheizen. Wird der kalte Motor erst danach gestartet kann es passieren, dass kaltes Kondenswasser in die aufgeheizte Sonde eindringt und der keramische Messfühler bei Kontakt mit kaltem Wasser durch thermischen Schock reißt, was zur sofortigen Zerstörung der Sonde führt.

Ich habe das Sondensteuergerät an den Hauptscheinwerfer geklemmt, da dieser erst beim Start des Motors über die m-unit eingeschaltet wird. So wird zumindest sicher gestellt, dass die Sonde nicht vor dem Motor läuft. Besser ist es noch ein paar Sekunden zu warten nachdem der Motor gestartet wurde bevor die Sonde gestartet wird.

Zu dieser Problematik gibt es einen sehr guten Artikel, bitte unbedingt lesen:

„Why Bosch LSU wide-band air/fuel ratio (or Lambda) sensors fail so often in aftermarket performance applications“

 

 


Update 3.5.2019

 

Testfahrt 31.5.2019:

  1. Leerlauf: AFR 12,5/Lambda 0,80
  2. 1/8 Gas: AFR 18/Lambda 1,25 (Sprotzen und Spucken, nur mit Choke fahrbar)
  3. 1/3 Gas: AFR 13,2/Lambda 0,9
  4. 2/3 Gas: AFR 13,9/Lambda 0,78
  5. Vollgas: AFR 12,5/Lambda 0,85

Der Leerlauf ist noch zu fett, das wird auf Lambda 0,85 korrigiert.

Es hat sich herausgestellt, dass der Übergang zwischen Leerlauf und 1/4 Gas bis auf Lambda 1,25 abmagert. Es ist wirklich nur ein kleiner Bereich aber genau dieser fällt in den Bereich der Konstantfahrt bei ca. 50km/h und ca. 100km/h. Das ist sehr unangenehm. Dafür habe ich eine im zylindrischen Teil 0,01mm dünnere Nadel bestellt. Die kegeligen Bereiche der Nadel bleiben davon unberührt. Somit sollte sich nur der besagte Bereich ändern und das Patschen und Sprotzen beim Dahinrollen mit wenig Gas verschwinden.

Leider hat eine 96er Nadel nicht den gewünschten Erfolg gebracht. Das heißt, eine 95er Nadel einbauen. Wenn einmal der Tank abgebaut wird kommt gleich eine  kleinere Nadeldüse (Y-2) mit rein.

Hier habe ich mal einige Kombinationen von Düsennadeln und Nadeldüsen gegenübergestellt:

Nadel_Düse_Kombi

Die letzte Kombination (Überlegung) könnte mir sehr zugute kommen was die Nadelposition angeht. Momentan befindet sich die Nadel in der obersten Kerbe. Das heißt, es ist kein Spielraum mehr den Vergaser noch magerer abzustimmen, da die Nadel nicht mehr niedriger gehängt werden kann. Mit einer kleineren Nadeldüse und einer kleinere Nadel bleiben die Verhältnisse bis 1/4 Gas gleich, aber in den höheren Schieberpositionen würde der Vergaser sehr viel magerer laufen und man könnte durch Höherhängen der Nadel ausgleichen und hat dadurch die Möglichkeit auf den mittleren Bereich Einfluss zu nehmen.

Update 5.7.2019

Heute bin ich endlich am Ziel angekommen. Mit der aktuellen Vergasereinstellung bin ich super zufrieden. Das Motorrad lässt sich sehr gut im unteren Drehzahlband (2500U/min) fahren. Sie  nimmt hervorragend Gas an ohne zu spucken und zu sprotzen und dreht sehr willig bis 160km/h hoch.

Vergasereinstellung_3

Jetzt, wo die Vergasereinstellung abgeschlossen ist, habe ich die Beschleunigerpumpe wieder aktiviert. Sie ist so eingestellt, dass sie ab 1/3 Gas aktiviert und bei 2/3 Gas wieder deaktiviert wird. Das Motorrad geht im 1.Gang nur durch Gas geben aufs Hinterrad. Mehr brauche ich dazu wohl nicht zu sagen.

Was als nächstes noch ansteht ist die Änderung der Endübersetzung von 15/39 auf 15/43 und der Wechsel auf eine D.I.D 520 ERT3 Kette ohne O-Ringe. Das wird im Durchzug nochmal richtig was bringen und die Kette bringt bis zu zwei PS mehr am Hinterrad. Die Endgeschwindigkeit sollte sich nur etwas reduzieren, da das Motorrad mit 15/39 bei 6800U/min 175km/h läuft ohne in den Begrenzer zu gehen. Mit einer Übersetzung von 15/43 würde das Motorrad mit hoher Sicherheit in den Begrenzer drehen und dann  165km/h bei 7200U/min laufen, aber das wahrscheinlich fast überall. Hier hätte man noch die Möglichkeit den Begrenzer rauszunehmen oder zu erhöhen. Eine Erhöhung auf 7700U/min ergibt dann wieder eine Geschwindigkeit von 175km/h.

Update 16.07.2019

Zu früh gefreut!

Was mich schon länger etwas misstrauisch machte war die Tatsache, dass das Motorrad manchmal etwas schneller fährt. Mittlerweile habe ich auch herausgefunden woran es liegt. Es liegt nicht etwa am Wetter oder der Lufttemperatur, welche zwar einen Einfluss haben aber keinen so großen, es ist der Füllstand des Tanks.

Die Benzinleitung zum Benzinhahn ist, wie ich zugeben muss, etwas unglücklich verlegt. Offensichtlich ist der innere Widerstand so groß, dass bei kleiner Tankfüllung weniger Benzin pro Zeiteinheit fließt als bei vollem Tank. Ich werde als nächstes die Ringnippel und die Hohlschrauben am Tankanschluss durch 90° Schlauchnippel ersetzen. Dann führt auch die Hauptbenzinleitung nicht mehr über Umwege zum Benzinhahn.

Natürlich gibt es jetzt eine gewisse Unsicherheit was die Gemischzusammensetzung bei Volllast angeht, also wollte ich die Lambdasonde nochmal bemühen.

Sie geht nicht mehr!

Ich habe alles wie vorher angeschlossen aber bekomme nur Error 8 vom Innovate Steuergerät. Ich hatte das vor Längerem schon mal es hat dann aber trotzdem funktioniert und ich habe das nicht weiter beachtet. Offensichtlich scheint etwas mit der Heizung der Lambdasonde nicht zu funktionieren. Wenn ich die Sonde mit dem Gasbrenner aufwärme geht sie plötzlich wieder. Leider hilft mir das nicht weiter, da ich sie so nicht kalibrieren kann.

Das war der Grund, warum der Fehler vorher nicht aufgetreten ist. Im eingebauten Zustand wird die Sonde zusätzlich vom Abgas erwärmt und so tritt der Fehler nicht auf.

Ich habe eine neue Bosch LSU 4.9 Sonde bestellt. Die originale Bosch Nummer der Sonde ist 0 258 017 025. Die Kosten belaufen sich auf 70€.

Jetzt kommt`s. Nach intensiveren Recherche habe ich einige Informationen darüber gefunden, warum Lambdasonden kaputt gehen (siehe auch Link zum Artikel weiter oben) und es scheint so, dass diese Dinger echt empfindlich sind wenn man sie leichtfertig betreibt. Das mit dem Kondenswasser wusste ich ja schon, aber es ist viel mehr.

Was führt nun zur vorzeitigen Zerstörung der Sonde:

  1. Die Sonde wird vor dem kalten Motor beheizt (gestartet) und bekommt evtl. vorhandenes Kondenswasser ab wenn der Motor gestartet wird. Das gilt auch für undichte Kopfdichtungen und dadurch austretendes Kühlwasser. Daher gilt auch die Einbauposition zwischen 12 und 3 Uhr. Dadurch kann angesammeltes Kondenswasser aus der Sonde ablaufen.
  2. Die Sonde bekommt übermäßig viel Öl ab. Viel Spaß bei defekten Ventilschaftdichtungen oder Kolbenringen.
  3. Die Sonde wird mit Silikonöl oder anderen Ölen (z.B. WD40) benetzt.
  4. Die Sonde wird über einen längeren Zeitraum bei über 900°C betrieben.
  5. Die Sonde wird harten Stößen ausgesetzt (Sturz auf Beton).
  6. Die Sonde erfährt zu starke Vibrationen.
  7. Jetzt kommt der Hammer: Die Sonde (vorrangig wohl LSU 4.9) wird über längeren Zeitraum bei weniger als AFR 12,5 (zu fett) betrieben! Man spricht hier vom Sweetspot zwischen AFR 12,5 und 13,5 welcher wohl perfekt wäre. Das macht eine Vergaserabstimmung nicht gerade leicht, vor allem wenn man keinen Prüfstand hat und immer wieder auf der Straße fahren muss.

Tolle Wurst!

 

4.9.2019

Die Sache mit der halben Nadelstellung (U-Scheibe unter Clip) und dem Kunststoffplättchen über dem Clip (sollte eigentlich drunter sein) hat mir einige schlaflose Nächte bereitet. Abhilfe würde eine im zylindrischen Bereich längere Nadel bringen, die es aber nicht gibt.

Also habe ich mich entschlossen aus zwei Nadeln eine 3mm längere Vergasernadel zu bauen.

IMG_3719 abgedrehte Nadeln und Verbindungsröhrchen aus Messing

img_3729.jpg

links die originale Nadel, rechts die verlängerte geklebte Nadel

 

Abstimmung_Nadel_3mmLambdawerte der einzelnen Vergaserstellungen

 

 

Das leidige Auspuffthema

Es ist genau das passiert, wovor ich mich sehr lange gedrückt habe. Nach langem hin und her mit dem TÜV Mann meines Vertrauens habe ich mich entschlossen, den originalen Auspuff wieder an die MZ zu bauen. Die Maßnahmen am Zubehörauspuff welche zur Einhaltung der Geräuschvorschriften nötig waren führten dazu, dass die Leistung extrem in den Keller ging. Der Auspuff war so zu, dass die Abgase sogar aus den Nieten herausgedrückt haben. Es war tatsächlich nicht mehr möglich bei der Geräuschmessung eine bestimmte Drehzahl zu halten.

Dann habe ich den originalen Auspuff verbaut und alles war schön. Mit ein paar kleinen Änderungen was die Anbauposition angeht sieht es gar nicht mal so schlecht aus. Ich werde mich dran gewöhnen. Der Originale Auspuff liegt nun bei 87dBA. Der Zubehörauspuff lage ohne Anpassungen bei 107dBA.

Hier noch ein paar Bilder.

 

 

Bluetooth Würfel

3.12.2018

Ich plane ein neues Bluetooth Lautsprecher Projekt. Einige Komponenten wie zum Beispiel den Akku, die Ladeelektronik und den Bluetooth Baustein mit integrierter Class-D Endstufe habe ich schon auf dem Tisch liegen. Ich dachte da an sowas wie zwei einzelne Würfel, welche man über Magnete miteinander verbinden kann und bei Bedarf etwas weiter entfernt voneinander aufstellen kann. Das würde dem Stereoklang zugute kommen und den Raum etwas besser füllen. Als Lautsprecher habe ich mich für Tectronic TEBM35C10-4 entschieden. Mal sehen wie die so sind. Ich kann keinen triftigen Grund nennen warum ich mich für diese Lautsprecher entschieden habe, es ist eine Bauchentscheidung.

Das Datenblatt des Lautsprechers findet Ihr hier.

Das Design könnte ich mir in etwa so vorstellen. Es würde natürlich noch ein Verbindungskabel zwischen den beiden Speakern geben.

IMG_0391

 

Ich setze auch dieses Mal auf CSR. Der Bluetooth Baustein trägt einen CSR8635 Bluetooth Chip und zwei HT6872 Verstärker Chips.

 

csr8635-bluetooth-40-41-modul-2x5w-stereo-verstaerker-speaker-empfaenger-board

Bluetooth Module mit 2x5W Endstufe (Quelle: Eckstein Komponente)

(hier kaufen)

Was mir an diesem Baustein besonders gefällt sind die separat herausgeführten SPI Anschlüsse für den CSR Chip. So ist der Anschluss eines Programmierers viel einfacher.

Für die Bedienung des Lautsprechers sind diesmal keine Tasten sondern ein Trackball geplant. Das Teil hat zwei Achsen zum Scrollen, einen Drucktaster und vier LED`s mit denen der Trackball in allen Farben hinterleuchtet werden kann. Das ist richtig genial.

retired-sparkfun-blackberry-trackballer-breakout~4

Trackball (Quelle: Eckstein Komponente) hier kaufen

4.12.2018

Das Lademodul für den Akku, welches verwendet werden soll sieht so aus.

tp4056-xd-58a-micro-usb-5v-1a-lipo-akku-lademodul-lithium-battery-charging-module~2

Lademodul für LiPo-Akku (Quelle: Eckstein Komponente) hier kaufen

Bluetoothlautsprecher DiagrammHier mal der Schaltplan.

5.12.2018

Der erste Schaltplan hat nach reiflicher Überlegung einen Haken. Der Schalter sitzt an der falschen Stelle. Hier nochmal die überarbeitete Variante.

Schaltplan_Bluetooth Würfel V002

Der Schalter trennt die Stromversorgung nun komplett. Vorher wurde das System beim Laden quasi eingeschaltet, blöd!

Ich habe ein weiteres Problem. Es betrifft die LEDs im Trackball Modul. Ich würde diese gern benutzen um die Zustände des Bluetooth-Modules und des Lademodules im Trackball anzuzeigen. Leider benutzen sowohl das Bluetooth-Modul als wie das Lademodul Open Kollektor um die LEDs anzusteuern. Die LEDs im Trackball werden einfach mit Strom versorgt und sind mit Vorwiderstand gegen Masse geschaltet. Grübel, grübel….!

2 Stunden später, Ich habs!

Ich gehe fest davon aus, dass die LEDs am CSR8635 über open Collector geschaltet werden. Der Schaltplan der Platine lässt des jedenfalls vermuten. Ich habe folgenden Plan geschmiedet:

 

Folie2

Folie3

13.12.2018

Die Lautsprecher sind angekommen und sie sind echt klein. Als nächstes werde ich mal einen Test mit einem Pappkarton machen. Mal sehen ob das schon in die richtige Richtung geht. Wenn sie so auf dem Tisch liegen, klingen sie ziemlich flach. Nimmt man sie aber in die Hand und umschließt sie wird es schon besser. Ich lass mich überraschen.

Tectonic TEBM35C10-4

Ansicht von vorn

Tecttonic TEBM35C10-4

Ansicht von hinten

14.12.2018

Heute habe ich meine Idee, wie die Lautsprecher aussehen könnten, mal im CAD skizziert und gerendert.

Rendering_001

Rechts steht der Master-Speaker mit dem Trackball und links steht der Slave-Speaker. An der Seite befindet sich die Kontur zum Verbinden der beiden Würfel und jeweils vier Magnete für den Zusammenhalt.

21.12.2018

Die letzten Tage hatte ich mal wieder etwas Zeit zum Basteln. Ich habe bei Conrad zwei Visaton FR58 bestellt um sie zu Passivmembranen umzufunktionieren. Das Entfernen des Magnten ging erstaunlich gut, da dieser nur geklebt ist. Ich hatte angefangen mit dem Winkelschleifer den Metallkörper des Magneten aufzutrennen als er sich einfach vom Metallkorb gelöst hat. Die Hitze vom Schleifen hat wohl ausgereicht um den Kleber zu lösen.

Passivmembran Visaton FR 58

In die Mitte habe ich eine Schraube eingeklebt. So lässt sich die Passivmembran einfach abstimmen. Die erste Abstimmung habe ich per Gehör vorgenommen. Am Ende waren auf der Passivmembran zusätzlich eine Unterlegscheibe und eine Mutter M6 verbaut. Das hat aus dem Bauch heraus das beste Ergebnis gebracht.

WP_20181220_17_20_40_Pro

Der erste Prototyp des Lautsprechers sieht so aus.

WP_20181219_20_12_26_Pro

Eine quadratische Holzbox aus dem Bastelladen

WP_20181219_20_12_33_Pro

 

Bluetoothlautsprecher

erster Prototyp, Ansicht von hinten

Bluetooth Würfel Prototyp

erster Prototyp, Ansicht von vorn

 

Der erste Prototypenlauf war mehr als zufriedenstellend. Der Lautsprecher hat ziemlich gut Bass für die Größe. Super, ich bin begeistert. Als nächstes wird der zweite Würfel aufgebaut.

Fortsetzung folgt!

MZ Skorpion Caferacer

MZ Skorpion Cafe Racer (eng.)

show me the history of customizing the MZ

Even I, who was a long-time MZ rider in the past, have forgotten the MZ Skorpion since it stepped into the market in the early 90s. My time of riding MZ started very early in the 80s. As an 18 year old man I drove my fathers MZ ES250/2 with sidecar. To be born and grown up in the GDR MZ was always part of peoples life. My fathers bike was one of the first I customized. The virus of customizing catched me and will do it until I´m dead.
The conversion of an AWO 250, a XS 650, a 1972 Triumph Tiger and a BMW K100 followed.
Many years later I saw the MZ of Jeff Lamb from Australia and I remembered the MZ Skorpion as an outstanding motorbike. Unfortunately the cash was empty and I decided to sell the Triumph with a heavy heart. To find an used MZ Skorpion in good condition was not a problem. I have been riding the bike until the seasons end and then started the disassembling. What I figured out is the MZ is very easy to drive and it´s fun to ride it although it has only 48hp.
The weight of the finished bike is 165kg roadworthy. Afer one year the cafe racer is finally finished.

IMGP1331

 

 

IMGP1335

Handlebars from LSL are holding the original hand grips, brake and clutch system and the selfmade brackets witch are holding the switches for managing the m-unit from motogadget. The speedometer coming from Acewell has rough one million functions I guess. The stripes covering the tank and the front mudgard are inspired by the original MZ colours grey, green and gold. The tank is from a Suzuki RGV 125 Gamma. It is slightly modified to fit to the MZ´s original brackets and the new rear frame.

MZ Skorpion Caferacer

The headlight cover is made from an universal aluminium mudgard. The ellipsoid headlight comes from Shin-Yo.

MZ Skorpion Caferacer

The muffler is made by GPR Italy. Normally used for MZ Baghira I guess it will work for the Skorpion a well as long as both are using the same engine. The muffler has a general operation permit for using it on the Baghira. The connecting tube between the original exhaust tubes and the muffler is selfmade.
If someone believes that the silencer meets the legal requirements, it is wrong, as I discovered. It’s unbelievable how it got a permit. The TÜV guy measured 96db. There´s still something to do on the db-eater that will probably have influence on the power but fullfilling the legal requirements is on the priority list on top. I would miss the muffler because it´s beautiful and less of weight.

MZ Skorpion Caferacer

The front mudgard is made of two original MZ mudgards. They have been cutted and welded. The width is slightly reduced.

MZ Skorpion Caferacer

The oil tank is complete new. THX to Johnny! There are two covers on each side to give it a better look. The covers are carrying a starting number. By the way, the starting number is my starting number in last century.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

Frame, swing arm, rear frame, rims and the front fork tubes are powder coated.

MZ Skorpion Caferacer

 

IMGP1363

Tank, front mudgard and the oil tank covers are coloured in standard traffic white RAL9016. The tank carries the latest MZ-Logo without the small „u“. Insider will know. Let´s say it´s artistic freedom.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

The rear Frame is complete new and made of the origin rear frame tubes. The covers are designet with Onshape and machined of aluminium. At the beginning of the project the covers should act as rear frame at their own but the TÜV refused it. Now they are only show. The seat is made by my own as well. It´s made of an aluminium sheet, bendet and welded. The foam has been glued to the aluminium sheet and formed with a knife and an angle grinder. The upholstering has been made by the local saddler „Bikepolster“. The stitching is is made of gold and green colored thread and follows the stripes on the tank. The cover is made of Alcantara.

MZ Skorpion Caferacer

IMGP1388

 

IMGP1389-1

The plates holding the footrests are designed with Onshape, CNC machined and anodized. The right plate is also holding the muffler and the brake cylinder. The footrests are made by Tarozzi Italy.

MZ Skorpion Caferacer

This is the ellipsoid headlight inside the cover made of an universal aluminium mudgard.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

The handlebars are carrying indicator lights from Kellermann.

MZ Skorpion Caferacer

Many things not shown above for instance a complete new wiring, the m-unit from motogadget, the super small LiPo battery, the new airbox or the new intake manyfold.
Now that I´m finished I`d like to say thank you to all the People who made this project possible.
Many thanks to my wife and the children who have beared that I spent hour after hour in the Garage for nearly one year.
Thank you Johnny for welding the aluminium parts and doing a very good job.
Thanks to Radio 21 for playing all the good stuff and keeping me happy.
Thanks to the TÜV for accompaning the project and accepting the building alterations.
Thanks to the companies done a good job:


Bike is featured on

returnofthecaferacers

Return of the Caferacers

 

Bikebrewers_Logo

Bikebrewers

 

inazumacafe

Inazumacafe

www.bikebound.com

 

Bikebound

 

MO-Motorrad

January 2019 / Readers Bikes

 

End!

 

MZ Skorpion Caferacer

MZ Skorpion Caferacer

switch to the english page

zur Geschichte des Umbaus gehts hier

Selbst ich als ehemaliger MZ Fahrer hatte die Skorpion nach ihrem Erscheinen viele Jahre aus den Augen verloren. Meine MZ Zeit begann aber schon viel früher. Schon als 18 jähriger durfte ich mit der MZ ES250/2 mit Superelastik-Seitenwagen meines Vaters die Straßen unsicher machen. In der ehemaligen DDR ist man quasi mit MZ aufgewachsen. Dieses Motorrad blieb nicht lange im originalen Zustand. Der Motorradumbauvirus hatte mich da schon voll im Griff. Es folgten der Umbau meines Simson Mopeds in ein dreirädriges Servicecar, eine AWO 250, eine XS 650, eine 72er Triumph Tiger und eine BMW K100.

Irgendwann sah ich dann den MZ Skorpion Umbau von Jeff Lamb aus Australien und mir fiel sofort wieder ein, was die Skorpion für ein außergewöhnliches Motorrad ist. Leider war die Umbaukasse ziemlich leer und so entschied ich mich schweren Herzens die Triumph zu verkaufen. Irgendwie stand sie eh nur noch herum. Eine gute gebrauchte Skorpion war schnell gefunden. Den Rest des Jahres bis zum Saisonende bin ich sie dann noch gefahren und musste feststellen, dass sie an Handlichkeit und Spaß kaum zu übertreffen ist auch wenn sie nur 48PS hat. Das Gewicht des umgebauten Motorrades beläuft sich auf fahrfertige und vollgetankte 165Kg.

Der Umbau zum Cafe Racer ist nach einem Jahr Bauzeit endlich vollbracht.

MZ Skorpion Umbau

IMGP1335

Die Lenkerstummel sind von LSL. Diese halten die originalen Griffamaturen und die selbstgebauten Tasteramaturen für die m-unit von Motogadget. Der Tacho kommt aus dem Hause Acewell und hat gefühlt eine Million Funktionen. In den Streifen auf dem Tank und dem vorderen Schutzblech spiegeln sich die originalen MZ Farben grau, grün und gold wieder. Der Tank stammt von einer Suzuki RGV125 Gamma und ist so modifiziert worden, dass er vorn in die originale Halterung passt. Hinten musste er leicht gebogen werden und wird über die originalen Halterungen am Tank im neuen Heckteil gehalten.

MZ Skorpion Caferacer

Die vordere Scheinwerferverkleidung wurde aus einem universal Aluminiumschutzblech gefertigt. Der Bereich um den Scheinwerfer ist nach innen gebördelt um eine abgerundete Kante zu haben. Der Scheinwerfer ist ein Ellipsoid-Scheinwerfer von Shin-Yo.

MZ Skorpion Caferacer

Der Auspuff kommt von GPR aus Italien. Dieser war ursprünglich für die MZ Baghira gedacht und hat für diese sogar eine ABE. Da es sich um den gleichen Motor handelt sollte das eigentlich funktionieren. Das Verbindungsrohr zwischen Krümmer und Auspuff ist neu angefertigt.

Wer glaubt, ein Auspuff mit ABE erfüllt die Vorgaben zur Lautstärke der täuscht sich gewaltig wie ich selbst erleben musste. Wie die Italiener für diesen Auspuff eine Genehmigung bekommen konnten bleibt mir ein Rätsel. Mit einigen Handgriffen am DB-Eater habe ich die Lautstärke dann doch auf ein erträgliches Maß reduzieren können, und der TÜV freut sich. Über die reduzierte Leistung werde ich noch nachdenken müssen. Er ist einfach schön und klein und vor allem leicht.

MZ Skorpion Caferacer

Das vordere Schutzblech ist aus den Hinterteilen zweier originalen Schutzbleche entstanden. Diese wurden in der Mitte durchgesägt und dann miteinander verschweißt. Der Schmutzfänger ist entfernt worden. Weiterhin wurden die Seiten noch etwas verschlankt.

MZ Skorpion Caferacer

Der Öltank ist eine Neuanfertigung (vielen Dank an Johnny). Um die Sache etwas gefälliger aussehen zu lassen, sind seitlich in einem Abstand Verkleidungsbleche verschraubt, die eine Startnummer tragen. Die Startnummer ist übrigens mein Startjahr im letzten Jahrhundert.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

Der Rahmen, die Schwinge, das Heckteil, die Felgen, und die Gabeltauchrohre sind pulverbeschichtet.

MZ Skorpion Caferacer

IMGP1363

Der Tank, das vordere Schutzblech und die Verkleidungsbleche für den Öltank sind in Verkehrsweiß RAL 9016 lackiert. Der Tank trägt das späte MZ-Logo ohne das kleine U. Insider wissen was ich meine. Betrachten wir es einfach als künstlerische Freiheit.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

Das Heckteil ist eine Neuanfertigung aus den originalen Rahmenrohren. Die seitlichen Aluminiumteile dienen der Optik und sollen den Anschein erwecken, dass das Heck durch sie getragen wird. Das war ursprünglich auch so geplant, wurde aber durch meinen TÜV-Mann abgelehnt. Somit dienen sie nur noch als Zierde. Der Sitz ist komplett neu. Die Aluplatte wurde gebogen und geschweißt und mit Schaumgummi beklebt. Das Schaumgummi ist mit Brotmesser und Winkelschleifer in Form gebracht worden. Der Bezug wurde, wie ich finde, perfekt von Bikepolster in Bovenden umgesetzt. Die Nähte sind in gold und grün gehalten und sollen die Streifen vom Tank aufnehmen und weiterführen. Als Bezugsmaterial wurde schwarzes Alcantara verwendet.

MZ Skorpion Caferacer

IMGP1388

IMGP1389-1

Die Halteplatten für die Fußrasten sind im CAD mit Onshape entstanden, CNC gefräst und eloxiert worden. Der Halter dient gleichzeitig der Befestigung des Auspuffs und des Bremszylinders. Die Fußrastenanlage ist von Tarozzi aus Italien.

MZ Skorpion Caferacer

Das ist der Ellipsoid-Scheinwerfer von Shin-Yo in seinem Haus aus einem universal Aluminiumschutzblech.

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

MZ Skorpion Caferacer

Die Lenkerenden tragen Kellermänner und Lenkerendenspiegel. Die Griffe und Griffarmaturen sind original.

MZ Skorpion Caferacer

Viele Dinge sind hier nicht aufgeführt wie zum Beispiel die komplett neu erstellte Elektrik mit m-unit von Motogadget, die superkleine LiPo Batterie oder die komplette Umrüstung auf LED Blinker. Ebenso die geänderte Airbox und der ultralange Ansaugstutzen.

Jetzt da ich endlich fertig bin möchte ich nicht vergessen mich bei all denen zu bedanken, die es mir ermöglicht haben dieses Motorrad zu bauen.

Vielen Dank an meine Frau und meine Kinder, die es mehr oder weniger ertragen haben, dass ich Stunden um Stunden über fast ein ganzes Jahr in der Garage verbracht habe.

Vielen Dank an Johnny für die sauberen Schweißarbeiten an den Aluminiumteilen.

Vielen Dank an Radio 21, die mich mit all den coolen Songs beim Schrauben bei Laune gehalten haben.

Vielen Dank an den TÜV für die Begleitung des Umbaus und die Abnahme des Motorrades.

Vielen Dank an die folgenden Firmen für ihre saubere Arbeit:


Das Bike gibt´s auch zu sehen auf:

returnofthecaferacers

Return of the Cafe Racers

Bikebrewers_LogoBikebrewers

inazumacafe

Inazumacafe

www.bikebound.com

Bikebound

MO-Motorrad

Ausgabe 1/2019 / Leserbikes

Ende!