Homely WSN - Basic Board V2 (ESP32-S2)

1 year ago 1587
  • Description
  • Documents
  • BOM
  • Attachments
  • Members
  • Comments

Description

Homely WSN Basic Board V2 is an IoT board to collect environmental data (temperature, humidity, and pressure) and to push them to a centralized server through Wi-Fi. This is the enriched successor of the Basic Board V1, that improves different aspects:

  • energy efficiency (20uA during deep-sleep)

  • onboard recharge for single-cell Lipo battery

  • measurement of battery level based on voltage*

  • ESD protection

  • USB-C connector

  • Given the high non-linearity of the curve charge-voltage of Lipo battery, you will be able to provide only 3 battery states (i.e. high, medium, low).

Main components

  • Espressif ESP32-S2 (ESP32-S2-WROOM or ESP32-S2-WROOM-I)
  • Digital temperature and humidity sensor Sensirion SHT30
  • Digital temperature and pressure sensor Bosch BMP280
  • Reset and User buttons
  • 32.768Hz crystal oscillator
  • Switch ON/OFF
  • Low quiescent current LDO Microchip MCP1700T
  • Lipo recharger Microchip MCP73837
  • JST PH (2.0mm pitch) to connect the lipo battery
  • USB-C connector for power supply and to recharge the (optional) Lipo battery

Assembling

The entire board is manually assemblable, no stencil is required. Hot air gun will be necessary for BMP280, SHT30, MCP73837, and USB-C connector. Arduino sketches to test the PCB are available here.

Usage

Firmware upload

Since there is no USB-Serial to flash ESP32-S2, you need an external one. The 6 pins needed to flash the board are identified by PROG label on the PCB. You may use this programmer, designed to be pin-compatible with this board.

The firmware is under development, and it will be released after the first official release of Arduino core for ESP32-S2.

About versions and board name

Basic Board V2 is the evolution of the original Basic Board V1, which basically renew all the hardware expect for the sensors. Hence, given the differences, I have started a new indipendent project that has V2 in the name. However, these projects remain indipendent: when a project advances, it will continue with version 3, 4, 5,... but the name will not follow the versioning system. This project starts from version 2.0.0.

Changelog

  • 2.0.0 ✅: first version, I works but I would suggest to wait for next release that improve solderability
  • 3.0.0 ❔: work in progress, form factor will be changed

Versioning conventions

Each manufactured board must have a version. Version advancements are ruled accordingly to Semantic Versioning, similarly to what usually happens in software development.

To quickly identify the status of each version, I use emojis. The following list explains their meaning:

  • A White Heavy Check Mark (✅) means that it is successfully tested;
  • A Negative Squared Cross Mark (❎) means that it was almost successfully tested (the main functionalities are fine), but there are bugs affecting minor funcionalities;
  • A Warning Sign (⚠) means that the board is not usable out of the box but the bugs are fixable in DIY (decent) fashion;
  • A Cross Mark (❌) means that there are some problems that makes it unusable;
  • A White Question Mark Ornament (❔) means not tested.

Documents

Basic Board V2

Basic Board V2

BOM

