Skip to the content
PCBKitNew board
4 layers70 × 143 mmIoBoard, the printed circuit board in 3D

A relay (and more!) board with Ethernet connectivity and MQTT support

Size
70 × 143 mm
Copper layers
4
Thickness
1.6 mm
Parts
206
Nets
247
Pads
805
Tracks, vias
1,148, 240
Pours
8
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
15 Jun 2019
Updated
3 Nov 2019

Overview

IoBoard is an open-source printed circuit board by Loic74650, from the Loic74650/ioBoard repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 70 × 143 mm with 206 parts on 247 nets, routed with 1,148 tracks and 240 vias.

It is built around the 74AHC1G125GW, AP1509-SG and FT232RL, with the LM2904, SFH617A-1 and DS1307+ among its other parts. Its parts include 67 resistors, 36 capacitors, 29 diodes, 26 connectors and 22 ICs. It belongs with the home automation and IoT and interfaces and adapters boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

12

README

README.md

ioBoard v1.2

I/O board with Ethernet connectivity for home automation applications





Brief description

Simply put, ioBoard is a mix between an Arduino Mega board, the Ethernet shield and the relay shield + some small additional features (RTC, opto-isolation of digital inputs/outputs, two analog inputs, one Teleinfo input…).
It supports the MQTT protocol and has a set of API functions so that it is easy to control it over the Ethernet for home automation applications for instance.
ioBoard can be programmed to perform tasks at regular intervals such as water the garden or switch on a pump autonomously.
ioBoard also has input pulse counters, typically used to track the consumption of a gas or oil heater, water or even electrical consumption.
ioBoard also has a TeleInfo input, which is a French dedicated energy meter interface to the main electric meter of the house.
Finally, ioBoard has a small web server stored on an SD card, in order to reflect the status of the board I/Os.


Main specs:

  • Atmega2560 16MHz µC
  • programmable with Arduino IDE (with USB interface)
  • Ethernet 10M/100M RJ45 internet interface
  • x8 Relay outputs 230VAC/30VDC 10A – Form-C relays, screw terminal and SMD Status-LED for each (opto-isolated from µC)
  • x8 opto-isolated digital inputs with SMD Status-LEDs (internal pull-up, HIGH level by default. Ground the input to make it LOW)
  • x2 10 bits analog inputs 0-3.3VDC
  • x2 opto-isolated digital input pulse counters (internal pull-up by default. Ground the input to increment it. Input low-pass filtered at 10Hz max.)
  • x1 opto-isolated Télé-Info input
  • RTC module (DS1307) for time management with on-board Lithium back-up battery
  • Micro SD card slot (Web server)
  • DIN rail format (PCB Size 143mm x 72mm)


Getting started

Before compiling the code and flashing it onto the µC, make sure you have changed the following variables in the code:

  • MAC address of the board
  • IP address of the MQTT broker
  • Credentials to log into the MQTT broker


MQTT API

Below are the Payloads/commands to publish on the "ioBoard/API" topic in Json format in order to launch actions on the ioBoard:

  • {"SetRelayMode":[3,1,500]} -> set the operating mode for a relay. 0 is standard operating mode (ON/OFF) and 1 is PULSE mode. In pulse mode, after a relay has been switched ON, it will automatically switch back to OFF state after a defined time in millisecs. In this example, relay #3 is set to PULSE mode with a switch back time of 500ms
  • {"SetRelay":[4,1]} -> set state of a defined relay. In this example, relay #4 is set to 1
  • {"SetRelays":15} -> set all relays states at once by sending a Byte. Each individual bit reflects the status of one relay. In this example, the first four relays are switched ON and the last four are switched OFF (15 in decimal form corresponds to 00001111 in binary form)
  • {"SetC0":0} -> set initial value of Counter #0
  • {"SetC1":2140} -> set initial value of Counter #1
  • {"SetDate":[1,1,1,18,13,32,0]} -> set date/time of RTC module in the following format: (Day of the month, Day of the week, Month, Year, Hour, Minute, Seconds), in this example: Monday 1st January 2018 - 13h32mn00secs

