Isang Programming Jig para sa aming DougsWordClock.com DeskClock Boards: 9 Steps

Isang Programming Jig para sa aming DougsWordClock.com DeskClock Boards: 9 Steps

Talaan ng mga Nilalaman:

Anonim

Hey - Ito ay * edad * dahil nagsumite ako ng isang bagay sa Instructables upang ibalik sa komunidad, kaya Akala ko ibabahagi ko kung paano ko binuo ang aming bagong programming rig para sa mga board na ginagamit sa www.dougswordclock.com DeskClocks.

Alam mo kung paano ito napupunta, lumikha ka ng isang kamangha-manghang proyekto at sinabi sa maraming tao tungkol dito at sigurado sapat na tonelada ng mga tao ang gusto ng isa para sa kanilang sarili. Nakuha mo ang mga circuit board na ginawa, at gumastos ng mga edad na nag-aplay ng solder paste at mga sangkap, reflow paghihinang at pag-install ng mga di-reflow component, pagkatapos ay simulan mo ang paglo-load ng microcode sa controller upang ang proyekto ay ginagawa kung ano ito ay dinisenyo upang gawin ….. Wow - Ano ang maraming mga hakbang!

Naglo-load ang microcode ????? Yep - tulad ng maaaring alam mo, ang isang computer na walang software ay medyo walang silbi. Ang lahat ng aming mga orasan ay may isang espesyal na programa na na-load sa mga ito upang maaari nilang sabihin ang tamang oras. Kapag nagtatayo ako ng mga board para sa mga orasan, walang software na ikinarga sa microcontroller chip (Maliit na maliit ang maliit na tilad upang ilagay sa isang normal na programmer) - Ang prosesong ito ay naglalagay ng software sa maliit na tilad upang ang pag-andar ng orasan.

Sa mga lumang araw (ilang linggo nakaraan:-)) Gumamit ako ng isang laptop, isang USBTiny programmer at ang kahanga-hangang AVRDUDE software upang magprogram ng mga boards - Gusto ko umupo sa aking desk sa workshop, i-type ang command ng programming sa computer, hawakan ang programming cable laban sa orasan at pindutin ang ENTER. Ang computer ay pagkatapos ay dutifully programa ng board para sa akin at ako ay tapos na. Ang tanging catch na ito ay na kailangan kong umupo doon sa lahat ng oras, kaya ako ay nagpasya na ang isa sa aking mga empleyado ay maaaring gawin ito sa halip …. Sa kasamaang palad, natagpuan niya na kung minsan siya inilipat ang cable ng isang maliit na bit na nagiging sanhi ng programming trabaho sa mabibigo at kailangan niyang simulan muli. Upang ma-compound ang isyu, kung nagkaroon ng isang paghihinang error, ang USB port ng aking laptop ay shut down at ang USBTiny ay kailangang unplugged at reseated upang i-reset ang USB port ….. Nagkaroon na maging isang mas mahusay na paraan !! paano ginawa ito ng mga Big Boy?

Ito ay lumiliko out na ang Big Boys (tm) ay may mga robot na napakagaling sa hawak na mga cable pa rin at funky electronics na maaaring gawin pagsubok. Sapagkat tumatakbo ang DougsWordClock.com sa aking garrage, hindi ako malamang na makarating doon sa lalong madaling panahon, kaya ano ang magagawa ko upang gawing mas madali ang aming buhay? Tulad ng sasabihin ng aking kaibigan na si Mikal …. "Gumawa ng jig!". (Note1)

Kaya narito kami ng Jig na ginawa ni Doug! Habang partikular itong idinisenyo upang magprogram sa DougsWordClock.com DeskClock boards, ang mga konsepto dito ay maaaring mapalawak sa anumang iba pang proyektong nakabatay sa microprocessor na iyong binubuo nang malaki, kaya basahin ang tungkol sa kung paano ko nalutas ang problema at makita kung ano ang maaari mong gawin!

Nagbibigay-daan.

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

