Skip to the content
2 layers59.8 × 61.5 mmSchematics w display, the printed circuit board in 3D

Schematics w display

xtrinch/esp32s2-bme280-webusb4

A web-usb enabled application running on ESP32S2 supporting displaying sensor data on a Waveshare e-paper display / sending sensor data to the cloud

Size
59.8 × 61.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
43
Pads
74
Tracks, vias
86, 2
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
19 Apr 2021
Updated
22 Oct 2022

Overview

Schematics w display is an open-source printed circuit board by xtrinch, from the xtrinch/esp32s2-bme280-webusb repository on GitHub. It is a 2-layer board of 59.8 × 61.5 mm with 11 parts on 43 nets, routed with 86 tracks and 2 vias.

Its parts include 5 connectors and 2 switches. It belongs with the lEDs and displays and sensors and measurement boards and the ESP32 boards of this library.

README

README.md

esp32s2-bme280-webusb

Sends periodic bme280 humidity, temperature, pressure and battery voltage data from esp32s2 development board to sensor dashboard backend via Wi-Fi.

Is configurable via a web interface using webusb. Since the board uses native usb communication, the serial output will also be emulated via USB so it may not work as you would expect a regular serial connection - if it's configured wrongly, there will be no output in your serial monitor. If the board sleeps, when you connect it to USB, you will not be able to flash it. Board needs to be wide awake and listening to USB commands for flashing to work. When the board is connected to the computer - the neopixel of the esp32s2 will light up and the display should display PC instead of the usual measurements.

If you botch the code and manage to put it to sleep when on USB, boot the board into bootloader mode by holding the button BUT1 on the board when connecting to USB, then you will be able to flash via USB again.

Currently, this firmware can make it around 7 months on a 1200mA battery connected to the dev board. The board can be configured to send the measurements to the server once every N times via the parameter maxRtcRecords to optimize battery time.

Built with PlatformIO.

See also backend and frontend repo, or see it live with some sensor data from my living room.

Components

Additional things needed to assemble the PCB

  • PH2.0 8 pin connectors for the display (bent needle for the PCB)
  • min 2, max 4 2.0mm high spacers to mount the display above the ESP32S2, depending on how many sides of the display you want to fixate
  • PH2.0 2pin connector for the battery (if the battery doesn't already come with one)
  • bunch of male / female headers
  • 1x push button - right angled for RESET button
  • 1x push button - regular for BOOT button

Setup

  1. Have a sensor dashboard backend running (see https://github.com/xtrinch/sensor-dashboard-nestjs-backend) or use iotfreezer.
  2. remove the solder from LED1_ENABLE SMD jumper (i.e. open it) on the ESP32S2, because it consumes a large current
  3. solder the BAT_SENS and PWR_SENS jumpers on the ESP32S2, to be able to detect battery voltage levels
  4. Uncomment the part in main.cpp that routes VREF to a GPIO on the ESP32S2. Program the board, measure VREF and input it into import_env.py under REF_VOLTAGE (if it's e.g. 1.1, input 1100). This will be needed for accurate battery measurement and you cannot skip this step.
  5. Copy import_env.example.py to import_env.py and define your sensor dashboard url.
  6. Run pio run -t buildfs && pio run -t uploadfs to upload the icons the display uses for humidity/temperature
  7. While having your board plugged into the computer, reboot the board and configure it via the web interface (via webusb) of the sensor dashboard (iotfreezer).

Troubleshooting

If you cannot upload to your board on linux, input sudo chmod a+rw /dev/ttyUSB0.

To monitor across reboots, as uploading and monitoring does not work, use the following command on Linux: while [ true ]; do cat /dev/ttyACM0; done

To check out the usb descriptors, run lsusb -v. To check out the kernel logs for errors, run dmesg.

Convert icons

convert temperature-2-48.png -background white -alpha remove -alpha off -compress none -depth 24 -resize 48x48 temp-final.bmp

Production deploy

Make sure to turn off DEBUG to save power.

PCB

See schematics-w-display folder for full project. It was drawn in KiCad and it's a two sided PCB.

Image of Yaktocat

End product with casing

Casing is parametric and drawn in FreeCad 0.19. It is made to fit the above PCB. For FreeCad project, see casing-w-display folder.

Image of Yaktocat Image of Yaktocat

TODOs

  • use ULP to use power pin as ADC wakeup source
  • reference ADC voltage to parametrizable params?

Parts

11
QtyValueFootprintReferences
3MountingHole_3.2mm_M3_DIN965MountingHole:MountingHole_3.2mm_M3_DIN965 , ,
2Conn_01x21_Female_ESPConnector_PinHeader_2.54mm:PinHeader_1x21_P2.54mm_VerticalJ1, J3
1Bootloader_PushButton_Switch_THT:SW_PUSH_6mmSW1
1Conn_01x06_Female_BME280Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1Conn_01x06_Female_RS232_USBConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ5
1Conn_01x08_Female_DisplayConnector_JST:JST_PH_S8B-PH-K_1x08_P2.00mm_HorizontalJ4
1RST_PushButton_Switch_THT:SW_Tactile_SKHH_AngledSW2

The 10 most common of 11 parts.

More from xtrinch/esp32s2-bme280-webusb

1
  • 2 layers34.2 × 73.3 mmSchematics v2, the printed circuit board in 3D

    Schematics v2

    xtrinch/esp32s2-bme280-webusb

    A web-usb enabled application running on ESP32S2 supporting displaying sensor data on a Waveshare e-paper display / sending sensor data to the cloud

    3 parts4

Similar boards

  • 2 layers60 × 30 mmController, the printed circuit board in 3D

    Controller

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    11 parts3kApache-2.0
  • 2 layers103 × 30.5 mmTS Front Endcap, the printed circuit board in 3D

    TS Front Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    11 parts1.3kMIT
  • 2 layers26 × 30 mmExpansion Card, the printed circuit board in 3D

    Expansion Card

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    11 parts1.1kCC-BY-4.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    11 parts1kGPL-3.0
  • 2 layers10 × 20 mm2 connector Sensor Board, the printed circuit board in 3D

    2 connector Sensor Board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    11 parts915
  • 2 layersFet module, the printed circuit board in 3D

    Fet module

    ByteWelder/Decktility

    A handheld PC

    11 parts855CC-BY-SA-4.0
  • 2 layers47 × 33 mmSevensegment led display module, the printed circuit board in 3D

    Sevensegment led display module

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    11 parts803MIT
  • 2 layers42.5 × 36.8 mmDevboard, the printed circuit board in 3D

    Devboard

    basilfx/TRADFRI-Hacking

    Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.

    11 parts743CC-BY-4.0

Questions

How big is the Schematics w display PCB?

It measures 59.8 × 61.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Schematics w display use?

11 parts. 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 Schematics w display KiCad files?

From the xtrinch/esp32s2-bme280-webusb repository on GitHub, at the commit this page was made from: the board is schematics-w-display/schematic.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Schematics w display design in my own project?

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