Skip to the content
4 layers450 × 45 mmChuck v1, the printed circuit board in 3D

OutDoor Data

Size
450 × 45 mm
Copper layers
4
Thickness
1.6 mm
Parts
150
Nets
131
Pads
300
Tracks, vias
3,666, 414
Pours
10
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
17 Nov 2025
Updated
2 Dec 2025

Overview

Chuck v1 is an open-source printed circuit board by Manish4268, from the Manish4268/OctoBoard repository on GitHub. It is a 4-layer board of 450 × 45 mm with 150 parts on 131 nets, routed with 3,666 tracks and 414 vias.

README

readme.md

DOI

Maximum Power Point Tracker for Research-Level Solar Cells

Overview

This repository documents the design, implementation, and operation of a massively parallel, low-cost Maximum Power Point Tracker (MPPT) for aging and degradation studies of perovskite solar cells. The system integrates custom-designed PCBs and software for efficient tracking and data logging.

NEW: v2.0 System - Production-ready system supporting 3 Raspberry Pis with up to 288 channels (72 samples). Features include configurable IV sweep intervals (1-1000 minutes), automated file transfer, persistent state management, optimized web dashboard, and automatic hardware detection for scalable deployment!

Features

Hardware

Octoboards (Custom-designed PCBs) - Source Measure Unit (SMU) functions

  • 8 channels per board
  • Modular and scalable design
  • Support for multiple boards via I2C addressing
  • Current System: 12 boards per Raspberry Pi = 96 channels
  • Total Capacity: 3 RPis × 96 channels = 288 channels

Measurement Chuck

  • Allows up to 10 substrates (40 solar cells on "University of Marburg" cell layout)
  • Aged in nitrogen atmosphere
  • Compact design optimized for standard solar simulators
  • Easy sample replacement without breaking atmosphere

Software v2.0

Dual-System Architecture:

  1. RPi System (rpi_system/)

    • Python-based control for 96 channels per RPi
    • Hourly automated IV sweeps
    • Real-time file transfer to Main PC
    • RESTful API for remote control
    • Sample configuration management (24 samples × 4 pixels)
    • Simulation Mode for development without hardware
  2. Main PC System (main_pc_system/)

    • Streamlit Dashboard - Web-based control interface
    • File Receiver - Automated data collection from RPis
    • Real-time monitoring of all 3 RPis
    • Data visualization (IV curves, power curves)
    • Sample management and assignment
    • Data browser with file listings

Key Capabilities:

  • ✅ 288 channels total (72 samples, 4 pixels each)
  • ✅ Configurable IV sweep intervals (1-1000 minutes per sample)
  • ✅ Automatic hardware detection (supports 1-12 Octoboards per RPi)
  • ✅ Persistent state management via status files
  • ✅ Optimized dashboard with pagination for 288+ channels
  • ✅ Production-ready deployment with systemd service
  • ✅ Comprehensive beginner's guide for Raspberry Pi setup
  • ✅ Hourly IV sweep generation (1 file per channel)
  • ✅ Automatic LAN-based file transfer
  • ✅ Organized data storage: SampleID/pixel/IV_timestamp.csv
  • ✅ Real-time dashboard monitoring
  • ✅ Simulation mode for Windows development
  • ✅ RESTful API control
  • ✅ Multi-board management

Integration

  • Full Raspberry Pi compatibility (tested on RPi 4)
  • Windows development support via simulation mode
  • Network communication (LAN, no internet required)
  • Modular and extensible architecture

Repository Structure

plaintext
├── docs/                                    # Documentation and images
├── hardware/                                # PCB designs and CAD files
│   ├── Measurement Chuck Housing CAD Design/
│   ├── Measurement Chuck PCB Design/
│   └── Octoboard PCB Design/
│   │   └── gerber.zip
│   ├── Octoboard PCB Design/
│   │   ├── DAC.kicad_sch
│   │   ├── octoboard.kicad_pcb
│   │   ├── octoboard.kicad_prl
│   │   ├── octoboard.kicad_pro
│   │   └── octoboard.kicad_sch
├── software/
│   ├── hardware/
│   │   ├── __init__.py
│   │   ├── channel.py
│   │   ├── constants.py
│   │   ├── i2c.py
│   │   ├── manager.py
│   │   ├── oboard.py
│   │   └── sdac.py
│   ├── tests/
│   │   ├── test_hardware.py
│   │   ├── test_logger.py

Documentation

1. Hardware

1.1 Octoboard

