En programmeringsjig til vores DougsWordClock.com DeskClock Boards: 9 trin

En programmeringsjig til vores DougsWordClock.com DeskClock Boards: 9 trin

Indholdsfortegnelse:

Anonim

Hej - Det har været * aldre *, siden jeg sendte noget til Instructables for at give tilbage til samfundet, så jeg troede, jeg ville dele, hvordan jeg byggede vores nye programmeringsrør til de plader, der bruges i www.dougswordclock.com DeskClocks.

Du ved hvordan det går, du har skabt et fantastisk projekt og fortalt mange mennesker om det og helt sikkert nok masser af mennesker vil have en til sig selv. Du får kredsløbene lavet og bruger aldre, der anvender loddepasta og komponenter, reflow lodning og installation af komponenter uden reflow, så begynder du at indlæse mikrokoden i controlleren, så projektet gør det, det er designet til at gøre ….. Wow - Hvad mange trin!

Indlæser mikrokoden ????? Yep - som du måske ved, er en computer uden software temmelig ubrugelig. Alle vores ure har et specielt program indlæst i dem, så de kan fortælle tiden korrekt. Når jeg bygger tavlerne til uret, er der ingen software indlæst i microcontroller chip (Chippen er for lille til at sætte ind i en normal programmerer) - Denne proces sætter softwaren i chippen, så uret kan fungere.

I gamle dage (for et par uger siden:-)) brugte jeg en bærbar computer, en USBTiny programmerer og den vidunderlige AVRDUDE software til at programmere bestyrelserne - jeg ville sidde ved mit skrivebord i værkstedet, skrive programmeringskommandoen ind i computeren, Hold programmeringskablet mod uret, og tryk på ENTER. Computeren ville så pligtfuldt programmere bordet for mig, og jeg ville blive gjort. Den eneste fangst med dette er, at jeg skal sidde der hele tiden, så jeg besluttede at en af ​​mine medarbejdere kunne gøre det i stedet …. Desværre fandt han, at nogle gange flyttede han kablet en lille smule, hvilket fik programmeringsjobbet til at mislykkes og han bliver nødt til at starte igen. For at sammensætte problemet, hvis der var en loddningsfejl, ville min bærbare pc's USB-port lukke ned, og USBTiny skulle unplugged og genindstilles for at nulstille USB-porten ….. Der skulle være en bedre måde !! hvordan gjorde de store drenge det?

Det viser sig, at Big Boys (tm) har robotter, der er meget gode til at holde kabler stadig og funky elektronik, der kan teste. Fordi DougsWordClock.com løber tør for mig, ville jeg ikke komme snart derhen, så hvad kunne jeg gøre for at gøre vores liv lettere? Som min ven Mikal ville sige …. "Byg en jig!". (Note1)

Så her har vi den Jig, Doug lavede! Selvom det er specielt designet til at programmere DougsWordClock.com DeskClock boards, kan begreberne her udvides til ethvert andet mikroprocessorbaseret projekt, du bygger i bulk, så læs om, hvordan jeg løste problemet og se hvad du kan lave selv!

Lad os begynde.

-------------------------------------------------------

Note 1 - I begyndelsen af ​​2000 faldt min bedste ven Mikal ind i mit værksted, da jeg byggede et sæt hylder - jeg kørte leddene, hvilket var en kedelig gentagne opgave - Mikal sagde "Build a Jig!" Jeg sagde "For hårdt - jeg bliver færdig snart" - Han sagde "Nahh, lad os bare gøre det" …. Vi gjorde. Lang historie kort, enkelheden ved at bygge en jig, kombineret med det faktum, at jeg ikke tænkte på det ramte mit Ego hårdt … Jeg besluttede var ubrugelig …. (Gå figur). Til sidst slog jeg ud af det og besluttede at skrive en artikel for at bevise for verden at jeg ikke var ubrugelig - Så jeg designede et PIC-baseret elektronisk terningsprojekt. Det blev endda offentliggjort af Silicon Chip magazine - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Sand historie og sandsynligvis begynder at bryde mig tilbage til at bruge mikrocontrollere til projekter og skrive artikler..:-)

forsyninger:

Trin 1: DeskClock Board

Først begyndte jeg med DeskClock bordet. Da jeg designede det, leverede jeg en 6-polet stik for at lade et programmeringskabel blive tilsluttet - Her er et billede af brættet, der viser de forskellige stik.

Selvfølgelig - når vi lægger komponenter på tavlen, fylder vi ikke disse stik - de er simpelthen der til programmering og testning.