Tala 1 - Noong unang bahagi ng 2000, bumaba ang aking pinakamatalik na kaibigan na si Mikal sa aking pagawaan habang ako ay nagtatayo ng isang hanay ng mga istante - Ako ay nagreretiro ng mga kasukasuan, na kung saan ay isang boring repetitive task - sinabi ni Mikal na "Gumawa ng Jig!" Sinabi ko "Masyadong matigas - matatapos na ako" - Sinabi niya "Nahh, hinahayaan lang gawin ito …. Ginawa namin. Ang maikling kwento ay maikli, ang pagiging simple ng pagbuo ng isang jig, kasama ang katotohanang hindi ko iniisip na ito ay na-hit ang aking Ego nang husto … Nagpasya ako ay walang silbi …. (Go figure).. Sa huli, ako ay nabigo sa labas ng ito at nagpasya na magsulat ng isang artikulo upang patunayan sa mundo na hindi ako walang silbi - Kaya dinisenyo ko ang isang PIC batay sa elektronikong dice project. Ito ay kahit na nai-publish sa pamamagitan ng Silicon Chip magazine - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Ang tunay na kuwento, at marahil ang simula sa akin paglabag pabalik sa paggamit microcontrollers para sa mga proyekto at pagsusulat ng mga artikulo..:-)

Mga Kagamitan:

Hakbang 1: Ang Lupon ng DeskClock

Una, nagsimula ako sa board ng DeskClock. Nang idisenyo ko ito, nagbigay ako ng isang 6 pin na connector upang payagan ang isang programming cable na konektado - Narito ang isang larawan ng board, na nagpapakita ng iba't ibang konektor.

Siyempre - kapag nag-load kami ng mga sangkap papunta sa board hindi namin populate ang mga konektor - ang mga ito ay doon lamang para sa programming at pagsubok.

Ang gilid sa larawang ito sa likod ng board, kumpara sa harap ng board sa lahat ng mga LEDs - ito ay makakakuha ng populated muna. sa panahon ng paggawa.

Ginamit ko ang board na ito upang maingat na sukatin ang lokasyon at espasyo ng iba't ibang koneksyon na nais kong kumonekta.

Ngayon - paano ako nakakonekta sa board? Ikinalulugod mong nagtanong. Ginamit ko Pogo Pins!

Hakbang 2: Pogo Pins at Iba Pang Hardware

Ang mga Pogo pin ay kung ano ang ginagamit ng mga propesyonal upang gumawa ng pansamantalang mga koneksyon sa mga board kapag sinubok nila ang mga ito. Available ang mga ito sa maraming mga sukat at mga hugis, at may isang katumpakan spring load mekanismo upang matiyak na ang pin ay hunhon laban sa board na may kahit na presyon.

Dinala ko ang aking mga pogo Pins mula sa isang supplier sa eBay - Sila ay mura sapat na sa tingin ko mayroon akong isang buhay na oras na supply ngayon! Nagbigay din ako ng parehong tagapagtustos ng iba pang mga nakakalito hardware na kailangan kong gamitin upang salansan ang board pababa.

Narito ang isang pares ng mga larawan ng mga pin ang kanilang mga sarili, ang nakakatawang board clamp, at ang gulong na board spacing mounts.

Hakbang 3: Pagsukat at Paggawa ng Bundok para sa Lupon

Kaya, mayroon akong mga Pogo Pins at iba pang mga mounting hardware. Maingat kong sinukat ang laki ng butas at espasyo at lumikha ng layout para sa aking Laser Cutter. Maaari ko ring magkaroon lamang ng mga butas ng drilled gamit ang isang drill, ngunit ang pamutol ay isang magandang paulit-ulit na trabaho.

Nagpasya ako sa puwang ng mga butas upang ang mga tulos ay hindi nasa gitna ng mga butas sa pad - nakatiyak na ang mga pin ay nakipag-ugnay sa board matatag.

Dinisenyo ko ang espasyo para sa Clamp at ilang mga tab para sa likod ng board.