The Octoboard is a custom-designed PCB that forms the core of the MPPT system, providing capabilities for maximum power point tracking in solar cell testing and evaluation.

Key Components:

  • MCP23017: 16-bit I2C I/O expander for digital control
  • MCP4728: 4-channel DAC for voltage control
  • ADS1115: 16-bit ADC for precision measurement
  • LMV324: Quad operational amplifiers for signal conditioning
  • 74HC4051: Analog multiplexers for efficient channel selection
Octoboard PCB Layout
Component Specifications
ComponentTypeKey SpecificationsDatasheet
MCP4728DAC12-bit, 4-channel, I2CDatasheet
ADS1115ADC16-bit, 4-channel, I2CDatasheet
LMV324Op-AmpRail-to-rail, low powerDatasheet
74HC4051Multiplexer8-channel analogDatasheet
MCP23017I/O Expander16-bit, I2CDatasheet
System Architecture

The MPPT system is designed with a hierarchical structure:

  1. Central Raspberry Pi controller
  2. Multiple Octoboards (8 channels each)
  3. I2C communication backbone
  4. Integrated sample holder with thermal management
Octoboard PCB Layout
1.2 Measurement Chuck

The Measurement Chuck allows up to 10 substrates (40 solar cells on a "University of Marburg" cell layout) to be aged under a nitrogen atmosphere. Due to its compact design, up to eight measurement chucks can be fit in a Solaronix SOLIXON A-45 solar simulator.

Operation & Handling To replace the substrates inside a chuck:

  1. Disconnect the flat ribbon cables and nitrogen supply hoses (quick-connect couplings ensure that the remaining substrates stay in an N₂ atmosphere).
  2. Transfer the chuck to a glovebox, where the cells can be exchanged by loosening the screws as shown in the video below.
  3. Reinsert the newly equipped chuck into the sun simulator and attach it to the cables and supply hoses.

2. Software v2.0

Quick Start

System Components

1. Raspberry Pi System (rpi_system/)

  • Controls 96 channels (12 Octoboards)
  • Runs hourly IV sweeps automatically
  • Transfers data to Main PC via LAN
  • RESTful API for remote control

2. Main PC System (main_pc_system/)

  • Web dashboard (Streamlit) for control
  • File receiver for automated data collection
  • Real-time monitoring of all RPis
  • Data visualization and analysis

Installation & Setup

Main PC System
powershell
cd main_pc_system
.\start.bat  # Automatic setup and launch

Opens:

  • File Receiver at http://192.168.1.100:8000
  • Dashboard at http://localhost:8501
Raspberry Pi System
bash
cd rpi_system

# For actual hardware
python api_server.py

# For simulation/testing (Windows)
$env:OCTOBOARD_SIMULATION="True"
python api_server.py

Complete Documentation

System Capacity

MetricValue
Raspberry Pis3
Octoboards per RPi12
Channels per RPi96
Total Channels288
Samples per RPi24 (4 pixels each)
Total Sample Capacity72
IV Sweep FrequencyEvery 1 hour
Files Generated96 per hour per RPi

Network Configuration

DeviceIP AddressPortRole
Main PC192.168.1.1008000 (Receiver)Control center
Main PC192.168.1.1008501 (Dashboard)Web interface
RPi 1192.168.1.1018001Channels 0-95
RPi 2192.168.1.1028001Channels 0-95
RPi 3192.168.1.1038001Channels 0-95

Data Flow

text
┌─────────────┐
│   RPi 1-3   │ ──► Hourly IV Sweeps (96 channels each)
│ (Octoboards)│       │
└─────────────┘       │
                      ▼
              ┌──────────────┐
              │  Generate    │ ──► 4 CSV files per sample
              │  IV Files    │       (pixels a, b, c, d)
              └──────────────┘
                      │
                      ▼
              ┌──────────────┐
              │  HTTP POST   │ ──► Transfer over LAN
              │  to Main PC  │
              └──────────────┘
                      │
                      ▼
         ┌────────────────────────┐
         │  Main PC File Receiver │
         │  Organizes & Stores    │
         └────────────────────────┘
                      │
                      ▼
    C:/OctoBoard_Data/

2. Software (Legacy)

Installation
  1. Clone the repository:
bash
git clone https://github.com/H2020DiamondEU/octoboard.git
cd octoboard
  1. Install dependencies:
bash
pip install -r software/requirements.txt
  1. Install the package:
bash
pip install -e .
Usage
  1. Basic operation:
