Skip to the content
PCBKitNew board
2 layersPCB ESP32, the printed circuit board in 3D

Software to my 3D printed wireless weather station

Copper layers
2
Thickness
1.6 mm
Parts
28
Nets
28
Pads
102
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 5 (file 20171130)
Created
13 Jul 2019
Updated
9 Dec 2022

Overview

PCB ESP32 is an open-source printed circuit board by PaddyCube, from the PaddyCube/WirelessWeather repository on GitHub. It is a 2-layer board with 28 parts on 28 nets.

It is built around the ESP32-WROOM-32. Its parts include 9 capacitors, 8 resistors, 5 connectors, 3 ICs and 1 diode. It belongs with the home automation and IoT boards and the ESP32 boards of this library.

Main components

1

README

README.md

Description

Build your own Wireless Weather station. This station includes:

  • Temperature
  • Humidity
  • Pressure
  • Rain Level
  • Wind Speed
  • Wind direction
  • Battery monitor

There are three versions available:

  • One uses ESP8622 module and some ATTINYs
  • one uses ESP32 and only one ATTINY for wind direction
  • one uses an Arduino Mini together with ATTINY24 for wind direction inside weather station and publish messages by 433 Mhz.

Code and schematics for any solution can be found in corresponding subfolders of folder 'code'

Operation mode

ESP8266

Wind speed and rain gets detected by pin change interrupt of ATTINYs. There is a power hungry device called WEMOS D1 mini pro, which deep sleeps most time. Every few minutes, it wakes up, collect data from other devices by I2C, send everything to your MQTT broker and sleeps again.

ESP32

Wind speed and rain gets count by ULP co-processor of ESP32 module. Every few minutes, ESP32 wakes from deep sleep, read count values from ULP, power up I2C devices and sends everything to your MQTT broker. Then it sleeps again.

Arduino Pro Mini

Because ESP devices are pretty power hungry, I wanted to build something more power saving. Therefore, a Arduino Pro Mini is used inside the weather station. Most time it sleeps and count wind and rain by interrupts. Every x minutes, it wakes up, power up I2C devices (BME280 and ATTINY24 for wind direction), reads values and send them using cheap 433MHz module. You find a working example based on ESP8266 module acting as a bridge between 433 Mhz and MQTT, so it receives data over 433MHz and publish them like before using MQTT.

Project site

You find all 3D printed parts at Thingiverse https://www.thingiverse.com/thing:3718078

A video is here https://youtu.be/xa0Dt5vs0kM

BOM

This package includes software for the following components

ESP8266

  • 2x ATTINY85 (wind speed, rain and battery level)
  • 1x ATTINY24 (wind direction)
  • Wemos D1 Mini pro (or other ESP8266 device)
  • 1x BME280
  • Please find a complete BOM in BOM.txt file

Moreover you need some device to program ATTINYs. This can be done with any Arduino device. There are plenty of tutorials out there.

ESP32

  • 1x ATTINY24 (wind direction, see folder Wireless Weather)
  • ESP32 (DOIT DevKit V1 with 30 GPIOs)
  • 1x BME280

For further information, please see readme file in ESP32 folder

Arduino Pro Mini

  • 1x Arduino Pro Mini
  • 1x ATTINY24 (wind direction)
  • 1x BME280
  • 1x 433MHz receiver, transmitter pair

You also need some code and device to receive the data and process them further. This can be done with any device, like Arduino, ESP8266, ESP32, Raspberry PI and so on. To get a complete working example, I added some code for ESP8266 (WEMOS D1 mini pro) which acts as some kind of bridge between 433MHz and MQTT, meaning it receives the data send by Arduino Pro Mini and send them using MQTT protocol.

Required Software

For ATTINYs, you need this package
https://github.com/SpenceKonde/ATTinyCore
https://github.com/rambo/TinyWire

For ESP8266 and ESP32, I used this one
https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://github.com/knolleary/pubsubclient
https://github.com/adafruit/Adafruit_BME280_Library

