Skip to the content
PCBKitNew board
2 layers17.1 × 30.5 mmInline SSR, the printed circuit board in 3D

Software, Firmware & Documentation is licensed under GPLv3

Size
17.1 × 30.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
4
Nets
6
Pads
16
Tracks, vias
21, 0
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
3 Jun 2017
Updated
10 Nov 2021

Overview

Inline SSR is an open-source printed circuit board by InfernoEmbedded, from the InfernoEmbedded/onewire-softdevice repository on GitHub. It is a 2-layer board of 17.1 × 30.5 mm with 4 parts on 6 nets, routed with 21 tracks and 0 vias.

Its parts include 2 connectors, 1 IC and 1 fuse.

README

README.md

About

This repository contains hardware designs and software for implementing slave devices using the Maxim 1-Wire® protocol on the STM32 microcontrollers.

Licensing

Hardware is licensed under the The TAPR Open Hardware License Version 1.0

Software, Firmware & Documentation is licensed under GPLv3

Prerequisites

Hardware Design

Firmware

Layout

The libs directory contains source code for the OneWireSlave library.

The devices directory contains schematics, PCBs & firmware for the client devices.

Devices

Template

A template schematic with the basics wired up.

Splitter

A passive Y splitter that allows short CAT5 runs to be broken off the main bus. A typical use would be to allow a short run to be dropped down a wall to a sensor or switch panel. Optionally includes a DS18B20 for temperature sensing.

DS2408 Emulator

A partial implementation of the DS2408 in software, used for initial testing of the 1-Wire® protocol, but is otherwise unmaintained and unsupported.

DS2408 4 Channel Switch

A device that accepts 4 switches, and provides 4 solid state relays. A jumper allows the relays to operate independently, or forced to operate in on/off pairs (for roller shutter/projector screen control). Somewhat obsoleted by SoManySwitches.

Fimware Updater

A sub-16KB bootloader which allows devices that implement the Inferno Embedded commands to update firmware over the bus. The included STM32F030X8.ld linker file stores the bootloader at the start of the flash region. Firmware that is designed to be flashed with this uses a modified linker file that stores the firmware with a 16kB offset.

Inferno Embedded commands allow the device to be rebooted into the bootloader so that they can be updated. The device can also be forced to remain in bootloader mode by shorting SWDAT on the SWD header to GND with a jumper.

SoManySwitches

A device with 8 RJ45 jacks, which each permit 6 toggle or momentary switches to be connected to the 1-Wire® network. The device will be alarmed when a switch is activated, and can then be polled to identify which switch was activated.

SoManySwitches Clientboard

A daughterboard for SoManySwitches, designed to be installed at the switch point. The RJ45 socket is broken out into pairs of Gnd/Switch, and pullup/pulldowns are provided to suppress spurious switch activations.

Aircon Zone Controller

A device that controls up to 8 24VAC air conditioning dampers, following the PolyAire pinout:

RJ45 PinSignal
1N/C
2Open
3Open
4Neutral
5Neutral
6Close
7Close
8N/C

By setting the transition time for each damper, the controller can partially open them, allowing balancing to be achieved via software control.

4 Channel RGBW LED Controller

A device to control up to 4 channels of common-anode RGBW LED strips, at up to 48V. Fading from the current colour to a new one is handled locally. An external relay can be driven via the Inline SSR board, allowing the LED power supply to be shut down when no strips require power.

Inline SSR

A small board with a solid state relay installed, designed to be mounted inline in a power cord. It connects to other boards via a headphone cable.

Hardware Design

Microcontroller

This software has been developed and tested on the STM32F030R8 microcontroller, an ARM Cortex-M0 with 64kB of flash & 8kB of RAM. We are running it at 48MHz using the internal RC oscillator. It may be possible to reduce the clock speed, but this is untested. They can be purchased for around AUD$1 each on Aliexpress.

Prototype testing can be performed on a Nucleo-F030R8.

Microcontroller Pin Usage

A single GPIO from the microcontroller is used to communicate over the 1-Wire® protocol. This is typically pin F0.

RJ45 Pinout

RJ45 PinSignal
1Gnd
2+5V
3Gnd
41W Data
5Gnd
6N/C
7+24V
8Gnd

Software Design

Runtime

The library sits on top of the Mbed runtime, altough it is more reliant on the lower level HAL APIs than the Mbed constructs. The bootloader uses a cut-down version of the runtime to allow it to fit within 16kB, however, the cost is that it cannot print to the serial port.

Low Level (OneWireSlave.cpp)

This file contains the base class for implementing 1-Wire® protocol devices. It provides methods to send and receive data on the bus, and handles device enumeration. It consumes Timer6 which it uses to maintain a 1 uS timer for signal timing. It uses the low level HAL APIs for catching state changes on the GPIO line, as the InterruptIn class added too much latency.

Protocol Level (SoftDevice.cpp)

This file defines how InfernoEmbedded devices communicate over 1wire. Each device reports a 64 bit type and 64 bit version, so only a single 1-Wire® family code is used (FE).

1wire commands are issued as follows: Master: Command Code (1 byte), Command data (up to 8 bytes), CRC8

Slave: Command good/bad (1 byte)

Slave: device response (chunks of up to 8 bytes)

Or...

Master: Streaming data

A 64 bit status register is provided, and the device will show up in alarm scans if any bits are set. On powerup, bit 0 is set (Power-on), allowing the devices to be reinitialised if they need state from the master. The status register is cleared automatically after each read.

