diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-01-05 13:52:16 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-01-05 16:43:13 +0800 |
| commit | b10690f16d2b310221ffa7995e779f09d146f7f8 (patch) | |
| tree | 4c6f16ea7e64a180431678fa1a41b0e928e9aae8 | |
| parent | 577aa865c2f53a46a5869b1e4dda69dc06d0a962 (diff) | |
| download | www-b10690f16d2b310221ffa7995e779f09d146f7f8.tar.gz | |
Tighten etlas prose.
| -rw-r--r-- | _log/etlas.md | 33 | ||||
| -rw-r--r-- | _site/feed.xml | 2 | ||||
| -rw-r--r-- | _site/log/etlas/index.html | 30 | ||||
| -rw-r--r-- | _site/posts.xml | 2 |
4 files changed, 30 insertions, 37 deletions
diff --git a/_log/etlas.md b/_log/etlas.md index 9e2d191..7c50c72 100644 --- a/_log/etlas.md +++ b/_log/etlas.md @@ -20,20 +20,20 @@ DHT22 sensor. </tr> </table> -Stocks: Two weeks EOD prices from Polygon.io (max SRAM holds). Flask app on VPS -relays feed, lets me swap symbols via config. FastCGI + httpd + htpasswd. +Stocks: Two weeks EOD prices from Polygon.io (max possible). Flask app on VPS +relays feed; manages watchlist. Backend: httpd + htpasswd + FastCGI + Flask. -gui_plot_stocks() triggers WDT. vTaskDelay() prevents that. Stepped graph was -easier to code for the bit-packed framebuffer (not enough memory for much -else), but it's messy--too messy. - -Note to self: Refactor gui_plot_stocks(). Bresenham’s line algorithm perhaps? +gui_plot_stocks() triggers watchdog; vTaskDelay() required. Stepped graph was +easier to implement (under memory constraints), but the logic is hideous. Note +to self: Refactor with Bresenham’s? News: Channel NewsAsia RSS. MCU parses XML directly. Character glyphs stored as -bitmaps in sprites directory. +bitmaps in header files. -Weather: DHT22 via PWM. 26µs/50µs/70µs pulses too fast for standard ESP32 APIs. -Compare relative pulse widths: +Weather: DHT22 single-wire protocol. 26µs/50µs/70µs pulses are too fast for +standard ESP32 APIs. Bit-banged relative pulse widths: (Ported from <a +href="https://github.com/Fonger/ESP8266-RTOS-DHT" class="external" +target="_blank" rel="noopener noreferrer">ESP8266</a>): ``` static inline int dht_await_pin_state(int state, int timeout) @@ -91,15 +91,12 @@ static inline int dht_get_raw_data(unsigned char buf[BUFLEN]) } ``` -Ported from <a href="https://github.com/Fonger/ESP8266-RTOS-DHT" -class="external" target="_blank" rel="noopener noreferrer">ESP8266</a>. - -After flashing new versions, display would stop responding. Didn't observe this -with e-reader. Issue occurs spontaneously. Couldn't find root cause. Making a -change like adding a comment or tweaking delay in refresh() (then changing -back) fixed it. Noisy electrical connections? +Ghost in the machine: epd_init() stalls intermittently on first refresh() after +flash. Toggling delay values in refresh() resolves it. If first refresh +succeeds, it remains stable. Root cause unknown--suspected power supply issues +from powering display via MCU. -Once running, it runs: August 2024 - December 2025. +Uptime: August 2024 - January 2026 Commit: [a92c86a](https://git.asciimx.com/etlas/commit/?id=a92c86ac1592c2137d3d1fec1668eacc2d0ca581) diff --git a/_site/feed.xml b/_site/feed.xml index 93d691d..50fefd9 100644 --- a/_site/feed.xml +++ b/_site/feed.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2026-01-05T12:16:46+08:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">ASCIIMX | Log</title><author><name>W. D. Sadeep Madurange</name></author><entry><title type="html">Search engine (Perl + FastCGI + SA)</title><link href="http://localhost:4000/log/site-search/" rel="alternate" type="text/html" title="Search engine (Perl + FastCGI + SA)" /><published>2026-01-03T00:00:00+08:00</published><updated>2026-01-03T00:00:00+08:00</updated><id>http://localhost:4000/log/site-search</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Article count on the website is growing. Need a way to search.]]></summary></entry><entry><title type="html">Matrix Rain: 2025 refactor</title><link href="http://localhost:4000/log/matrix-digital-rain/" rel="alternate" type="text/html" title="Matrix Rain: 2025 refactor" /><published>2025-12-21T00:00:00+08:00</published><updated>2025-12-21T00:00:00+08:00</updated><id>http://localhost:4000/log/matrix-digital-rain</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[The 2022 version worked but had some loose ends. Unicode support was inflexible–couldn’t mix ASCII with Katakana; Phosphor decay was stored in a separate array when it should’ve been packed with RGB; Code was harder to read than it needed to be.]]></summary></entry><entry><title type="html">Fingerprint door lock (LP)</title><link href="http://localhost:4000/log/fpm-door-lock-lp/" rel="alternate" type="text/html" title="Fingerprint door lock (LP)" /><published>2025-08-18T00:00:00+08:00</published><updated>2025-08-18T00:00:00+08:00</updated><id>http://localhost:4000/log/fpm-door-lock-lp</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Second iteration of the RF door lock. Old version worked but drew too much quiescent current. Sensor and servo pulled 13.8mA and 4.6mA idle. Linear regulators were a disaster. Battery didn’t last 24 hours.]]></summary></entry><entry><title type="html">High-side MOSFET switching</title><link href="http://localhost:4000/log/mosfet-switches/" rel="alternate" type="text/html" title="High-side MOSFET switching" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>http://localhost:4000/log/mosfet-switches</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Needed low-power switching for the fingerprint door lock. Servo and FPM draw high quiescent current–had to cut power electronically during sleep. MOSFETs can do this.]]></summary></entry><entry><title type="html">ATmega328P at 3.3V and 5V</title><link href="http://localhost:4000/log/arduino-uno/" rel="alternate" type="text/html" title="ATmega328P at 3.3V and 5V" /><published>2025-06-10T00:00:00+08:00</published><updated>2025-06-10T00:00:00+08:00</updated><id>http://localhost:4000/log/arduino-uno</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Quick reference for wiring ATmega328P ICs at 5V and 3.3V. 5V uses 16MHz crystal, 3.3V uses 8MHz.]]></summary></entry><entry><title type="html">Fingerprint door lock (RF)</title><link href="http://localhost:4000/log/fpm-door-lock-rf/" rel="alternate" type="text/html" title="Fingerprint door lock (RF)" /><published>2025-06-05T00:00:00+08:00</published><updated>2025-06-05T00:00:00+08:00</updated><id>http://localhost:4000/log/fpm-door-lock-rf</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Wanted to unlock door with fingerprint, wirelessly to avoid drilling.]]></summary></entry><entry><title type="html">Bumblebee: browser automation</title><link href="http://localhost:4000/log/bumblebee/" rel="alternate" type="text/html" title="Bumblebee: browser automation" /><published>2025-04-02T00:00:00+08:00</published><updated>2025-04-02T00:00:00+08:00</updated><id>http://localhost:4000/log/bumblebee</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Built with Andy Zhang for an employer. Tool to automate web scraping script generation.]]></summary></entry><entry><title type="html">Bare-metal ATSAM3X8E</title><link href="http://localhost:4000/log/arduino-due/" rel="alternate" type="text/html" title="Bare-metal ATSAM3X8E" /><published>2024-09-16T00:00:00+08:00</published><updated>2024-09-16T00:00:00+08:00</updated><id>http://localhost:4000/log/arduino-due</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Notes on programming bare-metal ATSAM3X8E chips (Arduino Due) using Serial Wire Debug (SwD) protocol.]]></summary></entry><entry><title type="html">Etlas: e-paper dashboard</title><link href="http://localhost:4000/log/etlas/" rel="alternate" type="text/html" title="Etlas: e-paper dashboard" /><published>2024-09-05T00:00:00+08:00</published><updated>2024-09-05T00:00:00+08:00</updated><id>http://localhost:4000/log/etlas</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Repurposed e-reader prototype into something for regular use. News, stocks, weather dashboard. ESP32 NodeMCU D1 + 7.5” Waveshare e-paper + DHT22 sensor.]]></summary></entry><entry><title type="html">ESP32 prototype e-reader</title><link href="http://localhost:4000/log/e-reader/" rel="alternate" type="text/html" title="ESP32 prototype e-reader" /><published>2023-10-24T00:00:00+08:00</published><updated>2023-10-24T00:00:00+08:00</updated><id>http://localhost:4000/log/e-reader</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[First project with e-paper displays and ESP32.]]></summary></entry></feed>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2026-01-05T16:42:22+08:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">ASCIIMX | Log</title><author><name>W. D. Sadeep Madurange</name></author><entry><title type="html">Search engine (Perl + FastCGI + SA)</title><link href="http://localhost:4000/log/site-search/" rel="alternate" type="text/html" title="Search engine (Perl + FastCGI + SA)" /><published>2026-01-03T00:00:00+08:00</published><updated>2026-01-03T00:00:00+08:00</updated><id>http://localhost:4000/log/site-search</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Article count on the website is growing. Need a way to search.]]></summary></entry><entry><title type="html">Matrix Rain: 2025 refactor</title><link href="http://localhost:4000/log/matrix-digital-rain/" rel="alternate" type="text/html" title="Matrix Rain: 2025 refactor" /><published>2025-12-21T00:00:00+08:00</published><updated>2025-12-21T00:00:00+08:00</updated><id>http://localhost:4000/log/matrix-digital-rain</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[The 2022 version worked but had some loose ends. Unicode support was inflexible–couldn’t mix ASCII with Katakana; Phosphor decay was stored in a separate array when it should’ve been packed with RGB; Code was harder to read than it needed to be.]]></summary></entry><entry><title type="html">Fingerprint door lock (LP)</title><link href="http://localhost:4000/log/fpm-door-lock-lp/" rel="alternate" type="text/html" title="Fingerprint door lock (LP)" /><published>2025-08-18T00:00:00+08:00</published><updated>2025-08-18T00:00:00+08:00</updated><id>http://localhost:4000/log/fpm-door-lock-lp</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Second iteration of the RF door lock. Old version worked but drew too much quiescent current. Sensor and servo pulled 13.8mA and 4.6mA idle. Linear regulators were a disaster. Battery didn’t last 24 hours.]]></summary></entry><entry><title type="html">High-side MOSFET switching</title><link href="http://localhost:4000/log/mosfet-switches/" rel="alternate" type="text/html" title="High-side MOSFET switching" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>http://localhost:4000/log/mosfet-switches</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Needed low-power switching for the fingerprint door lock. Servo and FPM draw high quiescent current–had to cut power electronically during sleep. MOSFETs can do this.]]></summary></entry><entry><title type="html">ATmega328P at 3.3V and 5V</title><link href="http://localhost:4000/log/arduino-uno/" rel="alternate" type="text/html" title="ATmega328P at 3.3V and 5V" /><published>2025-06-10T00:00:00+08:00</published><updated>2025-06-10T00:00:00+08:00</updated><id>http://localhost:4000/log/arduino-uno</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Quick reference for wiring ATmega328P ICs at 5V and 3.3V. 5V uses 16MHz crystal, 3.3V uses 8MHz.]]></summary></entry><entry><title type="html">Fingerprint door lock (RF)</title><link href="http://localhost:4000/log/fpm-door-lock-rf/" rel="alternate" type="text/html" title="Fingerprint door lock (RF)" /><published>2025-06-05T00:00:00+08:00</published><updated>2025-06-05T00:00:00+08:00</updated><id>http://localhost:4000/log/fpm-door-lock-rf</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Wanted to unlock door with fingerprint, wirelessly to avoid drilling.]]></summary></entry><entry><title type="html">Bumblebee: browser automation</title><link href="http://localhost:4000/log/bumblebee/" rel="alternate" type="text/html" title="Bumblebee: browser automation" /><published>2025-04-02T00:00:00+08:00</published><updated>2025-04-02T00:00:00+08:00</updated><id>http://localhost:4000/log/bumblebee</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Built with Andy Zhang for an employer. Tool to automate web scraping script generation.]]></summary></entry><entry><title type="html">Bare-metal ATSAM3X8E</title><link href="http://localhost:4000/log/arduino-due/" rel="alternate" type="text/html" title="Bare-metal ATSAM3X8E" /><published>2024-09-16T00:00:00+08:00</published><updated>2024-09-16T00:00:00+08:00</updated><id>http://localhost:4000/log/arduino-due</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Notes on programming bare-metal ATSAM3X8E chips (Arduino Due) using Serial Wire Debug (SwD) protocol.]]></summary></entry><entry><title type="html">Etlas: e-paper dashboard</title><link href="http://localhost:4000/log/etlas/" rel="alternate" type="text/html" title="Etlas: e-paper dashboard" /><published>2024-09-05T00:00:00+08:00</published><updated>2024-09-05T00:00:00+08:00</updated><id>http://localhost:4000/log/etlas</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Repurposed e-reader prototype into something for regular use. News, stocks, weather dashboard. ESP32 NodeMCU D1 + 7.5” Waveshare e-paper + DHT22 sensor.]]></summary></entry><entry><title type="html">ESP32 prototype e-reader</title><link href="http://localhost:4000/log/e-reader/" rel="alternate" type="text/html" title="ESP32 prototype e-reader" /><published>2023-10-24T00:00:00+08:00</published><updated>2023-10-24T00:00:00+08:00</updated><id>http://localhost:4000/log/e-reader</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[First project with e-paper displays and ESP32.]]></summary></entry></feed>
\ No newline at end of file diff --git a/_site/log/etlas/index.html b/_site/log/etlas/index.html index 9362917..f618503 100644 --- a/_site/log/etlas/index.html +++ b/_site/log/etlas/index.html @@ -54,20 +54,18 @@ DHT22 sensor.</p> </tr> </table> -<p>Stocks: Two weeks EOD prices from Polygon.io (max SRAM holds). Flask app on VPS -relays feed, lets me swap symbols via config. FastCGI + httpd + htpasswd.</p> +<p>Stocks: Two weeks EOD prices from Polygon.io (max possible). Flask app on VPS +relays feed; manages watchlist. Backend: httpd + htpasswd + FastCGI + Flask.</p> -<p>gui_plot_stocks() triggers WDT. vTaskDelay() prevents that. Stepped graph was -easier to code for the bit-packed framebuffer (not enough memory for much -else), but it’s messy–too messy.</p> - -<p>Note to self: Refactor gui_plot_stocks(). Bresenham’s line algorithm perhaps?</p> +<p>gui_plot_stocks() triggers watchdog; vTaskDelay() required. Stepped graph was +easier to implement (under memory constraints), but the logic is hideous. Note +to self: Refactor with Bresenham’s?</p> <p>News: Channel NewsAsia RSS. MCU parses XML directly. Character glyphs stored as -bitmaps in sprites directory.</p> +bitmaps in header files.</p> -<p>Weather: DHT22 via PWM. 26µs/50µs/70µs pulses too fast for standard ESP32 APIs. -Compare relative pulse widths:</p> +<p>Weather: DHT22 single-wire protocol. 26µs/50µs/70µs pulses are too fast for +standard ESP32 APIs. Bit-banged relative pulse widths: (Ported from <a href="https://github.com/Fonger/ESP8266-RTOS-DHT" class="external" target="_blank" rel="noopener noreferrer">ESP8266</a>):</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>static inline int dht_await_pin_state(int state, int timeout) { @@ -124,14 +122,12 @@ static inline int dht_get_raw_data(unsigned char buf[BUFLEN]) } </code></pre></div></div> -<p>Ported from <a href="https://github.com/Fonger/ESP8266-RTOS-DHT" class="external" target="_blank" rel="noopener noreferrer">ESP8266</a>.</p> - -<p>After flashing new versions, display would stop responding. Didn’t observe this -with e-reader. Issue occurs spontaneously. Couldn’t find root cause. Making a -change like adding a comment or tweaking delay in refresh() (then changing -back) fixed it. Noisy electrical connections?</p> +<p>Ghost in the machine: epd_init() stalls intermittently on first refresh() after +flash. Toggling delay values in refresh() resolves it. If first refresh +succeeds, it remains stable. Root cause unknown–suspected power supply issues +from powering display via MCU.</p> -<p>Once running, it runs: August 2024 - December 2025.</p> +<p>Uptime: August 2024 - January 2026</p> <p>Commit: <a href="https://git.asciimx.com/etlas/commit/?id=a92c86ac1592c2137d3d1fec1668eacc2d0ca581">a92c86a</a></p> diff --git a/_site/posts.xml b/_site/posts.xml index 97210e4..75c68d1 100644 --- a/_site/posts.xml +++ b/_site/posts.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/posts.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2026-01-05T12:16:46+08:00</updated><id>http://localhost:4000/posts.xml</id><title type="html">ASCIIMX</title><author><name>W. D. Sadeep Madurange</name></author></feed>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/posts.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2026-01-05T16:42:22+08:00</updated><id>http://localhost:4000/posts.xml</id><title type="html">ASCIIMX</title><author><name>W. D. Sadeep Madurange</name></author></feed>
\ No newline at end of file |
