Skip to the content
PCBKitNew board
2 layers65.4 × 68 mmS3-27-epaper touch, the printed circuit board in 3D

S3-27-epaper touch

Uspizig/WifiWallSwitch4

A WallSwitch with a clever EINK Display that measures your Air Quality, measures Temperature, detects movement, measures Light Conditions... and many more.

Size
65.4 × 68 mm
Copper layers
2
Thickness
0.57 mm
Parts
159
Nets
140
Pads
622
Tracks, vias
1,814, 156
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
2 Mar 2023
Updated
11 Jan 2025

Overview

S3-27-epaper touch is an open-source printed circuit board by Uspizig, from the Uspizig/WifiWallSwitch repository on GitHub. It is a 2-layer board of 65.4 × 68 mm with 159 parts on 140 nets, routed with 1,814 tracks and 156 vias.

It is built around the ESP32-S3-WROOM-1-N8, BME280 and BME680, with the SIQ-02FVS3, MMC5883MA and RFM95W-868S2 among its other parts. Its parts include 40 resistors, 26 capacitors, 17 ICs, 14 diodes and 13 connectors. It belongs with the lEDs and displays boards and the ESP32 boards of this library.

Main components

12

README

README.md

A WallSwitch with a clever EINK Display that measures your Air Quality, measures Temperature, detects movement, measures Light Conditions... and many more. And the Best of all: "It can be your own LOCAL Voice Assistant or MediaPlayer"

This Device perfectly integrates in your Smart Home (e.g. HomeAssistant or IO Broker).
No permanent backlight On Display that disturbs your sleep. Just a brillant E-Ink Display with outstanding contrast and some Buttons that you can feel when you swipe over with your plam. A lightweight Design with a perfect WAF Factor. Fits on your Desktop or on your wall. The device can be programmed, adapted, hacked, tinkered and individualised by YOU. You want to push boundries even further: Use Arduino and do a deep Dive in Ultra Low Power Mode. The Battery might run for Years with an intelligent Power Gateing.

Side View of WifiWallSwitch with EINK Screen and Design Buttons. Ambient Light OFF

Eight Ambient Light LEDs can give you a visual quick feedback if needed: Side View of WifiWallSwitch with EINK Screen and Design Buttons. Ambient Light ON

View of the components in HomeAssistant Side View of WifiWallSwitch with EINK Screen and Design Buttons. Ambient Light ON

What is under the hood: Main thing you see when you have a first look is the massive 2.7 " E-Ink Screen Customer VIEW of PCB of WifiWallSwitch

See it in Action here: https://twitter.com/USpizig/status/1747731234338336940

Hardware Specs:

  • 2.7" EInk Epaper with or without Touch Screen... other screens might work as well
  • ESP32 S3 Dual Core Microcontroller with USB OTG, Wifi & BT, Mass Storage Mode.
  • 8 X SK6812 Mini RBG LEDs
  • 8 X Hardware Buttons...REAL BUTTONS with clicks: No Touch Buttons that might not work if you have wet or dirty fingers
  • BOSCH BME680 for eCo2, Temperature, Humidity and Pressure Measurements
  • ST LSM6DSL Ultra Low Noise MEMS Gyro + Accel for Movement Detection and Earthquake Detection
  • INMP441 MEMS Microphone for Voice Assistant
  • Socket for MAX98357A I2S Class D Amplifier for Audio Output for Media Player
  • LDR Ambient Light Sensor: Detect the Ambient Light conditions in your room.
  • RTC1: TPL5110 for PowerGateing and low Standby Current
  • RTC2 Option: RV3028 C7 for Ultra Low RTC with Backup Cap lasts 3h
  • Optional: RFM95 LoRa Radio for Desaster Radio (Limitations: May not work together with Microphone)
  • Connector for KNX EIB Smart Home with Nano BCU
  • Connector for Your Own Ideas... Several free GPIOs
  • Switch for adapting to Waveshare/Gooddisplay EINK Display
  • All SMD components have a size 0603 or larger to enable easier soldering/Tinkering.

Underneath the EINK Screen is a placeholder for an optional RFM95/RFM98 Long Range Communication Module. This Module works with LoRa, FSK or other wireless standards. Up 15km Range of communication can be established with this module. Perfect as well for decoding your Bresser Weather Station and translate it to MQTT for your Smart Home.

PCB Customer View of WifiWallSwitch without EINK Screen

