Electronic – arduino – Generate a printed circuit board from code

arduinopcb

I'm just getting started with electronics by way of Arduino. My Arduino kit came with a little ad for a website that takes PCB designs and prints them for you for a pretty cheap price.

But how do I get from a program that runs on the Arduino to a circuit that can be printed on a PCB? This is probably wishful thinking, but is there a mechanical way to "compile" Arduino code to a PCB layout?

Or, would I need to get someone with real EE experience to hand-design the PCB?

Best Answer

Let's quickly define a few things:

Software: Code that executes on a computer. Yes, technically it can execute on a microcontroller such an Arduino, or even a FPGA device, but typically the term "software" refers to code meant for execution on a common device, that an end user can install/load/run.

Firmware: Code that executes on a microcontroller or similar device. Typically such code controls the behavior of an embedded electronics device and traditionally does (should) not have frequent upgrades/releases. Often firmware is not something that an end-user is expected to know how to load/execute, but sometimes they can be expected to do the upgrade (like firmware on your network router or computer's BIOS/motherboard).

Hardware: The physical components of an electronic device. This may be everything from the copper PCB and its traces, the components on it, the screws holding it to a chassis, and the chassis itself. Normally in EE we consider "hardware" to be the physical components of the board and the board itself, including wiring and connectors, but the chassis often falls under another department (structural engineering in my workplace).

When you experiment with an Arduino, you're interacting with a microcontroller (an Atmel ATMEGA most likely) and a few supporting pieces of hardware (a voltage regulator, a USB interface, a PCB and a few other bits). The code you write, I would consider "firmware" and it controls the behavior of the microcontroller.

You may decide to control an LED, or a stepper motor, or a serial port device... it's entirely up to you. The code you write, however, doesn't "know" what you're controlling, necessarily. The electrical characteristics of the hardware you decide to control is outside the scope of the firmware you write, and therefore there's no way to translate what you've written into a physical board.

You'll want to research electrical schematics and PCB layout and design, in order to move on to the prototyping and physical "hardware" stage.

Good luck!

Related Topic