python
from software import OBoardManager

# Initialize manager with I2C bus number
manager = OBoardManager(i2c_num=1)

# Start MPP tracking on all channels
manager.cycle_all_channels(iterations_per_channel=10)
  1. Command-line interface:
bash
python -m software.cli 1  # Start tracking on I2C bus 1

3. Data Management

Data is stored in CSV format with the following structure:

  • Location: data/[board_id]_channel_[n]_data.csv
  • Format: timestamp, voltage, current, power, temperature

4. Troubleshooting

Common issues and solutions:

  1. I2C Communication Errors

    • Check bus number and device addresses
    • Verify cable connections
    • Check for address conflicts
  2. Measurement Instability

    • Verify power supply stability
    • Check contact resistance

License

This project is licensed under the MIT License. See LICENSE for details.

Links

Contact

For further information on integrating this measurement system into your PV lab, please contact:

  • Lukas Wagner, Physics of Solar Energy Conversion Group, Philipps-University Marburg, Germany.
  • Clemens Baretzky, Fraunhofer Institute for Solar Energy Systems ISE, Germany.

Acknowledgments

This design was developed at the University of Marburg and Fraunhofer ISE. The project is funded by the European Union in the Horizon 2.5. Climate, Energy and Mobility programme under Grant Agreement No. 101084124. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union. Neither the European Union nor the granting authority can be held responsible for them.

Parts

150
QtyValueFootprintReferences
140Conn_01x01_PinTestPoint:TestPoint_Pogo_D2.0mmJ10, J11, J12, J13, J14, J15, J16, J153, J154, J155, J156, J157, J158, J159, J160, J161 +124
10Conn_02x08_Odd_EvenConnector_IDC:IDC-Header_2x08_P2.54mm_VerticalJ1, J2, J61, J62, J151, J152, J181, J182, J271, J272

More from Manish4268/OctoBoard

1
  • 2 layers97 × 58 mmOctoboard, the printed circuit board in 3D

    Octoboard

    Manish4268/OctoBoard

    OutDoor Data

    107 parts

Similar boards

  • 4 layers60 × 100 mmUsb hub eurocard, the printed circuit board in 3D

    Usb hub eurocard

    azonenberg/antikernel

    The Antikernel operating system project

    150 parts124
  • 4 layers67 × 55 mmFrank core2u, the printed circuit board in 3D

    Frank core2u

    rh1tech/frank

    RP2350 Based Hardware Emulation Platform

    150 parts66GPL-3.0
  • 4 layers99.8 × 80.2 mmStima V4 Power, the printed circuit board in 3D

    Stima V4 Power

    r-map/rmap

    rete monitoraggio ambientale partecipativo documentation at https://doc.rmap.cc

    150 parts55
  • 4 layers100 × 100 mmDebug, the printed circuit board in 3D

    Debug

    atopile/swoop

    With swoop, you can fly remote controlled aircraft with the motion of your hand. It's especially fun when flying FPV because the motion of your remote precisely maps to the aircraft.

    150 parts51MIT
  • 4 layers145 × 57 mmX1-expander, the printed circuit board in 3D

    X1-expander

    jwise/x1-expander

    Expander board for Bambu Lab X1 Carbon

    150 parts50
  • 4 layers50 × 65 mmFeroFlyF405, the printed circuit board in 3D

    FeroFlyF405

    Ozonised/FeroFlyF405

    FeroFlyF405 an open source STM32F405 based flight controller running INAV

    150 parts44CERN-OHL-P-2.0
  • 4 layers68.6 × 46 mmNoiseAMP V2.3, the printed circuit board in 3D

    NoiseAMP V2.3

    Floyd-Fish/Noise-Amplifier

    An ultra-low noise amplifier to measure low-noise LDO/OPA's wide band output noise, and many other interesting measurements. Referred to AN-159.

    150 parts36GPL-3.0
  • 4 layers170 × 181 mm3ric, the printed circuit board in 3D

    3ric

    ebadger/3ric

    3ric homebrew computer repository

    150 parts32

Questions

How big is the Chuck v1 PCB?

It measures 450 × 45 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Chuck v1 use?

150 parts. 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 Chuck v1 KiCad files?

From the Manish4268/OctoBoard repository on GitHub, at the commit this page was made from: the board is hardware/Measurement Chuck PCB Design/chuck_v1.kicad_pcb and its schematic hardware/Measurement Chuck PCB Design/SubSheet.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Chuck v1 design in my own project?

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