%% LyX 1.6.5 created this file. For more info, see http://www.lyx.org/. %% Do not edit unless you really know what you are doing. \documentclass[ngerman]{scrartcl} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \setlength{\parskip}{\medskipamount} \setlength{\parindent}{0pt} \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands. \newenvironment{lyxcode} {\par\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \setlength{\listparindent}{0pt}% needed for AMS classes \raggedright \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt} \normalfont\ttfamily}% \item[]} {\end{list}} \makeatother \usepackage{babel} \begin{document} \title{Der Wikireader} \author{Carsten Strotmann} \maketitle \begin{figure*}[b] \begin{center} \includegraphics[width=0.5\textwidth]{2010-0203/wikireader-400x395.eps} \caption{\label{wikireader:bild1}Wikipedia in der Westentasche: der Wikireader} \end{center} \end{figure*} Es kommt selten vor, dass ein elektronisches Gerät für sogenannte {}``Endbenutzer'' (also Oma, Opa, Mama, Papa, Du und ich) als OpenSource veröffentlicht wird. Nicht nur die Software (Firmware), sondern auch die komplette Hardware ist offengelegt und dokumentiert. Noch ungewöhnlicher ist es, dass ein solches Gerät ein Forth enthält. Der WikiReader ist ein solches Gerät. \begin{multicols}{2} \section*{Wikipedia in der Tasche} \begin{figure*}[t] \begin{center} \includegraphics[width=0.5\textwidth]{2010-0203/wikireader-board.eps} \caption{\label{wikireader:bild2}Die Wikireader--Systemplatine} \end{center} \end{figure*} %\begin{figure*}[b] %\begin{center} %\includegraphics[width=0.6\textwidth]{2010-0203/wikireader-rsp-460.eps} %\caption{\label{wikireader:bild4}Der Wikireader} %\end{center} %\end{figure*} Vordergründig ist der WikiReader ein Gerät, mit dem man die Inhalte der Wikipedia (\url{http://wikipedia.org}) {}``offline'' mitführen kann. Das funktioniert auch sehr gut, so eignet sich der Wikireader als Nachschlagehilfe auf Studienreisen oder im Zug. Ideal auch für Themenanregungen, wenn dem Besitzer des WikiReaders auf Partys beim Smalltalk die Themen ausgehen (der {}``random''-Knopf ist hier hilfreich). Der Wikireader (9.5cm $\times$ 9.5cm $\times$ 2cm, 140g) liegt gut in der Hand. Angeschaltet wird das Gerät über einen Knopf oben rechts, unterhalb des Touchscreens befinden sich drei Gummiknöpfe, {}``search'', {}``history'' und {}``random''. Nach dem Anschalten erscheint nach wenigen Sekunden eine Tastatur auf dem Schwarz-weiß-Bildschirm, über die der Benutzer einen Suchbegriff eingeben kann. Der Bildschirm (240 $\times$208 Bildpunkte) ist ein kapazitiver Touch-Screen, welcher über ein asynchrones serielles Protokoll an die Wikireader-Hauptplatine angebunden ist. Dieser Bildschirm ist nicht entspiegelt und nicht beleuchtet, hat aber einen guten Kontrast und lässt sich daher auch bei Sonnenschein (am Strand) benutzen. Ein Druck auf die {}``Search''-Taste durchsucht die Wikipedia Artikel (ca.\ 6 GB Daten bei der englischen Ausgabe) in Sekundenschnelle und zeigt eine Liste der gefundenen Wikipedia-Artikel. Diese können über den Touchscreen ausgewählt werden. Ein Artikel kann mit einer vertikalen Wischbewegung über den Bildschirm gescrollt werden. Hyper-Links werden wie im Webbrowser unterstrichen dargestellt. Leider zeigt der Wikireader derzeit nur den Text der Artikel an, jedoch keine Grafiken. Tabellen werden angezeigt, sind aber bei großen Tabellen schwer zu lesen. Die Wikireader-Software wird weiterentwickelt und zukünftige Versionen sollen auch Bilddaten zeigen können. \section*{Das Innenleben} Im Inneren des Wikireaders werkelt mit dem Epson S1C33E07 ein relativ unbekannter Single-Chip-Mikrokontroller. Der Epson ist Mitglied der S1C33-RISC-Familie, besitzt 8kB und 2kB internen RAM-Speicher, einen LCDKontroller mit eigenem Frame-Buffer, serielle Schnittstellen, SPI- sowie GPIO- und eine Keypad-Schnittstelle. Damit befindet sich schon fast alles, was der WikiReader benötigt, in dem Mikrokontroller. Zusätzlich befindet sich auf der Platine im Inneren des WikiReaders noch zusätzlich 32MB SDRAM (16bit Bus, 4 Bänke) und das Boot-ROM (SPI, 64KB Flash). \begin{figure*}[b] \begin{center} \includegraphics[width=0.6\textwidth]{2010-0203/wikireader-und-freerunner.eps} \caption{\label{wikireader:bild3}Das OpenMoko-Handy und der Wikireader} \end{center} \end{figure*} Die Wikipedia Daten befinden sich auf einer Micro-SD- (oder Micro-SDHC bis 8GB, VFAT formatiert)-Karte innerhalb des Batteriefachs (2 x AAA, mein Wikireader läuft nun über 6 Monate mit der ersten Batterieladung). Diese Karte kann vom Benutzer entnommen werden und über einen PC oder Mac können die Wikipedia-Daten und auch die Wikireader-Firmware aktualisiert werden. Offizielle Updates gibt es halbjährlich zum kostenlosen Download von der WikiReader-Webseite. Da es sich um ein OpenSource-Produkt handelt, finden sich im Internet an verschiedenen Stellen alternative Firmware und Wikipedia-Daten (z.~B.\ Pakete mit den deutschen Wikipedia-Inhalten). In der Zukunft wird der Wikireader auch E-Books anzeigen können, eine Vorabversion mit Büchern aus dem Projekt Gutenberg ( \url{http://www.gutenberg.org}) ist seit Juli 2010 verfügbar. \section*{Wikireader und OpenMoko} Der Wikireader wird von der taiwanesischen Firma OpenMoko hergestellt und ist ein aus der Not geborenes Produkt. OpenMoko ist in der FreeSoftware-Gemeinschaft insbesondere für das FreeRunner-Mobiltelefon bekannt, der Versuch, ein Mobiltelefon ausschließlich aus OpenSource-Bestandteilen zu erstellen. Beim FreeRunner-Projekt gab es allerdings unvorhergesehene Probleme, und es wurde kein für Endanwender benutzbares Produkt innerhalb des geplanten Zeitrahmens fertiggestellt. Das Geld wurde knapp, und OpenMoko musste ein Produkt auf den Markt bringen, um weitere OpenSource-Entwicklungen finanzieren zu können. Dieses Produkt ist der WikiReader. \section*{Wikireader und Forth} Die Hauptanwendung des WikiReaders, das Anzeigen der Wiki-Artikel, ist in C geschrieben. Forth benutzen die Entwickler des WikiReaders für die Fehlersuche. Glücklicherweise wird das Forth im WikiReader nicht versteckt, sondern ist dokumentiert und kann vom Benutzer aufgerufen werden. Wird der WikiReader bei gedrückter {}``search''-Taste angeschaltet, so startet anstatt der normalen WikiReader-Software ein Menüprogramm, welches die Forth-Programme auf der SD-Karte auflistet. Der Benutzer kann nun per Touchscreen diese Programme auswählen und starten. Mitgeliefert werden Beispielprogramme für die Ansteuerung des Bildschirms, Abfrage des Touch-Screens und der Tasten sowie Zugriff auf den Massenspeicher (SD-Karte). Das Forth im WikiReader ist ein in C implementiertes und ANSIfiziertes eForth, portiert vom OpenMoko-Entwickler Christopher Hall. Der Quellcode des Forth-Systems befindet sich im Unterverzeichnis {}``/samo-lib/forth'' auf GitHub. Die Beispielprogramme finden sich ebenfalls im GitHub unter {}``/samo-lib/forth/programs''. Hier ein Beispielprogramm, ein simples Malprogram für den Touchscreen (line.4th): \begin{quote} \begin{lyxcode} \textbackslash{}~ctp~line~drawing base~@~decimal variable~down :~line-draw~(~-{}-~) ~~~~lcd-cls ~~~~s\textquotedbl{}~Line~Drawing\textquotedbl{}~lcd-type ~~~~lcd-cr~lcd-cr ~~~~s\textquotedbl{}~Touch~screen~to~draw~line\textquotedbl{}~lcd-type ~~~~9~lcd-text-rows~1-~lcd-at-xy ~~~~s\textquotedbl{}~Clear\textquotedbl{}~lcd-type ~~~~10~lcd-spaces ~~~~s\textquotedbl{}~Exit\textquotedbl{}~lcd-type ~~~~button-flush ~~~~key-flush ~~~~ctp-flush ~~~~false~down~! ~~~~lcd-black ~~~~begin ~~~~~~~~ctp-pos?~if ~~~~~~~~~~~~ctp-pos~dup~0< ~~~~~~~~~~~~if ~~~~~~~~~~~~~~~~2drop ~~~~~~~~~~~~~~~~false~down~! ~~~~~~~~~~~~else ~~~~~~~~~~~~~~~~down~@ ~~~~~~~~~~~~~~~~if ~~~~~~~~~~~~~~~~~~~~lcd-line-to ~~~~~~~~~~~~~~~~else ~~~~~~~~~~~~~~~~~~~~lcd-move-to ~~~~~~~~~~~~~~~~~~~~true~down~! ~~~~~~~~~~~~~~~~then ~~~~~~~~~~~~then ~~~~~~~~then ~~~~~~~~button?~if ~~~~~~~~~~~~button ~~~~~~~~~~~~case ~~~~~~~~~~~~~~~~button-left~of ~~~~~~~~~~~~~~~~~~~~lcd-cls ~~~~~~~~~~~~~~~~~~~~false~down~! ~~~~~~~~~~~~~~~~endof ~~~~~~~~~~~~~~~~button-centre~of ~~~~~~~~~~~~~~~~endof ~~~~~~~~~~~~~~~~button-right~of ~~~~~~~~~~~~~~~~~~~~exit ~~~~~~~~~~~~~~~~endof ~~~~~~~~~~~~endcase ~~~~~~~~then ~~~~~~~~key?~if ~~~~~~~~~~~~key-flush ~~~~~~~~then ~~~~~~~~wait-for-event ~~~~again ; base~! \end{lyxcode} \end{quote} Im Batteriefach des Wikireaders befinden sich Lötpunkte für die serielle Schnittstelle. Über diese Schnittstelle kann das Forth im WikiReader interaktiv benutzt und programmiert werden. Alternativ können die Programme auf einem PC erstellt und dann auf die SD-Karte übertragen werden. \section*{Fazit} Der WikiReader ist zum Preis von 99 US\$ (ca. 76 Euro) ein interessantes Spielzeug für den Forth-begeisterten Hobby-Tüftler. Obwohl ich bei der Wikipedia-Funktion des WikiReaders erst skeptisch war ({}``braucht man das?'') und ich den WikiReader wegen des Forth-Systems gekauft habe, kann ich sagen, dass sich der WikiReader gerade auf Reisen als nützlich erwiesen hat. Das Open-Source-Konzept und das Forth-System im WikiReader laden zum Basteln ein. \end{multicols} \section*{Links} {}[1] Wikireader - \url{http://thewikireader.com}\\ {}[2] Wikireader Entwickler - \url{http://dev.thewikireader.com}\\ {}[3] Quellcode auf GitHub - \url{http://github.com/wikireader} \end{document}