Siden i dette billede på bagsiden af ​​brættet, i modsætning til forsiden af ​​brættet med alle lysdioder - det bliver først befolket. under fremstillingen.

Jeg brugte dette kort til meget omhyggeligt at måle placeringen og afstanden mellem de forskellige forbindelser, jeg ønskede at oprette forbindelse til.

Nu - hvordan fik jeg forbindelse til bestyrelsen? Glad for, du spurgte. jeg brugte Pogo pins!

Trin 2: Pogo Pins og anden hardware

Pogo pins er, hvad professionelle bruger til at gøre midlertidige forbindelser til bestyrelser, når de tester dem. De fås i mange størrelser og former og har en præcisionsfjederbelastet mekanisme for at sikre, at stiften presses mod bordet med jævnt tryk.

Jeg bragte mine Pogo pins fra en leverandør på eBay - de var billige nok, at jeg tror, ​​jeg har en levetidstilførsel nu! Den samme leverandør forsynede mig også med den anden vanskelige hardware, som jeg havde brug for at bruge til at spænde bordet ned.

Her er et par fotos af stifterne selv, den nifty board clamp og gummibord afstandsstykker.

Trin 3: Måling og montage til bestyrelsen

Så jeg har Pogo Pins og andet monteringsudstyr. Jeg målte omhyggeligt hulstørrelserne og afstanden og skabte et layout til min laserskærer. Jeg kunne også bare have boret huller ved hjælp af en boremaskine, men cutter gør et smukt repeterbart job.

Jeg besluttede at rumme hullerne, så stifterne ikke var i midten af ​​hulhullerne - det sikrede, at tappene kontaktede styret fast.

Jeg har også designet plads til klemmen og nogle faner til bagsiden af ​​tavlen.

I tilfælde af DeskClock bordet er der en 2,1 mm aksial stikkontakt installeret på brættet, at jeg var nødt til at give et reliefhul til, og endelig glem ikke gummibåndene for at understøtte det bageste bord.

Trin 4: En Raspberry Pi til hjernen og en 1,8 "Farve Skærm

Jeg havde brug for noget til at erstatte min bærbare computer, så jeg besluttede at bruge Raspberry PI.

Den monteres let på bunden af ​​programmeringsenheden og bruger et simpelt 26-vejs kabel tilsluttet GPIO-tappene til at forbinde DeskClock-bordet og skærmen og omskifteren.

Den specifikke pin-konfiguration, som jeg brugte, er ikke vigtig - du vil bruge din egen ud fra dine behov.

Skærmen, der blev brugt, er en 1,8 "skærm fra Sainsmart - jeg bragte en bunke af dem for 6 måneder siden, hvis jeg fandt en brug for dem - det var bare brugen! Jeg fulgte Marks blog http://marks-space.com/ 2012/11/23 / raspberrypi-tft / for at genopbygge en Linux-kerne for at understøtte skærmen.

Mark var rigtigt - at kompilere kernen på Pi var en langsom proces - jeg lod det køre natten over.

Tilslutningen af ​​skærmen var enkel, og ganske hurtigt havde jeg en fungerende FrameBuffer2 enhed.

Trin 5: En lomme til at holde 1,8 "displayet

Jeg havde brug for en måde at montere LCD-skærmen på jiggen, så den ikke krølle rundt. Jeg cam-up med en enkel ides - Bare bygg en vinklet lomme til det.

Den sidder pænt på forsiden af ​​enheden, i en vinkel for brugeren for nemt at se skærmen.

Displayet passer godt, men hvis det skulle beslutte at glide ud, og 3 mm nylon skrue holder på plads.

Det er sjovt, jeg har glemt i cirka 20 år, hvor nemt Akryl er at arbejde med. Jeg brugte den i butikken i skole og så glemte det straks. nu har mit værksted spande af ting:-)

Trin 6: At gøre Pi være en programmør

Den næste del af bygningen var at finde software, så jeg kunne programmere bestyrelsen direkte med Pi. Jeg besluttede at bruge den metode, som Steve Marple forklarede på sin blog:

I mit tilfælde brugte jeg forskellige GPIO-ben, da 1.8 "LCD-skærmen var i konflikt med dem.

Der var et højt glød af glæde, da jeg opdagede, at Pi var programmering korrekt.

Nogle mennesker har brugt niveau shifters til at beskytte PI - det gjorde jeg ikke og projektet virker bare.

Trin 7: En skift skifte til fjernelse af strøm fra DeskClock Board

Jeg besluttede at installere en skifteknap for at fjerne strøm fra DeskClock-brættet og for at fortælle PI, når det var på tide at starte.