The other side of the PCB looks like this: Parts view of PCB  without SMD parts soldered

If you scroll further down you may see a picture of the TOP View of the PCB On the Top side of the PCB you see the Main Processor: This is an ESP32-S3 and various sensors:

  • Ultra Low Power RTC RV3028 [U9] for Low Power Battery Operation wakeup
  • Ultra Low Noise MEMS LSM6DSL [U8] 6 Axis GYRO+ACCEL + Tap Detection
  • Ultra Low Power Gateing Chip TPL5110: [U6]
  • Bosch BME680 for Air Quality Measurements [U5]
  • EInk Screen connector
  • Touch Screen connector [JP5]
  • Space for the oprional INMP441 Microphone [J5], [J9]
  • 8 RGB LEDs which can be adressed individually. Perfect for Quizshow effects. Ideal for Audiovisual feeddback
  • 9 Click Buttons. [SW1-SW9] - SW5 is hidden under the screen and can be used as Physical Click Button
  • Space for Several Connectors[J2, J8, J3] to plugin even more modules like Audio Module for an Media Player or Voice Assistant Feedback.

And another view with all the SMD Parts simulated: TOP PCB View of WifiWallSwitch

What is currently working:

Hardware:

  • Currently the HW BringUp is about to finish.
  • The basic Hardware is up and running stable.
  • Eink, Microphone, LEDs, Buttons, BME680. LSM6 Gyro work well.

The optional Modules are still under test

  • TP4065 Lipo Battery Charger Circuit
  • Battery Switchover Circuit once Battery is fully charged to avoid Battery damage due to overcharging
  • TPL5110 Low Power RTC Module
  • RV3028 Low Power Module
  • Long Range Communication Module RF Module RFM95
  • 230V Power Converter to 5V/3.3V for Wall Mode.

Software Sketches working: Arduino:

  • Flashing the Device over USB with you Chrome Web Browser: https://web.esphome.io/
  • Logging over USB USBSerial
  • EInk Basic Update of content
  • EInk Partial Update Dynamic Update of content
  • Read out BME680 Data (Temp, Humidity, Pressure, eCO2, IAQ,...)
  • Microfone: Calculate loudness in dBA
  • Audio Player: Playback MP3, TTS via Google and Webradio
  • 8 Buttons can be detected.
  • 8 RGB LEDS whcih can be adressed individually
  • LSM6 Gyro: Read out of Basic Values Roll, Pitch, Yaw
  • All typical 24pin EInk Displays which are mentioned on GxEPD2: https://github.com/ZinggJM/GxEPD2/tree/master
  • Flashing & Logging the Device over 2.54mm Socket with a dedicated Flash Adapter

Home Assistant with ESPHome Integration:

  • Flashing the Device over USB with you Chrome Web Browser: https://web.esphome.io/
  • Logging over USB with ESP Home
  • Display Messages on EInk Display
  • Voice Assistant: Switch on Light,.... you name it
  • Media Player: Playback of TTS Messages, Audio Files,Web Radio
  • Keyboard: 8 Buttons are detected individulally
  • RGB LED Control SK6812 Mini
  • Flashing & Logging the Device over 2.54mm Socket with a dedicated Flash Adapter

Known ESPHome Issues right now:

  • Voice Assistant has some issues if used together with Media Player. Leads to Stuttering Audio once Media Playback is started.
  • No LSM GYRO integration
  • 2 GPIOS used to much due to Keypad component of ESPhome only supports 4x4 Matrix Keyboards
  • GPIO8 can not be used for Keyboard Fake Keys.

Known Issues on Arduino:

  • LSM6 Gyro has some issues with BME680 BSEC: Leads to constant output of 500 ppm

What is planned:

  • EInk Touch Screen 2.7 'integration of Good Display https://www.good-display.com/product/259.html
  • A Touch screen https://www.good-display.com/product/259.html
  • Read out data of a Weather Station Bresser 6in1 We<ther Station and forward to MQTT with an RFM95 Chip.
  • LDR for Light Detection. Monitoring of Enviroment Data
  • Ultra Low Power RTC RV3028 for Low Power Battery Operation wakeup
  • Ultra Low Noise MEMS LSM6DSL GYRO+ACCEL for Earthquake Detection-> https://github.com/biagiom/QuakeSense
  • Ultra Low Noise MEMS LSM6DSL for movement detection and Tap Detection
  • Ultra Low Power Mode TPL5110: Let the Processor sleep with TPL5110 Power Gateing and shut down all that is battery draining.
  • Bosch BME680 for Air Quality Measurements
  • 9 physical buttons for moments where you do not wnat to use a touchscreen
  • KNX Integraion with Nano BCU
  • LORA:
    • Transmit Air Quality Data on a regular Basis (every 15min)
    • Transmit Data when Air Quality changes dramatically
    • Transmit Data when Air Quality changes dramatically
    • Recieve Commands to Switch on / off ext Relay
    • Switch to Desaster Mode and search for BLE Heart Rate Devices nearby and sent this data via LoRa