Sa kaso ng DeskClock board, may isang 2.1mm axial power socket na naka-install sa board na kailangan kong magbigay ng isang butas ng lunas para sa, at sa wakas, huwag kalimutan ang goma mounts upang suportahan ang likod ng board.

Hakbang 4: Isang Raspberry Pi para sa mga Brains at isang 1.8 "Display ng Kulay

Kailangan ko ng isang bagay upang palitan ang aking laptop, kaya nagpasiya akong gamitin ang Raspberry PI.

Ito ay madaling nakabitin sa base ng programmer at gumagamit ng isang simpleng 26 na paraan ng cable na nakakonekta sa GPIO pin upang kumonekta sa board ng DeskClock at sa Display, at ang toggle switch.

ang tiyak na pagsasaayos ng pin na ginamit ko ay hindi mahalaga - gagamitin mo ang iyong sarili batay sa iyong mga pangangailangan.

Ang display na ginamit ay isang 1.8 "display mula sa Sainsmart - Nagdala ako ng isang magbunton ng mga ito 6 na buwan ang nakakaraan kung sakaling nakakita ako ng isang gamit para sa mga ito - Ito ay ang paggamit lamang! Sinundan ko ang Marks blog http://marks-space.com/ 2012/11/23 / raspberrypi-tft / upang gawing muli ang isang Linux kernel upang suportahan ang display.

Tama si Mark - ang pag-ipon ng kernel sa Pi ay isang proseso ng SLOW - iniwan ko itong tumakbo nang magdamag.

Ang kable ng display ay simple, at medyo mabilis ako ay may nagtatrabaho FrameBuffer2 device.

Hakbang 5: Isang Pocket upang I-hold ang 1.8 "Display

Kailangan ko ng isang paraan upang i-mount ang LCD display sa jig kaya na hindi ito magpagupit sa paligid. Nakikipag-chat ako sa isang simpleng ides - Bumuo ng isang angled bulsa para dito.

Nakakaupo ito nang maayos sa harap ng yunit, sa isang anggulo para sa gumagamit na madaling makita ang display.

Ang display ay umaangkop sa matatag, ngunit kung sakaling dapat itong magdesisyon na mag-slide out, at ang 3mm na tornilyo ng naylon ay humahawak sa lugar.

Ito ay nakakatawa, nakalimutan ko para sa mga tungkol sa 20 taon kung paano madaling Acrylic ay upang gumana sa. Ginamit ko ito sa tindahan sa paaralan, pagkatapos ay agad na nakalimutan ang tungkol dito. ngayon, ang aking workshop ay may mga bucket ng mga bagay-bagay:-)

Hakbang 6: Paggawa ng Pi Maging isang Programmer

Ang susunod na bahagi ng pagtatayo ay paghahanap ng software upang pahintulutan akong mag-program ng board nang direkta sa Pi. Nagpasya kong gamitin ang pamamaraang ipinaliwanag ni Steve Marple sa kanyang blog:

Sa aking kaso, gumamit ako ng iba't ibang mga pin GPIO habang ang 1.8 "LCD display ay sumasalungat sa kanila.

Nagkaroon ng isang malakas na squeal ng kasiyahan kapag natuklasan ko na ang Lara ay programming tama.

Ang ilang mga tao ay gumamit ng shifters ng antas upang maprotektahan ang PI - hindi ko ginawa at ang proyekto ay gumagana lamang.

Hakbang 7: Isang I-toggle ang Lumipat sa Alisin ang Kapangyarihan Mula sa Lupon ng DeskClock

Nagpasya ako na mag-install ng toggle switch upang alisin ang kapangyarihan mula sa board ng DeskClock, at upang sabihin sa PI kapag oras na upang magsimula.

Ang switch ay isang DPDT, kaya ang isang kalahati ay nakakonekta sa + 5v at ang iba pang kalahati ay konektado sa isang hindi ginagamit GPIO pin.

