Post

Starting Mark 1 ESP32 Weather Station

Starting Mark 1 ESP32 Weather Station

While I’m still waiting for the PCB for Mark 0 Rev1 to arrive, I figured — why not start working on Mark 1 already?

Yes, the naming convention might start sounding confusing (Mark 0 Rev1 vs Mark 1 Rev0 coming soon?), but hey — that’s engineering!


📃 Let’s Add More Features!

This time, I’m going full modular. I’ll be using a lot of modules, probably for the last time — future iterations will reduce the number of off-the-shelf boards and become more integrated.

🎯 Hardware Overview for Mark 1

ComponentDescription
MicrocontrollerESP32 DevkitC
Temperature & Humidity SensorBME680
Light SensorBH1750
RTC ModuleDS3231
Motion Sensor (PIR)HC-SR501
Battery18650 Li-ion
Battery Management SystemTP4056 (with protection)
DisplayILI9488 3.5” TFT Touchscreen
Enclosure3D Printed, wall-mounted

📌 ESP32 DevKitC 30-Pin GPIO Pin Map

Pin budget is tight for this application, but according to this map, it should work out — just barely. R&D is full of surprises though, so… fingers crossed 🤞.

Peripheral / ModuleFunctionSuggested GPIO(s)Notes
ILI9488 DisplaySPI MOSIGPIO23SPI Bus
 SPI CLKGPIO18SPI Bus
 SPI CS (TFT)GPIO15Chip Select
 D/CGPIO2Data/Command control
 RESET (opt.)GPIO4Can tie high
 Backlight ControlGPIO13PWM capable
Touch Controller (XPT2046)SPI MISOGPIO19SPI MISO shared
 Touch CSGPIO5Separate CS
BME680I2C SDAGPIO22Shared I2C
 I2C SCLGPIO21Shared I2C
BH1750I2C(Shared)Same bus as BME680
DS3231 RTCI2C(Shared)Same bus as BME680
PIR Sensor (HC-SR501)Digital InputGPIO33Input-only pin
Button #1Digital InputGPIO25With pull-up
Button #2Digital InputGPIO26Optional
Status LEDDigital OutputGPIO27Any GPIO
Battery Voltage SenseAnalog Input (ADC1)GPIO35via voltage divider
Expansion / Future UseBreakout HeaderGPIO12, 14, 16, 17, 34Available

🧠 Visual Map:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            +--------------------------+
3.3V      --|  EN             GPIO23   |-- MOSI (TFT)           
          --|  VP             GPIO22   |-- I2C SDA (BME680, etc.)
          --|  VN             GPIO1    |-- TX0 (USB Serial)
Free      --|  GPIO34         GPIO3    |-- RX0 (USB Serial)
ADC       --|  GPIO35         GPIO21   |-- I2C SCL
Battery   --|  GPIO32         GPIO19   |-- MISO (Touch)
PIR       --|  GPIO33         GPIO18   |-- CLK (TFT)
Button1   --|  GPIO25         GPIO5    |-- Touch CS
Button2   --|  GPIO26         GPIO17   |-- Free / Expansion
StatusLED --|  GPIO27         GPIO16   |-- Free / Expansion
Free      --|  GPIO14         GPIO4    |-- RESET (TFT)
Free      --|  GPIO12         GPIO2    |-- D/C (TFT)
Backlight --|  GPIO13         GPIO15   |-- TFT CS
GND       --|  GND            GND      |-- GND
5V        --|  VIN            3V3      |-- 3.3V        
            +--------------------------+

🛠️ End Goals for Mark 1

This isn’t just a prototype — I want this to start feeling like a product. So:

  • ✅ Use JLCPCB + PCBA services for at least partial assembly
    I love soldering, but I also want to learn how to order production-ready PCBs. This will help me scale things in the future.

  • ✅ All-in-one neat and compact package

  • ✅ Mounted in a custom 3D printed case — VEGA style
    (i.e. wall-mounted, and easy to take off for charging or updating)

  • ✅ Expandable design — all unused GPIOs available via pin headers

  • ✅ Possibly add an external weather node
    Using another BME680 + ESP32 via Zigbee or MQTT to report outside data wirelessly.


Next step: ordering all the modules from China and preparing to test and integrate them as they arrive.

Stay tuned for unboxings, wiring, tests, and all the fun that comes with it!

This post is licensed under CC BY 4.0 by the author.