WARNINGS This is my hobby. Please do NOT be a DIRTY COPY CAT and make your own comercial product out of it. See License before you copy anything out of it.

If you use this Hardware, Software, Code or schematics you agree that any harm, damage, burn or injuries are YOUR RESPONSIBILITY! The Author may not be held liable for any damage that might happen if you try this code out or use this product or parts of it. Legal validity of this disclaimer: This disclaimer is to be regarded as part of the internet publication which you were referred from. If sections or individual terms of this statement are not legal or correct, the content or validity of the other parts remain uninfluenced by this fact.

Referrals and links The author is not responsible for any contents linked or referred to from his pages - unless he has full knowledge of illegal contents and would be able to prevent the visitors of his site from viewing those pages. If any damage occurs by the use of information presented there, the author might not be liable. Furthermore the author is not liable for any postings or messages published by users of discussion boards, guest books or mailing lists provided.

Arduino: Before you compile please ensure you modify all your credentials and used sensors in "credentials.h" which have been marked REPLACEMEUSER This Source Code is provided "AS it is" . Also ensure you have installed the following libs: Code Sources that influenced this Source Code and which libaries you may need:

https://github.com/knolleary/pubsubclient/blob/master/examples/mqtt_auth/mqtt_auth.ino https://randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/ RGBW for SK6812: Original code by Jim Bumgardner (http://krazydad.com). Modified by David Madison (http://partsnotincluded.com). Extended by Christoph Wempe https://gist.github.com/CWempe?direction=desc&sort=created

Adafruit BME/BMP280/SGP30 sketches/libs Please consider buying their products due to their great work in Arduino libs https://github.com/adafruit/Adafruit_SGP30 https://github.com/adafruit/Adafruit_BMP280_Library

Bosch BME680 BSEC Lib https://github.com/BoschSensortec/BSEC-Arduino-library

Andreas Spiess OTA Sketch for OTA Update of the ESP32 over Wifi https://github.com/SensorsIot/ESP32-OTA

Knolleary pubsubclient /pubsubclient/blob/master/examples/mqtt_auth/mqtt_auth https://github.com/knolleary/pubsubclient

Fastled https://github.com/FastLED/FastLED

Settings for Jumpers & Solder Bridges: Jumper:

  • JP2 = This MUST BE OPEN! if USB Connected & 3.3V Prog
  • JP3 = GYRO INT Emergency CUT: If you want no more Interupts from the Gyro.
  • JP4 = MAINS Mode / No TPL5110 Mode. Disable the RTC for Power Gateing. Use for permanent connection to USB
  • JP5 = RV3028 INT CUT for RFM95 OP. Must be cut if an RFM Long Range RF Mode is installed
  • JP6 = Switch of Input Power Supply Voltage
  • JP5 = Solder for RFM95 OP & Cut JP5

I²C Address of onboard Devices.

  • 0x52 RV3028
  • 0x6A LSM6DSL
  • 0x77 BME680

Testpoints for soldering and Tinkering: TP1 EPD VCOM -> Debuging of EINK TP2 CLK RV3028 TP3 INT RV3028 TP4 EPD PREVGL -> Debuging of EINK TP5 EPD PREVGH -> Debuging of EINK TP6 TPL DNE -> Debuging of EINK... Connect to a GPIO for Ulatra Low Power sleep and fire a 1 whenever you want to Deep Sleep on that GPIO TP7 SHOT RV3028 -> Wakeup Pin for RTC2 TP8 RFM CS -> Soldering Pin needed for RFM95 TP9 JTAG/Done TP10 RFM ANT -> Connector for 868 MHZ Antenna TP11 TPL SHOT -> Wakeup Pin for TPL 5110 RTC TP12 GYRO INT2 TP13 GYRO INT1 TP14 TOUCH RES -> Touch Controller Reset Pin. Hopefully never needed TP15 BAT CHRG -> Battery charg Pin. Hopefully never needed.