Skifteren var en DPDT, så den ene halvdel er forbundet med + 5v og den anden halvdel er forbundet med en ubrugt GPIO-pin.

Når afbryderen var slukket, blev GPIO-stiften jordet, og da den var på, blev GPIO-stiften trukket højt. Jeg brugte en 100 ohm modstand for at sikre, at GPIO-stiften blev bufferret, hvis den blev sat til en output.

Trin 8: Software i Pi til at binde det hele Togehter

Dernæst skrev jeg mit første Python-program.

Jeg er en C-programmør - Heldigvis er der skovle af vejledninger til at hjælpe.

Jeg fik det meste af koden fra et sæt prøver, hvor nogen brugte deres PI som vejrdisplay.

Her er koden for Python-scriptet, der læser knappen og styrer displayet

#! / Usr / bin / python

import pygame

import sys

importtid

fra tiden import strftime

import os

import subprocess

importere RPi.GPIO som GPIO

GPIO.setmode (GPIO.BCM)

#indstil frembuffer-enheden til TFT'en

hvis ikke os.getenv ('SDL_FBDEV'):

os.putenv ('SDL_FBDEV', '/ dev / fb1')

os.putenv ('SDL_VIDEODRIVER', 'fbcon')

def displayTime ():

# bruges til at vise dato og klokkeslæt til TFT

screen.fill ((0,0,0))

font = pygame.font.Font (ingen, 50)

nu = time.localtime ()

for indstilling i ("% H:% M:% S", 60), ("% d% b", 10):

timeformat, dim = indstilling

currentTimeLine = strftime (timeformat, nu)

text = font.render (currentTimeLine, 0, (0,250,150))

Surf = pygame.transform.rotate (tekst, -90)

screen.blit (Surf, (dim, 20))

def displayText (tekst, størrelse, linje, farve, clearScreen):

# bruges til at vise tekst på TFT-skærmen

hvis clearScreen:

screen.fill ((0,0,0))

font = pygame.font.Font (Ingen, størrelse)

text = font.render (tekst, 0, farve)

textRotated = pygame.transform.rotate (tekst, -90)

textpos = textRotated.get_rect ()

textpos.centery = 80

hvis linje == 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

elif linje == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def main ():

global skærm

pygame.init ()

størrelse = bredde, højde = 128, 160

sort = 0,0,0

RØD = 255,0,0

GREEN = 0,255,0

BLUE = 0,0,255

HVID = 255,255,255

fail_cnt = 0

GPIO.setup (18, GPIO.IN)

pygame.mouse.set_visible (0)

screen = pygame.display.set_mode (størrelse)

displayText ("DougsWordClock", 20, 1, GREEN, True)

displayText ("150mm Programer", 20, 2, BLUE, False)

pygame.display.flip ()

time.sleep (5)

displayText ("Firmware Rev", 20, 1, RED, True)

displayText ("20130520", 40, 2, WHITE, False)

pygame.display.flip ()

time.sleep (5)

mens det er sandt:

displayText ("Waiting", 30, 1, GREEN, True)

displayText ("Insert Board", 20, 2, BLUE, False)

pygame.display.flip ()

hvis (GPIO.input (18)):

displayText ("Programmering", 30, 1, (200,200,1), True)

displayText ("Vent 10 Sec", 30, 2, RED, False)

pygame.display.flip ()

Og her er shell scriptet, der rent faktisk gør programmeringen:

#! / Bin / sh

cd / home / pi

sudo afrdude -c gpio -p m169 -Ufuse: w: 0xf5: m -U hfuse: w: 0xDa: m -U lfuse: w: 0xFF: m -Uflash: w: DeskClock-Prod.hex

Selvfølgelig har din jig forskellige software:-)

Trin 9: DET ALLE ARBEJDER !!!

Endelig havde jeg meget forbundet, og det fungerede en godbid!

Jeg lærte en bunke om at køre disse små 1,8 "LCD-skærme, til det punkt, hvor de nu er min tur til enheden til trivielle Pi-projekter.

Anyway - Her er et par billeder af det i aktion.

God fornøjelse.

Hvor herfra?

Nå det er et køligt spørgsmål - I øjeblikket programmerer programmøren simpelthen bordet og verificerer, at mikroen blinkede korrekt. Vi inspicerer LED'ernes funktion visuelt (det lyse display) - Det næste skridt er at tilføje en funktion, der kan kommunikere med styringskortet for at validere nøjagtigheden af ​​RTC-chip / krystal-kombinationen, sammenligning af tidsforløbet med et internet standard. Det burde ikke være for svært …..:-)