# Difference between revisions of "Polyhedrone"

Projects
Participants Brainsmoke
Skills pcb design, Golang, maths
Status Active
Niche Electronics
Purpose World domination

Idea: make a quad copter with lots of addressable RGB LEDs

# Stage 1: Ledball hardware (completed)

## pick a shape

A Catalan solid is a polyhedron with faces which are all identical (but its vertices are not.)

This is a nice property for a ball made out of PCBs, as you only need to order one shape of PCB.

I Picked the deltoidal hexecontahedron because it looked pretty.

## napkin calculation

As my ledball should become a flying Death^WDay star at night, I wanted to use lots of LEDs. Powering them over 5V would mean lots of amps. I chose to drive the LEDs per three by putting them in series. This allows the LEDs to be powered reasonably efficiently using 11.1V (3 Cell LiPo) or 12V (ATX PSU.)

This does preclude the use of WS2812B (neopixel) LEDs, so I went for external WS2801 driver chips

• The deltoidal hexecontahedron has 60 faces
• 5 WS2801 drivers per face
• 3 LEDs in series per driver
• max 20mA per colour, 3 colours
```>>> 60*5*3*.02
18 # Amps
>>> _*12
216 # Watt
```

## Calculate pcb shape

The code I wrote to generate the PCB shape:

It generates an SVG shape based on a given radius (of the inscribed sphere) of the polyhedron and the material thickness. The material thickness is used to generate a notched edge which locks at precisely the right angle.

The script also generates slots for the tie-wraps that will hold the ball together.

## Bill of materials

quantity package part comment
60x PCB ordered 100x 2 layer, 10^2cm max, .6mm, white HASL @ Seeedstudio
300x SOIC14 WS2801 Led Driver Ledsee
900x 5050 RGB LED SMD ordered: 1000x Samsung SPMFCT5606N0S0A1E0 (Nice color balance) @ Ledsee
900x 1206 Resistor 33 Ohm use 30 Ohm for 20 mA/color (max specced brightness)
300x 0805 100nF Capacitor
12x SOT223 AMS1117-3V3 voltage regulator Ledsee
1x Raspberry Pi B+
1x 200+ Watt (400 Watt) ATX PSU

## Soldering & Testing

### Test program

``` #include <SPI.h>

void setup()
{
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
SPI.setClockDivider(SPI_CLOCK_DIV16);
}

void fill_colour(uint8_t r, uint8_t g, uint8_t b)
{
uint16_t i;
for (i=0; i<500; i++)
{
SPI.transfer(r);
SPI.transfer(g);
SPI.transfer(b);
}
}

void fill_back(uint8_t r, uint8_t g, uint8_t b)
{
uint16_t i;
uint8_t j;
for (i=0; i<100; i++)
{
for (j=0; j<12; j++)
SPI.transfer(0);

SPI.transfer(r);
SPI.transfer(g);
SPI.transfer(b);
}
}

void loop()
{

for(;;)
{
fill_colour(255, 0, 0);     // Red
delay(500);
fill_colour(0, 255, 0);     // Green
delay(500);
fill_colour(0, 0, 255);     // Blue
delay(500);
fill_colour(255, 255, 255); // White
delay(500);
fill_back(255, 0, 0);
delay(500);
fill_back(0, 255, 0);
delay(500);
fill_back(0, 0, 255);
delay(500);
fill_back(255, 255, 255);
delay(500);
fill_colour(0, 0, 0);        // Black
delay(500);
}
}
```

## Driving the leds / Power

For now I use a Raspberry pi and an ATX PSU in the same way as for the ledwall.

When it is part of a quad copter I'll probably use a Carambola2.

# Stage 1.1: Flight case

(generated with the same script)

• 8x
• 2x
• 1x

# Stage 2: Software (completed)

Python software: github.com/brainsmoke/dhxlamp (obsolete)

Rewrite in Go: github.com/brainsmoke/goled