I have prototyped a connected object with arduino and I would like to go for mass production, actually just a few hundreds to start.

I'm going to design a customed PCB with everything integrated: this is for the hardware part.

My question here is about the software part.

Ideally, I would like to keep the same code for my final product as in my current prototype.

It looks like it is something that is not advised. Why ? Can I ask a manufacturer to put a pre-programmed atmega providing my arduino code ?


  • 2
    \$\begingroup\$ It always pains me when a question is being closed as "too broad" when there are a couple of succinct answers that together (I believe) answer all of the OP's issues. \$\endgroup\$ – tcrosley Feb 26 '15 at 17:34
  • \$\begingroup\$ @tcrosley, Welcome to stack exchange websites, where closing questions and downvotes are a matter of users' mood not SE regulations :) \$\endgroup\$ – 3bdalla Feb 27 '15 at 10:59
  • \$\begingroup\$ I don't understand... The question is not closed...? \$\endgroup\$ – user996987 Feb 27 '15 at 14:56

As mentioned in Scott's answer, since this is open source hardware, you have to make any changes to their files available also.

Re the firmware, you don't have to make any of the source code available, so your IP (intellectual property) is covered their. You do have to make your object files available in case someone wanted to burn their own chip using an updated version of the Arduino core and libraries. Very unlikely but that's what the license says.

Yes, you can have the PCB manufacturer program the chip. The programming can be done after the ATmega has been soldered on the board as long as you include a 2x3 pin header for ISP (In System Programming) to your board.

Make sure the entire image is programmed onto the chip, including both the bootloader and your application code. This will allow you to update your application code in the future if needed. So make sure you include the necessary interface so you can connect up the Arduino IDE to your board for updating the app.

If you will be programming the ATmegas before putting them on the board, with both the bootloader and application code, using some sort of jig, then you could omit the ISP header but there is the possibility the board could become "bricked" in the future and you would not be able to update it using the IDE. So I suggest keeping the header, unless there isn't room for it. Cost weise, its ony a few cents.

  • 1
    \$\begingroup\$ Even easier than installing the ISP header is to have the footprint for the header but not install it. The pads are still available if ISP is needed in the future. My company builds most of our production boards that way. We use a jig with pogo pins but programming can be as simple as pogo pins installed into the end of the programmer (PICkit 3, for example). Yeah - PICkit isn't applicable to Arduino but I mention it as an example. \$\endgroup\$ – Dwayne Reid Feb 26 '15 at 17:17
  • 2
    \$\begingroup\$ @DwayneReid Good point. There is a company called Tag-Connect that makes cables that fit onto a board with a tiny footprint (about the size of an 0805 resistor plus some mounting holes). \$\endgroup\$ – tcrosley Feb 26 '15 at 17:31
  • \$\begingroup\$ Tag-Connect is awesome. It saves us about $5/board. \$\endgroup\$ – Matt Young Feb 26 '15 at 18:48
  • \$\begingroup\$ For programming through-hole chips I have been using clamp-on IC test clips. No programming header on the PCB required and it just clamps on top of the chip's pins. They make em for SOIC too. \$\endgroup\$ – captcha Feb 26 '15 at 23:31

Yes, but a number of points might discourage you. See http://arduino.cc/en/Main/FAQ, at the question "Can I build a commercial product based on Arduino?" If you started with the Eagle files for the Arduino, you'd have to make your schematics and layouts available.

A manufacturer can and will burn any file you want to on a chip. If its a standard Hex file, this can often be done even before the chip is mounted. If you require some sort of connection of your board with an IDE, you should expect to have to provide the whole programming environment to the manufacturer, maybe even including a computer, and you will pay more for doing this.

  • \$\begingroup\$ Thanks for your answer. The added value of my product is not on my schematics, but more on the use case and the service that comes with, so that's not a problem to make it public. Even my code could be public actually. Ok, so I just need to take my generated hex file generated by the arduino IDE and give it to the manufacturer. Thanks. \$\endgroup\$ – user996987 Feb 26 '15 at 14:00
  • \$\begingroup\$ I'm not too sure of that-- the Arduino uses a bootloader, and puts the generated file where it needs to. You might have to arrange for that hex file to go to the right place -- or take a hex image of a working chip and try it. \$\endgroup\$ – Scott Seidman Feb 26 '15 at 20:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.