Skip to the content
PCBKitNew board
2 layers115 × 100 mmCog1, the printed circuit board in 3D

cog1 is an open-source industrial IoT gateway (hardware and software) built as a motherboard hosting an Orange Pi Zero 3 Linux SBC.

Size
115 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
133
Nets
127
Pads
423
Tracks, vias
956, 371
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
23 Sep 2024
Updated
11 Mar 2026

Overview

Cog1 is an open-source printed circuit board by diegodemarco, from the diegodemarco/cog1 repository on GitHub, published under the MIT licence. It is a 2-layer board of 115 × 100 mm with 133 parts on 127 nets, routed with 956 tracks and 371 vias.

It is built around the AOZ1284PI, ISO1212DBQ and MAX13487EEA, with the PCA8574D, PCF8523T and ZMM3.0 among its other parts. Its parts include 53 resistors, 26 capacitors, 16 diodes, 7 ICs and 6 connectors. It belongs with the computers and single-board computers and home automation and IoT boards of this library.

Main components

12

README

README.md

cog1

cog1 front and back as built

What is cog1?

cog1 is an open-source industrial IoT gateway (hardware and software) built as a motherboard hosting an Orange Pi Zero 3 linux SBC (Wiki here).

  • The motherboard was designed using KiCad.
  • Its software uses the .net core framework (currently at version 8) to provide the services running in the hardware, as well as the back-end web services for the UI.
  • It also hosts the user interface (console), which is written in Angular, based on the Core-UI admin template.
  • In essence, it's a fully self-contained IoT gateway capable of interfacing with sensors and actuators directly, designed to process data, make local decisions, and communicate with external cloud services if needed.

Features

Hardware

The cog1 platform currently supports:

  • Powered by any DC supply from 12 to 24 VDC.
  • Four digital inputs (isolated, using two ISO 1212 chips from TI).
  • Four digital outputs (relays, varistor-protected).
  • Four analog voltage inputs (0-10 V, non-isolated), protected up to 48 VDC. The ADC is an ADC128D818 chip from TI.
  • Four analog current inputs (0-20 mA, non isolated), protected up to 100 mA. Uses the same ADC128D818 chip as the voltage inputs.
  • One RS-485 port (tested from 9600 to 115200 bauds). Support for Modbus RTU is already built on top of this.
  • Battery-backed RTC.
  • A simple but extensible user interface with a small OLED display and a rotary encoder + pushbutton.
  • All connectivity inherited from the Orange Pi Zero 3 SBC
    • 1 Gb Ethernet
    • 2.4 + 5.8 GHz WiFi
    • Bluetooth 5
    • A front USB port (USB 2.0)
Software

cog1 admin console The current software is rather basic, but includes everything needed to fully test the hardware. Additionally, the software already has the correct "architecture", i.e. it is designed as a linux service file that can be started, stopped, etc., and communicates with the hardware through a low-level i/o library created with native code (plain old C).

The front-end (console) is written in Angular, based on the Core-UI admin template, and it communicates with the back-end via web-services, which are already integrated in such a way that creating new controllers/endpoints and consuming them from the front-end is really simple.

The following features are already implemented:

  • Internal variables are fully supported. These match the actual hardware of the cog1.
  • External variables can be defined as well, based on Modbus registers.
  • Both Modbus RTU and Modbus TCP are supported, allowing reading and writing the most common types of registers in a variety of data types.
  • Variables can be defined to be "polled" automatically. For variables bound to Modbus registers, this means that the respective registers are polled via RTU or TCP as needed.
  • Writeable variables can be controlled/modified from the dashboard.
  • Writeable variables bound to Modbus registers also trigger the respective write operations through RTU or TCP, which can be done from the dashboard.

The plan is to continue developing the software so that it can:

  • Provide data-extraction web services.
  • Communicate with external cloud services via MQTT or any other protocol that could be relevant.
  • Allow running javascript code using Jint to make it possible to compute complex variables, do edge data-processing, etc.
  • Update the console UI to allow further management of all avaible functionality, as it grows over time.

Hardware

PCB

cog1 PCB as rendered by KiCad

The PCB has been designed using KiCad. It contains everything needed, including a 3D render. All components can be hand-soldered, but a few (essentially the AOZ regulator, the ADC, and the digital input isolators) require a bit of skills, as they are SSOP components.

