Skip to the content
6 layers90 × 90 mmSolarDataLogger, the printed circuit board in 3D

Firmware for custom data logger for Victron MPPT charge controllers via the Ve.Direct port/protocol.

Size
90 × 90 mm
Copper layers
6
Thickness
1.65 mm
Parts
70
Nets
71
Pads
265
Tracks, vias
0, 0
Pours
1
Routed
Not yet
KiCad
KiCad 8.0 (file 20240108)
Created
19 Jan 2025
Updated
17 Feb 2025

Overview

SolarDataLogger is an open-source printed circuit board by brokebit, from the brokebit/SolarDataLogger repository on GitHub, published under the CC0-1.0 licence. It is a 6-layer board of 90 × 90 mm with 70 parts on 71 nets.

It is built around the ESP32-C6-WROOM-1-N8, CP2102N-A02-GQFN24R and TPS5430DDAR, with the RH-5000, HY2541WV-N-2X3P and LESD5D5.0CT1G among its other parts. Its parts include 17 resistors, 13 capacitors, 13 ICs, 13 diodes and 2 connectors. It belongs with the ESP32 and RISC-V boards of this library.

Main components

12

README

Readme.md

alt text

This repo has submodules

  • To clone: git clone --recurse-submodules -j8 REPO_URL
  • To pull latest versin: git pull --recurse-submodules

What is all this

Firmware for custom data logger for Victron MPPT charge controllers via the Ve.Direct port/protocol.

Features

  • Power via 9v-20v input or USB
  • ESP32-C6 RISC-V CPU
  • Wifi 6 support and provisioning credentials via BLE
  • Receive, parse, and publish data from a Victron MPPT controller
  • Publishes: panel voltage, battery voltage, panel current, battery current, serial number, etc
  • Publish data via MQTT in InfluxDB line protocol format
  • Onboard temperature and humidity sensors (AHT20)
  • Support for optional add on board with current sensor (INA226) and solid state relay (CMX60D10)
  • WS2812 LED for status information
  • CP2102N USB Uart for programing and logging
  • USB port direct to ESP32-C6
  • Remote control via MQTT command channel

Supported Victron MPPT Controllers

Supports both the smaller MPPT controllers that have load output and control:

  • MPPT 75/10
  • MPPT 75/15
  • MPPT 100/10
  • MPPT 100/20

Also support larger MPPT controllers without load output via a INA226 Current sensor on an add-on board:

  • MPPT 100/30
  • MPPT 100/50
  • MPPT 150/35
  • MPPT 150/45
  • MPPT 150/60
  • MPPT 250/70

The Details

This is a Platform IO project. Last tested with ESP IDF 5.3.1

  • /lib contains drivers and victron parser
  • /src contains main program

Edit platform.ini to set some global variables and config parameters.

  • INA226_PRESENT: Set this to one if you have a INA226 connected. Otherwise 0.
  • AHT20_PRESENT: Set this to 1 if you have a AHT20 connected. Otherwise 0.
  • SENSOR_LOCATION: Set this to any string you want. It will be included in the mqtt message. No more than 24 characters
  • SENSOR_TYPE: Set this to whatever you want. i.e. ESP32-C6 or ESP32-S3. No more than 24 characters

alt text

MQTT

Channels

  • Influx data is sent to MQTT_TOPIC
  • Command should be submitted to the channel named mac address + "-cmd" i.e. FFEEDDCCBBAA-cmd
  • Commands responses are sent to the channel named mac address. i.e. FFEEDDCCBBAA

Support remote MQTT Commands

  • ota - Perform an OTA Update
  • rbk - Roll back to previous version
  • rst - Reboot
  • png - Get a pong back
  • tmp - Get current temp in C
  • hum - Get current humidity
  • mem - Get free heap memory
  • ver - Get firmware version

OTA

  • Firmware is download via https from any URL. The firmware looks for a file that is the mac address in all caps.
  • Firmware URL is defined in : OTA_BASE_URL (without the filename)
  • Rememeber you need to configure partitions.csv 1mb partition is not enough.