Device Level (SwitchMaster.cpp & friends)

These files provide the device specific implementations. They define the 1-Wire® commands that are accepted, and interact with the user code via Listener classes. to allow designs to scale, the driver will report the number of implementations it supports (eg. switches), so that many physical variants can share the same code.

Getting Started

Development Environment

  • Install Eclipse for C/C++ development
  • Install System Workbench for STM32 Eclipse plugins
  • Clone the mbed sources git clone https://github.com/ARMmbed/mbed-os.git
  • Build the arm-nano-eabi toolchain by running build.sh in the toolchain directory
  • Fetch the ARM official toolchain by running build-arm.sh in the toolchain directory
  • use the scripts build.(bat|sh) and build-trace.(bat|sh) in the mbed directory to build the thin or trace-enabled builds of Mbed
  • Import the mbed Eclipse project
  • Import the Eclipse projects from this repository

Hardware Tools

These will be useful during development

Adding a new device

First, consider whether one of the existing device level drivers will do what you need, or can be expanded to achieve your goals (without straying too far from the intent of the driver). If you need to expand it, increment the version so that the client software (eg. OWFS) can identify what commands are available.

Next, create a frontend project that interacts with the device level driver. You may initially want to use a listener that uses the TRACE() macro rather than interacting with the hardware until you are happy with the protocol.

Finally, submit patches to OWFS that implement the new device driver. You can look at owfs/owlib/src/c/ow_ie_*.c to see how the existing drivers work. Important to note are the visibility functions, which allow a single family code to appear as many different devices.

Parts

4
QtyValueFootprintReferences
12AFuse_Holders_and_Fuses:Fuse_0679HF1
1CONN_01X022EDCK-Screw-Connectors:2EDCK-5.08-2PINP1
1G3MB_SSRSSR-OmronG3MB:G3MBU1
1JACK_STEREOw_conn_av:jack_3.5_pj313d-smtJ1

Questions

How big is the Inline SSR PCB?

It measures 17.1 × 30.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Inline SSR use?

4 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 Inline SSR KiCad files?

From the InfernoEmbedded/onewire-softdevice repository on GitHub, at the commit this page was made from: the board is devices/Inline_SSR/Inline_SSR.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Inline SSR design in my own project?

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

More from InfernoEmbedded/onewire-softdevice

11
  • 2 layers88.3 × 48.3 mmOutputBoard, the printed circuit board in 3D

    OutputBoard

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    71 parts11
  • 2 layers99.8 × 99.8 mm1Wire Blank, the printed circuit board in 3D

    1Wire Blank

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    40 parts11
  • 2 layers99.9 × 94.5 mm1Wire AC Zoning, the printed circuit board in 3D

    1Wire AC Zoning

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    39 parts11
  • 2 layers99.8 × 99.8 mm1Wire LEDController, the printed circuit board in 3D

    1Wire LEDController

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    35 parts11
  • 2 layers94.6 × 60.3 mmControlBoard, the printed circuit board in 3D

    ControlBoard

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    31 parts11
  • 2 layers46 × 91.3 mm4Channel SSR Switch, the printed circuit board in 3D

    4Channel SSR Switch

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    25 parts11
  • 2 layers192.9 × 41.3 mm1Wire SoManySwitches, the printed circuit board in 3D

    1Wire SoManySwitches

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    20 parts11
  • 2 layers45.1 × 44.7 mm16 Channel SSR Driver, the printed circuit board in 3D

    16 Channel SSR Driver

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    18 parts11
  • 2 layers65.5 × 59.4 mm1wire-4switch, the printed circuit board in 3D

    1wire-4switch

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    18 parts11
  • 2 layers19.9 × 27.4 mmSoManySwitches ClientBoard, the printed circuit board in 3D

    SoManySwitches ClientBoard

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    8 parts11
  • 2 layers59.4 × 31 mm1wire roof module, the printed circuit board in 3D

    1wire roof module

    InfernoEmbedded/onewire-softdevice

    Software, Firmware & Documentation is licensed under GPLv3

    5 parts11

Similar boards

  • 2 layers18.5 × 26 mm24g2usb rp2350zero, the printed circuit board in 3D

    24g2usb rp2350zero

    joypad-ai/joypad-os

    Universal controller firmware for building adapters, dongles, and custom controllers.

    4 parts1.7kApache-2.0
  • 2 layers116 × 33 mm966595-1 and 963356-1, the printed circuit board in 3D

    966595-1 and 963356-1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    4 parts1.2k
  • 2 layers19 × 18 mmDaughter board, the printed circuit board in 3D

    Daughter board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    4 parts915
  • 2 layers24.8 × 24.8 mmNrf24 breakout, the printed circuit board in 3D

    Nrf24 breakout

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    4 parts803MIT
  • 2 layers26 × 20 mmCap chain, the printed circuit board in 3D

    Cap chain

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    4 parts744MIT
  • 2 layers34.7 × 20 mmXG Station Power MSI, the printed circuit board in 3D

    XG Station Power MSI

    osy/XG_Mobile_Station

    Open source eGPU dock for ROG Ally and ROG Flow

    4 parts712CC-BY-4.0
  • 2 layers20.3 × 24.5 mmJack power input, the printed circuit board in 3D

    Jack power input

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    4 parts546MIT