The Proffieboard is a revolution in lightsaber electronics. Fully open source this feature packed board includes smooth swing which provides the most realistic sound effects we have seen in a sound board. The v3.9 ProffieBoard is the latest update in the Proffieboard saga and features a more powerful STM32 microprocessor combined with a motion coprocessor IMU, 3W audio amplifier, and 6 MOSFETs to control external LEDs. It features USB charging, support for deep sleep, additional flash memory (512kb), and much more. 

New in V3.9:

All of this in exactly the same size as a Proffieboard V2.

Specifications:

Pinout
Arduino pin numbers in parenthesis.

 

Pin function table Note that some of the pads on the proffieboard are hooked up to two pins on the CPU. Those pads have two pin numbers in Arduino, and each pin number can have a different set of function. Care should be taken to not activate two different functions on connected pads, as that can make the CPU chip draw too much power, which can damage it.

PADPin#CPU padGPIOPWMAnalogSerialSPII2CI2SAdditional
Data 1 / ID0PA7resistoredif no pixels     
1PA6resistored     
Data 22PA9if no pixels TX1    
3PB4   MISO1   
Data 34PB5if no pixels  MOSI1 SDS/PDIF
5PA10  RX1    
Data 46PA4    FSDAC
Free 17PB3  SCK1 SCKServo
Free 28PB10 RX2SCK2SCL4 Servo
Free 39PB11 TX2 SDA4 Servo
10PC2  MISO2   
Button 111PB14    SDA2 Touch
12PC5     Wakeup
Button 213PB13    SCL2 Touch
14PA2      Wakeup
Button 315PB15   MOSI2  Touch
RX16PC0 RX3 SCL3  
TX17PC1 TX3 SDA3  
SDA18PB7     SDA1  
SCL19PB8     SCL1  
LED120PA1FET      
LED221PB1FET     IR
LED322PC7FET      
LED423PB6FET      
LED524PC6FET      
LED625PB0FET      

 

Installation

  1. Please test the boards first. Plug it in to a computer and make sure it works and that the SD card can be accessed. Go to the ProffieOS page and make sure you have Arduino and your computer configured correctly for programming the board.
  2. Use the configuration generator to work out the wiring and the configuration. Please note that the configurator can only generate a small fraction of all possible configurations, but if you don't use the configurator you will need to construct your own config file, which can be more difficult.
  3. Solder the board according to the wiring diagram in the configuration generator. Make sure to check all your soldering with a multimeter. Take the SD card out before soldering.

 

A note on reverse polarity protection
This version of the proffieboard has reverse polarity protection. Please note that there are two major caveats to the reverse polarity protection:

  1. It does not protect whatever is hooked up to LED1-6
  2. It does not work while charging!

Regular LEDs don't have a problem with reverse power, but neopixels can easily fry if the battery is hooked up backwards. Some pixels, like WS2813 have their own reverse polarity protection which is required if you really want your saber to survive unharmed if you plug in the battery backwards.

 

Wire gauges
Most pads on the proffieboard will not need to carry any significant amount of power and can use 30 awg (very thin) wire if you choose. However, Battery- will carry the combined power of all your LEDs, which is a fair amount of power. It is recommended to use thicker wires, for these wires. There is no absolute rules for what wire guages are required, but here is a helpful chart. (See the "chassis wiring" column.) Keeping the high-power wires short helps as well.

Programming
Most of the time, programming the Proffieboard is as easy as hookin up the USB cable to a computer and pressing the "upload" button in the Arduino IDE. However, an interrupted upload or a crashing program can sometimes stop that from working. If that happens, hold the boot button, then press and release the reset button. This will put the Proffieboard in bootloader mode, and pressing "upload" should now work.

Touch Buttons
Any of the buttons can replaced with a touch button. To wire a touch button, simply hook up the corresponding wire to a metal surface. Note that in spite of the name, you don't actually want anybody to actuall touch the touch buttons. The metal surface needs to be insulated, both from the rest of the hilt, and from the fingers that will be "touching" it. In my case, I used a circuit-board clamp card in a Graflex lightsaber, then I covered it up with tape to insulate it from everything else. More details here.

Choosing Resistors
Calculating resistor values is fairly easy. Just look up how many amps the LED can handle and at what voltage it expects to achive that current. Then the resitor value we want is (BatteryVoltage - LedVoltage) / LedAmps. And the resistor needs to handle (BatteryVoltage - LedVoltage) * LedAmps watts. Example, if the LED wants 1A @ 3.2 volts, the resistor would be (3.7 - 3.2)/1 = 0.5 ohms, (3.7 - 3.2) * 1 = 0.5 watts.

Note that I use 3.7 volts for the battery in these calculations, while li-ion batteries tends to top out at 4.2 volts. Proffieboard can compensate for this by using PWM to reduce the total amount of power and heat generated by the LED when the voltage is higher than what it is rated for. This mode is efficient and seems to work well, but it is possible that it will reduce the life of the LEDs. If you are not comfortable with this, you should use 4.1 or 4.2 volts in the calculations above.

Multi-battery setup
The FETs on the proffieboard can handle voltages up to 30v, so it's possible to do multi-cell setups. However, "Battery+" cannnot handle more than ~4.5 volts. So you would need a separate battery to power the CPU. Another possibility would be to do two batteries in series, but only use one of them to power the CPU. Since the batteries would be discharged unevently, they would have to be charged separately. In the future, I hope to make "Battery+" handle a wider range of voltages, which would make multi-cell configurations a lot simpler.

Using Data 2, Data 4, RX and TX for PWM
Data 2, Data 4 and RX and TX can be used to drive LEDs instead of neopixels or serial ports. However, a single timer is used to drive these pins. For PWM, the timer is usually set to 800Hz, however, when neopixels are used, this timer is set to 800kHz. This basically means that if you use any neopixels, all of these pins become unsuitable for driving LEDs. So, if you select a 6-segment blade + flash string in the configurator above, you cannot use the other data pins to drive nepixels unfortunately.

Troubleshooting
If you're having problems, check out the troubleshooting page.