Dem Kart fehlt noch ein Display. Momentan werden wichtige Informationen über BLYNK Anbindung zum Handy übermittelt. Das hilft aber niemandem, wenn man fährt.
Was soll alles dargestellt werden:
Bildschirm
Geschwindigkeit
Akkustand
Leistungsanzeige
Licht an / aus
Blinker links/rechts (noch Zukunftsmusik)
Tageskilometer
Gesamtkilometer
2. Bildschirm
Analog in (Gaspedal)
DAC out (zur Hauptplatine)
Akkutemperatur
Boardtemperatur (Hauptplatine)
Außentemperatur
Geschwindigkeit
Akkustand datailliert
Als Display habe ich mich für ein QVGA TFT mit 320×240 Pixel Auflösung entschieden. Das ist groß genug. Ich hoffe, dass es auch draußen gut ablesbar ist. Das Display wird von einem Teensy 3.2 angesteuert. Dan hatte ich noch rumliegen und er hat genug Speicherplatz für die ganzen anzuzeigenden Bitmaps.
Den Schaltplan und die Hauptplatine habe ich mit EASYEDA erstellt.
Schaltplan Display Kart
Der oben gezeigte Schaltplan zeigt schon die optimierte Variante. Einige Komponenten konnten doch entfallen. Unten sieht man die Platine nach alten Schaltplan. Der untere DC-DC Regler ist entfallen und wurde durch eine einfache Diode ersetzt. Der erste Sapnnungsregler sollte die Referenzspannung für den Komparator, der das Signal für den Interrupt gibt welcher die Kilometerstände in den EEprom schreibt, bereitstellen. Das ist aber nicht notwendig, es funktioniert auch mit einer einfachen Diode.
Ursprünglich war geplant, die einzelnen Signale für Blinker, Licht, Power, Batteriespannung und Geschwindigkeit über digitale bzw. analoge Eingänge abzufragen. Mittlerweile bin ich aber soweit, dass ich alle Werte von der Zusatzplatine im Kart (ESP32) per serieller Schnittstelle an das Display sende. Somit werden nur noch drei Kabel statt der geplanten neun Kabel benötigt und man kann noch viel mehr Informationen übertragen.
PCB alter Standbestückte PCB nach altem Standfertig aufgebautes Display nach altem StandPCB neuer Stand3D Ansicht PCB neuer Stand3D Ansicht nach neuem Stand mit TFTDisplay
Hier mal ein paar Displayzustände fürs Auge
Das Gehäuse
Das Gehäuse ist im CAD konstruiert und mittels SLS-Druck hergestellt worden. Oben sieht man ein gerendertes Bild aus PTC Creo 7. Da ist mittlerweile eine abgespeckte Version von Keyshot enthalten. Ich finde das kann sich schon sehen lassen.
Die beiden Knöpfe dienen einmal der Rückstellung der Tageskilometer und zur Aktivierung eines zweiten Bildschirmes mit verschiedenen Parametern zur Überwachung des Systems.
Der zweite Bildschirm
Über den 2. Bildschirm bekommt man Zugriff auf einige Systemparameter wie ADC-Eingang für das Gaspedal sowie den umgewandelten Ausgang des Gaspedalsignals über DAC. Weiterhin werden Temperaturen, die Geschwindihkeit und der Akkustand in Echtzeit angezeigt. Der Akkustand wird auf dem Hauptschirm nur im 30s Takt aktualisiert und in 20% Schritten angezeigt.
Video
Erster Displaytest mit serieller Schnittstelle über Arduino Uno
Weil es so schön ist, habe ich ein kleines Testprogramm mit Blynk erstellt. Blynk arbeitet hier mit einem ESP32 zusammen, welcher die vom Handy über BLE empfangenen Werte per serieller Schnittstelle an das Display sendet.
Das Gehäuse
Das Gehäuse habe ich mit CAD designed und drucken lassen.
Tacho am Kart montiert
Falls jemand Lust hat das nachzubauen, hier die Downloadlinks:
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.
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));
}
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.
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.
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.
Danach liegen das Gehäuse und das Mainboard vor uns.
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
Lösen der BefestigungsschraubenPosition der BefestigungsschraubenKindle ohne Gehäuse, Ansicht von obenKindle 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.
3G Modem und SIM Karte ausgebaut
So, Akku raus und los gehts. Der Akku ist nur mit drei Schrauben befestigt.
Akku ausgebaut
Die serielle Schnittstelle ist schnell gefunden.
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.
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!!!
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.
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 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.
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
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.
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!
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
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.
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.
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.
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)
Bild ohne dithering
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)
Die Variante welche ich benutze ist hier aber nicht dargestellt. Der Rahmen ist also wirklich sehr flexibel.
Online-Bilderrahmen InnenansichtUSB-Verlängerung und TasterbetätigungUSB 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.
Tasterbetätigung gekürzt und eingefärbtUSB 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)
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)
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.
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.
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…“
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.
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.
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.
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.
Nun wählt man PhotoSync als Übertragungsmedium aus. Dann gehts weiter zu folgendem Menue.
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.
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.
fertiger Bilderrahmen mit geladenem BildRü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
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.
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.
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.
Der erste Schaltplan hat nach reiflicher Überlegung einen Haken. Der Schalter sitzt an der falschen Stelle. Hier nochmal die überarbeitete Variante.
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:
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.
Ansicht von vorn
Ansicht von hinten
14.12.2018
Heute habe ich meine Idee, wie die Lautsprecher aussehen könnten, mal im CAD skizziert und gerendert.
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.
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.
Der erste Prototyp des Lautsprechers sieht so aus.
Eine quadratische Holzbox aus dem Bastelladen
erster Prototyp, Ansicht von hinten
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.
„Es liegt am Strand und redet unverständliches Zeug?
Eine Nuschel!“
Dieser kleine Witz hat mich am Ende dazu bewogen ein Projekt mit einem Arduino aufzubauen. Die Kinder haben jede Menge Spaß damit nur nicht meine Frau, die kann es nicht mehr sehen und hören, da ich viele Stunden damit verbracht habe der Muschel das Sprechen beizubringen.
Das Audio-Shield ASA1 kann WAVE und MP3 Dateien von einer Micro SD Karte abspielen. Eine Library für die Arduino IDE gibt’s gratis dazu. Das Shield kostet 19,95€.
Eine weitere Alternative könnte das Audioshield JQ650-28P sein, welches es bei Ebay für ca. 7€ gibt. Ich habe es mitlerweile vorliegen und es scheint wesentlich weniger resourcenhungrig zu sein als das ELV Shield. Der Funktionsumfang ist ähnlich, obwohl viel weniger Arduino Pins beschaltet werden müssen. Es bleiben also mehr Möglichkeiten für das Projekt.
Konzept
Das Ganze sollte wie eine Art Jahrmarkt Attraktion ausgeführt sein, die sich mit dem Einwurf einer Münze aktivieren lässt. Die Muschel sollte dabei in einer geschlossenen Box „wohnen“ und beim Einwurf einer Münze wird der Deckel geöffnet während eine magische Melodie spielt und dann spricht die Muschel eine von momentan noch 30 lustigen Lebensweisheiten (wird noch erweitert!).
Ausführung der Mechanik
Die passende Holzkiste wurde schnell auf Ebay.de gefunden. Darin wurden alle Halterungen untergebracht, welche zur Befestigung der Baugruppen benötigt werden.
Holzkiste mit Halterungen
Holzkiste mit allen Komponenten
2x Servo für Sprechen und Öffnen des Deckels
Baugruppe Grundplatte mit Muschel und Servo von unten gesehen
Münzeinwurf von außen
Münzeinwurf von innen
3D-Ansicht des Münzschalters
3D-Ansicht des Münzschalters
Der Aufbau des Münzeinwurfes ist recht einfach. Mir ging es nur darum dass es in etwa wie bei einem Spielautomaten ist. Eine genaue Münzerfassung findet hier nicht statt. es wird lediglich ein kleiner Hebel bewegt welcher einen Mikroschalter betätigt. Es funktioniert mit 1€, 2€ und 50Cent Stücken oder, wie die Kinder schnell herausgefunden haben, auch mit einem Löffel, Lineal oder ähnlich flachen Gegenstand.
Die für die Mechanik verwendeten Servos sind standard Modellbau Servos von Futaba. Diese haben ausreichen Drehmoment und sind auch schnell genug was vor allem beim Sprechen der Muschel wichtig ist. Ich finde aber, dass sie ziemlich laut sind. Da besteht noch Optimierungspotential. Fals jemand einen Tip hat, immer her damit solange es sich im Kostenrahmen bewegt.
Beim Einwerfen der Münze schließt der Mikroschalter und überbrückt einen Transistor welcher sonst ein Relais betätigt (siehe Schaltplan!). Das Relais schließt, der Arduino wird mit Strom versorgt und liefert, wenn das Programm läuft, an einem Digitalausgang ein High Signal. Damit wird der Transistor durchgeschaltet und die Schaltung hält sich selbst nachdem der Kontakt am Münzschalter wieder öffnet und versorgt sich weiterhin mit Strom. Diese Anordnung lässt sich sehr gut über die Software wieder ausschalten. Somit geht die sprechende Muschel nach Ablauf Sequenz selbstständig und vollständig aus.
Ich habe zwei verschiedene Arduinos probiert und musste feststellen, dass das Programm auf dem originalen Arduino gefühlt sofort startet. Ein Arduino Clone verhält sich da unvorteilhafter. Der Mikroschalter zum Starten muss sehr lange betätigt werden, bevor das Programm startet. Es funktionierte nicht einfach eine Münze einzuwerfen. Kann sein, dass das mit dem Bootloader zusammenhängt, keine Ahnung.
Ein weiterer Digitalausgang steuert über einen weiteren Transistor ein zweites Relais. Dieses wird zeitverzögert eingeschaltet und versorgt die Servos mit Strom, da sich gezeigt hat, dass diese unkontrolliert verfahren solange sie kein Positionssignal vom Arduino bekommen. Somit lässt sich sehr gut das unkontrollierte Zucken der Servos verhindern.
Schaltplan
(Auf das Bild klicken um zum PDF zu kommen!)
Schaltplan für Zusatzplatine mit Relais und Eingangsbeschaltung für ADC
Eingangsbeschaltung für ADC:
Der analoge Eingang kann Spannungen von 0 – 5V messen. Das Audiosignal eines Lautsprecherausgangs bewegt sich aber von -x Volt bis +x Volt abhängig von der Ausgangsspannung des Verstärkers. Um den negativen Anteil des Audiosignals zu entfernen wird die Eingangsspannung mit einem Spannungsteiler um 2,5V angehoben. Nun swingt das Eingangssignal um den Wert von 2,5V.
Im Falle der Endstufe des ELV Audio-Shield verhält es sich etwas anders. Hier ist ein symmetrischer Ausgang. Das heißt, es befindet sich auf jeder Lautsprecherleitung ein zur anderen Leitung inverses Signal. Auf dem Oszilloskop sieht das folgendermaßen aus.
Audiosignal vom Verstärkerausgang (nur eine Lautsprecherleitung!)
Hier kann man sehr schön sehen, dass das Audiosignal ca. 2V beträgt und bereits um 2,5V in den positiven Bereich verschoben ist. Somit hätte ich mir die zusätzliche Eingangsbeschaltung sparen können, naja.
Ein Versuch mit einem Operationsverstärker erbrachte folgende Signal.
zusätzlicher Operationsverstärker
Audiosignal mit zusätzlichem Operationsverstärker (nur eine Lautsprecherleitung!)
Wenn man die Verstärkung vergrößert stellt sich das ganze so dar:
höher verstärktes Audiosignal (nur eine Lautsprecherleitung!)
Hier sieht man sehr schön, dass die maximale Ausgangsspannung 5V beträgt. Das ist leicht zu erklären, da der Operationsverstärker mit 5V betrieben wird.
Einen Vorteil bei der Auswertung des Audiosignals mit dem Arduino konnte ich nicht wirklich feststellen. Daher habe ich mich entschieden den Operationsverstärker weg zu lassen.
In der Software wird der analoge Eingang 12 mal eingelesen. Ist der Wert höher als der zuletzt eingelesene Wert wird dieser Wert angenommen. Wenn die 12 Messungen beendet sind wird das Ergebnis auf die Winkelposition des Servos gemappt. Jetzt „spricht“ die Muschel.
Mein Arbeitskollege hat sein altes Wählscheibentelefon von 1984 im Elektroschrottkontainer entsorgt. Als ich die Wählscheibe sah, kam mir die Idee mit einem Arduino eine Schatzkiste mit Codeeingabe über Wählscheibe für meinen Sohn zu bauen.
Für die Schatzkiste habe ich mich für eine dekorative Holzkiste entschieden. Mein Sohn hat diese dann nach seinen Vorstellungen personalisiert. So kann man gleich erkennen, wer hier überhaupt Zugriff hat und wer nicht. Clever!
Wenn man die Kiste öffnet, offenbart sich ein zweiter Deckel ,welcher verriegelt ist, und die Wählscheibe, gleichzeitig wird über einen Microschalter die Stromversorgung für den Arduino hergestellt. Gibt man nun über die Wählscheibe die dreistellige Codenummer ein, wird der kleine Aluminiumhaken (unterhalb der LEDs) mittels Elektromagnet entriegelt und man kann diesen zur Seite klappen und so den Deckel freigeben und öffnen. Sollte der Code falsch sein wird dies über das Blinken der blauen LED signalisiert. Die geschieht aber erst, wenn mindestens drei Zahlen eingegeben wurden. Ist der Code richtig beginnt die blaue LED dauerhaft für 5 Sekunden zu leuchten. Solange hat man Zeit den Deckel zu öffnen. Das ganze wird mit einem 9V Block betrieben.
Schatzkiste mit geöffnetem Deckel
richtiger Code wurde eingegeben, die blaue LED leuchtet
geöffnete Schatzkiste
Wie man schön sehen kann, geht Sicherheit vor. Doppelt hält halt besser.
Falls jemand auch eine alte Wählscheibe mit einem Arduino benutzen will, hier mein Arduino Code.
Nachdem ich mir letzte Zeit viele Bluetooth Lautsprecher angehört habe und irgenwie keiner einen zufriedenstellenden Klang hatte bzw. einen erschwinglichen Preis, habe ich mich entschlossen mir einen selber zu bauen.
Auf Ebay habe ich eine vollständige Platine für genau meinen Einsatzfall gefunden:
Dieses kleine Zauberdingens hat folgende Eigenschaften:
Versorgungsspannung 3,6V – 5V
Bluetooth Protokoll 4.1
Ladeelektronik für 3,7V LiIo Akku
Ladestrom 500 mA
Ausgangsleistung 2x 3W an 4Ohm
Größe 40mm x 30,8mm x 1,2mm
Tasten für An/Aus, Vor- & Zurück, Lauter/Leiser
Als die Platine da war hab ich erstmal gestaunt wie klein das Ding eigentlich ist. Hier mal ein Bild mit Streichholz. Die Platine meldet sich als LN-BT10 und die Verbindung via Bluetooth zum Handy klappt einwandfrei. Was etwas nervig ist, ist die chinesische Frauenstimme welche die Betriebsbereitschaft nach dem Einschalten, das erfolgreiche Ausschalten und den erfolgreichen Aufbau bzw. den Abbruch der Bluetoothverbindung meldet. Natürlich tut sie das auf chinesisch.
Werbeanzeigen
Als nächstes habe ich zwei Lautsprecher bestellt. Sie sollten nicht so klein sein, wie zum Besipiel beim Bose SoundLink mini. Bei Visaton (mein persönlicher Favorit) bin ich wie immer fündig geworden. Ich habe mich für zwei FRS 8 4Ohm entschieden.
Werbeanzeigen
Bei Conrad Elektronik habe ich noch einen LiIo Akku mit 3,7V und 3000mAh bestellt.
Da ich es nicht abwarten konnte, habe ich mal einen Prototypen aufgebaut.
Das war für den Anfang gar nicht so schlecht. Die kleine Platine macht wider Erwarten ganz schön Krach mit den beiden Lautsprechern. Das Aufladen des Akkus hat auch sehr gut funktioniert.
Als nächstes habe ich ein ordentliches Gehäuse konstruiert. Die Abmessungen und die Auslegung wurden mit Boxsim simuliert bis ich mit dem Frequenzgang zufrieden war.
Das Gehäuse der Box ist aus Sperrholzzuschnitten zusammengesetzt.Eine Laubsäge leistet hier gute Dienste.
Werbeanzeigen
Nachdem das Gehäuse erfolgreich zusammengeleimt wurde, habe ich provisorisch die Lautsprecher befestigt (nicht genug Schrauben) und die Elektronik in das dafür vorgesehene Fach geworfen. Hinter dem Lautsprechern wurde das Gehäuse mit Dämmwolle leicht gefüllt. Die Bedienplatine habe ich erst mal mit Tesa befestigt. Das Ganze sieht dann so aus.
Erste Tests laufen. Ich nehme den Lautsprecher jeden Tag mit ins Auto und höre auf dem Weg zur Arbeit Musik damit. Bis jetzt habe ich den vierten Tag erfolgreich absolviert. Das heißt, dass die Akkulaufzeit mit den Fahrten zur Arbeit und einiger Zeit zu hause bereits über fünf Stunden beträgt und er spielt immer noch.
Weiterhin habe ich festgestellt, dass es einen großen Einfluß hat wo man den Lautsprecher im Raum platziert. Am besten klingt er wenn er auf halber Höhe mit dem Rücken an einer Wand steht. Dann spielt er auch ordentlich laut.
Im Netz habe ich einen Testbericht zum BOSE SoundLink mini gefunden. Dort wird ebenfalls beschrieben, dass es einen gewaltigen Einfluß auf den Klang hat, wo man den Lautsprecher im Raum platziert. Da befinde ich mich ja in bester Gesellschaft.
Eine Loudness Anpassung der unteren Frequenzen würde mir auch sehr gut gefallen, ich weiß aber nicht wie!
Werbeanzeigen
3.1.2016
So, derLautsprecher hat bisher locker 7h gespielt ohne aufgeladen werden zu müssen. Mal sehen wie lange das noch so weiter geht.
Bezüglich einer Loudness-Anpassung habe ich mich für die Yamaha-Variante entschieden:
Es geht weiter. Das Gehäuse hat nun abgerundete Ecken bekommen, was etwas eleganter wirkt, und das Frontgitter ist fast fertig. Hier ein paar Bilder.
Werbeanzeigen
10.2.2016
Die Versuche bezüglich der Klangverbesserung sind gescheitert. Ich habe mich entschieden, ein anderes Bluetoothmodul zu testen.
Bluetoothmodul mit Vorverstärker und Endverstärker von SANWU
Dieses Modul trägt ein Bluetoothmodul mit dem CSR8635 Chip von CSR, einen Vorverstärker NE5532 und einen Endverstärker PAM8406. Das ganze kostet bei Ebay 11€.
Der CSR Chip bietet laut Datenblatt die Möglichkeit über SPI Schnittstelle den Audioprozessor anzusprechen und einzustellen.
Das klingt vielversprechend. Das Problem ist, daß die Entwicklungsumgebung ADK1.1 (Audio Development Kit) von CSR den Kostenrahmen sprengt. Ich bleibe dran.
Bluetoothboard mit angelötetem Kabel für SPI (links) und für die externen Taster
Werbeanzeigen
Ein weiteres Problem, oder sagen wir eine Änderung im Projekt, ist die Versorgungsspannung von 5V. Zuerst habe ich es mit einem separatem Lademodul für den 3,7V Li-Io Akku in Verbindung mit einem DC-DC Step-up Wandler versucht. Das war etwas unglücklich, da diese Kombi nicht genügend Leistung zur Verfügung gestellt hat. Weiterhin zieht der Step-up Wandler trotz Stand by des Bluetoothmodules ca. 12mA. Da ist der Akku bei Nichtbenutzung des Lautsprechers in 10 Tagen leer. Das ist nicht akzeptabel.
Neue Stromversorgung werden also 4 NiMh Akkus sein welche sich in einem von außen zugänglichen Batteriehalter befinden werden. Kostet bei Reichelt knapp 7€.
Werbeanzeigen
12.2.2016
So, Batteriefach ist eingebaut. Ich finde es ein wenig „labberig“ aber wenn die Akkus drin sind ist es stabil genug. Das Schöne daran ist, dass man mit 4×1,2V=4,8V einfach eine höhere Ausgangsleistung hat und das hört man auch. Mit Batterien würde man auf 6V kommen. Leider gibt Texas Instruments für den NE5532 und Diodes Incorporated für den PAM8406 an, dass eine Betriebsspannung von max. 6V ein absolutes Maximum ist und eine Funktion dann nicht mehr gewährleistet ist. Probieren kann man es ja mal. Das neue Bluetoothmodul scheint auch einen besseren Frequenzgang nach unten zu haben. Die Basswiedergabe ist deutlich besser.
Werbeanzeigen
7.3.2016
Nachdem ich nun leider feststellen musste, daß der CSR8635 Chip in Verbindung mit dem NE5532 und dem PAM8406 irgendwie nicht so prickelnd klingt habe ich mal wieder etwas neues ausprobiert. Auf Ebay gibt es ein Bluetooth Board mit dem CSR8645 Chip und zwei HT6872 Verstärkerchips. Dieser Baustein kling vom Start weg schon fast perfekt und kostet lumpige 10€.
Die Verstärker bringen pro Seite 2,8W bei 5V. Da macht sich der Einbau des Batteriefaches bezahlt. Die vier Ni-Mh Zellen bringen 4,8V und mit vier Batterien wären es satte 6V. Bei 6,5V hat jeder Verstärker eine Ausgangsleistung von 4,7W. das ist schon mal eine Hausnummer.
Oder man nimmt das unten abgebildete Modul. Es hat zwar „nur“ den CSR8635 und somit kein APTx, aber damit kann man sicher leben. Der Vorteil dieses Modules ist, dass man kein separates Verstärkermodul benötigt, da das Modul alles mitbringt. Weiterhin sind die Programmieranschlüsse nach außen geführt!
CSR8635 Bluetooth 4.1 Modul 2x5W Stereo (Quelle: Eckstein-Komponente Hier kaufen)
Um das ganze noch zu toppen habe ich mich für (hoffentlich endgültig) für folgende Variante entschieden.
Differenzverstärker Board HT8696 (Quelle: Eckstein-Komponente Hier kaufen)
CSR8645 Breakout Board(Quelle: Eckstein Komponente Hier kaufen)
Das ergibt einen CSR8645 Chip in Verbindung mit einem HT8696 Stereoverstärker. Der Verstärker hat bei 5V eine Ausgangsleistung von 3,2W, bei 6,5V = 5,6W und bei 8,8V = 2x10W.
Das hat mich dazu veranlasst eine zusätzliche Spannungversorgungsbuchse vorzusehen. Mit einem externen 8V Netzteil können somit fast 2x10W mobilisiert werden. Es bleibt also spannend.
Werbeanzeigen
8.3.2016
Hier mal der Aufbau für das neue Bluetooth-Herz für den Lautsprecher. Links sieht man das Bluetoothmodul mit CSR8645 Chip. Darunter befindet sich der 3,3V Spannungsregler und ein Kondensator zur Normalisierung der Versorgungsspannung. Links neben dem Bluetoothmodul ist die Kontaktleiste für die SPI Schnittstelle zum CSR8645 Chip. Rechts neben dem Bluetoothmodul wird der Verstärkerbaustein verlötet. Die beiden Anschlüsse unten rechts sind für die Batterie und für die externe Stromversorgung über die Spannungsversorgungsbuchse. Diese hat einen internen Schalter und klemmt beim Einstecken des Netzteils die Batterie ab.
neues Bluetooth-Herz des Lautsprechers ohne Endstufe
neues Bluetooth-Herz des Lautsprechers mit Endstufe
Mit dem unten gezeigten Board kann man auf die SPI Schnittstelle des CSR-Chips zugreifen. Das mit kann man zum Beispiel den Bluetoothnamen des Boards ändern. Meins heisst nun „Marios Box“.
CSR µEnergy Debug SPI Board (Quelle: digikey) 15€ bei www.digikey.de
Schöne Verpackung!
Werbeanzeigen
4.5.2016
Die Passivmembranen sind endlich eingetroffen.
Ich habe beschlossen, die Passivmembranen in die Rückseite zu bauen. Sollte es nicht funktionieren, dann kann ich schnell einen neue Rückseite herstellen. Beim Gehäuse wäre es etwas tragischer.
12.05.2016
Die Passivmembranen sind eingebaut (Bilder folgen) und was soll ich sagen? Ich bin begeistert.Um den Erfolg dokumentieren zu können habe ich mit ARTA eine Frequenzgangmessung durchgeführt.
Jetzt muß man sicher etwas vorsichtig sein was diese Messung angeht. Das Mikrofon ist nicht geeicht und der Mikrofonlevel ist nicht eingestellt. Daher sollte man den dB Werten auf der Y-Achse keine Beachtung schenken. Welchen Einfluß der komplette Bluetoothkanal hat kann ich nicht sagen. Die Überhöhung im Bereich von 3kHz und 9kHz werde ich noch etwas korrigieren.
Alles in Allen bin ich mit mit dem Frequenzverlauf schon mal sehr zufrieden.
Werbeanzeigen
07.07.2017
So, mit dem Klang bin ich jetzt mehr als zufrieden. Die Bassreflexkanäle habe ich wieder entfernt und die beiden Schlitze auf der Frontseite werden von vorn verschlossen. Die Passivemembranen funktionieren sehr gut.
Jetzt geht es ans Optische. Der Lautsprecher ist mitlerweile komplett zerlegt und das Gehäuse hat die erste Lage Spachtel erhalten.
Einzelteile des Lautsprechers ohne Gehäuse
gespachteltes Gehäuse
So stelle ich mir den fertigen Lautsprecher vor.
Die Bedienblende oben und die Abdeckung der Front habe ich bei verschiedenen Fräsern angefragt. Mal sehen was die haben wollen.
Werbeanzeigen
14.07.2016
Ich habe das Design der Frontplatte geändert und ein kleines Imagevideo erstellt. Nur mal so zum Spaß.
17.11.2016
Der Lautsprecher ist fertig.
Fertiger Bluetoothlautsprecher
fertiger Lautsprecher noch ohne obere Abdeckung
Werbeanzeigen
15.11.2018
Bezüglich des CSR Kalimba Equalizers habe ich einen interessanten Link auf Github gefunden. Vielleicht hilft das ja weiter.
Ich werde mal wieder etwas am Lautsprecher ausprobieren. Die Sache mit den passiven Membranen stimmt mich letztendlich nicht ganz zufrieden. Ich werde eine neue Rückwand herstellen und ein paar Versuche mit Bassreflexrohren und Bassreflexlabyrinthen durchführen. Mal sehen ob dabei noch etwas mehr Klangfülle rumkommt.
Ich werde berichten.
21.12.2018
Der Versuch mit dem Labyrinth hat nichts gebracht und ich möchte gar nicht näher darauf eingehen.
Was ich heute berichten möchte, ist sehr viel besser. Ich habe mich nochmal hingesetzt, recherchiert und mir meinen Lautsprecher nochmal genau betrachtet. Dabei ist mir aufgefallen, dass die Abdichtung der beiden Gehäusehälften nach außen verbesserungswürdig war. Das war zum Einen die Abdichtung des Batteriekastens oder die Anlageflächen der PM’s. Nach einigen ml Dichtmasse sah die Welt schon viel besser aus. Was aber dem Ganzen das Sahnehäubchen aufgesetzt, hat war die Änderung an den Passivmembranen. Ich habe in jede PM je ein 6mm Loch gebohrt und je eine Innensechskantschraube mit je zwei Unterlegscheiben und je einer Mutter verbaut. Das Ergebnis hat mich umgehauen. Ich werde noch ein wenig mit mehr Masse experimentieren, aber ich bin jetzt sowas von zufrieden, das ist kaum zu glauben.
Ein langersehnter Wunsch hat sich erfüllt. Ich habe günstig ein recht gut erhaltenes Röhrenradio erstanden. Es handelt sich um ein Löwe Opta Magnet 3737W. Das ist jetzt nicht gerade ein besonderes Gerät aber wie ich finde sehr schön. Leider habe ich meine Frau nicht dazu überreden können das Radio im Originalzustand im Haus zu haben. Somit haben wir uns entschlossen dem Radio nicht nur eine elektronische Verjüngungskur zur verschaffen sondern auch eine optische.
so sieht ein Löwe Opta Magnet 3737W im Originalzustand aus
Als erstes wurde das Gerät zerlegt und das Chassis sowie das Gehäuse gründlich gereinigt. Das Radio muß wohl viele Jahre in der Küche gestanden haben. Darin roch es wie in einer 45 Jahre alten Frittenbude. Das Chassis hat fast alle Kondensatoren neu bekommen. Weiterhin war die Anodenspannung zu niedrig und es mußte noch ein Widerstand gewechselt werden. Jetzt stimmen alle im Schaltplan angegebenen Spannung wieder mit den Sollwerten überein. Das Gehäuse und alle Kunststoffteile wurden gewaschen und gereinigt. Das Gehäuse wurde geschliffen und lackiert. Dann zusammengebaut und siehe da, fertig. Ein neues Anschlusskabel dran und los ging es. In das Kabel habe ich noch einen zweipoligen Schnurschalter gebaut, damit die man zum Einschalten nicht die Schalter am Radio betätigen muß. Erstens sind die ausgenuddelt und zweitens kommen meine Frau und die Kinder da nicht dran. Es steht auf dem Küchenschrank.
Nach einiger Zeit hatte sich der Klang verändert und es hat sich herausgestellt, daß das Lautstärkepoti defekt war. Daran befinden sich verschiedene Abgänge um den Klang lautstärkeabhängig zu regeln.
Hier war einer der zusätzlichen Abgriffe am Niet der Schleiferbahn ab
zerlegtes Potentiometer
Die Vernietung mußte ich aufbohren aber Schrauben verrichten Ihren Dienst genau so gut, oder sogar besser.
4.1.2015 Radio defekt:
Wie sich herausstellte war ein Trimmkondensator im UKW Tuner defekt. Er sprühte lustig Funken und die Anodenspannung sank von 230V auf 168V. Der Übeltäter wurde ausgelötet und ersetzt.
Leider scheint der Tuner jetzt verstellt zu sein. Jetzt suche ich nach einer Möglichkeit entweder den Tuner zu justieren oder einen Ersatztuner einzubauen.
Nachdem sich niemand erbarmen wollte mir etwas Unterstützung hierzu zukommen zu lassen, bin ich auf´s Ganze gegangen und habe das getan was man nicht tun sollte. Ich habe angefangen dran herumzudrehen. Und siehe da, der Tuner läuft wie „Hulle“. Die Abstimmanzeige zeigt nun einen nie dagewesenen Ausschlag. Beim regionalen Sender Radio21 (ca. 3km entfernt) überschneiden sich die beiden Bänder der EM84 sogar. NDR2 kommt mittlerweile so gut rein, daß die beiden Bänder sich fast berühren. Ich bin begeistert. Was vorher nur mit Lautstärkeregler am Anschlag in Zimmerlautstärke erklang endet nun in einer „Disko“. Der Klang ist der Hammer.
Lange Zeit war es ruhig um meine K aber mittlerweile hat mich das Bastelfieber wieder ereilt. Nachdem ich einige Jahre mit der K durch die Lande gefahren bin möchte ich doch noch etwas am Design feilen. Was mich am meisten an der K stört ist die hässliche Brotdose. Hier hat der Umbau auf einen Harley Sportster Tacho und LED Anzeigen bisher gute Dienste geleistet. Jetzt möchte ich es doch etwas schlichter aber mit voller Funktionalität haben.
BMW K100 Caferacer Umbau
Harley Davidson Sportster Tacho
Ansteuerelektronik für Haley Tacho
Bestückungsplan der Paltine für den Harley Tacho, danke Josef!
Kontrolleuchteneinheit, Aufblendlicht aktiv
Kontrolleuchteneinheit, Blinker rechts
Größenvergleich
CAD 3D-Explosionsansicht
3D-Modell der gesamten Tachohalterung
Werbeanzeigen
Wie geht es weiter?
Ein kleines LCD Display könnte alle nötigen Informationen bereitstellen und wäre zudem total unauffällig. Genau das was man für eine schlichte Optik braucht.
Was soll das Display alles anzeigen?
Geschwindigkeit
Blinker rechts/links
Öldruckkontrolle
Ladekontrolle
Aufblendlicht
Kühlwassertemperaturwarnung
Ganganzeige
Tankanzeige
Gesamtkilometer
Tageskilometer
Uhr
Datum
Außentemperatur
für spätere Weiterentwicklung wären zusätzlich denkbar:
Drehzahl
Momentanverbrauch
Durchschnittsverbrauch
Kühlwassertemperatur
Luftmenge
Datenlogging über SD-Karte
Ich denke, muss aber ein etwas größeres Display her.
Ok, ein Design muß her. Hier ist ein erster Entwurf, der natürlich noch optimiert werden kann, aber schon ganz gut aussieht.
erster Entwurf der Anzeige
mögliches „Nachtdesign“
Versuchsaufbau
Als erstes habe ich mich also an den Schaltplan gemacht. Aus der vorherigen Anzeige wußte ich wie die einzelnen Signale handzuhaben sind. Wie der Tacho angesteuert wird ist nun auch kein Geheimnis mehr.
Werbeanzeigen
Auf Basis des Schaltplanes ist folgende Leiterplatte entstanden. Darauf befinden sich einige Komparatoren um die Signale auf TTL Level zu bekommen, ein Operationsverstärker um das Tachosignal vom Hinterrad aufzubereiten und ein Arduino Nano zur Ansteuerung des Displays und zur Signalverarbeitung. Das ganze sieht dann so aus:
unbestückte Platine
Bestückungsplan
Links sieht man die Anschlußklemme für die Signale vom Fahrzeugkabelbaum. Rechts ist der Anschluß zum Display und einigen Tastern. Ein Taster dient zur Rückstellung des Tageskilometerzählers die anderen sind Zukunftsmusik. Der Uhrenbaustein und das Display sind noch nicht angeschlossen.
Uhrenbaustein
Die Tachoanzeige auf dem Display weicht noch ein wenig ab und springt auch etwas. das muß noch gedämpft und korrigiert werden.
So, jetzt funzt es! Freu!
Werbeanzeigen
Hier sind noch die Kurven vom Tachogeber (hier Karamba, Dank an Michael)
Die Eingangsspannung beträgt ca. 400mV. Das Rastre im Oszi ist 200mV.
Das Ausgangssignal vom OP zeigt eine schöne Rechteckspannung mit ca. 11.3V leicht nach unten verschoben. Die 11.3 V kommen von den 12V Versorgungsspannung minus 0,7V Spannungsabfall an der Verpolungsschutzdiode. Die Raster hat hier eine Auflösung von 4V.
Werbeanzeigen
Hier eine vorläufige Kostenaufstellung:
Platine bestellt bei Ätzwerk in München: 56€ (1Stk.) / 13,20€ /10Stk.)
Bauteile bestellt bei Conrad: 28€
Display bei Ebay: 2Stk. 6€
Arduino nano Clon: 7€
RTC: 4€
Summe: 101€ (1Stk.) / 59€ (10Stk.)
Werbeanzeigen
Was jetzt noch fehlt ist ein gefälliges Gehäuse für das Display. Das werde ich im CAD konstruieren und aus Aluminium fräsen lassen. Mal sehen, was dann preislich noch hinzu kommt.
Gehäuseentwurf
Explosionsdarstellung
Es wäre auch denkbar das Gehäuse in Phototypenmaterial fertigen zu lassen oder zu drucken.
Gebelbrücke mit Display
So, jetzt habe ich, wie ich finde ein ansprechendes Design für das Gehäuse gefunden. So soll es werden.
Eine längere Testzeit steht dann auch noch ins Haus. Das wird aber wohl erst März 2015. Eine weitere Überlegung ist noch das farbige TFT Display durch ein einfarbiges LCD zu ersetzen um bei Sonneneinstrahlung bessere Anzeigeeigenschaften zu erreichen.
10.12.2014 Ich habe eine andere Grafikbibliothek bemüht um ansehnlichere Schriftarten benutzen zu können. Leider reicht nun der Speicherplatz im Atmel 328 nicht mehr aus. Ich werde wohl auf einen anderen Prozessor aufsetzen um einmal mehr Speicherplatz zu haben und weiterhin mehr Funktionen. Die neue Plattform ist Teensy 3.1. Hier werkelt ein ARM Prozessor. Mittlerweile denke ich noch über eine Drehzahlanzeige und GPS Datenerfassung nach. Datenlogging wäre ebenfalls eine Option.
Das neue Anzeigendesign ist, wie ich finde, viel gefälliger. Die Geschwindigkeitsanzeige kann noch etwas größer werden. Die bunten Kästchen werden noch durch Symbole ersetzt.
11.1.2015
Ich habs endlich geschafft, den neuen Prozessor und das neue Display in Betrieb zu nehmen. Das Display hat nun 320×240 Pixel und eine Diagonale von 2,2″. Hier mal ein Bild und ein Video dazu.
13.11.2018
Hallo, ich habe mich entschlossen den Schaltplan in ordentlicher Auflösung hochzuladen.