When using Arduino Pro mini, you need these packages as well
https://github.com/rocketscream/Low-Power
https://github.com/PaulStoffregen/RadioHead
https://github.com/adafruit/Adafruit_BME280_Library

License


Copyright (c) 2019 by Patrick Weber

Private-use only! (you need to ask for a commercial-use)

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Private-use only! (you need to ask for a commercial-use)

Parts

28
QtyValueFootprintReferences
41uF (ceramic)Capacitor_THT:CP_Radial_Tantal_D4.5mm_P5.00mmC2, C3, C6, C7
34.7uFCapacitor_THT:CP_Radial_D8.0mm_P5.00mmC1, C4, C5
20.1uFCapacitor_THT:CP_Radial_Tantal_D4.5mm_P5.00mmC8, C9
210MResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6, R8
24k7Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2
2I2CConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ3, J4
2RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3, R4
120MResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5
15M2Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7
1BAT +Connector_JST:JST_XH_B2B-XH-AM_1x02_P2.50mm_VerticalGND2
1ESP32-WROOM-32PCB_ESP32:ESP32DevKitU3
1MCP1700-3302E_TO92 3.3VPackage_TO_SOT_THT:TO-92_InlineU2
1MCP1702-5002E_TO92 5VPackage_TO_SOT_THT:TO-92_InlineU1
1RainConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ7
1SB 5100Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1
1Solar VCCConnector_JST:JST_XH_B2B-XH-AM_1x02_P2.50mm_VerticalGND1
1WindSpeedConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ6
1WindVaneConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ5

Questions

What parts does the PCB ESP32 use?

28 parts, built around the ESP32-WROOM-32. 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 PCB ESP32 KiCad files?

From the PaddyCube/WirelessWeather repository on GitHub, at the commit this page was made from: the board is Schematics/PCB_ESP32/PCB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the PCB ESP32 design in my own project?

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

Similar boards

  • 2 layers24.1 × 36.2 mmEsp32miniBT, the printed circuit board in 3D

    Esp32miniBT

    asterics/esp32_mouse_keyboard

    ESP32 implementation for HID over GATT Keyboard and Mouse (Bluetooth Low Energy). Including serial API for external modules (similar to Adafruit EZKey HID)

    28 parts911GPL-3.0
  • 4 layers99.6 × 76.2 mmE TKT, the printed circuit board in 3D

    E TKT

    andreisperid/E-TKT

    open source embossed label maker

    110 parts481MIT
  • 4 layers46.8 × 34.8 mmSmartWatch V4, the printed circuit board in 3D

    SmartWatch V4

    Bellafaire/ESP32-Smart-Watch

    An open source smartwatch based on the ESP32 compatible with the Arduino IDE.

    74 parts258MIT
  • 2 layers90 × 76.5 mmLCDZapperPro, the printed circuit board in 3D

    LCDZapperPro

    charcole/LCDZapper

    Device for making light gun games playable on LCD TVs

    126 parts163
  • 2 layers57.2 × 35.1 mmMainBoard Rev2, the printed circuit board in 3D

    MainBoard Rev2

    lzrtag/LZRTag

    AVR-Based easily modifyable DIY Lasertag!

    70 parts111GPL-3.0
  • 2 layers85 × 56 mmHB RF ETH, the printed circuit board in 3D

    HB RF ETH

    alexreinert/PCB

    Some of my PCBs

    96 parts104
  • 2 layersSmp7c, the printed circuit board in 3D

    Smp7c

    likeablob/slow-movie-player-7c

    Yet another "Slow Movie Player" implementation with 7-color E-Paper module and ESP32.

    18 parts51MIT
  • 2 layers30.8 × 24.4 mmWii Bluetooth Replacement, the printed circuit board in 3D

    Wii Bluetooth Replacement

    JSnowden33/Wii-Bluetooth-Replacement

    This project is a full replacement for the Nintendo Wii's Bluetooth module. Emulation of the Bluetooth module is performed on the PIC32 based on rnconrad's emulator, while controller connectivity on the ESP32 is based…

    50 parts48GPL-3.0