WiFi Provisioning

  • To make a QR Code for provisioning use the following JSON string and fill in appropriate values: {"ver":"v1","name":"PROV_123456","pop":"abcd12345","transport":"ble"}
  • Use the mobile app called "ESP BLE Provisioning"
  • In menuconfig make sure that: Component config -> Bluetooth -> Bluetooth controller -> Controller Options is set to BLE not Dual Mode.

What can you do with it?

Grafana Dashboard Example

alt text

To Do

  • Fix math for INA226 current sensor and address twos compliment
  • CMX60D10 Relay Driver
  • Some way to configure it without recompiling
  • Redo design in KiCad instead of EasyEDA and add to repo
  • Finish add onboard with INA226 and CMX60D10
  • Code clean up. Comments, proper error handling, review memory managment, null point checks, etc
  • Add remote commands for reading voltage and current data
  • MQTT TLS Support

Done

  • WS2812 Driver
  • OTA Updates
  • Wifi Provisioning via BLE

Parts

70
QtyValueFootprintReferences
7RH-5000C5277086-TestPoint:TEST-TH_BD2.54-P1.4_REDU2, U4, U5, U9, U10, U11, U12
6LESD5D5.0CT1GC383211-LESD5D5:SOD-523_L1.2-W0.8-LS1.6-BID4, D5, D6, D8, D9, D10
6MountingHole_PadMountingHole:MountingHole_3.5mm_Pad_TopBottomH1, H2, H3, H4, H5, H6
510kResistor_SMD:R_0603_1608MetricR2, R3, R4, R12, R13
510nfCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C8, C9
45.1kResistor_SMD:R_0603_1608MetricR8, R9, R10, R11
310ufCapacitor_SMD:C_0603_1608MetricC4, C6, C7
320kResistor_SMD:R_0603_1608MetricR14, R15, R16
2100kResistor_SMD:R_0603_1608MetricR6, R7
210uFCapacitor_SMD:C_0603_1608MetricC10, C11
21N5819HW-7-FC82544-1N5819HW:SOD-123_L2.7-W1.6-LS3.7-RDD3, D7
2TS-1088-AR02016C720477-Button:SW-SMD_L3.9-W3.0-P4.45SW1, SW2
2TYPE-C 16PIN 2MD(073)C2765186-USBC:USB-C-SMD_TYPE-C-6PIN-2MD-073USB1, USB2
1100nfCapacitor_SMD:C_0603_1608MetricC13
11N4148WS_C917117C917117-1N4148WS:SOD-323_L1.8-W1.3-LS2.5-RDD2
11kResistor_SMD:R_0603_1608MetricR17
1220ufC125977-220uF-Cap:CAP-SMD_BD10.0-L10.3-W10.3-LS11.3-FDC5
12213932-32213932-3:22139323J2
12305908-22305908-2:23059082J1
13.24kResistor_SMD:R_0603_1608MetricR1
14.7kResistor_SMD:R_0603_1608MetricR5
14.7ufCapacitor_SMD:C_0603_1608MetricC12
1AHT20_C2757850C2757850-AHT20-Temp:SENSOR-SMD_L3.0-W3.0-P1.00-BRU6
1AMS1117-3.3_C347222C347222-AMS1117:SOT-223-4_L6.5-W3.5-P2.30-LS7.0-BRU1
1B340AC64982-B340A:SMA_L4.3-W2.6-LS5.1-RDD1
1CP2102N-A02-GQFN24RC969151-CP2102N:QFN-24_L4.0-W4.0-P0.50-TL-EP2.6U13
1ESP32-C6-WROOM-1-N8ESP32-C6-WROOM-1:XCVR_ESP32-C6-WROOM-1-N8U8
1FNR5040S220MTC167971-22uhInductor:IND-SMD_L5.0-W5.0L1
1HY2541WV-N-2X3PConnector_IDC:IDC-Header_2x03_P2.54mm_Vertical_SMDU7
1LBC847BDW1T1GC383191-LBC847BDW1T1G:SOT-363_L2.0-W1.3-P0.65-LS2.1-BRQ1
1RXDLED_SMD:LED_0603_1608MetricD11
1TPS5430DDARC9864-TPS5430DDAR:ESOP-8_L4.9-W3.9-P1.27-LS6.0-TL-EPU3
1TXDLED_SMD:LED_0603_1608MetricD12
1XL-5050RGBC-WS2812BC2843785-WS2812-LED:LED-SMD_4P-L5.0-W5.0-BL_XL-5050RGBCLED1

