This is a collection of Model Railroad open hardware and open source projects, using LCC, OpenMRN, and OpenMRN-lite, for the following MCUs and SBCs:
Raspberry Pi, generally as HATs for the "B" flavors (RPi2B, RPi3B and RPi4B). (Directories with "HAT" at the end are for these boards.)
Beagle boards, including capes for BeagleBone Black and baseboards for PocketBeagles. (Directories with "CAPE" at the end are for BeagleBone Blacks, directories starting with "BBB" are also boards for the BeagleBone Black, directories starting with "PB" or "PocketBeagle" are for the PocketBeagles - these boards assume male header pins soldered to the bottom of the PocketBeagle that insert into female header sockets on the base board.)
ESP32 (mostly meant for the Lilygo TTGO-T1 board) (Directories starting with "ESP32" are for this board.)
There are a few projects for other boards, including MetroMini (an Adafruit mini board that is a Arduino UNO clone), Tiva, and STM's Nucleo board. The directory names will include the name of the board.
Directories ending in OpenMRN contain the Raspberry Pi and Beagle board software for the various boards.
These projects were created using Kicad 2013.06.11 (https://launchpad.net/kicad) under CentOS 6 and Kicad 4.0.7 under Ubuntu 18.04. Each subdirectory is one project, and contains a schematic and PCB design or contains a program for one (or more) projects. There is also software for the boards using OpenMRN (C++ library for OpenLCB/LCC) for these projects.
There is a README in each project dir.
-
This is a MCP23017 with two octal buffers meant to drive 16 LEDs (such as signal lamps). No PWM or special effects. This board is a Cape for a BeagleBone Black or Green. Has address jumpers for the MCP23017 and can be stacked -- up to 8 of these capes for up to 128 LEDS -- each board has power terminals for the LEDs.
-
This is a MCP23017 with two octal buffers meant to drive 16 LEDs (such as signal lamps). No PWM or special effects. This board is a HAT for a Raspberry Pi 2, 3, or 4. Has address jumpers for the MCP23017 and can be stacked -- up to 8 of these hats for up to 128 LEDS -- each board has power terminals for the LEDs.
-
The is the OpenMRN (OpenLCB/LCC) program code for the 16DriverOutput HAT or Cape boards. Can be build on either a BeagleBoard or a Raspberry Pi for either.
-
This is a SMD variant of 16DriverOutputHAT.
-
This is a PCA9685 with two octal buffers meant to drive 16 LEDs (such as signal lamps). This board is much like 16DriverOutputHat, but uses a PWM chip to allow for special effects and allows for brightness adjustment. Has address jumpers for the PCA9685 and can be stacked -- up to 64 boards (WOW) for up to 1024 LEDs (WOW) -- each board has power terminals for the LEDs.
-
This is a PCA9685 with two octal buffers meant to drive 16 LEDs (such as signal lamps). This board is much like 16DriverOutputHat, but uses a PWM chip to allow for special effects and allows for brightness adjustment. Has address jumpers for the PCA9685 and can be stacked -- up to 64 boards (WOW) for up to 1024 LEDs (WOW) -- each board has power terminals for the LEDs.
-
This is the OpenMRN (OpenLCB/LCC) program for the 16PWMLedDriver* boards (RPi Hat, BBB Cape, and PocketBeagle board). Can be build on either a BeagleBoard or a Raspberry Pi for either.
-
This is a PCA9685 with two octal buffers meant to drive 16 LEDs (such as signal lamps). This board is much like 16DriverOutputCape, but uses a PWM chip to allow for special effects and allows for brightness adjustment. Has address jumpers for the PCA9685, includes a CAN transceiver with LCC network connectors (RJ45s), 5V power supply for the PocketBeagle, and uses LCC power for the LEDS. It uses female headers for the PocketBeagle (presumes male pin headers soldered to the underside of the PocketBeagle).
-
Early BeagleBone Black LCC/DCC Command Station board set -- two boards, a cape and a power board. Does not include RailComm support.
-
This is the program for the Beagle Board LCC/DCC/Railcom command station. It uses OpenMRN to interface with tha LCC/OpenLCB network to implement a LCC/OpenLCB aware command station node that can operate DCC/Railcom locomotives. It should work with any of the Beagle Board addon boards I have designed. It uses the AM335X's PRUs to generate the DCC signals. It ises the OpenMRN Console class to communicate over a Tcp/Ip channel with a Tcl/Tk coded GUI program to provide a user friendly point-and-click high level user interface.
-
Early HalfSiding cape for the Beagle Bone Black. A somewhat all-in-one board for the Beagle Bone Black to manage one half of a siding. This something of a "kitchen sink" board and proably awkard in practice. Probably better off stacking several separate special purpose capes. I mostly did this as a "thought experiment" to see what this would look like. Oh, if it used SMD parts it might be more compact and might be practical as a single board.
-
This is a RPi HAT board to interface up to 12 push buttons with hardware debouncing (using 74ahc14 Hex Schmitt-Trigger Inverters) to a RPi. Jumpers are used to map the buttons to GPIO pins. This was a simple "thought experiment" to see if this was possible.
-
This is the original CAN Hat, using the MCP2515 CAN IF Chip and a MCP2551 transceiver chip.
-
This is the second incarnation of the CAN Hat, also using the MCP2515 and MCP2551 chips.
-
This is the third incarnation of the CAN Hat, also using the MCP2515 and MCP2551 chips.
-
Single current sensing occupancy detector, meant for ESP32-16xDCCOD or simular. Meant as a thought experiment to see what this would cost, etc.
-
Simple DCC driver shield for Arduino.
-
Simple DCC Driver board for Tiva.
-
This a dual driver for a electromagnetic uncoupler coil. It features a pair of 555 type timers (in the form of a 556 dual timer) driving a TIP120 power darlington. It uses GPIO pins 21 and 22 (BCM 5 and 6, physical pins 29 and 31).
-
This is the same as DualUncouplerHAT, except it uses GPIO pins 23 and 24 (BCM 13 and 19, physical pins 33 and 35).
-
16 on/off LED Driver board using a MCP23017.
-
16 LED PWM driver board using a PCA9685.
-
Backplane for up to 16 DCCOD_SMD's using a ESP32 MCU. Meant as a thought experiment to see what this would cost, etc.
-
ESP32 C3 based DCC Booster.
-
-
ESP32-D0WD-V3-MultiFunctionOpenMRNIDF
-
First draft of a ESP32 HalfSiding node using a MCP23017 on/off signal lamps.
-
This is a circuit board that supports an ESP32 Dev Kit board or TTGO-T1 board to manage a range of possible interlocking plants or other model railroad situations. It contains four stall motor drivers with point sense, four CT Coil type occupancy detectors, four Schmitt-Trigger inputs (for push buttons), four driver outputs, and 16 PWM LED drivers.
-
This is a circuit board that supports an ESP32 Dev Kit board or TTGO-T1 board to manage one half (one end) of a siding. This board can also be used to manage two bi-directional single track ABS blocks or one bi-directional dual track ABS block. There are other trackwork cases this board can handle as well.
-
This is a circuit board that supports an ESP32 Dev Kit board or TTGO-T1 board to manage one half (one end) of a siding. This board can also be used to manage two bi-directional single track ABS blocks or one bi-directional dual track ABS block. There are other trackwork cases this board can handle as well.
-
This is a circuit board that supports an ESP32 Dev Kit board or TTGO-T1 board to manage one half (one end) of a siding. This board can also be used to manage two bi-directional single track ABS blocks or one bi-directional dual track ABS block. There are other trackwork cases this board can handle as well.
-
This is a LCC node circuit board that is based around an Espressif ESP32-S3FN8 MCU to manage and operate a collection of model railroad sensors and actuators.
-
ESP32-S3-MultiFunctionOpenMRNIDF
-
KiCad symbol and footprint for the ESP32 Mini, the ESP32 clone of the Wemos D1 mini with more pins and more power! There is some info on the boards here. It seems to be a Wemos clone, but is def. not made by them. I really like the boards for the small size and cheap price while giving me the power of an ESP32 and much more IO compared to the Wemos D1 mini.
-
ESP32 ABS (Automatic Block Signal) board. Very simple board: one block detector, 8 LED drivers.
-
ESP32 Base board. Base starting point for a ESP32 node.
-
ESP32 Arduino / OpenMRNLite sketches for the ESP32 boards.
-
ESP32 Quad Occupancy Detector node.
-
ESP32 Quad Stall Motor w/ sense node.
-
LCC/CAN Transceiver Cape for the Beagle Bone.
-
Eight LED drivers. Jumpers to select GPIO pins.
-
This is a 16 pin I2C port expander using a MCP230017.
-
This is an exported version of the OpenMRN library for the ESP32 which is usable as an ESP-IDF component.
-
Original through hole version of the Pocket Beagle LCC/DCC Command Station. This design is depreciated -- see PocketBeagleCommandStation and PocketBeagleCommandStation_SMD for a current design.
-
Through hole version of the PocketBeagle LCC/DCC Command Station. This is a DCC command station that is a LCC node. It implements the OpenLCB train protocol node over LCC and converts that to DCC commands. It includes a booster and puts the DCC signal on the LCC bus (pins 4 and 5). It implements a programming track and implements Railcom. The Command Station uses a PocketBeagle as the processing element and uses the PRUs (Programmable Realtime Units) to generate the DCC signal. (See PocketBeagleCommandStation_SMD for a SMD version.)
-
PocketBeagleCommandStation_SMD
SMD version of the PocketBeagle LCC/DCC Command Station. This is a DCC command station that is a LCC node. It implements the OpenLCB train protocol node over LCC and converts that to DCC commands. It includes a booster and puts the DCC signal on the LCC bus (pins 4 and 5). It implements a programming track and implements Railcom. The Command Station uses a PocketBeagle as the processing element and uses the PRUs (Programmable Realtime Units) to generate the DCC signal. (See PocketBeagleCommandStation for a through hole version.)
-
This is a circuit board that supports a PocketBeagle board to manage a range of possible interlocking plants or other model railroad situations. It contains four stall motor drivers with point sense, four CT Coil type occupancy detectors, four Schmitt-Trigger inputs (for push buttons), four driver outputs, 8 GPIO pins in a 5x2 header, and 16 PWM LED drivers.
-
PocketBeagleMultifuntionOpenMRN
OpenMRN program for the PocketBeagleMultifuntion board.
-
PocketBeagle Quad Occupancy Detector.
-
PocketBeagle Quad Stall Motor w/ Sense.
-
Quad Occupancy detector Cape (for a Beagle Bone).
-
Quad Occupancy detector Hat for Raspberry Pi.
-
OpenMRN (LCC / OpenLCB) program for Quad Occupancy Detector boards for Linux SBCs.
-
This is a generic quad verison of SMCSenseHAT.
-
Quad Stall Motor w/ Sense Cape for a Beagle Bone.
-
Quad Stall Motor w/ Sense Hat for a Raspberry Pi.
-
OpenMRN (LCC / OpenLCB) program for Linux SBC with QuadSMCSense addon boards.
-
This is a generic qad version of DualUncouplerHAT.
-
This is a hat containing a MAX7221 driven off level shifted SPI. It can drive up to 8 common-cathode signals of up to 8 LEDs each.
-
This is a dual stall motor driver and point sense circuit. The stall motor driver uses a MPQ3725A transistor to allow driving either multiple Tortoises in parallel (eg for a crossover) or newer Switchmaster or Torquemaster which draw more current than the LM324 can handle. Also included is a point sense circuit built from a RS Flip Flop made from 2-input NAND gates. The point sense circuit expects to be connected to a single pole double throw switch, either a built in one in the Tortoise or an external one attached to the points themselves. Uses GPIO 0, 1, 2, and 3.
-
This is the same as SMCSenseHAT, except uses GPIO 4, 5, 6, and 7.
-
This is a circuit board that supports a Tiva LaunchPad MCU to manage a range of possible interlocking plants or other model railroad situations. It contains four stall motor drivers with point sense, four CT Coil type occupancy detectors, four Schmitt-Trigger inputs (for push buttons), four driver outputs, 8 GPIO pins in a 5x2 header, and 16 PWM LED drivers.
-
This is a "breakout board" for use in breadboarding LCC nodes, typically using breadboard friendly MCU Dev Boards. This board contains a 5V power supply taking from the LCC network. It also contains a CAN transceiver and contains a pair of RJ45 connectors. There is CAN termination and a place for a socket to access pins 4 and 5 ("Alt" pins) on the LCC network bus.