Überraschenderweise ist das alte Sony Prs-505 E-Book ein sehr cooler Designer für alle Arten von hausgemachten Produkten. Ich habe dieses Buch noch einmal genommen, um mir eine "Papier" -Uhr zu machen. Ich mag diese Lösung, weil die Zahlen groß und hell sind, während sie nicht im Dunkeln leuchten und den Schlaf nicht beeinträchtigen. Die Idee einer Uhr auf elektronischem Papier ist überhaupt nicht neu, aber ich wollte einfach wieder mit diesem coolen E-Book herumspielen. Das Ergebnis ist eine Art Wochenendprojekt, weil ich kann. Wie immer habe ich alle möglichen Rechen und Fehler gesammelt. Ich habe meinen dornigen Weg in diesem Artikel beschrieben.
Hintergrund
Sicherlich erinnern sich viele Menschen an meinen Beitrag " E-Book als Anzeige ", in dem ich erklärte, wie man mit der Anzeige eines E-Books arbeitet.
Foto aus dem Beitrag " E-Book als Display ".
Dort habe ich tatsächlich mit dem Framebuffer des Videogeräts gearbeitet, in dem ich das Bild angezeigt habe. Das Hauptproblem in diesem Artikel war die Übertragung des Bildes auf das Gerät. Dann fand ich nicht genug Schießpulver und Motivation in mir, um meinen Plan zu Ende zu bringen, weil das Buch jemandem gegeben wurde und die Idee, ein solches Gerät herzustellen, vergessen wurde. Aber nach der Veröffentlichung eines wunderbaren Artikels des Autors änderte sich allesalexshnup: " Elektronische Tinte für Wirenboard 5 oder Zeichnen von Barcodes unterwegs ". In diesem ArtikelalexshnupDas Problem der Anzeige von Barcodes auf dem Bildschirm dieses Buches zum Debuggen des Barcode-Scanners wurde behoben. Und gerade das Problem der Übertragung von Bildern in das Buch gelöst.
Kurz gesagt alexshnuphat ein Kernelmodul erstellt, das beim Anschließen eines Buches über USB eine zusätzliche virtuelle Festplatte mit einer Größe von 600 x 800 = 480.000 Byte erstellt. Genauer gesagt beträgt die Festplatte 1 MB, der sichtbare Bereich beträgt jedoch nur 480.000 Byte. Tatsächlich wird alles, was in den Speicher der Festplatte gelangt, auf dem Bildschirm des Buches angezeigt. Im Allgemeinen ist dies eine brillante Sache. Sie können sogar visuell sehen, wie das Festplattenlayout abläuft, wenn Sie beispielsweise dort ein Dateisystem erstellen. Sie können beispielsweise mit dem folgenden Befehl ein Bild an ein Buch senden:
djpeg -pnm -grayscale test.jpg | dd bs=1 skip=15 | dd of=/dev/sdx bs=480k
Alles, was in diesem Artikel weiter beschrieben wird, ist eine ideologische Fortsetzung dieser beiden Experimente.
Beginnen wir, reparieren und wiederholen Sie den Vorgang
Nachdem ich den Artikel gelesen hatte , kontaktierte ich seinen Autoralexshnup... Und er beschloss, mir ein zerlegtes Buch für Experimente zu geben. Als Ergebnis hatte ich Arbeitsgeräte zur Hand und begann glücklich mit den Experimenten. Als erstes musste ich die prs-plus- Firmware installieren . Danach können Sie versuchen, diese virtuelle Festplatte zu erstellen, um Bilder gemäß dem Artikel zu übertragenalexshnup... Ich werde den Artikel nicht zitieren, es ist eine umfassende Anleitung. Danach versuche ich, das Bild mit dem Befehl dd zu übertragen.
Das Bild wird auf neue Weise übertragen.
Ich habe freudig verstanden, dass alles, alle Karten in meinen Händen sind, es gibt eine Schnittstelle zum Übertragen von Bildern. Sie können sie verwenden, wie Sie möchten. Ich begann eine Reihe von Experimenten. Ich fing an, ein Uhrprogramm zu schreiben und ihre Ausgabe in einem Buch zu debuggen. Infolgedessen habe ich, wie es normalerweise beim Befehl "dd" ("Festplatten-Zerstörer") der Fall ist, einen Fehler mit der Festplatte gemacht und ...
Als Ergebnis habe ich sie anstelle einer virtuellen Festplatte auf die Festplatte (Flash-Laufwerk) des Buches selbst geschrieben und in einen Baustein verwandelt ... Ich habe nur 480.000 Byte Fett genommen und geschrieben -Sektion. Ich kann nicht einmal alle Gefühle vermitteln, die ich in diesem Moment erlebt habe.
Geöffnetes Buch.
Die Hauptsache, wie man dieses Buch wiederherstellt, war nicht klar. Es war klar, dass ich ein anderes Buch des gleichen Typs nehmen und die prs-plus- Firmware darauf neu installieren musste. Nehmen Sie dann diese ersten 480.000 Bytes daraus und übertragen Sie sie auf diesen Baustein.
Im Allgemeinen war ich traurig, ausgeflippt und kaufte ein neues Sony Prs-505 E-Book über Avito. Zur gleichen Zeit war das Buch mit allen Arbeitsknöpfen, in einem Fall waren die Züge nicht zerrissen. Es konnte sogar für den vorgesehenen Zweck verwendet werden. Das einzige war, dass die Batterie halb leer war. Aber für meine Zwecke war das genug. Jetzt, mit leeren Batterien, können diese Bücher bis zu tausend Rubel gefunden werden, meiner Meinung nach der ideale Preis für ein Linux-Gerät, mit Open Source und einem so großartigen Energiesparsystem.
Frisch gekauftes E-Book.
Mit diesem Buch wiederholte ich den Vorgang zum Installieren der Firmware auf die gleiche Weise und übertrug dann wie geplant 480.000 Bytes des Fettabschnitts von einem E-Book in ein anderes. So bekam ich zwei Bücher, mit denen ich schon Spaß hatte. Es stimmt, derjenige, der komplett zerlegt wurde, wurde gottlos fehlerhaft, und ich habe ihn praktisch nicht benutzt.
Wir schreiben Software
Die Idee der Uhr ist ganz einfach. Wir werden einfach ein Zeitbild auf einer Leinwand erstellen und es dann an den Framebuffer senden. Dazu bilden wir Zahlen und Doppelpunkte. Ich möchte Sie daran erinnern, dass die Auflösung des Buches 600 x 800 beträgt (ich habe mich nicht geirrt, nämlich 600 x 800), wenn Sie es wie ein Blatt betrachten.
CC: MM: SS - das bekommen wir acht Zeichen. Insgesamt ist jede Ziffer 100x600. Für Zahlen habe ich eine schöne Schriftart "Gideon's-Army-" gewählt. Als nächstes bilden wir mit imagemagick Zahlen und Doppelpunkte mit den folgenden Befehlen:
for i in `seq 0 9`; do convert -font Gideon’s-Army- -pointsize 150 -size 100x600\
-gravity center -rotate 90 -depth 8 caption:"$i" $i.pgm;done
convert -font Gideon’s-Army- -pointsize 150 -size 100x600 -gravity center -depth 8\
-rotate 90 caption:':' dots.pgm
Als Ergebnis erhalten wir Zahlen von 0 bis 9 und einen Doppelpunkt. Hier ist ein Beispiel für Nummer 2:
Wenn Sie den Header einer bestimmten pgm-Datei abschneiden, sind diese Daten sofort zum Schreiben in das Buch geeignet. Ich habe in meinem Artikel " Ein elektronisches Buch als Anzeige " ausführlich darüber gesprochen , daher werde ich nicht näher darauf eingehen.
Dann war es eine Frage der Technologie, aus diesen Ziffern eine Bitmap zum Schreiben in den Framebuffer zu erstellen, indem einfach die Matrix unter Verwendung der Dateizuordnung in den Speicher kopiert wurde. Das gesamte Projekt befindet sich im Repository: github.com/dlinyj/sony_prs-505_clock .
Das gesamte Programm ist in der Datei time.c enthalten... Ich werde nicht den gesamten Code analysieren, aber ich werde auf einige Punkte eingehen. In diesem Programm mache ich einfach eine Dateizuordnung in den Speicher (entweder einen Frame-Puffer oder eine Testdatei oder ein Dateigerät einer virtuellen E-Book-Festplatte). Als nächstes arbeiten wir bereits mit der Datei als Speicherbereich. Ich kopiere die Bilder von Uhrensymbolen je nach aktueller Zeit hinein.
Wir zeigen eine Datei im Speicher an, in der ich ein Bild bilden werde.
image = mmap (0, file_lenght, PROT_WRITE, MAP_SHARED, fd, 0);
Bilder werden in der Funktion print_symbol kopiert, in die ich die Ziffernpositionsnummer und den Namen der zu kopierenden Zifferndatei übergebe.
void print_symbol (unsigned int position, char * filename) {
void * numer_im;
int numer;
numer = open (filename, O_RDWR);
numer_im = mmap (0, NUMER_SIZE, PROT_WRITE, MAP_SHARED, numer, 0);
memcpy(&image[first_header + NUMER_PIXELS * position], &numer_im[16], NUMER_PIXELS);
munmap (numer_im, NUMER_SIZE);
close(numer);
}
Hier öffne ich die Zifferndatei und kopiere sie an die entsprechende Stelle im Speicherbereich des abgebildeten Bildes.
Im Prinzip war es jedes Mal möglich, die Datei nicht zu öffnen, zu lesen und dann zu schließen, sondern einfach eine Kopie im Speicher zu erstellen und von dort zu kopieren, aber eine gute Idee kam erst jetzt.
Wenn Sie dieses Programm auf Ihrem Computer ausführen möchten, um ein Image zu erstellen, vergessen Sie nicht, den Compiler im Makefile zu ändern und define zu entfernen:
# Makefile .
#CFLAGS=-D __BOOK__
CC = gcc
#CC= /opt/cross/gcc-3.2.3-glibc-2.2.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc
Wir kompilieren das Programm und führen es ohne Parameter aus. Als Ergebnis erhalten wir die Datei "test.pgm" mit der aktuellen Zeit.
Wenn Sie ein bestimmtes Dateigerät angeben, erfolgt die Bildbildung bereits ohne den Header der pgm-Datei, der zum Hochladen in das Buch geeignet ist. Dieses Programm kann auch in das Buch geladen werden und aktualisiert dann automatisch die Uhrzeit.
Ich habe dieses Programm auf einem PC mit angeschlossenem USB-Buch ausgeführt und die Uhrzeit darauf angezeigt. Das Programm wird einfach gestartet (das Skript start.sh übernimmt die Gerätedatei):
#!/bin/bash
while true;do ./time $1;done
Infolgedessen können Sie die Uhr auf dem Bildschirm laufen sehen.
Schlussfolgerungen
Das Programm ist so geschrieben, dass es gesammelt und in ein E-Book gefüllt werden kann, um es in eine Uhr zu verwandeln. Es mag lustig erscheinen, ein so komplexes technisches Gerät als Uhr zu verwenden, aber warum nicht? In diesen Büchern sterben die Batterien, und das Ersetzen ist eine ziemlich mühsame Aufgabe. Wenn der Akku durch seinen Emulator ersetzt würde (ein Rohling, der das Buch arbeiten lässt, aber keine Energie speichert) und das Buch an ein Ladegerät angeschlossen wäre, würde es ständig funktionieren.
Meine Experimente haben gezeigt, dass das Buch über das Ladegerät nicht in den Ruhemodus wechselt und die Uhr kontinuierlich arbeiten kann. Außerdem verfügt das Buch selbst über eine integrierte Uhr und kann die Uhrzeit korrekt anzeigen.
Von den Problemen, auf die ich gestoßen bin und die ich nicht lösen konnte, ist dies, wie das Uhrprogramm zum Start des Buches hinzugefügt wird, während das Laden der grafischen Oberfläche selbst unterdrückt wird, so dass keine Konkurrenz für die Anzeige besteht. Im Allgemeinen gibt es noch Raum für weitere Experimente und Experimente. Aber das wird schon eine ganz andere Geschichte, ich habe dieses Buch gewonnen, zeigt die Uhr, man kann andere Projekte starten.
Welche verrückten Vorschläge haben Sie für die Verwendung des Sony Prs-505 E-Books?
Links:
- "E-Book als Display."
- "Elektronische Tinte für Wirenboard 5 oder Zeichnen von Barcodes für unterwegs."
- Projekt-Repository.
- Geschichte meiner Experimente 1 , 2 , 3 , 4 .