Raspberry Pi – Wordclock rebuild

Part 1: Back
Part 2: Middle
Part 3: Front
Part 4: Electronics & Buttons

Based on the idea from bk1285 (Youtube) a college and myself have rebuild the wordclock. Let’s get started…

wordclock-final

Part 1: Back

wordclock-01-back wordclock-02-back-with-stripes-and-copper

The back of the clock is made from  10mm MDF and has the total dimensions of 500×500 and painted white to enhance the diffusion of the light.
We countersinked grooves for the WS2812B LED with a depth of 1mm. On each end of the strip we made some copperplate adapters, to connect each strips.
The solder is placed on the copper plates. The adhesive back o the WS2812B stips is removed from the back and soldered from the front.
Additional we added a circumferential groove to be able to add buttons, hide cable or make any future modifications.
wordclock - copperplate

Part 2: Middle

wordclock-03-middle

The middle part is also made out of MDF, but this time out of 19mm.
Back and middle are attached via a four screw and a nut from the front.
wordclock - middlewordclock - nut

Part 3: Front

wordclock-04-paper wordclock-06-plexiglas wordclock-05-vinyl

The front is made out of grey Plexiglas (GS  7C83) with the dimension 520x520mm. This results in on 10mm overhang on each side.
On the back of the Plexiglas we attached black self adhesive vinyl foil.
The vinyl foil was cutted mirrored using a plotter and contains the letters.
With the black foil on the dark grey Plexiglas the letters are very hard to see if no light is illuminating the letter.

The vinyl covered plexiglas is attached the he middle part with some magnets normally used to hold closed doors.
wordclock - magnets
The small metal plate is glued with superglue to the vinyl foil.
This allow the front to be taken apart quickly and allows different styles of front covers (followup projects are coming).

To improve the diffusion of the LED light I added white 80gr/m2 Copypaper between the middle layer and the Plexiglas.

Part 4: Electronics & Buttons

3 buttons on the left side where added to control via GPIO the Python code.
Furthermore I added a Power switch at the bottom of the clock to disconnect the power or restart the PI.
wordclock - buttons wordclock-3-buttons

I used an Raspberry Pi2 with USB Wifi Dongle (needed to get current time).
The Pi  is place in a top groove and connected via breadboard connectors.
I had to adjust the wiring to fit my layout by defining a new class (wiring.py):

class michaels_wiring:
    '''
    michaels wiring
	'''

    def __init__(self, WCA_WIDTH, WCA_HEIGHT):
        self.WCA_WIDTH   = WCA_WIDTH
        self.WCA_HEIGHT  = WCA_HEIGHT

    def getStripIndexFrom2D(self, x, y):
        '''
        Mapping coordinates to the wordclocks display
        Needs hardware/wiring dependent implementation
        Final range:
             (0,0): top-left
             (self.WCA_WIDTH-1, self.WCA_HEIGHT-1): bottom-right
        '''
        if x%2 == 0:   # even columns 0,2,4,6,8,10
            pos = (x)*self.WCA_HEIGHT+y     # last +2 for the minute LEDs before the WCA        
        else:          # odd columns 1,3,5,7,9
            pos = (self.WCA_HEIGHT)+(self.WCA_HEIGHT*x)-y-1
        ''' print("DEBUG " + "X=" + str(x) + " ----  Y=" + str(y) + " ---- POS=" + str(pos) ) '''
        return pos
        
    def mapMinutes(self, min):
        '''
        Access minutes (1,2,3,4)
        This implementation assumes the minutes to be wired as last 4 of the ed-strip
        '''
        if min == 1:
            return 113
        elif min == 2:
            return 112
        elif min == 3:
            return 111
        elif min == 4:
            return 110
        else:
            print('WARNING: Out of range, when mapping minutes...')
            print(min)
            return 0