Kapag ang switch ay naka-off, ang GPIO pin ay pinagbabatayan, at kapag ito ay naka-on, ang GPIO pin ay pulled mataas. Ginamit ko ang isang 100 oum risistor upang matiyak na ang GPIO pin ay buffered sa kaso ito ay nakatakda upang maging isang output.

Hakbang 8: Ang Software sa Pi sa Tie Ito Lahat Togehter

Susunod, isinulat ko ang aking unang programang Python.

Ako ay isang programmer C - Sa kabutihang palad, may mga bucket ng mga tutorial upang matulungan.

Nakuha ko ang karamihan ng code mula sa isang hanay ng mga sample kung saan ginamit ng isang tao ang kanilang PI bilang isang display ng panahon.

Narito ang code para sa script ng Python na nagbabasa ng pindutan at kumokontrol sa display

#! / usr / bin / python

import pygame

import sys

import ng oras

mula sa time import strftime

import os

import subprocess

import RPi.GPIO bilang GPIO

GPIO.setmode (GPIO.BCM)

#set ang framebuffer device sa TFT

kung hindi os.getenv ('SDL_FBDEV'):

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

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

def displayTime ():

# ginagamit upang ipakita ang petsa at oras sa TFT

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

font = pygame.fontFont (Wala, 50)

ngayon = time.localtime ()

para sa pagtatakda sa ("% H:% M:% S", 60), ("% d% b", 10):

timeformat, dim = setting

currentTimeLine = strftime (timeformat, ngayon)

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

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

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

def displayText (text, size, line, color, clearScreen):

# ginagamit upang ipakita ang teksto sa TFT screen

kung clearScreen:

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

font = pygame.fontFont (Wala, sukat)

text = font.render (teksto, 0, kulay)

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

textpos = textRotated.get_rect ()

textpos.centery = 80

kung linya == 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

elif line == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def main ():

pandaigdigang screen

pygame.init ()

laki = lapad, taas = 128, 160

itim = 0,0,0

RED = 255,0,0

LUNTIAN = 0,255,0

BLUE = 0,0,255

WHITE = 255,255,255

fail_cnt = 0

GPIO.setup (18, GPIO.IN)

pygame.mouse.set_visible (0)

screen = pygame.display.set_mode (size)

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

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

pygame.display.flip ()

time.sleep (5)

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

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

pygame.display.flip ()

time.sleep (5)

habang Totoo:

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

displayText ("Ipasok ang Lupon", 20, 2, BLUE, Maling)

pygame.display.flip ()

kung (GPIO.input (18)):

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

displayText ("Maghintay 10 Seksi", 30, 2, PULANG, Maling)

pygame.display.flip ()

At narito ang shell script na talagang ginagawa ng programming:

#! / bin / sh

cd / home / pi

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

Siyempre ang iyong magdyig ay magkakaroon ng ibang software:-)

Hakbang 9: IT LAHAT GINAWA !!!

Sa wakas, ako ay nagkaroon ng maraming konektado, at nagtrabaho ito ng isang gamutin!

Natutunan ko ang isang magbunton tungkol sa pagmamaneho ng mga maliit na 1.8 "LCD na nagpapakita, hanggang sa punto kung saan sila ngayon ay ang aking tira sa aparato para sa mga maliit na proyekto ng Pi.

Anyway - Narito ang isang pares ng mga larawan ng mga ito sa pagkilos.

Masiyahan.

Saan mula rito?

Well na isang cool na tanong - Sa sandaling ito, programista ang programa lang sa board at nakumpirma na ang micro ay flashed tama. Sinusuri namin ang operasyon ng LEDs visually (kaya ang maliwanag na display) - Ang susunod na hakbang ay upang magdagdag ng isang function na maaaring makipag-usap sa pagpapatakbo ng board upang mapatunayan ang katumpakan ng RTC chip / kristal kumbinasyon, paghahambing ng paglipas ng oras sa isang internet pamantayan. Na hindi dapat masyadong mahirap …..:-)