The status of the I/Os is published on the "ioBoard/IOs" topic in the following Json format:

  • {"Relays":15} -> A Byte representing all the relays states. Each individual bit reflects the status of one relay. In this example, the first four relays are ON and the last four are OFF (15 in decimal form corresponds to 00001111 in binary form)
  • {"DIns":127} -> A Byte representing all the digital input states. Each individual bit reflects the status of one input. In this example, the first input state is FALSE and the last seven are TRUE (127 in decimal form corresponds to 01111111 in binary form)
  • {"C0":1203} -> Value of Counter0
  • {"C1":0} -> Value of Counter1
  • {"AI":[1203,0]} -> Values of the Analog Inputs. In this example, AI0 is 1203 and AI1 is 0
  • {"TI":[ADCO,OPTARIF,ISOUSC,BASE,IINST,PAPP,ADPS,IMAX,PTEC]} -> TeleInfo data. Refer to this link for more info: https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_02E.pdf

The above Json commands representing the state of the I/Os are updated as soon as a Digital I/O changes state or every 30 secs for the Analog Inputs.


Parts

206
QtyValueFootprintReferences
19LEDLED_SMD:LED_0805_2012Metric_CastellatedD2, D3, D10, D11, D12, D16, D17, D20, D21, D22, D23, D24, D25, D26, D27, D28 +3
1810KResistor_SMD:R_0603_1608MetricR1, R14, R38, R39, R40, R41, R51, R53, R55, R56, R57, R58, R62, R63, R64, R65 +2
15100nFCapacitor_SMD:C_0603_1608MetricC2, C5, C6, C7, C8, C9, C14, C15, C20, C21, C22, C27, C30, C35, C36
13MPT 0.5/3-2.54pbo_footprint:TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_HorizontalJ21, J22, J23, J24, J25, J26, J27, J28, J29, J30, J31, J32, J34
10520Resistor_SMD:R_0603_1608MetricR28, R29, R30, R31, R32, R42, R43, R44, R49, R50
10SFH617A-1Package_DIP:DIP-4_W7.62mmU7, U8, U9, U10, U11, U12, U13, U14, U17, U18
91K5Resistor_SMD:R_0603_1608MetricR33, R34, R35, R36, R37, R45, R46, R47, R61
9RU1C001UNTCLPackage_TO_SOT_SMD:SOT-323_SC-70Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9
85KResistor_SMD:R_0603_1608MetricR20, R21, R22, R23, R24, R25, R26, R27
8G5Q-1EUpbo_footprint:Relay_SPDT_Omron-G5Q-1K1, K2, K3, K4, K5, K6, K7, K8
8MPT 0.5/3-2.54pbo_footprint:TerminalBlock_Phoenix_MPT-0,5-3-2.54_1x03_P2.54mm_HorizontalJ12, J13, J14, J15, J16, J17, J18, J19
8S1JL R3Diode_SMD:D_SMAD7, D8, D9, D13, D14, D15, D18, D19
7100Resistor_SMD:R_0603_1608MetricR3, R4, R5, R6, R7, R59, R60
410nFCapacitor_SMD:C_0603_1608MetricC10, C11, C12, C13
41KResistor_SMD:R_0603_1608MetricR8, R9, R18, R19
449.9Resistor_SMD:R_0603_1608MetricR10, R11, R12, R13
474AHC1G125Package_TO_SOT_SMD:SOT-353_SC-70-5U2, U3, U4, U5
322pFCapacitor_SMD:C_0603_1608MetricC1, C23, C24
210µFCapacitor_Tantalum_SMD:CP_EIA-2012-15_AVX-PC17, C18
210µFCapacitor_Tantalum_SMD:CP_EIA-6032-15_Kemet-UC33, C34
215KResistor_SMD:R_0603_1608MetricR52, R54
215pFCapacitor_SMD:C_0603_1608MetricC3, C4
21MResistor_SMD:R_0603_1608MetricR2, R17
21uFCapacitor_SMD:C_0805_2012MetricC16, C19
21µFCapacitor_SMD:C_1206_3216MetricC28, C29
21µFCapacitor_SMD:C_0805_2012MetricC25, C26
247pFCapacitor_SMD:C_0603_1608MetricC31, C32
2MH2029-300YInductor_SMD:L_0805_2012MetricFB2, FB3
110µHInductor_SMD:L_0805_2012MetricFB1
112KResistor_SMD:R_0603_1608MetricR15
116MHzpbo_footprint:Crystal_SMD_2520-4Pin_2.5x2.0mmY1
125MHzCrystal:Crystal_SMD_2016-4Pin_2.0x1.6mmY2
1300Resistor_SMD:R_0603_1608MetricR16
132.768KHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY3
14.7KResistor_SMD:R_0603_1608MetricR48
147µHpbo_footprint:L_Bourns-SRU8043L1
18P8C_LED_Shieldedpbo_footprint:RJ45_Stewart_SS_74301_001J11
1AP1509Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU21
1ATmega2560Package_QFP:TQFP-100_14x14mm_P0.5mmU1
1CR2025pbo_footprint:BatteryHolder_Keystone_103_1x20mmBT1
1DS1307+Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU19
1FT232RLPackage_SO:SSOP-28_5.3x10.2mm_P0.65mmU22
1ICSPConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ9
1LM2904Package_SO:MSOP-8_3x3mm_P0.65mmU15
1MIC5504-3.3YM5Package_TO_SOT_SMD:SOT-23-5U20
1MPT 0.5/2-2.54pbo_footprint:TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_HorizontalJ20
1Micro_SD_CardConnector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5J10
1NRVTS2H60ESFT3GDiode_SMD:D_SOD-123FD29
1RSFBL-R3pbo_footprint:D_Sub_SMAD1
1SFH620APackage_DIP:DIP-4_W7.62mmU16
1SW_DPSTpbo_footprint:SW_SPST_B3S-1000SW1
1USB_B_Micropbo_footprint:USB_Micro-B_Amphenol_110118192-0001LF_HorizontalJ33
1W5100Package_QFP:LQFP-80_10x10mm_P0.4mmU6

