This repository contains the PCB design files, 3D renderings, and software libraries to implement the MySensors mother/daughter board system described in this thread.
It's a mother/daughter board design using an RFM69 radio (though it would be easy to change it to an NRF). I have about 10 sensors I need to make and they're all similar, but not quite the same. This system allows be to mix and match what I need for each application. It's designed to be AC powered and uses a single case (see below) for all of them (~$3/apiece for 10).
The main board has the basic components and supports two daughter boards (roughly 25mm x 35mm) which plug into the side so the whole assembly is basically flat (leaving more room in the case for the switches, connectors, and LED's). An additional third daughter board can be used for small boards mounted perpendicular to the main boards (the sensor board below does that) or mounting over the top of the arduino.
The main board contains:
Each daughter board header has 5V, 3.3V, ground, 3 input pins, and 3 output pins. I've designed seven different daughter boards so far.
Here's an image of the assembled boards:
The boards file contains the individual board designs (done in Eagle) as well as panelized versions. A single 10cm x 10cm panel contains 2 main boards, 1 each of the AC relay, DC relay, protected input, parking board, and I2C board; 2 valve boards; and 3 sensor boards.
The boards are designed to fit inside a specific case (size and mounting holes) which can be found here. There are many options for ordering this case on AliExpress (various quantities and vendors). Searching for "105*65*40mm" will generally show them all.
The lib directory contains a class for each board. Each child board class is constructed by passing it a structure from the main board class which defines which slot it's plugged in to. The boards (mother and children) all contain elements for manipulating their components (LED's, relays, sensors, etc) which abstract away the method by which their connected (call sensor.led[0].on() to turn on the 0'th LED of a sensor board) which makes writing the final sketches which use the boards very easy.
The software does depend on my arduino-core library classes.
All the software in this repository is covered by the GPL-V3 license (see LICENSE-software).
All the hardare in this repository is covered by the CERN Open Hardware Licence v1.2 (see LICENSE-hardware).