22/10/2025

PIC Programmer Using Arduino

By snorlaxprime

I have developed the BEEPIC system, and start experimenting with a few source code that was originally intended for the BOLT system, but because they are using different memory location for their boot loader, I accidentally loaded the program into the wrong memory location.

Then, searching around for a pic programmer, the easiest is to buy a PICKIT2 or PICKIT3 and all my problem is solved. But that would be too easy, plus where is the fun in that?

I stumble across a pic programmer. So naturally, I am going to build this to fix my BEEPIC that was accidentally lost it’s boot loader. Here is the steps that I have done to build it. As the added bonus, this PIC programmer can be used to program a range of PICs. You can get the whole program from github.

Step 1. Gather all the components

I carefully choose which components that I already have to save me from buying components. So here is the list:

  • 1x Arduino Nano
  • 2x NPN transistors (C945)
  • 2x PNP transistor (226)
  • 1x LM7805
  • 1x 0.1uF capacitor
  • 2x 4.7k resistors
  • 2x 10k resistors
  • 4x 1k resistors
  • 1x IN4148 diode
  • 1x 5 pin female headers

Step 2. Build the circuits

There are 3 different choice of circuit to choose from, I choose the one with external 12V power source since, I don’t have an inductor that can pump up the voltage to 12V for VPP pin to program the 18F2550

Step 3. Load the hex file into the Arduino nano

I never know that you can load the .hex file into arduino nano, the program is called “PIC_PROG.hex” and it is located in the firmware folder. You can use the following command to load the firmware to Arduino nano. The following command assume you are using Windows and having Arduino IDE installed, the Arduino is detected at COM5, the baud rate is set at 57600, and the PIC_PROG.hex file is located in the C:\NanoPIC folder. You might have to adjust the baud rate if it is not working, you can set it to a slower rate.

If it was successful you should see the following message

Now that you have the firmware loaded, you are ready to program the PIC. In my case I am connecting the female headers to my BEEPIC board.

Step 4. Program the PIC

Connect the female connectors to the ICSP port of the BEEPIC board, they are in the following order:

  • VPP
  • VCC
  • GND
  • PGD (Programming Data)
  • PGC (Programming Clock)

The configuration above is the same as PICKIT. You can see it in the picture below:

You will need an external 12V power supply to be connected to the Programming board

You can see the programming in action in the following video