
Aether
EnriqueNeyra/aether
All-in-one home air quality monitor measuring Temp, Humidity, CO2, VOCs, Particulate Matter, and NOx. Powered by ESP32-C3 running esphome, and built with Home Assistant integration

An open-source e-paper reader
Epaper reader hw is an open-source printed circuit board by mathias4833, from the mathias4833/epaper-reader-hw repository on GitHub, published under the CERN-OHL-W-2.0 licence. It is a 2-layer board of 69.4 × 113 mm with 126 parts on 99 nets, routed with 708 tracks and 99 vias.
It is built around the ESP32-C6-WROOM-1-N8, DM3AT-SF-PEJM5 and BQ24074RGTR, with the MAX17048G+T10, TPS63031DSK and MBR0530 among its other parts. Its parts include 41 resistors, 31 capacitors, 8 switches, 7 ICs and 6 diodes. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.
A small battery-powered e-paper reader built around a custom PCB.
Quick demo of the UI and double-tap page turning:
https://github.com/user-attachments/assets/651f01a9-5495-4bea-b6eb-84c9eb2a8fab
The Xteink X4 was the starting point for this project. I liked the idea of a small reader with physical buttons, but wanted to design the electronics myself.
The board uses an ESP32-C6 and runs my fork of CrossPoint Reader.
This is very much a V1. It works, but I already have several changes planned for V2.
The schematic and PCB were designed in KiCad.
| MCU | ESP32-C6-WROOM-1-N8 |
| Memory | 8 MB flash, 512 KB SRAM |
| Display | 4.26" Good Display GDEQ0426T82, 800 x 480 |
| Storage | microSD |
| Battery | 600 mAh Li-Po |
| USB-C | Of course :) |
| Charging controller | BQ24074 |
| Voltage regulator | TPS63031 3.3 V buck-boost |
| Battery gauge | MAX17048 |
| Controls | 6 physical side buttons |
| Accelerometer | LIS3DHTR, 3-axis |
| PCB | 2 layers, 1.2 mm |
| Dimensions | Approx. 116 x 72 x 7.5 mm, including enclosure |
Power comes from a single-cell Li-ion battery. A BQ24074 handles charging and powers the reader from USB when plugged in. A TPS63031 generates the 3.3 V rail, and a MAX17048 keeps track of the battery level.
The display and microSD card share the SPI bus and are both on switchable power rails. The fuel gauge and accelerometer stay powered, since their idle current is low enough that there wasn't much to gain from switching them off (3uA and 0.5uA).
In a batch of five, the parts and fabrication comes to roughly 60€ per reader.
| Part | Approx. cost per reader |
|---|---|
| PCB components | 20€ |
| PCB fabrication and assembly | ~15€ |
| 4.26" e-paper display | ~17-19€ |
| 600 mAh battery | ~8€ |
| 3D-printed enclosure | ~0.50€ |
| Total | ~60€ |
This is a rough estimate. Shipping and imports duties aren't included as they vary a lot depending on where you live, and you'll also need a microSD card and a soldering iron to attach the battery.
I wanted the reader to stay thin, so using through-hole parts was never really an option. I also wanted to avoid paying for assembly on both sides of the PCB (it's super expensive!), which meant keeping all components on the back. The buttons are thus on the sides. I used TPU for the button pieces in the enclosure, which makes them much nicer to press than rigid printed buttons.
I originally wanted the final assembly to be completely solderless. I looked for a low-profile battery connector on LCSC but couldn't find anything slim enough. Looking back, there were probably a few decent options I missed, but hey, it's the first version. In the end, I added two large solder pads and called it a day. The battery wires pass through two small metal loops first in order to provide strain relief before reaching the pads.
Obviously my first choice was the ESP32-C3. It is what the Xteink X4 uses, and its power consumption is very good.
The problem was flash. Recent CrossPoint builds are a little over 6 MB, and the Xteink's 16 MB flash is split into two 6.25 MB application partitions so that OTA updates can keep both the old and new firmware around. That wasn't going to work with the C3 modules I could find, which were limited to 4MB flash.
The ESP32-S3 would have solved that, but it also consumes more power than I wanted for an ereader that spends most of its life asleep.
I eventually found an ESP32-C6 module with 8 MB of flash. That's enough for CrossPoint, but not enough to keep two copies of the firmware around, so OTA updates had to go. USB flashing is good enough for me anyway.
I was using a cheap microSD card and didn't know how much current it would draw while idle. Since standby power matters a lot I didn't want to rely on the SD card behaving well.
So I added a switchable power rail for peripherals that don't need to stay on. When the reader goes to sleep, the firmware can cut their power completely instead of depending on their own low-power modes.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 17 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP1, TP2, TP4, TP5, TP6, TP7, TP8, TP10, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP20 +1 |
| 16 | 10k | Resistor_SMD:R_0603_1608Metric | R3, R14, R17, R18, R20, R21, R22, R23, R24, R26, R27, R29, R32, R33, R34, R38 |
| 7 | 4.7uF/25V | Capacitor_SMD:C_0603_1608Metric | C2, C3, C4, C5, C9, C10, C11 |
| 5 | 100k | Resistor_SMD:R_0603_1608Metric | R15, R28, R30, R42, R43 |
| 5 | 10uF | Capacitor_SMD:C_0603_1608Metric | C15, C17, C18, C25, C31 |
| 3 | 0R | Resistor_SMD:R_1210_3225Metric | R25, R31, R35 |
| 3 | 100nF | Capacitor_SMD:C_0603_1608Metric | C24, C29, C30 |
| 3 | 1M | Resistor_SMD:R_0603_1608Metric | R1, R9, R16 |
| 3 | Fiducial | Fiducial:Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 3 | MBR0530 | Diode_SMD:D_SOD-123 | D1, D2, D3 |
| 3 | R0 | Resistor_SMD:R_1210_3225Metric | R39, R40, R41 |
| 2 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C16, C20 |
| 2 | 10nF | Capacitor_SMD:C_0603_1608Metric | C26, C27 |
| 2 | 1nF | Capacitor_SMD:C_0603_1608Metric | C23, C28 |
| 2 | 1uF/50V | Capacitor_SMD:C_0603_1608Metric | C6, C7 |
| 2 | 22R | Resistor_SMD:R_0603_1608Metric | R7, R8 |
| 2 | 3.3k | Resistor_SMD:R_0603_1608Metric | R4, R19 |
| 2 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C21, C22 |
| 2 | 5.1k(1%) | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 1 | 1.5uH | epaper-reader-hw:SPM3020-1R5MA | L3 |
| 1 | 100nF/50V(10%) | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 10uF/25V(20%) | Capacitor_SMD:C_0603_1608Metric | C8 |
| 1 | 1N4148W | Diode_SMD:D_SOD-123 | D5 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C19 |
| 1 | 1uF/16V(10%) | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 1uF/25V | Capacitor_SMD:C_0603_1608Metric | C12 |
| 1 | 200k | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | 2R2 | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 3.6k | Resistor_SMD:R_0603_1608Metric | R10 |
| 1 | 3k | Resistor_SMD:R_0603_1608Metric | R11 |
| 1 | 4.7nF | Capacitor_SMD:C_0603_1608Metric | C14 |
| 1 | 47k | Resistor_SMD:R_0603_1608Metric | R13 |
| 1 | BAT+ | TestPoint:TestPoint_Pad_4.0x4.0mm | TP3 |
| 1 | BAT- | TestPoint:TestPoint_Pad_4.0x4.0mm | TP11 |
| 1 | BQ24074RGTR | epaper-reader-hw:BQ24074RGTR | U3 |
| 1 | Battery_50x34x3mm | epaper-reader-virtual:Battery_50x34x3mm | BMECH1 |
| 1 | DM3AT-SF-PEJM5 | epaper-reader-hw:DM3AT-SF-PEJM5 | Card1 |
| 1 | EInk_Display_105p33x62p37x0p926mm | epaper-reader-virtual:EInk_Display_105p33x62p37x0p926mm | DMECH1 |
| 1 | ESP32-C6-WROOM-1 | epaper-reader-hw:ESP32-C6-WROOM-1 | U1 |
| 1 | FPC-05FB-24PH20 | epaper-reader-hw:FPC-05FB-24PH20 | FPC1 |
| 1 | LIS3DHTR_C15134 | epaper-reader-hw:LIS3DHTR_C15134 | U7 |
| 1 | MAX17048G_T10 | epaper-reader-hw:MAX17048G_T10 | U5 |
| 1 | SN74LVC1G74DCUR_C70285 | epaper-reader-hw:SN74LVC1G74DCUR_C70285 | U9 |
| 1 | STRAIN_RELIEF_RING1 | epaper-reader-hw:RH-5015 | SR1 |
| 1 | STRAIN_RELIEF_RING2 | epaper-reader-hw:RH-5015 | SR2 |
| 1 | SW_BOOT | epaper-reader-hw:TS-1187A-B-A-B | SW2 |
| 1 | SW_LEFT1 | epaper-reader-hw:TSB001A3526B | SW4 |
| 1 | SW_LEFT2 | epaper-reader-hw:TSB001A3526B | SW5 |
| 1 | SW_LEFT3 | epaper-reader-hw:TSB001A3526B | SW6 |
| 1 | SW_POWER | epaper-reader-hw:TSB001A3526B | SW3 |
| 1 | SW_RESET | epaper-reader-hw:TS-1187A-B-A-B | SW1 |
| 1 | SW_RIGHT1 | epaper-reader-hw:TSB001A3526B | SW8 |
| 1 | SW_RIGHT2 | epaper-reader-hw:TSB001A3526B | SW9 |
| 1 | Si1308EDL | Package_TO_SOT_SMD:SOT-323_SC-70 | Q1 |
| 1 | TPD4E05U06QDQARQ1 | epaper-reader-hw:TPD4E05U06QDQARQ1 | D6 |
| 1 | TPD6E004RSER | epaper-reader-hw:TPD6E004RSER | D8 |
| 1 | TPS22918DBVR | epaper-reader-hw:TPS22918DBVR | U8 |
| 1 | TPS63031DSK | Package_SON:WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mm | U4 |
| 1 | TYPE-C-31-M-12 | epaper-reader-hw:TYPE-C-31-M-12 | USBC1 |
| 1 | XRNR5020-47UH_M | epaper-reader-hw:XRNR5020-47UH_M | L1 |
It measures 69.4 × 113 mm and has 2 copper layers, 1.2 mm thick.
126 parts, built around the ESP32-C6-WROOM-1-N8, DM3AT-SF-PEJM5, BQ24074RGTR and MAX17048G+T10. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the mathias4833/epaper-reader-hw repository on GitHub, at the commit this page was made from: the board is epaper-reader-hw.kicad_pcb and its schematic epaper-reader-hw.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the CERN-OHL-W-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

EnriqueNeyra/aether
All-in-one home air quality monitor measuring Temp, Humidity, CO2, VOCs, Particulate Matter, and NOx. Powered by ESP32-C3 running esphome, and built with Home Assistant integration



AeroX2/aerox2.github.io
One repository and npm installation builds the workshop at jamesridey.dev and the professional site at cv.jamesridey.dev.

JoeMighty/opentouch-s3
A modern remake of the Bare Conductive Touch Board: 12 capacitive touch electrodes, MP3/WAV/MIDI audio, and now WiFi, Bluetooth LE, USB-C, a proper LiPo power path, a fuel gauge, line-in, MIDI out, Qwiic and an RGB LED.

oyeniyihakeem08-blip/child-wearable-notification-bracelet
Wi-Fi wristband that tells children what’s expected of them, with a caregiver dashboard and offline alerts. ESP32-S3 · MQTT · KiCad.

