I have built various systems using the DIN rail as a simple way of tying together my modular designs, however I have always found myself relying on off-the-shelf enclosures for my projects.
In this project I aim to create a simple, modular setup that I can use to for a wide range of applications using common components.
The main unit is the brains of the project. While there will be a few GPIO pins broken out The inputs and outputs of this unit will focus on communication; i2c, serial and wifi. Using these the unit will provide a WebGUI for the user, output data to an MQTT server, display information on an attached screen and co-ordinate the use of any additional slave units added to the board on the i2c bus.
A reasonably compact but simple to assemble design is the aim of the game here.
The screen used will be a 20x4 i2c lcd screen. All components will be mounted to a board the exact same size as the 20x4 display, using standoffs to screw the two together. The lower board will contain a NodeMCU header (to the right of the board to avoid the i2c backpack on the screen, USB port pointing out of the top, a 4 pin header for the screen to connect to the i2c bus, a row of screw terminals along the bottom edge of the board (vcc in, ground, tx, rx software serial pins and a few extra GPIO and grounds broken out), onboard 5v/3.3v regulators to power the NodeMCU and and two RJ45 connectors for attaching the slaves.
The RJ45 pins will carry: VCC, GND, 5v, GND, 3.3v, GND, SDA, SCL
Variations - I also aim to make a variation of this board featuring a Pi Zero as the main controller. Design would remain mostly the same with the headers and regulators hopefully being the only parts requiring movement.
The slave units will act as expansion boards for the main controller. Relays, pH Sensors, temperature sensors, extra pins and more can easily be added using the slave units.
In order to handle the additional components I am planning to add a small microcontroller such as an AtTiny85 to control the slave device, act as an i2c slave and store basic information on the connected device. This information will allow the main Unit to utilise the attached peripherals and use it correctly.
This is pretty flexible depending on the components involved, however each board will contain the two rj45 connectors for daisychaining the boards, a socket for the AtTiny, and the actual components. Some Ideas for expansions are: Relay board, pH/Temp sensor board, LED board, Analog input board, opto-isolated io board, button boards etc
In order to make the board neat I will aim to keep them the same height as length as the Main unit, even if the width varies.