All capacitors, resistors, etc. are 0805 or bigger, so they can be hand-soldered with little effort. The PCB contains all necessary headers to allow the Orange Pi Zero 3 to be plugged in, inverted.

All components can be found in the usual marketplaces (DigiKey, Mouser, etc.). I strongly advice not using unreliable (i.e. unrealistically cheap) sources for the components, especially the chips, as there is a large market of fake chips that either don't work, or even worse, work erratically.

Enclosure

The enclosure for the cog1 is a rather standard extruded-aluminum case, which can be found online for a few bucks. However, as a 3D printing enthusiast, I ended up designing and printing everything necessary to complete the enclosure:

  • Front cover
  • Back cover
  • Knob

All designs, done in SolidWorks, are included in this project. I have printed everything with an Elegoo Mars 3 Pro (resin), and expect that all parts would print well on any resin 3D printer. I have not tried to print this on a filament printer, as I believe the quality would not be good enough. When printed in resin, all parts really look production-grade if the proper resin is used.

Software

Main back-end code

The main code of the cog1 platform is a .net core application that contains all the necessary components (web services and general logic) to keep the cog1 working. The current version is relatively basic, and only contains those features needed to test the hardware. A web service is in place to provide basic status of the cog1, which is currently used to test the overall reliability of the hardware. All hardware functions have been tested with this software.

This is by far the area that needs the most effort, so that the cog1 can be turned into a fully-functional gateway.

Native back-end code

There are a few small portions of the software written in plan old C, and compiled directly in the SBC:

  • A low-level i/o library that deals with digital and analog i/o, display, etc.
  • A small "logo" application (configured as a service that starts early in the Linux boot process) to display the cog1 logo while the cog1 is booting.

Everything else is c#, so there's no low-level really in the c# code.

Front-end code

The front-end (console) is written in Angular, based on the Core-UI admin template, and it communicates with the back-end via web-services, which are already integrated in such a way that creating new controllers/endpoints and consuming them from the front-end is really simple. While the functionality is relatively limited at the moment, the front-end contains all the necessary building-blocks to be extended easily:

  • It communicates with the back-end via web-services, with proxies created using swagger-typescript-api. This makes it very simple to create new controllers and endpoints in the back-end andthen use them in the front-end with full type-checking and code insight.
  • It handles authentication with the back-end.
  • It fully supports loading literals (in the language of the user) from the back-end, before the application starts.

Getting started

Building the hardware

The KiCad project included in the pcb folder contains everything needed to manufacture the pcb. For all prototypes, the pcb was ordered to PCBWay, and then all components were soldered manually. When soldering, I strongly advise mounting the switching power supply first, veryfying the 5V are steady and noiseless, and then mount everything else. This is to prevent blowing up anything if the switching power supply was not mounted correctly.

Installing the software

I'll write a tutorial for this ASAP, but it's pretty straightforward.

Current status

What's done

What's missing

Parts

