Here are couple of tips which you may want to consider when you will be designing your own Arduino Uno like board.
TIP 1: Micro USB connector
Today, everybody uses micro USB cables, chargers or power supplies. Some adapters can deliver quite high currents, for example up to 2A – that really can be sometimes useful.
TIP 2: Reset
RESET is one of the most important pins on microcontroller. Be sure you deliver stable and strong signal to this pin. Otherwise you may experience random or unreliable board resets. (See recommended RESET signal connection in the AVR042: AVR Hardware Design Considerations)
TIP 3: Decoupling & Filtering Power
Usually, every microcontroller power pin should have its own decoupling capacitor (e.g. 100nF). If the microcontroller has an analog circuit inside (e.g. AD converter) and you use it, you may want to separate analog power pins from digital power pins through Ferrite BEADS.
In the case there is a power pin on a connector (e.g. +5V, +REF, …), consider placing a capacitor close to the pin. If it’s a power output pin, use a bigger capacitor (e.g. 10-330uF), if it’s an input power pin, use something smaller, e.g. 100nF.
TIP 4: Series termination resistors
Microcontrollers are not very fast, but the buffers are quite quick (e.g. SPI rise/fall time is 3.6 ns). You may want to add 22 or 33 OHM series termination resistors into signals like Clocks.
TIP 5: 5V/3V3 support
Most of todays electronic uses 3.3V IO voltage. Both microcontrollers can support it.
TIP 6: Firmware update
In the case you need to re-flash the ATMEGA328P (including bootloader), it can not be done easily without using an external programmer. And it is not difficult to do, as there is everything on the board you need. You can easily re-program the ATMEGA16U2 with AVRISP MKII firmware and add couple of tracks.
TIP 7: Programmer
If your board is properly designed, you not only can use the ATMEGA16U2 to program the on board ATMEGA328P, but you can use it as a standard AVRISP MKII programmer.
TIP 8: Connector pinout
Each connector should have at least one GND pin, including analog connectors. Also, I would really add a power pin to the IOH header, because in many cases and examples I would only need to connect this one connector. In the current design, we always have to connect at least two connectors.
And I would move the REF voltage to the Analog connector.
TIP 9: Solid Ground
When you are doing layout, try to keep the ground plane as solid ans as large as possible.
TIP 10: Gap between tracks
For 2 Layer PCBs is very important you keep as big gap as possible between the tracks. Especially, if the tracks are CLOCKs.
TIP 11: Simple board shape
I know the creators of Arduino intentionally designed the board shape as we know it. The thing is, it makes your PCB more expensive. The PCB manufacturer will need to use a milling machine – that is one more step in PCB manufacturing process.
TIP 12: Mounting holes
It is good to keep a bigger clearance or use bigger pads around mounting holes, so when you tight up screws, you don’t damage or don’t make a short circuit with tracks.
TIP 13: Pin 1 and connector marking
There is very nice silkscreen on the Arduino, but the things like Pin 1 or connector reference designators are missing. If you want to identify them, you have to use Arduino schematic or PCB files.
TIP 14: Connector placement
When you place a connector on your board, be sure you can plug in the mates.
Have a look how we implemented all these points in our open source 28Pins board. Feel free to download the full documentation, including Schematic, PCB, BOMs, GERBERs and all the manufacturing files here >>>
After this course, you will design your own Arduino like board. This course is for everyone who has never designed any board before and would like to try it.
How to register for this online course?
Find out more about this course in this short introduction video