From 79e9eec0ac05634fe367220df701b20c91523291 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 25 Oct 2025 10:53:52 +0800 Subject: Project folder. --- _projects/etlas/circuit.svg | 105 +++++++++++++++++++++++++++++++++++++++++ _projects/etlas/dash.jpg | Bin 0 -> 85874 bytes _projects/etlas/etlas_arch.png | Bin 0 -> 47732 bytes _projects/etlas/index.md | 65 +++++++++++++++++++++++++ _projects/etlas/pcb.jpg | Bin 0 -> 75769 bytes _projects/etlas/schematic.svg | 4 ++ _projects/etlas/source.tar.gz | Bin 0 -> 46871 bytes 7 files changed, 174 insertions(+) create mode 100644 _projects/etlas/circuit.svg create mode 100644 _projects/etlas/dash.jpg create mode 100644 _projects/etlas/etlas_arch.png create mode 100644 _projects/etlas/index.md create mode 100644 _projects/etlas/pcb.jpg create mode 100644 _projects/etlas/schematic.svg create mode 100644 _projects/etlas/source.tar.gz (limited to '_projects/etlas') diff --git a/_projects/etlas/circuit.svg b/_projects/etlas/circuit.svg new file mode 100644 index 0000000..6255045 --- /dev/null +++ b/_projects/etlas/circuit.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + AM2302 + + + DATA + + GND + + VCC + E-Paper display HAT + + + CS + + DC + + DIN + + CLK + + BUSY + + RST + + PWR + + GND + + VCC + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + + + + + 1 + 2 + 3 + 4 + + ESP32 Mini NodeMCU D1 + + IO19 + + + IO15 + + + GND + + + IO27 + + + IO14 + + + IO13 + + + IO25 + + + IO26 + + + IO16 + + + GND + + + 3V3 + + + \ No newline at end of file diff --git a/_projects/etlas/dash.jpg b/_projects/etlas/dash.jpg new file mode 100644 index 0000000..cf4efc6 Binary files /dev/null and b/_projects/etlas/dash.jpg differ diff --git a/_projects/etlas/etlas_arch.png b/_projects/etlas/etlas_arch.png new file mode 100644 index 0000000..241e9f1 Binary files /dev/null and b/_projects/etlas/etlas_arch.png differ diff --git a/_projects/etlas/index.md b/_projects/etlas/index.md new file mode 100644 index 0000000..97d92a9 --- /dev/null +++ b/_projects/etlas/index.md @@ -0,0 +1,65 @@ +--- +title: "Etlas: e-paper display for news, stocks, and the weather" +date: 2024-09-05T00:00:00+08:00 +author: W. D. Sadeep Madurange +--- + +Etlas is a news, stock market, and weather tracker powered by an ESP32 NodeMCU +D1, featuring a 7.5-inch {{< link src="https://www.waveshare.com/" +class="external" target="_blank" rel="noopener noreferrer">}}Waveshare{{< +/link>}} e-paper display and a DHT22 sensor module. + + + + + + +
frontback
+ +The top left panel displays the end-of-day stock prices from the {{< link +src="https://polygon.io/" class="external" target="_blank" +rel="noopener noreferrer" >}}Polygon.io{{}} API, relayed through my own +FastCGI-wrapped Flask app hosted on a VPS. The stock symbols can be configured +through the Flask app's application settings. The server.fcgi script enclosed +in the tarball at the end of the page contains the Flask app. + +The following diagram outlines this system architecture. + +![architecture](etlas_arch.png) + +Unlike my [e-reader](/projects/e-reader), which worked with raster images, +Etlas downloads time series data as CSV and computes the price curves on the +ESP32. + +The more prominent panel on the right of the e-paper display shows local +(Singapore) and world news from the {{< link +src="https://www.channelnewsasia.com/" class="external" target="_blank" +rel="noopener noreferrer" >}}Channel News Asia{{< /link>}} RSS feed. The MCU +downloads and parses XML data from the RSS feed directly before rendering it to +the display. Although I did it this way to avoid writing server code, it limits +the feeds from which Etlas can receive data. In a future version, I will relay +the RSS feed through a server (like the stock prices) to make it more flexible. + +The bottom panels (middle and right) display the temperature and relative +humidity from a DHT22 sensor. The DHT22 driver, arguably the most interesting +part of the software, reads real-time sensor data by comparing relative pulse +widths. The pulses themselves are too quick for the ESP32 to reliably measure +directly. I ported {{< link src="https://github.com/Fonger/ESP8266-RTOS-DHT" +class="external" target="_blank" rel="noopener noreferrer" >}}this{{< /link>}} +implementation for ESP8266 modules to my ESP32. All credit for the algorithm +belongs to them. + +Much of the heavy lifting of acquiring, interpreting, and rendering data from +different data sources is performed on the microcontroller using less than 512 +KB of memory. The embedded software that makes that possible is written in C +using the ESP-IDF v5.2.1. My e-paper display driver is a port of Waveshare {{< +link src="https://github.com/waveshareteam/e-Paper" class="external" +target="_blank" rel="noopener noreferrer" >}}examples{{< /link>}} for Arduino +and STM32 platforms. + +I've been using Etlas daily (for a couple of hours on weekdays and all day on +weekends) since August 2024. As of October 2025, it's been running reliably for +over a year. If you are interested in an e-paper display like this, drop me an +email at the address on my home page. + +Files: [source.tar.gz](source.tar.gz) diff --git a/_projects/etlas/pcb.jpg b/_projects/etlas/pcb.jpg new file mode 100644 index 0000000..fcb40fa Binary files /dev/null and b/_projects/etlas/pcb.jpg differ diff --git a/_projects/etlas/schematic.svg b/_projects/etlas/schematic.svg new file mode 100644 index 0000000..3070dd1 --- /dev/null +++ b/_projects/etlas/schematic.svg @@ -0,0 +1,4 @@ + + + +152726131425193V3GND
ESP32 Mini NodeMCU D1
ESP32 Mini NodeMCU D1
DHT22
DHT22
E-paper HAT
E-paper HAT
3.3V
3.3V
3.3V
3.3V
3.3V
3.3V
CS
CS
DC
DC
RST
RST
CLK
CLK
MOSY
MOSY
BUSY
BUSY
VCC
VCC
GND
GND
VCC
VCC
GND
GND
DATA
DATA
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_projects/etlas/source.tar.gz b/_projects/etlas/source.tar.gz new file mode 100644 index 0000000..8b12cf6 Binary files /dev/null and b/_projects/etlas/source.tar.gz differ -- cgit v1.2.3