Mother/Daughter board system
-
I'd like to share my latest design. 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 (which isn't a problem for my needs) and uses the following case for all of them (~$3/apiece for 10). I'm not trying to get the smallest form factor - I want something that's easy to build and looks nice. I needed a decent size case because I use a lot of detachable connectors and have at least one switch and 1-4 LED's on the front all of which intrude into the interior volume.
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:
- 3.3V Arduino Pro Mini
- RFM69 radio
- side mount for external dipole antenna
- interior mount with enough space for a helical antenna mounted parallel or perpendicular to the board
- 5V->3.3V power supply
- digital signing chip
- flash memory chip
- input and output shift registers
- headers for a switch, LED, and piezo buzzer
- header for SPI (MISO, MOSI, SCK) pins
- 2 side mounted daughter board headers with inputs and outputs from the shift registers
- 1 top mounted daughter board header with pins from the mini including D3 (IRQ), D5 and D6 (PWM), A3, A4 (SDA), and A5 (SCL)
- 5cm x 5cm footprint for cheap production
- all components are top mounted for easier soldering and a bigger ground plane for better antenna performance
Here's a 3D view of the main board with the Arduino removed:
Each daughter board header has 5V, 3.3V, ground, 3 input pins, and 3 output pins. I've designed five different daughter boards so far. The first four fit in a single 5cm x 5cm package so I can get 10 copies of each for about $15. Other daughter boards are generally small enough that OSHPark is a viable source if I only need a few boards made (like for the car parking board).
- Relay board. I'm using this to control simple switching (like the garage door opener) and AC loads (hot water recirculating pump).
- 1 solid state opto-isolated relay with screw header with LED for AC loads
- 2 switched transistors for simple connections
- 3 sensor inputs with pull up resistors
- Protected input board. I'm using this to trigger when external security cameras and motion sensors trip (they both operate on 12V signals).
- 3 opto-isolator circuits for triggering on 12V lines
- Valve/motor control board. I'm using this for articulated water valves for controlling leaks at the water heater, washing machine, etc.
- L9110 motor controller with LED and valve open/closed sensors.
- Generic LED/sensor board. This board adds pull up resistors on the inputs and LED resistors on the outputs so it can be used with the shift registers.
- 3 sensor inputs with pull up resistors
- 3 LED's with resistors
- Car parking board
- 3.3V<->5V level shifters for the distance sensor
- Ultrasonic distance sensor
- LED ring
To give you an example of how this works, here are some of the builds I'm going to use:
- Garage sensor
- relay board for monitoring and controlling the garage door
- parking board for LED parking sensor
- could add a 3rd sensor board for temp, humidity, or air quality later
- Water heater sensor
- sensor board for monitoring water leaks
- valve board for shutting off hot water intake
- relay board for a hot water recirculating pump
- Refrigerator and bathroom sensor
- sensor board for monitoring water leaks
- valve board for shutting off water to the ice machine or toilet
- Washing machine sensor
- sensor board for monitoring water leaks
- valve board for shutting off the hot water
- valve board for shutting off the cold water
I've finished all of the board designs and am now bread-boarding the schematics to make sure everything works properly before I put in my order. Once I get everything tested and confirm the boards work, I'll post the schematics and board files for anyone else that's interested. If you have any suggestions or comments, I'd love to hear them.
-
Great work!
And cleaver trick to mount the serial header on the Pro Mini at 180 degrees angle. I'll start doing that with mine, saves some space in the project boxes.
-
Well... the good news is my 3D board looks fantastic. The bad news is that I should have tested my schematic first. My wiring for using the input and output shift registers together is totally wrong. I'm going to have to move some things around and rewire it. There is a lesson here somewhere - I spent the last few days iterating on the board layout getting everything just the way I wanted because checking the schematic isn't as fun but it turns out I wasted a lot of time because it was wrong in the first place.
I need to decide if I'm going to switch my shift registers to using the SPI bus or stick with the a system that shares a clock and data pin and uses separate latch pins for each. It probably makes sense to move them to using the SPI bus - I wasn't sure this was a good idea because I didn't really understand it or how the radio and memory are using it. Now that I've read more about it, it seems like changing the registers to have their own select pins and using the SPI bus is probably the best way to go. Any thoughts on that?
-
So it turns out the "standard" input shift register that everyone uses in Arduino examples (SN74HC165) doesn't work on the SPI bus because it never puts MISO into high impedance. It can be fixed with another chip (single gate, 3 state chip). Instead, I found an input shift register that is designed to work on SPI (74HC589). I've got those on order now and will try it out on the breadboard before ordering any real boards.
I've been having fun w/ EagleUp and SketchUp - here is a view of my main board with three daughter cards installed in it. The bare pins are the inputs and output jacks which will go to the external connectors (power, sensor jacks, valve controls, etc), LED's, and switches mounted in the case. I have to admin, seeing the resulting board in 3D is just extremely cool
-
Have you considerd the MYSX connector? It provides a common interface for MySensors boards (and others too for that matter). @tbowmo's new GW will have it, as does my board. @scalz have also made use of the design for his boards.
It is by no way ment as critizism of your solution, but I just wanted to mention it in case you missed it.
-
@Anticimex said:
Have you considerd the MYSX connector?
Thanks - I did look at it and I think it's a great idea. But I decided it didn't match my needs for small modular boards that use the same pin outs for each board. I'm also trying to keep the design as flat as possible because of constraints on mounting it in the case along with lots of connectors.
-
@TD22057 ok, well, the MYSX connector comes in various versions for different needs, and the specification does not state that it is forbidden to use angular connectors (although not recommended for portable designs). But yes, even so, a DIL connector would stack up slightly more than a SIL connector would. On the other hand, it would provide a much more rigid connection. But that said, I do see your point, and MYSX is not for everyone
-
It wasn't so much the design, it's the fixed pin requirements (which I totally understand). I'm exposing 3 input and 3 output pins from shift registers on 2 of the expansion slots and a different set of Arduino pins on the 3rd expansion slots and none of those match up w/ the MYSX pin specifications.
-
Update: I settled on an SPI based shift register system and received and tested those parts (they will require an update to the RFM69 library to use SPI transactions but we should do that anyway). I finished testing all of my schematics on a breadboard, fixed several errors, and submitted my PCB order this morning with Elecrow for 10 board of 10 cm x 10 cm. I was able to fit 2 main boards and 10 child boards on a single panel so that's 120 different boards for $25. I ended up creating the following 7 different child boards to use in the system:
- valve board (see first post)
- protected input board (see first post)
- sensor board (see first post)
- parking board (see first post)
- AC relay board (higher amperage/power relay for large loads)
- DC relay board (5V DC relay for small loads)
- I2C sensor board
Once I get the boards in and test them, I'll post the raw boards and schematics (or ping me if you want to see them now) in case anyone is interested. Just because it's cool, attached is an image of the final board submission.
-
Yeah! Boards have arrived. I used elecrow.com and ordered 10 boards for $25. They shipped 14 and they arrived (California) in 16 days. Everything looks good so far. I probably should switch to a larger silk screen font for some of the labels but so far all the footprints seem to be correct. Next up is to start cutting the boards apart and start soldering...
-
I've finished soldering the first batch of boards and things look pretty good so far. I had one diode footprint that was wrong but it was easy to fix and a couple of soldering errors that were also fixable. In hind sight, I think putting the power supply and other IC's under the arduino is a mistake - I should have moved them to the back of the board. If there is anything is wrong with a joint, it's impossible to get to for diagnosis and reworking. Here's a glamour shot of the mother and daughter boards:
-
Surprisingly, all of my circuits are working perfectly. I found one relay label that was swapped (NO/NC) and one jumper pad that wasn't very useful but other than that, all of the functionality is working. I have to admit I'm quite surprised there wasn't some serious problem somewhere given that this is my first non-trivial board design.
When I started this design, I purchased a stereo microscope and it was fantastic. I'm no soldering expert by any measure but having the microscope (using the 5x lenses) made soldering all of the components very easy. After building 8 main boards and a bunch of daughter boards, I can now see why people invest in making a reflow oven for soldering.
I'll be uploading the design files and schematics as soon as I clean up the BOM. Next up is cleaning up the software to drive everything and start on the case construction.
-
FYI: Boards, schematics, BOM's, and software are now available here: https://github.com/TD22057/MySensors-Mother
-
Nice! Just a friendly reminder to read the CERN license how-to carefully and make sure you include all required files/documents for it or it won't be valid.
-
@Anticimex Well that's kind of annoying. I supposed I'll go back and fix that. Do you happen to know if the github extraction for https://www.openhardware.io/ is working? I tried to use it but seems to just create a blank project.
-
You'll hate to press the blue "recycle" button next the github inputs. This import all the files in a unpublished state.
Further down on the page you can choose to publish all of them (">>") or drag the once you want to publish one-by-one.
Next time you fetch from github the published files will remain published.
Also, don't forget to press "Save" after changing published/unpublished state of images or design files.
-
It would be nice to have a .PDF of schematic, make it allot easier to view than to load a CAD program...
Thanks...
-
@lafleur said:
It would be nice to have a .PDF of schematic, make it allot easier to view than to load a CAD program...
Done. Added to the repository and the openhardware page.