Known HW Limitations:

  • LDR is not working when WIFI is ON. Stupid ESP32-S3 Limitations ADC2 is not working if WIFi is on
  • HW Buttons placed 90° wrong. Wrong Pinout matching

TODO:

  • RV_3028 INT ist connected with LORA RFM MISO. No paralell usage possible
  • INMP441 Mic ist connected with LORA RFM95. No paralell usage possible
  • USB ESD Diodes missing
  • SK6812 is an input of KNX connector at the same time?
  • Rerouting of SK6812 necesssary. Not possible to GPIO 0... otherwise board will not start.
  • Done Pin TPL5110 not routed to ESP32 IO3. No Power Shutdown without a Solder Bridge

Parts

159
QtyValueFootprintReferences
1510KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R4, R5, R8, R9, R10, R12, R14, R15, R17, R18, R19, R25, R28
121uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C3, C4, C5, C6, C7, C8, C14, C15, C16, C17
9SW_Pushtp4056:SW-SMD_4P-CORR-L5.2-W5.2-P3.70-LS6.4SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9
8SK6812MINI-Etp4056:MX_SK6812MINI-ED5, D6, D7, D8, D9, D10, D11, D12
6100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC13, C19, C20, C21, C22, C26
610kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR34, R35, R36, R37, R38, R39
6MBR0530Diode_SMD:D_SOD-123D1, D2, D3, D4, D13, D14
44.7uF 50V_USCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C10, C11, C12
4Jumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP2, JP3, JP5, JP11
4Jumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP4, JP8, JP12, JP14
4N.C.Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR16, R24, R29, R30
4VCOMTestPoint:TestPoint_Pad_D1.5mmTP1, TP7, TP9, TP13
35k11Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7, R13, R27
3Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2, J3, J8
20.47RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR11, R40
20RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR21, R22
2BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU13, U16
2Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5, J9
2Jumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP9, JP13
2Jumper_3_Bridged12Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP6, JP7
2MountingSwitchbaer_klein:baerkleinH3, H4
2MountingSwitchMountingHole:MountingHole_3.2mm_M3H1, H2
2SIQ-02FVS3tp4056:SW-SMD_SIQ-02FVS3_1U12, U14
2Si2301Package_TO_SOT_SMD:SOT-23Q2, Q3
1100KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR31
1100KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR33
1100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC25
110uHtp4056:IND-SMD_L4.0-W4.0L1
1220KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6
1220nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC24
1220uFCapacitor_Tantalum_SMD:CP_EIA-3528-21_Kemet-BC18
1330kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR32
13RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3
14410AI1VZMOD4410:ZMOD4410AI1VU15
14u7FCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC23
1800KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR26
1AFC24-S24FIC-00tp4056:FPC-SMD_P0.50-24P_QCHF-SM-H2.0J1
1Antenna_ShieldConnector_Coaxial:U.FL_Molex_MCRF_73412-0110_VerticalAE1
1BME680tp4056:LGA-8_L3.0-W3.0-P0.80-TRU5
1CLKOUTTestPoint:TestPoint_Pad_D1.5mmTP2
1Conn_01x02_PinConnector_PinHeader_2.00mm:PinHeader_1x02_P2.00mm_VerticalJ10
1Conn_01x02_PinConnector_JST:JST_GH_SM02B-GHS-TB_1x02-1MP_P1.25mm_HorizontalJ11
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ7
1Conn_01x05_PinConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ6
1Conn_01x07_PinConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ12
1DONETestPoint:TestPoint_Pad_D1.5mmTP6
1DRV8830DGQRPackage_SO:HVSSOP-10-1EP_3x3mm_P0.5mm_EP1.57x1.88mmU17
1ESP32-S3-WROOM-1-N8tp4056:ESP32-S3-WROOM-1U1
1Jumper_2_OpenJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP10
1KoreanHropartsElecTYPE-C-31-M-12tp4056:USB-C_SMD-TYPE-C-31-M-12U3
1LDR03OptoDevice:R_LDR_10x8.5mm_P7.6mm_VerticalR23
1LSM6DSOWTRPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU8
1M+TestPoint:TestPoint_Pad_D1.0mmTP16
1M-TestPoint:TestPoint_Pad_D1.0mmTP15
1MAX98357tp4056:TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5U10
1MMC5883MAPackage_LGA:LGA-16_3x3mm_P0.5mmU11
1Micro_SD_Card_Det_UStp4056:TF-SMD_XKTF-0803-0J13
1N.C.Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR20
1PREVGHTestPoint:TestPoint_Pad_D1.5mmTP5
1PREVGLTestPoint:TestPoint_Pad_D1.5mmTP4
1RESEtp4056:SW-SMD_G-SWITCH_MK-12C02-G015JP1
1RESET_TOUCHTestPoint:TestPoint_Pad_D1.5mmTP14
1RFM95W-868S2RF_Module:HOPERF_RFM9XW_SMDU7
1RT9013Package_TO_SOT_SMD:SOT-23-5U2
1RV3032rv3028:rv3028U9
1SHOTTestPoint:TestPoint_Pad_D1.5mmTP11
1SHOT INTestPoint:TestPoint_Pad_D1.5mmTP8
1SHOT1TestPoint:TestPoint_Pad_D1.5mmTP3
1Si1308Package_TO_SOT_SMD:SOT-323_SC-70Q1
1TP4065tp4056:SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BRU4
1TPL5110Package_TO_SOT_SMD:SOT-23-6U6
1TochConntp4056:FFC-SMD_6P-P0.50_FH34SRJ-6S-0.5SHJ4
1VCOMTestPoint:TestPoint_Pad_D1.0mmTP12
1VCOMConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP10
1jogdialtp4056:JogWheelJOG