More from brokebit/SolarDataLogger

1
  • 6 layers90 × 90 mmSolarDataLogger AddOnBoard Template, the printed circuit board in 3D

    SolarDataLogger AddOnBoard Template

    brokebit/SolarDataLogger

    Firmware for custom data logger for Victron MPPT charge controllers via the Ve.Direct port/protocol.

    8 partsCC0-1.0

Similar boards

  • 4 layers30 × 65 mmESP32 HAT, the printed circuit board in 3D

    ESP32 HAT

    Rufilla/ESP32_HAT

    A Raspberry Pi HAT for the ESP32 C6

    69 parts1Apache-2.0
  • 4 layers88.8 × 70.3 mmGastroSlew FOC, the printed circuit board in 3D

    GastroSlew FOC

    murjo06/GastroSlew_PCB

    PCB deisng files for GastroScope, running FOC

    265 partsGPL-3.0
  • 4 layers45 × 30 mmPcb Crimp ER, the printed circuit board in 3D

    Pcb Crimp ER

    theopenguino99/esp32-qiyang

    ESP32 climbing training tool

    52 parts1MIT
  • 2 layers36.6 × 57.1 mmESP32 S3 devkit test, the printed circuit board in 3D

    ESP32 S3 devkit test

    FrWA14/KiCad8_ESP32S3_DevModule_wroom-1_DevelopementBoard

    Contient tout les fichier KiCad nécessaire pour faire une carte ESP32S3 avec un module Wroom-1.

    44 parts1
  • 2 layersMain pcb, the printed circuit board in 3D

    Main pcb

    ostev/keysynth

    An equation synthesiser

    299 parts
  • 2 layers59 × 88.5 mmKHNATH002 Power System, the printed circuit board in 3D

    KHNATH002 Power System

    Athenkosi-Khonzani/MEERKAT_Underwater_Ice_Detection_And_Avoidance-System

    MEERKAT is a small, low-cost Autonomous Underwater Vehicle (AUV) designed to detect and avoid sub-surface ice (frazil ice, brash ice, and submerged keels of icebergs) in turbid polar waters.

    45 parts
  • 6 layers152.4 × 94 mmESP32-Sequencer v0.2, the printed circuit board in 3D

    ESP32-Sequencer v0.2

    brokebit/PA-Sequencer-Hardware

    Sequencer for a Power Amplifier

    125 parts
  • 6 layers110.9 × 93 mmESP32-Rotator v0.2, the printed circuit board in 3D

    ESP32-Rotator v0.2

    brokebit/Rotator-ESP32-S3-Board

    Rotator Controller based on an ESP32-S3 micro and Clearpath Servos

    89 parts

Questions

How big is the SolarDataLogger PCB?

It measures 90 × 90 mm and has 6 copper layers, 1.65 mm thick.

What parts does the SolarDataLogger use?

70 parts, built around the ESP32-C6-WROOM-1-N8, CP2102N-A02-GQFN24R, TPS5430DDAR and RH-5000. 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 SolarDataLogger KiCad files?

From the brokebit/SolarDataLogger repository on GitHub, at the commit this page was made from: the board is hardware/SolarDataLogger/SolarDataLogger.kicad_pcb and its schematic hardware/SolarDataLogger-AddOnBoard-Template/SolarDataLogger-AddOnBoard-Template.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SolarDataLogger design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).