Questions

How big is the IoBoard PCB?

It measures 70 × 143 mm and has 4 copper layers, 1.6 mm thick.

What parts does the IoBoard use?

206 parts, built around the 74AHC1G125GW, AP1509-SG, FT232RL and LM2904. 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 IoBoard KiCad files?

From the Loic74650/ioBoard repository on GitHub, at the commit this page was made from: the board is Hardware/KiCad/ioBoard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the IoBoard design in my own project?

Its repository publishes it under the GPL-3.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).

Similar boards

  • 4 layers140.3 × 129 mmPec, the printed circuit board in 3D

    Pec

    Raduas/STM32-furnace

    Home project to create H-bridge resonant induction furnace

    128 partsApache-2.0
  • 2 layers116.2 × 79.2 mmSNES Advanced UV 1-0 new, the printed circuit board in 3D

    SNES Advanced UV 1-0 new

    MouseBiteLabs/Super-Nintendo-Cartridges

    A collection of Super Nintendo cartridge circuit boards

    66 parts70CC-BY-SA-4.0
  • 2 layers53 × 62 mmMbc3 SRAM typeA 1-1, the printed circuit board in 3D

    Mbc3 SRAM typeA 1-1

    MouseBiteLabs/Game-Boy-Cartridges

    A collection of my Game Boy cartridge circuit board designs

    36 parts50CC-BY-SA-4.0
  • 2 layers83.8 × 61 mmGenesis Advanced UV 1-1, the printed circuit board in 3D

    Genesis Advanced UV 1-1

    MouseBiteLabs/Genesis-Cartridges

    A collection of Genesis/Mega Drive cartridge circuit boards

    53 parts16CC-BY-SA-4.0
  • 2 layers165 × 100 mmPeripheral board, the printed circuit board in 3D

    Peripheral board

    trollectronics/trollbook

    Homebrew 68040 palmtop computer

    248 parts22
  • 2 layers143 × 74 mmLpa, the printed circuit board in 3D

    Lpa

    taborlab/LPA-hardware

    CAD files and firmware of the LPA, and imager-based calibration script.

    81 parts11
  • 2 layers158.6 × 117.3 mmEnterpriseDCBadge - Copy, the printed circuit board in 3D

    EnterpriseDCBadge - Copy

    seeigecannon/DC27EnterpriseBadge

    Enterprise Badge for DC27

    39 parts4Unlicense