My custom Arduino shield for my fermentation cabinet gets the job done, it’s a less than optimal design. First, I used multiple individual optocouplers and transistors. It would have been much more elegant to use integrated components with multiple optocouplers and multiple transistors in one package. Second, I used only screw terminals, which are not very sturdy. Lastly, and mostly, shields aren’t great for a permanent board. For prototyping, they are quite an elegant solution. But for a permanent board, they’re bulky and constrained. Using Arduino boards for permanent implementations misses the whole purpose of a development board. Their price point is low enough for it to be feasible for single implementations, but it doesn’t avoid the design problem. The Arduino is designed for prototyping. I want equipment I can use for years.
I’d been planning on creating a standalone board for the ATMega328p, but accelerated the plan when the Arduino split occurred. The idea was to create a very basic clone of the Arduino Uno without pin headers or USB interface. I want to be able to program either with an ICP programmer or an FTDI breakout board, so it will need headers for these. I plan on using the nrf24L01+ with multiple projects, so headers for the breakout board for that chip are also needed. A board design with these features makes a great template for many boards.
The design is based on some instructions on the Arduino website for assembling a Standalone Arduino, with the additional of a smaller ceramic capacitor adjacent to the ATMega328p VCC pin.
The simplest board I had planned was a board for a flow control valve. In addition to the template above, it needs an L293D H-bridge for driving a stepper motor, an electrolytic capacitor adjacent to the L293D VCC pin, a header for connecting to the motor to change the valve position, and a header for connecting to a potentiometer to detect valve position. In testing the prototype, I found that one NEMA 17 motor didn’t have enough juice, even with a gear ratio of 8. Rather than splicing wires, I just added a second header to the board. When I got my board back from OSH Park, I soldered in the components to give it a whirl.
Unfortunately, I placed the ICP header too close to the radio nRF24L01+ header and had to replace it with two rows of pins instead of the nice jack that matches the 6-pin programmer cable. After a little voltmeter testing revealed that my chips weren’t completely seated in their sockets (you really have to jam them in), I successfully loaded the blink sketch with the programmer.