ID Name Designator Footprint Quantity
1 DISABLE_LDO SJ3 PAD-JUMPER-2-NC_BY_TRACE_YES_SILK 1
2 SC12P-AVR SW1 SW-TH_SC12P-AVR 1
3 CHRG LED4 LED0603_RED 1
4 ESP32-S2-WROOM U1 ESP32-S2-WROOM 1
5 SHT30-DIS-B U2 DFN-8_L2.5-W2.5-P0.50-BL-EP 1
6 MCP1700T-3302E/TT U3 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR 1
7 USR_BTN BTN1 SW-SMD_L6.3-W3.6-P7.9 1
8 RST_BTN BTN2 SW-SMD_L6.3-W3.6-P7.9 1
9 Solder Jumper SJ1 SJ_2S 1
10 100nF C4,C9 C0603 2
11 4.7uF C10,C11 C0603 2
12 1uF C8,C30,C3,C1 C0603 4
13 1u C5 C0603 1
14 18pF C6,C7 C0603 2
15 22uF C2 C0603 1
16 SP0503BAHTG D4 SOT-143-4_L2.9-W1.3-P1.92-LS2.3-BL 1
17 LED-BLUE LED1 LED0603_BLUE 1
18 PWR LED2 LED0603_BLUE 1
19 JST_2-PIN_Female_Connector_Battery JST1 JST-PH-2-SMT-RA 1
20 1k R8,R20,R22,R5,R21 R0603 5
21 5.1k R11,R10 R0603 2
22 4.7k R6,R7 R0603 2
23 33k R1 R0603 1
24 10k R9,R4 R0603 2
25 10k (2) R2 R0603 1
26 1k R30 R0603 1
27 ENABLE_LDO SJ2 PAD-JUMPER-2-NO_YES_SILK 1
28 1206L050YR F1 F1206 1
29 MBR120VLSFT1G D3 SOD-123F_L2.8-W1.8-LS3.7-RD 1
30 STBY LED3 LED0603_GREEN 1
31 BSS84LT1G Q2 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR 1
32 MCP73837T-FCI/UN U6 MSOP-10_L3.0-W3.0-P0.50-LS5.0-BL 1
33 BMP280 U4 SENSOR-TH_BMP280-BL 1
34 32.768KHz X1 OSC-SMD_2P-L3.2-W1.5 1
35 USB-310F USB1 USB-C-SMD_20P-P0.50-L6.5-W8.9 1
36 JST_6-PIN_Female_Connector JST2 1X06 1.27MM HOLES HEADERS PINS 1

Attachments

None
Success
The owner does not allow comments in this project now

Comments (11)

lokiram369 Reply

Thanks and your project is simple and very helpful.

Thanks Fabiano for sharing your project. It is really helpfull for those of us who try lo learn by studying other projects.

Miraculix200 Reply

Does the MCP1700 deal well with the current spikes when sending data over wifi?


You may want to look into the XC6220 from Torex, which I'm using for my ESP32-S2: https://easyeda.com/Miraculix200/s2-tiny

Miraculix200 Reply

May I ask why you are using an SHT30 and a BMP280 instead of just using a BME280 (which can also sense humidity)?

FabianoRiccardi Reply

@Miraculix200 Yes, I had considered that alternative, but I was attracted by MCP1700 for its price and the low quiescent current. I had test a bit the board and it works. However, I want to test more this aspect. I will let you know.

FabianoRiccardi Reply

@Miraculix200 I prefer SHT30+BMP280 because temperature error is better (error: 0.3°C instead 0.5°C) and because I don't always need atmospheric pressure, in that case I can totally avoid BMP280. Furthermore, BME280 costs more than BMP280+SHT30 (price checked on LCSC). These are few personal considerations, but in general even BME280 is fine and it simplifies the design.

Miraculix200 Reply

@FabianoRiccardi  I found the MCP1700 works well with ESP-12F, so it'll probably work with the ESP32-S2 too. But I only tested it with reduced tx power. Anyway it should deal well with spikes up to 550mA: "As long as the average current does not exceed250 mA, pulsed higher load currents can be applied tothe MCP1700. The typical current limit for theMCP1700 is 550 mA (TA+25°C)."

FabianoRiccardi Reply

@Miraculix200 Exactly, I should test how long the spike last when the radio is continuously transmitting and receiving data.

FabianoRiccardi Reply

@fabiano.riccardi I have tested for 10 minutes a continuous exchange of data over UDP between 2 boards, no problem emerged. In the description I have liked the Github repository to the "test suite".

Miraculix200 Reply

@FabianoRiccardi  Here's a Olimex ESP32-S2 board with MCP1700. They're using 22uF caps on VIN and 3V3 though: https://github.com/OLIMEX/ESP32-S2-DevKit-LiPo

FabianoRiccardi Reply

@Miraculix200 Thank for point out that board! I suppose those guys had performed more testing than I could.

goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow