

Universal v2
Multi node heater control on Nordic BTLE
- Size
- 53.3 × 39.1 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 30
- Nets
- 114
- Pads
- 229
- Tracks, vias
- 342, 34
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 24 Mar 2019
- Updated
- 31 Jan 2020
Overview
Universal v2 is an open-source printed circuit board by TheTosters, from the TheTosters/HeaterControl repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 53.3 × 39.1 mm with 30 parts on 114 nets, routed with 342 tracks and 34 vias.
It is built around the BME680, DS18B20 and BL654. Its parts include 8 resistors, 6 capacitors, 6 ICs, 6 connectors and 2 diodes.
Main components
3BME680
LGA-8-40℃~+85℃ 0.12hpa 0.6hpa 1.3pa/K 1.71V~3.6V 150nA 30Kpa~1.1bar I2C、SPI Temperature Sensor LGA-8 Pressure Sensors ROHSBosch SensortecPressure SensorsDS18B20
TO-92-55℃~+125℃ 12bit 3V~5.5V 750ms Single-bus ±0.4℃ TO-92 Temperature Sensors ROHSUMWTemperature SensorsBL654
LGA-70_10x15mmUncategorisedEzurio
README
README.mdIMPORTANT
Toolchain:
- gcc-arm-none-eabi-8-2018-q4-major, or
- gcc-arm-none-eabi-8-2019-q3-update-linux
NRF SDK:
- nRF5_SDK_15.2.0_9412b96
You also need nrfprog tools and small patch for SDK from CMSIS. But this is handled by preapre_env.sh
To build & run tests...
This is super-glue solution, so your eyes will bleeed... It will use host compiler (not cross-compiler) to build host based tests. It is NOT ment to test all, only most complicated logic. So to have test build and run you have to:
cmake .. -DBUILD_TESTS=ON
make allthen you can call for example:
./test/time_schedule_tests
Manual patching SDK
If you set C++ to use C++17 dialect then compilation fails :P You have to manualy patch NordicSDK (15.2) and upgrade CMSIS to have things working go here Arm CMSIS 5 on Github and download following files which should be placed here:
| CMSIS file | Destination | |
|---|---|---|
| libarm_cortexM4lf_math.a, libarm_cortexM4l_math.a | > | nordic_SDK_15.2/components/toolchain/cmsis/dsp/GCC |
| arm_cortexM4lf_math.lib arm_cortexM4l_math.lib | > | nordic_SDK_15.2/components/toolchain/cmsis/dsp/ARM |
| CMSIS_5-develop/CMSIS/Core/Include | > | nordic_SDK_15.2/components/toolchain/cmsis/include |
clean & build all should work
Variants
This repository contains several firmware variants. It can be used by setting proper defines for CMake, most easy way to do it is to execute ccmake. Below is list of build variants and their descriptions:
| Variant | Entry point | Description |
|---|---|---|
| Indoor SHT_ADV | main_indoor_1.cpp | BT: Advertisement Sensor: SHT30 Buttons: None LED: None Display: None |
| Indoor SHT_GATT | main_indoor_1a.cpp | BT: GATT Sensor: SHT30 Buttons: None LED: None Display: None |
| Indoor DS_FULL | main_indoor_1.cpp | BT: Advertisement Sensor: DS18B20 Buttons: yes LED: None Display: Yes |
Origins
first instruction taken from: https://github.com/Polidea/cmake-nRF5x It is constantly changed and improved (or downproved :P)
Parts
30| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 10 | Resistor_SMD:R_0402_1005Metric | R1, R2, R3, R6, R7, R8 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C1, C3, C4, C5 |
| 2 | 10uF | Capacitor_Tantalum_SMD:CP_EIA-2012-12_Kemet-R | C2, C6 |
| 2 | 4,7k | Resistor_SMD:R_0402_1005Metric | R4, R5 |
| 2 | BME680 | Package_LGA:Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumbering | U2, U6 |
| 2 | Battery | CR2032_BatHolder:Cr2032-Holder | B1, B2 |
| 2 | DS18B20 | Pads:3Pads | J1, J4 |
| 2 | EXT_PORT | Pads:5xPad | J3, J5 |
| 2 | LED_BARG | Everlight:Everlight_19-237_R6GHBHC-M07_2T | D1, D2 |
| 2 | PROG_PORT | Pads:5xPad | J2, J6 |
| 2 | SHT30-DIS-B | SHT30-DIS-B:DFN250X250X100-9N | U3, U5 |
| 1 | BL654 | Laird:BL654 | U4 |
| 1 | HolyIot-18010 | HolyIot:HolyIot_18010 | U1 |
More from TheTosters/HeaterControl
4- 2 layers48.5 × 36.8 mm

- 2 layers32.8 × 24.9 mm

- 2 layers35.3 × 30.2 mm

- 2 layers31.5 × 27.2 mm

Similar boards
- 2 layers54 × 54 mm

- 2 layers86 × 80 mm

Stromwaechter
generationmake/Stromwaechter_PCB
PCB with current sensors for 12 V battery systems
132 parts - 2 layers100 × 100 mm

PcbV10
klaus-liebler/labathome
Der kleine Bruder von lab@home. Ermöglicht das Experimentieren mit PT1...PTn-Gliedern, die intern als RC-Kombination (entkoppelt über Operationsverstärker) ausgeführt sind.
221 parts5MIT - 2 layers70 × 70 mm

SensactUp4
klaus-liebler/sensact
Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…
147 parts4Apache-2.0 - 2 layers48 × 49 mm

Sensors
Th3Link/homeautomation
Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.
58 partsGPL-3.0 - 2 layers65 × 30 mm

- 2 layers64 × 50 mm

EverAliveSensor PCB
jfm92/everAliveSensor
Solar-powered BLE environmental sensor (temp, humidity, pressure) with a 50F supercapacitor — potentially infinite lifetime, 19-day dark autonomy. ESP32 + BME680. Experimental.
54 parts28 - 2 layers43 × 43 mm

Questions
How big is the Universal v2 PCB?
It measures 53.3 × 39.1 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Universal v2 use?
30 parts, built around the BME680, DS18B20 and BL654. 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 Universal v2 KiCad files?
From the TheTosters/HeaterControl repository on GitHub, at the commit this page was made from: the board is hardware/universal_v2/Universal_v2.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Universal v2 design in my own project?
Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).