experiments

Na de I2C tape reader gezien te hebben op hackaday dacht ik “Ik heb toch nog ergens een I2C 7-segments display liggen?” en “Kan ik daar niet iets soortgelijks mee? Misschien zelfs gewoon met schakelaartjes? Zou ik er iets HELLO WORLD-achtigs op kunnen zetten?”

En ja, dat kan. Omdat het maar 4 displays zijn wordt het “HELO” in plaats van “HELLO WORLD”, maar toch.

Het display dat ik gebruik is een TM1637-gebaseerd 7-segments-display. [datasheet]. Het doet geen “echte” I2C omdat het geen adressering kent. Het TM1637 IC kan 6 displays sturen en een toetsenbordmatrix uitlezen, het printje dat ik gebruik heeft maar 4 displays.

Ik debounce de schakelaars met een RC netwerkje, met de LED kan ik de ACK zien. Desondanks zit ik er wel eens een bit naast en stuur ik iets anders dan ik in gedachten heb naar het display. Daarom staat er niet direct “HELO” maar corrigeer ik nog wat. Het stukje “initialisatie” heb ik uit het filmpje geknipt: je ziet dan nog niets gebeuren op het display. Ook zat ik ondanks een spiekbriefje met de bedoelde datasequentie best even te knoeien. Dus wie het na wil doen zou ik adviseren om comfortabele(r) schakelaartjes te gebruiken, maar het is best grappig om iets dat helemaal niet bedoeld is om met de hand aan te sturen, met de hand aan te sturen.

Post thumbnail

Toen ik Aart vertelde over die ereader waar ik eerder over schreef bleek hij nog een ED060SC7 schermpje te hebben liggen, met daarbij een “inkterface” printje. Het inkterface printje bevat o.a. de voeding voor het e-ink schermpje, en de juiste connector om het op het schermpje aan te sluiten.

Inkterface

De voeding voor dit soort e-paper schermpjes is ietwat ingewikkeld, omdat ze +15 V, -15 V, +22 V en -20 V nodig hebben, naast de 3,3 V voeding voor de logica en een “contrast” spanning die van scherm tot scherm varieert maar vaak ergens tussen de -1 V en -2 V ligt.

Met de voeding in handen, en de juiste connector, moet er een microcontroller aan te hangen zijn. En met de heldere informatie en software van essentialscrap/eink moet er toch beeld op te krijgen zijn? Zeker als ik er b.v. een STM32 tegenaan gooi.

Dat viel ietwat tegen. Ik ben zo eigenwijs geweest het werkend te willen krijgen zonder de uGFX library (die essentialscrap gebruikt), en ook nog op andere hardware dan waar het voor bedoeld is. Grote kans dat ik daar ergens een vauwdtje heb gemaakt.

Ik wilde een snelle proof-of-concept, dus zodoende ben ik na wat zoeken uitgeweken naar de software van Zephray (github), omdat dit zonder uGFX kan werken en toch tekst en afbeeldingen kan tonen. Ik heb de agendafunctie etc. overgeslagen en alleen het deel van Zephray’s project gebruikt dat het scherm aanstuurt. Hiermee had ik al snel beeld. Na ervoor te zorgen dat het in- en uitschakelen van de voeding goed werkte (voedingen moeten op volgorde worden ingeschakeld) zelfs een stuk beter beeld. Maar wel in spiegelbeeld…

Eerste min-of-meer succes om beeld op het schermpje te krijgen

Beter beeld na op correcte volgorde inschakelen van de voedingen

Zephray’s software is echter bedoeld voor een ED060SC4 scherm. De ED060SC7 is anders dan de -sc4, en daardoor staat de tekst in spiegelbeeld. Na de X en Y as om te wisselen (in epd.c, rondom regel 602) staat de tekst wel goed:

Beeld!

Doordat de STM32F103C8T6 die ik gebruik te weinig RAM heeft om het hele scherm te bufferen stuur ik slechts een deel van het scherm aan. (De software van Zephray is bedoeld voor een STM32F207VET6, die is wat vetter qua ram). Maar de niet-aangestuurde rechter 2/3 is net zo wit als de achtergrond van de wel aangestuurde linker 1/3, dus dat valt niet zo op…

Essentialscrap heeft een slimme manier slechts een deel van het scherm te bufferen. Zephray heeft een slimme manier om grijstinten te tonen, waarvoor het nodig is om het hele scherm te bufferen. Voor deze snelle proof of concept heb ik niet geprobeerd beide slimmigheden te combineren, maar gewoon slechts een deel van het scherm gebufferd en slechts dat deel aangestuurd.

Nu weet ik dus dat dit scherm niet defect is, en dat ik de aansturing ervan voor elkaar kan krijgen. Dat bied weer mogelijkheden voor verder geknutsel met e-ink, bijvoorbeeld ook met het ED060XH3 of ED060XG1 scherm uit de ereader(s) waar dit mee begon.

I bought one of those Real Time Clock modules:

I noticed it has a diode and resistor to charge the battery on the back. But I plan on using a non-rechargable CR2032 cell. So these had to be removed:

modified RTC module for non-rechargable battery

I also removed the power LED, since I plan on using it in an alarm clock with a partly translucent enclosure, and I don’t want the light to disturb me at night.

I think these modules mostly get used with primairy (non-recharable) lithium cells, so why was that diode/resistor there in the first place? Charging those cells might lead to leakage (at best), or more spectaculair failure (explosion?) at worst.

If you had battery leakage or other issues with these modules, please let me know in a comment.

If you have one of these DS3231 modules and plan on using it with a standard CR2032 coin cell (non-rechargable), I’d strongly recommend removing the diode and/or resistor, as shown in the pictures above.

EDIT:
I’v measured the 32 kHz output on my 2 modules with a Agilent 34401A. According to the datasheet, this should be 32.768 kHz, typ@3v3. One of my modules outputs 32.763 kHz, the other 32.761 kHz at 3v3. This is 5 resp 7 Hz slow: 153 resp. 213 ppm, way over the specified 3.5ppm over temperature… It would cause me to be late at a rate of about 2 minutes a week. For comparison: my wristwatch does 30 Seconds a Month. So, probably I got out-of-spec or fake modules… Darn!

EDIT2: Those modules get used/sold with rechargeable/secondary cells as well. Makes little sense considering how long a primary cell would last in this application, but at least explains why there is a charger circuit on board.

EDIT3: More about the 32-Khz-out-of-spec problem, in Dutch, here: https://www.circuitsonline.net/forum/view/147354. Also: I’ve bought a known-good chip from Farnell and plan on comparing performance – more later. The chip I bought is a DS3231MZ+ , which has a MEMS-oscillator, not a crystal like the …SN has. So cannot be compared 1-to-1, because its 32 kHz output is not compensated (only the internal 1 Hz is, within 5 ppm.)