Plasma display based clock, and an OS for building other fancy pixel grid clocks: PIS-OS

akasaka_spk
Posts: 12
Joined: Tue Oct 08, 2024 9:11 am
Location: Sapporo, Japan

Plasma display based clock, and an OS for building other fancy pixel grid clocks: PIS-OS

Postby akasaka_spk » Mon Nov 04, 2024 11:32 am

Hello everyone :-)

I would like to introduce you to my project that has been around for a while, called PIS-OS.
It used to stand for "Plasma Information Screen OS", but ever since support was added for other screen types, it now means "Personal Information Screen OS". It is not a DOS, since there is no disk support in it, but many people make that mistake, especially those who speak Russian for some reason...

It runs on the most basic OG ESP32 which is commonly found in electronics shops or on Taobao for dirt cheap, but requires the WROVER version of the module for extra RAM needed by some functionality. It isn't really wasting memory but not saving every byte either :P

On which note it also fits into a 4MB flash module with a 2x2MB app layout and 1MB LittleFS for the ringtones/chimes.

Here are some clocks that I built around the PIS-OS:
mpv-shot0001.jpg
mpv-shot0001.jpg (197.75 KiB) Viewed 843 times
From top to bottom those screens are:

1. Vishay/Winstar WS0010 at 100x16: This is an OLED. It's relatively common, but fairly expensive, on Taobao and such. I happened to snatch a lot at Arrow for $5 apiece so now building a bunch of those for friends and family.
2. (Left) Noritake ITRON GU-140x16-7000: vacuum-fluorescent display, which I happened to find new-old stock at Kyoritsu while being in town for Magical Mirai :-) I've also built another one in the WS0010 form-factor with the GU-115x16-7000, but that one was already packaged and sent to a friend who is a die hard fan of the ITRON displays.
3. (Right) Some weird LED panels from Akizuki Denshi's outlet stock, labeled K-875. They were on clearance due to missing rows in some modules, but that was a matter of adding a missing track on the PCB. There are 4 panels daisy-chained for a 128x16 px display, software-driven using the SPI peripheral.
4. The biggest one is the Morio Denki 16101DS plasma display, which used to be used for route indicators in the interior of some Japanese buses. I've come across one by accident, and only ever seen one in a bus just once, so they must be very rare. It's basically like an array of 101x16 nixie dots and has to be driven with a very high voltage (160V+). Luckily the module has a framebuffer on it which makes things easier. Here is a small demo video with a very early version of the firmware: https://youtu.be/D4MiHmhhjeQ

The smaller clock also has a Taptic Engine in it to act as a vibration speaker, because the thing has 42 custom-made chiptune ringtones! It uses the I2S driver as a crude 1-bit waveform synthesizer, and emulates a sound chip that I made up, which has 4 tone channels, 1 noise channel (same pseudorandom generator as the AY-3-8910) and 1 sampler channel.
Here are some sample ringtones, but if you aren't used to 1-bit (ZX Spectrum 48K anyone?) music your ears may bleed, consider yourself warned!

* Hatsune Miku / Hiiragi Magnetite — Antenna 39: https://www.youtube.com/watch?v=zYAEvVJUqVs
* Ennio Morricone — My Name Is Nobody: https://www.youtube.com/watch?v=P6NLeqQmyZA
* KOTOKO — Re-Sublimity: https://soundcloud.com/vladkorotnev/kot ... y-pis-os-1
* emon — Shake It!: https://soundcloud.com/vladkorotnev/emo ... -it-pis-os

But if you thought it was crazy already... the ringtones are translated from MIDI into a CPP file and then compiled using GCC to then be transformed from an ELF into a custom format, because that's easier than just writing a half decent non-astable MIDI event reader :P

Other features include:
* Online updates with CI/CD from Github. Once I do a merge to the master branch, Github builds all the firmware flavors for me and all the clocks no matter where they are (in theory) pull in the updates. More ringtones for everyone, yay!
* Motion sensor support. For now I've tested some cheap ones from Taobao as well as the super compact Panasonic PaPIRS. With the motion sensor it can turn off the display so that you don't waste the lifetime of the precious vacuum tube when there is nobody to watch it.
* Smart Wakeup support in the alarm clock. You can set a margin within which any detected motion will set off the alarm. E.g. if you set an alarm for 7:30am, and a margin of 30 minutes, then if the clock detects you moving at 7:03am it will ring ahead of time. If there is no motion, it will ring at 7:30am as normal.
Image
* Otherwise, you can set up to 9 alarms and specify on which days of the week they should ring as well.
Image
* Weather forecast via OpenWeatherMap. You will need to bring your own API key.
If it's gonna rain then it also rains on the main clock screen, and even thunders every now and then.
Image
Also a weather forecast with precipitation and pressure graphs is available.
Image
* Thermal sensor support: currently only the AM2322 over I2C is supported. There is experimental code to use a Switchbot Meter over bluetooth as a sensor, but due to ROM size limitations it's not really maintained.
Image
* Talking clock in English, Russian and Japanese, using the AquesTalk library, if you can ever understand voice deep fried down to a 1-bit resolution. Once again, you will need to buy your own AquesTalk license key to use this.
* Light sensor support for screen dimming, if the display module supports it.
* App for weighing yourself using a Wii Balance Board. Not really maintained and Bluedroid seems to crash with a connection longer than a day, but I just had one lying around...
Image
* Keypad or ESP built in touch sensor for navigating the menu
* Settings panel via the web browser using GyverPortal (English only)
* Remote control and display (similar to Anydesk) over LAN with screenshot and GIF capture support
* MIDI Input for composing ringtones (not too speedy)
* Foobar2000 current playing track display
Image
* Word of the Day via Wordnik API (English only) — again, you will need your own API key
Image
* Stopwatch
Image
* Timer
Image
* Ticking sound for those of us who love it (and the ability to turn it off for those who hate it)
* Hourly chimes, with the first one of the day being a separate setting. The music format supports highlighting a hook in the melody, so don't worry, you won't get an hourly chime that lasts the whole hour.
* Precise time signals according to the old soviet GOST for those of us from ex-USSR who still miss our great-grandpa's old wired radio stuck somewhere behind the wardrobe and beeping in a very specific pattern every hour of the day.
* And a small easter egg display (and sound) for the New Year's Eve :P

You can find out more and check the source code at the Github page: https://github.com/vladkorotnev/plasma- ... ile#pis-os

Feel free to ask any questions and I hope you liked it! :-)

Who is online

Users browsing this forum: No registered users and 8 guests