center-board pads for: USB, SWDIO and additional 3.3v capacitor
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.
PAD
Pin#
CPU pad
GPIO
PWM
Analog
Serial
SPI
I2C
I2S
Additional
Data 1 / ID
0
PA7
resistored
if no pixels
✓
1
PA6
resistored
✓
Data 2
2
PA9
✓
if no pixels
TX1
3
PB4
✓
MISO1
Data 3
4
PB5
✓
if no pixels
MOSI1
SD
S/PDIF
5
PA10
✓
RX1
Data 4
6
PA4
✓
✓
FS
DAC
Free 1
7
PB3
✓
✓
SCK1
SCK
Servo
Free 2
8
PB10
✓
✓
RX2
SCK2
SCL4
Servo
Free 3
9
PB11
✓
✓
TX2
SDA4
Servo
10
PC2
✓
✓
MISO2
Button 1
11
PB14
✓
SDA2
Touch
12
PC5
✓
✓
Wakeup
Button 2
13
PB13
✓
SCL2
Touch
14
PA2
✓
Wakeup
Button 3
15
PB15
✓
MOSI2
Touch
RX
16
PC0
✓
✓
RX3
SCL3
TX
17
PC1
✓
✓
TX3
SDA3
SDA
18
PB7
SDA1
SCL
19
PB8
SCL1
LED1
20
PA1
FET
✓
LED2
21
PB1
FET
✓
IR
LED3
22
PC7
FET
✓
LED4
23
PB6
FET
✓
LED5
24
PC6
FET
✓
LED6
25
PB0
FET
✓
BATT+ - 2.6 to 5 volt input, drives everything except the LEDs
BATT- - negative pad for LEDs, needs to be at same level as GND when both are connected. Note that there are two of them, which can be useful when driving many powerful LEDs.
GND - ground for electronics except LEDs. Note that the two GND pads are interchangable and connected through the board.
Button 1/2/3 - Hook up to closing buttons, or potentially touch buttons.
Data 1 / ID - Normally used to measure the blade ID restor, and if it's a neopixel blade, feed out neopixel data. For a fixed non-neopixel saber, it could be repurposed. Note that
this pin has an internal 470 ohm resistor on it, so when hooked up to a neopixel blade, it does not need any resistors.
Data 2-4 - additional neopixel data outputs, or free for other purposes.
Free 1-3 - Can be used as buttons, additional neopixel outputs, pwm or servos
LED 1-6 - Hooks up to negative side of LED (positive side of LED hooks up directly to battery.) These pads can handle up to 30 volts.
SD Power - FET-controlled 3.3v. can be used to power down bluetooth and displays in low-power mode.
SDA, SCL - i2c bus, used internall to talk to the motion sensing chip.
5v - generated by the proffieboard, normally it's only on when sound is playing.
3.3v - generated by the proffieboard.
GPIO - (general purpose in-out) all gpio pins can be used as neopixel ouputs, button inputs, IR reading inputs and many other purposes.
PWM - (pulse-width modutlation) pwm-capable pads can be used to drive LEDs and servoes. The PWM can control the brightness of the LED or the angle of the servo.
Analog - analog-capable pins can use analogRead() to read voltages between 0 and 3.3v volts. (Voltages outside this range may damage the board.)
Serial - simple serial ports for talking to other chips.
i2c, SPI - buses for talking to other chips.
S/PDIF, I2S - audio output options
Wakeup - deep-sleep wakeup capable pins
DAC - digital-to-analog capable pins
IR - ir output pin
Installation
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.
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.
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:
It does not protect whatever is hooked up to LED1-6
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.
Using low-current power switches
V3 Proffieboards already have a pFET that control the current that comes into the board.
By using this pFET instead of controlling the incoming power directly, only a few milliamps
will pass through the switch, which makes it safe to use tiny wires and switches to control
the power to the board. This can be done with two wires and a resistor, or with three wires:
Step-by-step instructions:
Cut the bridge between the two pads. (where the green line is.)
Measure to make sure the pads are no longer connected.
If you want to use the two-wire version, install a 100k resistor in the yellow rectangle.
(Some boards will come with this resistor already installed.)
Connect switch as shown. Measure to make sure it works.
A few things to note:
The switch shown here is a high-current switch, but any latching or SPDT switch will work.
If you use a latching switch, you need to use the two-wire version, and the resistor is required.
The BLUE wire is just GND, you can use any GND pad, you don't have to use this particular GND pad.
The RED wire is just BATT+, you can use any BATT+ pad (or even the + side of the battery), you don't have to use this particular BATT+ bad.
Any size wire will work, even hair-thin wires like 36-gauge.
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.
Problems? Questions? Suggestions? Check out The Crucible.
This page has been accessed 10,227 times since
May
23rd,
2021.
Last modified:
May
6th,
2023
- Design by
Monica &
FredrikHübinette