How-to: Machen Sie eine E-Paper-Uhr von Esquire Magazine
, wenn Sie noch nie von elektronischem Papier gehört haben, kriechen Sie unter diesem Felsen und lesen Sie den Sony-Leser und den Amazon-Kindle. E-Papier ist eine flexible Anzeige aus farbwechselnden Perlen, die Tintenpapier zum einfachen Tageslicht lesen. Die revolutionäre Sache über E-Paper ist, dass er nach dem Set ist, bleibt es auf diese Weise ohne zusätzliche Macht.
Das klingt theoretisch großartig, aber esquire’s Cover ist das erste Mal, dass jeder es sich leisten kann, ein E-Paper-Display zu hacken. Wir nahmen den Cover in das Hack-A-Tage-Labor, um zu dokumentieren, zu dokumentieren, zu testen und zu hacken. Am Ende recycelten wir es in etwas Vorteilhaftes, das jeder Einzelne bauen kann. Wir haben alle Details darüber, wie das Display funktioniert und was es braucht, um es in Ihren eigenen Projekten zu verwenden. Lesen Sie nachfolgend über unseren E-Paper-Clock-Hack.
Hintergrund
Die E-Paper-Cover des Esequire-E-Papers hat sich im Netz groß getroffen, wurde aber rasch angemeldet. NOTCOT hat schöne Scans der Leiterplatte und des E-Papiers. Beliebte wissenschaftliche Anweisungen zum Lesen des Codes mit einem Picket2. [Slascher] überprüft, dass der Fotopip gelesen werden kann und der Codeschutzsicherungen ausgeschaltet werden kann. [Matt] manipulierte die E-Papierzellen direkt mit geschicktem Löten und einem Arduino. Bisher gab es nicht viel Interesse daran, das E-Papier wieder aufzutreten oder den bestehenden Mikrocontroller neu zu programmieren.
E-Paper-Panels
Die eigentlichen E-Papier-Panels, hergestellt von E-Tinte, sind nicht so aufregend. Jedes Panel hat einen Satz vordefinierter Segmente, 11 an der Frontplatte und 3 auf der hinteren Ford-Werbung. Dies ist keine Matrix, die wir in einen E-Reader neu programmieren können. [Just_Mike] hat ein tolles Set von ultra-Nahaufnahmeschüssen der einzelnen Perlen, die jedes Segment ausmachen.
Jedes E-Paper-Segment verfügt über eine individuelle Verbindung und eine Verbindung, die mit anderen Zellen an der Platte geteilt wird. Die Segmente werden in Abhängigkeit von der an der Zelle angewendeten Strömungsrichtung weiß oder schwarz. Wenn üblich niedrig ist, dunkelt jedes Segment, das auch mit hoher Höhe verbunden ist. Wenn üblich hoch ist, leer wird jede mit Masse verbundene Zelle klar. Die PCB verwendet 16 Volt von fünf 3.3volt-Batterien, um die Zellen zu wechseln, aber [Slascher] zeigte, dass 5Volts mit seinem Arduino-Projekt ausreichend war.
Leistungstest
Wir haben mehrere Beobachtungen über die E-Paper-Betriebsspezifikationen gemacht.
Erstens dauert es fast 0,5 Sekunden, um eine Zelle vollständig zu verdunkeln oder zu löschen. Im Video sehen Sie die Teilstaaten, die durch Umschalten des E-Papiers zu schnell erstellt werden. Wir sind uns der optimalen Veränderungszeit nicht ganz sicher, aber zwischen 0,25 und 0,5 Sekunden scheint das Minimum zu sein.
Dies erhoben auch Fragen zur maximalen Veränderungszeit. Beschädigt es das E-Papier, den Strom länger als nötig anzuwenden? Verbraucht das E-Paper weiterhin aktuell, solange es angewendet wird, wodurch die Batterien verschwendet wird? Wir haben uns in unserem Code besonders gepflegt, um alle Ausgänge nach einer Änderung an Masse zurückzugeben, um einen kontinuierlichen Strom durch das Bedienfeld zu vermeiden.
Clearing und Verdunkelung müssen separat erfolgen. Es dauert zwei vollständige Vorgänge, um den Bildschirm vollständig einzuführen; Einer, um alte Segmente zu löschen, eines, um neue Segmente zu dunkleren. Ein intelligenter Programmierer ist der Meinung, dass sie einen Zyklus speichern können, wenn Sie nur Elemente hinzufügen oder entfernen, und nicht beides. Dies gilt in gewissem Maße, aber die kontinuierliche Manipulation einer Zelle ohne erfrischende benachbarte Zellen verursacht Farbe “Kriechen”. Im Video treibt ein blinkender Hintergrund ohne Updates an alle anderen Segmente schnell die inaktiven Segmente in einen Mittelstand zwischen Dunkelheit und Licht.
Fahrerbrett
Der Autofahrer besteht aus einem acht-poligen Mikrochip PIC12F629, zwei 4094-Schieberegister und einigen stützenden Komponenten.
Klicken Sie hier, um ein Pin-Diagramm in voller Größe des E-Paper-Autofahrer-Boards (PNG) hier klicken.
Batterien
Esquire lud Hacks ihres Covers mit dem eher lahmen Vorschlag des Austauschs der Batterien ein. Dies ist sinnvoll, die Abdeckungen wurden in Kühlcontainern auf der ganzen Welt verschickt, um die Lebensdauer der Akkulaufzeit zu erweitern. Auch mit dieser Anstrengung sagt Esquire, dass die Batterien ein paar Monate dauern werden.
Die Batterien 1-5 sind in Reihe und liefern einen 15-16VOLT-Schaltstrom für das E-Papier. Die sechste Batterie liefert 3Volts für das Bild. Noch kein Wort, an dem die Batterien zuerst sterben. Wenn Sie Ihre Batterien ersetzen möchten, müssen Sie die alten Entholter entfernen und eine 5-16VOLT-E-Papierversorgung und eine 3Volt-Mikrocontroller-Versorgung an den angegebenen Punkten angeben.
Wir mussten schließlich unsere Mikrocontroller-Batterie ersetzen, da wir es während der Entwicklung ein bisschen missbraucht haben. Ein Knopfbatteriehalter mit einem 20-mm-Stiftabstand passt in die vorhandenen Löcher. Mouser # 534-106 wird wahrscheinlich funktionieren, aber das ist nicht bestätigt.
4094 Schieberegister (IC1, IC2)
Die Schieberegister wechseln das E-Paper-Segmentsteuerelemente bei 16 Volt.
Die beiden 4094-ICs sind SHIFT-Register, um Daten von IC1 bis IC2 zu kaskadieren. Dieses grundlegende Schichtregister ist eine geringfügige Variation des 74HTC595, die wir in unserer Graffiti-Wand verwendet haben. Der Hauptunterschied besteht darin, dass die 4094-Strobe-Linie normalerweise niedrig ist und kurz hoch gezogen wird, um neue Werte auf die Ausgangspins zu setzen. Wir haben festgestellt, dass die 4094 LO erforderlich istng clock and strobe pulses. This could be due to lazy drive circuitry between the photo and the 4094, or just the nature of the 4000 series.
4094 segment output map
Ic.
Ausgabe
Adresse
Verbindung
1.
Q1.
0x01.
FRONT_BOX_SYMBOL_DNA
1.
Q2
0x02
FRONT_BOX_GUY
1.
Q3
0x04
FRONT_BOX_FIREWORKS
1.
Q4
0x08
FRONT_ON_THE_WEST_COAST
1.
Q5
0x10
FRONT_THREE_HOURS_LATER
1.
Q6
0x20
FRONT_ESQUIRE
1.
Q7.
0x40
FRONT_BOX_GIRL
1.
Q8
0x80
FRONT_NOW
2.
Q1.
0x100
FRONT_BEGINS
2.
Q2
0x200
FRONT_21ST_CENTURY
2.
Q3
0x400
FRONT_BACKGROUND
2.
Q4
0x800
FRONT_COMMON
2.
Q5
0x1000
BACK_COMMON
2.
Q6
0x2000
HINTEN LINKS
2.
Q7.
0x4000
BACK_CENTER
2.
Q8
0x8000
HINTEN RECHTS
12F629
Click here for a full size schematic drawing(PNG). An eight pin PIC12F629 drives the 4094 shift registers that control each e-paper segment. two pins are unused (GP4, GP5).
The MCLR feature is enabled with resistor R8. The design doesn’t include a diode to secure the photo from the 13volt programming current. Microchip recommends this, but there’s no other sensitive ICs sharing the circuit so maybe the designer felt a resistor was sufficient protection.
Three pins drive the data, clock, and strobe lines of the 4094 (GP0, GP1, GP2). The 4094 has to be interfaced at the same voltage it switches, 16 volts, so the photo switches the interface pins through transistors. As far as we can tell, the 4094 control lines are pulled high with a resistor. The photo switches a transistor on, and it pulls the line to ground. The interface to the 4094 is backwards. A photo high pin is seen as low at the shift register, and low is seen as high. The interface won’t work unless reversed.
The programming pins are brought to a header at the top of the PCB. We soldered standard .1″ pin header into the holes supplied (Mouser #571-41033290). The two programming pins, PGD and PGC, are shared with the circuitry that drives the shift registers. We were able to read the device with an ICD2 debugger. We couldn’t reprogram it though, probably because of the shift register driver. has any individual had success? Regardless, the shared pin arrangement makes it impossible to do in-circuit debugging on this device.
PIC pin connections
Stift
Name
Verbindung
1.
Vdd
+3.3volts
2.
GP5
–
3
GP4
–
4.
GP3
MCLR (program VPP)
5.
GP2
4094 Strobe
6.
GP1
4094 Clock (program clock)
7.
GP0
4094 data (program data)
8.
Vss.
Boden
Tap the board
It’s easy to tap into the board and use it with your favorite microcontroller. All but one of the required interface signals are already brought to a header. The strobe line can be tapped through the by means of indicated by the arrow. You don’t want the photo to interfere with your new controller, so remove it or deactivate it by severing the power pin.
Interface library
Our first effort to drive the board involved our PIC24F-based tiny web server. It was handy, and the PIC24F is easy to work with. We perfected our interface library on a low-power MSP430. Both versions are in the project archive(ZIP), but the MSP430 version of the library is a lot more mature.
The library includes a software bit-bang routine, functions for interfacing the board, and address definitions for the segment and common lines. options in esquire_eink.h enable a bit-bang delay and set its length; we found the 4094 lazy and in need of a lengthy clock pulse. The initBang() function sets the direction of the pins, and must be changed to suit your microcontroller. call it, or set your IO pins to output elsewhere:
1.
bangInit(); //set bitbang pins to output
The setSeg() function sets the passed segments dark (1) or clear (0):
1.
2.
setSeg(FRONT_BOX_GUY+FRONT_BACKGROUND, 1); //set(dark) these segments
setSeg(FRONT_21ST_CENTURY,0);//clear (light) these segments
The setSeg() function includes a color change delay defined by EINK_DELAY in esquire_eink.h. At the end of the delay it returns the shift register pins to ground. We want to avoid damaging to the e-paper or wasting the batteries, though we don’t really know if this is necessary.
One thing we observed about setSeg() was that manipulating single cells causes adjacent cells to regress toward a mid-color. We developed the setDisplay() function to combat this by fully refreshing the display every time. setDisplay() includes a pause for each change, and then returns the shift register outputs to ground. just pass the segment arrangement for a fully refreshed display:
1.
setDisplay(FRONT_ESQUIRE+BACK_LEFT);//XX dark, everything else clear
You can access the shift registers directly with the bangIt() function, but consider returning the shift registers outputs to ‘0’ after the e-paper color change is complete. You could damage the e-paper or cause excessive current drain if you leave it on, if that’s actually ‘a thing’.
1.
2.
3
bangIt(0b1110000000000000);//all back panel segments on
pause();//wait for the color change
bangIt(0x0000);//return all outputs to ground
To port the library to your miCrocontroller Überprüfen Sie einfach die PIN-Konfigurationen in Esquire_Eink.h und die PIN-Setup-Funktion BangInit () in Esquire_Eink.c. Denken Sie daran, dass die Richtungsrichtungen von den Schnittstellentransistoren umgekehrt sind.
Setzen Sie es zur Verwendung, eine E-Paper-Uhr
Wir wollten mit dem ersten billigen E-Paper-Panel etwas Nützliches tun. Es musste etwas ziemlich einfach sein, damit viele Leute dieses kühle Technik recyceln können. Wir konnten nicht widerstehen, zu tun, was so viel Make mit altem Display Tech: eine Uhr machen. Schematik, Firmware- und Kunstvorlagen befinden sich im Projektarchiv (.zip).
Es gibt so wenige Segmente auf dem E-Papier, das wir nur teilweise die Zeit darstellen können. Sechs Segmente zeigen Zeit, jeder verblasst, um die Zeit auf die nächsten zehn Minuten nach der Stunde zu zeigen. Wir blinken auch Augen-Süßigkeiten auf den Nicht-Zeit-Segmenten des Panels. Hier ist die maßgeschneiderte Lünette, die wir geschaffen haben. Diese Bezel und ein Thema, um sich selbst zu erstellen, sind im Projektarchiv (ZIP) enthalten. Wir haben unsere verspiegelte Lünette gedruckt, so dass die Tinte vor Kratzern geschützt ist.
Hardware
Wir wurden von den Niedrigleistungseigenschaften von E-Papier inspiriert, um Texas Instruments ‘MSP430-Linie von 16-Bit-Mikrocontrollers zu verwenden. Mit der idealen Konfiguration zieht der MSP430 so wenig Kraft, dass es nur durch die Haltbarkeit einer Batterie begrenzt ist. Wir können sogar den ursprünglichen Designer einen Lauf für ihr Geld geben und sehen, ob wir ein niedrigeres Netzgerät erstellen können.
Das Beste an dem MSP430 ist, dass Sie ein Kit mit einem USB-Programmierer / Debugger- und Breakout-Board für nur 20 Dollar erhalten können. Es verfügt über einen kostenlosen C-Compiler, der auf 4k begrenzt ist, aber der F2013 hat jedoch nur 2k Speicher. Dies ist ein komplettes Entwicklungswerkzeug, kein Löten. Lernen Sie viel mehr darüber, mit dem MSP430 in diesem How-to zu arbeiten.
Diese schematische Darstellung zeigt, wie wir unser MSP430 in die E-Paper-Autofahrer-Board verbunden sind. Klicken Sie hier für eine vollständige Version (PNG). Der 47K-Widerstand MSP430 und eine LED (nicht gezeigt) sind auf dem Breakout-Board enthalten.
Wir fügten einen 32.768-khz-Kristall hinzu, um die Zeit (Q1) zu halten. Normalerweise würden wir auch einige Kondensatoren hinzufügen, um einen Oszillator zu bilden, aber der MSP430 hat ein eingebaute Kondensatoren auf P2.6 und P2.7 eingebaute Kapazitäten.
Wir haben auch eine Schaltfläche zwischen P1.4 und P1.2 (S1) hinzugefügt. Der interne Pull-Up-Widerstand auf P1.4 hält den Knopf hoch, und wir haben es durch P1.2 geerdet. Dies ist nicht die beste Vereinbarung, es wäre wahrscheinlich sinnvoll, auch P1.2 mit der Masse zu verbinden.
Wir glitten den MSP430-Breakout-Board über die Strom- und Bodenstifte des Programmierkopfs. Sie können die Uhr- und Datenstifte auch an den Kopfzeilen anschließen, aber wir haben entschieden, sie alle von den darunter liegenden Durchgängen zu leiten. Denken Sie daran, das Foto zu entfernen, damit die Signale des MSP430 nicht stört.
Teile
Anzahl
Kosten
Esquire E-Paper-Cover
–
–
MSP430 EZ430 Entwicklungskit
Ez430USB.
$ 20.
32.768kHz Kristall.
815-ab26t-32.768kHz
0,27 $
Druckknopf
642-MJTP1250.
$ 0.16.
Firmware
Die Taktsoftware wird mit der kostenlosen Demo-Version des mit dem EZ430-Programmierer enthaltenen TI / IAR-Kickstart C-Compiler geschrieben.
Der MSP430 ist sehr geringe Leistung. Es verwendet nur 220UA bei 1 MHz, aber weniger als 6UA beim Schlafen. Die entscheidende bis lange Akkulaufzeit besteht darin, den Chip so viel wie möglich zu schlafen. Unser Uhrcode ist dabei geschrieben.
Wir verwenden Timer_A mit dem 32.768-khz-Kristall, um zweimal einen Interrupt zu erstellen. Der erste Interrupt löst den Code aus, der die anzuzeigenden Segmente konfiguriert, sendet diese Werte an das E-Papier und schläft dann für die nächsten 0,5 Sekunden. Während der MSP430 schläft, haben alle Segmente “AUS” Zeit zu klären. Der nächste Interrupt fließt die gemeinsame Linien auf andere Weise mit einem basischen XOR aus, gibt die Werte aus und gehen weitere 0,5 Sekunden ein. Wenn der Zyklus beim nächsten Mal wieder beginnt. Wir haben uns nicht die Mühe, die Umschaltregister auf die Position “0” zurückzusetzen, da die Erfrischen regelmäßig in Flussmittel ist. Segment Kriechen ist kein Problem, weil wir jedes Segment jeden Zyklus erfrischen.
Eine Taste Press löst einen Interrupt aus, der die Zeit in den nächsten 10 Minuten voranschreitet. Um die Uhr einzustellen, warten Sie, bis die Zeit ein Aspekt von 10 Minuten nach der Stunde ist, und drücken Sie die Taste, um die CORRE zu zeigen