Once you have assembled your boards you need to program them. To do so you will need the following:
Microchip (who make the PIC microcontrollers) will provide all of these, some of them for free to download. Check out www.microchip.com
The Hardware Interface
We used PICKit3 to interface to our boards. This is the one thing that you need to buy. The PICKit3 is a small, fairly inexpensive tool which plugs one end into a USB port on your computer and the other end into your circuit board. Check the Microchip website for the latest tool - they may have a newer version by now. You need something that will program the two microcontrollers we use, the PIC16F1827 and the PIC12F1822.
MPLAB X IDE
Microchip has created a comprehensive IDE (Integrated Development Environment) and give it away for free. An IDE is a program that takes everything you need to program a microcontroller and ties it up into a neat package.
The latest at the time of writing is MPLAB X IDE version 2.
Compiler
Different compilers are available for the PIC microcontrollers. I have only seen C compilers. You need to pick one based on the following:
Code
You can either start writing from scratch, or go along to the "files" page and find yourself some code. There are separate projects for the BMS Master and Module boards. Download a zip file, extract it and look through the readme file to see whether it does what you need.
At a minimum you will need to alter the voltage setpoints to suit your battery pack. You may also need to alter the values for the charger operation. And you will want to add some of your own features of course!
Putting it all Together
Here is an example of what I did. You may decide to use different tools.
A useful tool for programming lots of Module boards is the "Programmer to Go" mode in the PICKit3. When you choose this option in MPLAB X it will compile your program into the PICKit3. After that, every time you press the button on the PICKit3 it will program (and verify) any connected device. So you can go along with your PICKit3 programming each of the modules at a rate of about one every 15 seconds. You do need to power the PICKit3 for this mode via the USB connector, I found that a phone charger and a long USB cable worked quite nicely.