133
QtyValueFootprintReferences
1110KResistor_SMD:R_0805_2012MetricR1, R4, R8, R13, R36, R37, R38, R39, R43, R46, R47
9100nFCapacitor_SMD:C_0805_2012MetricC1, C3, C4, C5, C6, C14, C18, C20, C21
89.53K 1%Resistor_SMD:R_0805_2012MetricR16, R20, R23, R26, R29, R32, R35, R42
8ZMM3.0Diode_SMD:D_MiniMELFD4, D5, D6, D7, D8, D9, D10, D11
6TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3, TP4, TP5, TP6
510K 1%Resistor_SMD:R_0805_2012MetricR10, R28, R31, R34, R41
510nFCapacitor_SMD:C_0805_2012MetricC16, C23, C24, C25, C26
5330RResistor_SMD:R_0805_2012MetricR14, R15, R19, R22, R25
5BC807Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4, Q5
4255R 1%Resistor_SMD:R_0805_2012MetricR27, R30, R33, R40
430.1K 1%Resistor_SMD:R_0805_2012MetricR17, R18, R21, R24
4560RResistor_SMD:R_0805_2012MetricR5, R6, R48, R49
4B72207S0301K103Varistor:RV_Disc_D7mm_W4.5mm_P5mmRV1, RV2, RV3, RV4
4LL4148Diode_SMD:D_MiniMELFD2, D13, D14, D15
4PR5-5V-200-1ADMUtils:PR5-5V-200-1AK1, K2, K3, K4
4VL0831510000GDMUtils:VL0831510000GCN2, CN3, CN4, CN5
3100RResistor_SMD:R_0805_2012MetricR2, R3, R7
310uF 50VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC8, C9, C10
31KResistor_SMD:R_0805_2012MetricR44, R45, R57
347uF 10VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC11, C12, C13
2ISO1212Package_SO:SSOP-16_3.9x4.9mm_P0.635mmU2, U4
11.2K 1%Resistor_SMD:R_0805_2012MetricR58
1100uF 50VCapacitor_SMD:CP_Elec_10x12.6C7
110R 1/2WResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR59
110uF 6.3VCapacitor_SMD:C_0805_2012MetricC2
11uFCapacitor_Tantalum_SMD:CP_EIA-3216-10_Kemet-I_Pad1.58x1.35mm_HandSolderC22
1255RResistor_SMD:R_0805_2012MetricR56
132.768 KHzCrystal:Crystal_C26-LF_D2.1mm_L6.5mm_VerticalY1
1330pF 50VCapacitor_SMD:C_0805_2012MetricC19
147KResistor_SMD:R_0805_2012MetricR11
152K 1%Resistor_SMD:R_0805_2012MetricR9
156pFCapacitor_SMD:C_0805_2012MetricC15
1820pFCapacitor_SMD:C_0805_2012MetricC17
182KResistor_SMD:R_0805_2012MetricR12
1ADC128D818Package_SO:TSSOP-16_4.4x5mm_P0.65mmU12
1AOZ1284PIDMUtils:AOZ1284PIU5
1B560C-13-FDiode_SMD:D_SMCD3
1BH-50B-1DMUtils:BH-50B-1BATT1
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1INL-3AW30LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderLED1
1LOGODMUtils:cog1_logoG***
1MAX13487EPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU10
1OPI-ZERO-3DMUtils:OPI-ZERO-3U$1
1PCA8574DPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU3
1PCF8523TPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1PEC12R-2120F-S0012DMUtils:BOURNS_PEC_HORZ_20ENC1
1SM712Package_TO_SOT_SMD:SOT-23-3D12
1SRN8040TA-4R7MDMUtils:Bourns_SRN8040TAL1
1SS2040LL_R1_00001Diode_SMD:D_SOD-123FD1
1VL0631510000GDMUtils:VL0631510000GCN1

Questions

How big is the Cog1 PCB?

It measures 115 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Cog1 use?

133 parts, built around the AOZ1284PI, ISO1212DBQ, MAX13487EEA and PCA8574D. 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 Cog1 KiCad files?

From the diegodemarco/cog1 repository on GitHub, at the commit this page was made from: the board is pcb/cog1.kicad_pcb and its schematic pcb/analog_inputs.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cog1 design in my own project?

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

Similar boards

  • 2 layers80 × 50 mmGreaseweazle F7 Plus V2, the printed circuit board in 3D

    Greaseweazle F7 Plus V2

    aerobaticant/Greaseweazle-F7-Plus

    My board design for Keir Fraser's Greaseweazle

    66 parts30
  • 2 layers120 × 94 mmAurelia robotics PCB, the printed circuit board in 3D

    Aurelia robotics PCB

    DanielCusi/MoonJelly-robotics-PCB

    Robotics PCB designed for Eurobot used by Wolvineers.

    270 partsCERN-OHL-W-2.0
  • 2 layers124.5 × 85.9 mmHDD Synth ISA adapter, the printed circuit board in 3D

    HDD Synth ISA adapter

    MaverickUK/HDDSynth

    Recreate the sound of mechanical spinning HDDs on retro PCs that use a solid state drive

    19 parts16
  • 2 layers43 × 44 mmServo, the printed circuit board in 3D

    Servo

    DanieliusBertasius/servo

    Servo motor water mixer

    42 parts
  • 4 layers100 × 100 mmPdb, the printed circuit board in 3D

    Pdb

    javierveras/projectav-telemetry-pdb-2026

    Our power distribution and telemetry system's hardware, firmware, and technical documentation.

    104 parts
  • 4 layers67 × 51 mmBC Heater, the printed circuit board in 3D

    BC Heater

    rasusmilch/BC_Heater

    132 parts
  • 6 layers37.3 × 46 mmLT8491-mezzanine, the printed circuit board in 3D

    LT8491-mezzanine

    stanford-ssi/samwise-avionics

    Avionics for 2U Rev of Sputnik Satellite

    148 parts13