

Octoboard
OutDoor Data
- Size
- 97 × 58 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 107
- Nets
- 107
- Pads
- 426
- Tracks, vias
- 1,109, 104
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 17 Nov 2025
- Updated
- 2 Dec 2025
Overview
Octoboard is an open-source printed circuit board by Manish4268, from the Manish4268/OctoBoard repository on GitHub. It is a 2-layer board of 97 × 58 mm with 107 parts on 107 nets, routed with 1,109 tracks and 104 vias.
It is built around the LMV324DR2G(MS), LMV324 and MCP4728-E/UN, with the ADS1115IDGS and 74HC4051 among its other parts. Its parts include 57 resistors, 25 capacitors, 4 connectors and 2 ICs.
Main components
5LMV324DR2G(MS)
SOIC-14-2.75V~-750mV、750mV~2.75V -40℃~+125℃ 1.5V~5.5V 1.8uV/℃ 1MHz 1V/us 1mV 1pA 28uA 4 45mA 5pA 65nV/√Hz@1kHz 80dB Rail-to-Rail Input, Rail-to-Rail Output SOIC-14 Operational Amplifier ROHSMSKSEMIOperational AmplifierLMV324
SOP-14-40℃~+85℃ 1MHz 2.8dB 250nA 3V~5.5V 4 400V/ms 40mA 40uV/√Hz@1kHz 430uA 5nA 7mV Built-in compensation、ESD protection SOP-14 Operational Amplifier ROHSIDCHIPOperational AmplifierMCP4728-E/UN
MSOP-10-40℃~+125℃ 12 2.7V~5.5V 2LSB 4 40nA 6us I2C Integrated buffer、Power-on reset、Power-down mode、Programmable gain Voltage Buffer MSOP-10 Digital to Analog Converters (DAC) ROHSMicrochip TechnologyDigital To Analog Converters (DAC)ADS1115IDGS
MSOP10Ultra-Small, Low-Power, 4 Channels 16-Bit Analog-to-Digital Converter with Internal ReferenceTexas InstrumentsUncategorised74HC4051
SOP-16-40℃~+85℃ 1 170MHz 28ns 29ns 3V~9V 5ns 5pF 80Ω 8:1 SOP-16 Analog Switches, Multiplexers ROHSWuxi I-core ElecAnalog Switches, Multiplexers
README
readme.md
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:
-
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
-
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
├── 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.pyDocumentation
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
Component Specifications
| Component | Type | Key Specifications | Datasheet |
|---|---|---|---|
| MCP4728 | DAC | 12-bit, 4-channel, I2C | Datasheet |
| ADS1115 | ADC | 16-bit, 4-channel, I2C | Datasheet |
| LMV324 | Op-Amp | Rail-to-rail, low power | Datasheet |
| 74HC4051 | Multiplexer | 8-channel analog | Datasheet |
| MCP23017 | I/O Expander | 16-bit, I2C | Datasheet |
System Architecture
The MPPT system is designed with a hierarchical structure:
- Central Raspberry Pi controller
- Multiple Octoboards (8 channels each)
- I2C communication backbone
- Integrated sample holder with thermal management
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:
- Disconnect the flat ribbon cables and nitrogen supply hoses (quick-connect couplings ensure that the remaining substrates stay in an N₂ atmosphere).
- Transfer the chuck to a glovebox, where the cells can be exchanged by loosening the screws as shown in the video below.
- 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
cd main_pc_system
.\start.bat # Automatic setup and launchOpens:
- File Receiver at
http://192.168.1.100:8000 - Dashboard at
http://localhost:8501
Raspberry Pi System
cd rpi_system
# For actual hardware
python api_server.py
# For simulation/testing (Windows)
$env:OCTOBOARD_SIMULATION="True"
python api_server.pyComplete Documentation
- Main PC System README - Setup, API endpoints, usage
- RPi System README - Hardware control, configuration
- Testing Guide - Complete end-to-end testing procedures
- Project Structure - System architecture overview
System Capacity
| Metric | Value |
|---|---|
| Raspberry Pis | 3 |
| Octoboards per RPi | 12 |
| Channels per RPi | 96 |
| Total Channels | 288 |
| Samples per RPi | 24 (4 pixels each) |
| Total Sample Capacity | 72 |
| IV Sweep Frequency | Every 1 hour |
| Files Generated | 96 per hour per RPi |
Network Configuration
| Device | IP Address | Port | Role |
|---|---|---|---|
| Main PC | 192.168.1.100 | 8000 (Receiver) | Control center |
| Main PC | 192.168.1.100 | 8501 (Dashboard) | Web interface |
| RPi 1 | 192.168.1.101 | 8001 | Channels 0-95 |
| RPi 2 | 192.168.1.102 | 8001 | Channels 0-95 |
| RPi 3 | 192.168.1.103 | 8001 | Channels 0-95 |
Data Flow
┌─────────────┐
│ 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
- Clone the repository:
git clone https://github.com/H2020DiamondEU/octoboard.git
cd octoboard- Install dependencies:
pip install -r software/requirements.txt- Install the package:
pip install -e .Usage
- Basic operation:
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)- Command-line interface:
python -m software.cli 1 # Start tracking on I2C bus 13. 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:
-
I2C Communication Errors
- Check bus number and device addresses
- Verify cable connections
- Check for address conflicts
-
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
107| Qty | Value | Footprint | References |
|---|---|---|---|
| 24 | 12k | Resistor_SMD:R_0805_2012Metric | R10, R13, R14, R15, R16, R20, R23, R30, R31, R40, R44, R47, R50, R52, R53, R56 +8 |
| 18 | 0 | Resistor_SMD:R_1206_3216Metric | R1, R2, R3, R5, R6, R12, R17, R22, R33, R34, R43, R45, R46, R48, R49, R55 +2 |
| 16 | 0.1µ | Capacitor_SMD:C_0805_2012Metric | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16 |
| 8 | 20 | Resistor_SMD:R_1206_3216Metric | SHNT_0_0, SHNT_0_1, SHNT_0_2, SHNT_0_3, SHNT_1_0, SHNT_1_1, SHNT_1_2, SHNT_1_3 |
| 8 | 22p | Capacitor_SMD:C_0805_2012Metric | C20, C21, C22, C23, C24, C25, C26, C27 |
| 5 | 4.7K | Resistor_SMD:R_0805_2012Metric | R24, R25, R26, R27, R37 |
| 4 | 10 | Resistor_SMD:R_1206_3216Metric | R4, R11, R21, R35 |
| 4 | 74HC4051 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | MUX_C_SN1, Mux_Sh_H1, Mux_Sh_L1, MUX_SMU_SN1 |
| 3 | 47k | Resistor_SMD:R_0805_2012Metric | R18, R19, R28 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric | R32, R38 |
| 2 | Conn_01x05_Pin | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J1, J3 |
| 2 | Conn_01x20_Female | Connector_PinSocket_2.54mm:PinSocket_1x20_P2.54mm_Vertical | RPI_20, RPI_40 |
| 2 | Conn_02x08_Odd_Even | Connector_IDC:IDC-Header_2x08_P2.54mm_Vertical_NO_SHROUD | J2, J5 |
| 2 | LMV324 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | BUFF_0, BUFF_1 |
| 2 | MCP4728 | Package_SO:MSOP-10_3x3mm_P0.5mm | DAC_0, DAC_1 |
| 1 | 1µ | Capacitor_SMD:C_1206_3216Metric | C19 |
| 1 | 22k | Resistor_SMD:R_0805_2012Metric | R29 |
| 1 | ADS1115IDGS | Package_SO:VSSOP-10_3x3mm_P0.5mm | ADC1 |
| 1 | LMV324DR2G | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U5 |
| 1 | MCP23017_SO | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U1 |
More from Manish4268/OctoBoard
1- 4 layers450 × 45 mm