Questions

How big is the S3-27-epaper touch PCB?

It measures 65.4 × 68 mm and has 2 copper layers, 0.57 mm thick.

What parts does the S3-27-epaper touch use?

159 parts, built around the ESP32-S3-WROOM-1-N8, BME280, BME680 and SIQ-02FVS3. 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.

Where can I download the S3-27-epaper touch KiCad files?

From the Uspizig/WifiWallSwitch repository on GitHub, at the commit this page was made from: the board is Hardware-REV2/S3-27-epaper-touch.kicad_pcb and its schematic Hardware-REV2/S3-27-epaper-touch.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the S3-27-epaper touch design in my own project?

Its repository states no licence, so its author keeps all rights: ask Uspizig before reusing the design.

Similar boards

  • 2 layers44.5 × 31.7 mmS3Basic, the printed circuit board in 3D

    S3Basic

    Uspizig/BTSpeaker

    Small replacement PCB for a BT Speaker

    103 parts
  • 2 layers25.9 × 44.2 mmM5StampC3, the printed circuit board in 3D

    M5StampC3

    Uspizig/M5StampC3-EINK

    Eink Board Addon for M5Stack Stamp C3 for Eink Waveshare Displays

    38 parts4
  • 4 layers70.2 × 71 mmC3-27-epaper touch, the printed circuit board in 3D

    C3-27-epaper touch

    martinberlin/bistable-smart-switch

    An epaper switch project with 2 PCBs, controller+touch, and 220AC to 3DC with Relay (Latch or solid-state)

    64 parts32Apache-2.0
  • 4 layers50.3 × 33 mm154-watch, the printed circuit board in 3D

    154-watch

    martinberlin/H-spi-adapters

    PCB design for SPI adapters (HATs)

    67 parts23
  • 4 layers83.4 × 42.1 mmH C3-ulp29, the printed circuit board in 3D

    H C3-ulp29

    martinberlin/H-C3-029-eink

    This is a joint project between Larry Bank and Fasani Corp with the purpouse to make an easy and unexpensive nRF52 BLE badge with a SPI 2.9", a QWIIC connector, and on board RTC

    54 parts5MIT
  • 4 layers53.5 × 33 mmH C6-ulp, the printed circuit board in 3D

    H C6-ulp

    martinberlin/H-C6-ulp

    ESP32C6 in a very low power design with a 24 pin FPC for a small SPI Epaper

    82 parts4GPL-3.0
  • 2 layers38 × 38 mmSyldra, the printed circuit board in 3D

    Syldra

    ambraglow/syldra

    87 parts1CERN-OHL-W-2.0
  • 4 layers74.1 × 130 mmBadge secsea V1 1, the printed circuit board in 3D

    Badge secsea V1 1

    cchaloin/HIP_SecSea

    Hack In Provence badge for SecSea

    132 parts