Similar boards
- 4 layers89 × 58 mm

HALMET
hatlabs/HALMET-hardware
Hat Labs Marine Engine & Tank interface hardware design files
227 parts8CC-BY-4.0 - 4 layers34 × 52.8 mm

SH ESP32-engine hat
hatlabs/SH-ESP32-engine-hat
Engine Top Hat for SH-ESP32 hardware design files
110 parts2 - 2 layers33 × 73.7 mm

Geophonetdsconductschem2
ARTS-Laboratory/SPECIES
Design and development of a deployable UAV smart penetrometer
23 parts6CC-BY-SA-4.0 - 2 layers90 × 98 mm

- 2 layers90 × 40 mm

- 2 layers81 × 81 mm

- 2 layers150 × 50 mm

- 2 layers65.2 × 100 mm

Questions
How big is the Octoboard PCB?
It measures 97 × 58 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Octoboard use?
107 parts, built around the LMV324DR2G(MS), LMV324, MCP4728-E/UN and ADS1115IDGS. 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 Octoboard KiCad files?
From the Manish4268/OctoBoard repository on GitHub, at the commit this page was made from: the board is hardware/Octoboard PCB Design/octoboard.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 Octoboard design in my own project?
Its repository states no licence, so its author keeps all rights: ask Manish4268 before reusing the design.