A programozó Jig a DougsWordClock.com DeskClock táblákhoz: 9 lépés

A programozó Jig a DougsWordClock.com DeskClock táblákhoz: 9 lépés

Tartalomjegyzék:

Anonim

Hé - * kora volt *, mivel valamit adtam az Instructablesnek, hogy adjam vissza a közösségnek, ezért azt hittem, megosztom, hogyan építettem ki az új programozóberendezést a www.dougswordclock.com DeskClocks alkalmazásban használt táblákhoz.

Tudod, hogyan megy, hihetetlen projektet hoztál létre, és sok embert mondtál róla, és biztos, hogy elég tonna ember szeretne egyet magának. Az áramköri lapokat készítjük, és korosztályokat és komponenseket alkalmazunk, forrasztjuk a forrasztást, és telepítjük a nem visszafolyó komponenseket, majd a mikrokód betöltése a vezérlőbe történik, hogy a projekt elvégezze azt, amit úgy terveztek, hogy ….. Wow - Milyen lépések!

A mikrokód betöltése ????? Igen - mint tudják, a számítógép nélküli szoftver eléggé haszontalan. Minden óránknak van egy speciális programja, amelybe beilleszti őket, hogy pontosan meg tudják mondani az időt. Amikor a táblákat az órákhoz építem, a mikrokontroller chipbe nincs betöltött szoftver (A chip túl kicsi ahhoz, hogy normál programozóba kerüljön) - Ez a folyamat a szoftvert a chipbe helyezi, hogy az óra működjön.

A régi időkben (néhány héttel ezelőtt:-)) használtam egy laptopot, egy USBTiny programozót és a csodálatos AVRDUDE szoftvert a táblák programozásához - ültem az asztalomnál a műhelyben, írd be a programozási parancsot a számítógépbe, tartsa a programozó kábelt az óra felé, és nyomja meg az ENTER gombot. A számítógép ezután kötelességesen programozná a fórumot nekem, és én is megtenném. Ezzel az egyetlen fogás, hogy mindig ott kell ülnöm, úgyhogy úgy döntöttem, hogy az egyik alkalmazottam megteheti helyett …. Sajnos úgy találta, hogy néha egy kis aprócska mozgatta a kábelt, ami a programozási feladatot nem kell, és újra el kell kezdnie. A probléma összevonása érdekében, ha volt egy forrasztási hiba, a laptopom USB-portja leállna, és az USBTiny-et ki kellene húzni, és újra kell helyezni az USB-port visszaállításához. hogyan csinálták a nagy fiúk?

Kiderült, hogy a Big Boys (tm) olyan robotokkal rendelkezik, amelyek nagyon jóak a kábelek tartásához, és a tesztelésre alkalmas funkciós elektronika. Mivel a DougsWordClock.com elfogy a garázsomból, nem valószínű, hogy hamarosan odaérek, így mit tehetek, hogy megkönnyítsük az életünket? Ahogy a barátom, Mikal mondaná … "Építs egy jig!". (Megjegyzés1)

Tehát itt van a Jig, amit Doug készített! Bár kifejezetten a DougsWordClock.com DeskClock táblák programozására tervezték, az itt felsorolt ​​fogalmak kiterjeszthetők bármely más mikroprocesszoros projektre, amelyet nagy mennyiségben építesz, így olvasd el, hogyan oldottam meg a problémát, és megnézhetem, mit tehetsz magad!

Kezdjük.

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

1. megjegyzés - 2000 elején a legjobb barátom, Mikal esett a műhelyembe, amikor egy polckészletet építettem - az ízületeket irányítottam, ami unalmas ismétlődő feladat - Mikal azt mondta: „Build a Jig!” Azt mondtam: "Túl kemény - hamarosan befejezem" - Azt mondta: "Nahh, csak csináld". Hosszú történet, a jig építésének egyszerűsége, azzal a ténnyel együtt, hogy nem gondoltam rá, hogy az Ego-ra nehezen ütközött … úgy döntöttem, hogy haszontalan volt …. (Go figurája).. úgy döntött, hogy ír egy cikket, hogy bizonyítsa a világnak, hogy nem vagyok haszontalan - Szóval terveztem egy PIC alapú elektronikus kocka projektet. Még a Silicon Chip magazin is közzétette - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Igaz történet, és valószínűleg a számomra a projektek és a cikkek írásához használt mikrokontrollerek használatának kezdete..:-)

kellékek:

1. lépés: A DeskClock tábla

Először a DeskClock kártyával kezdtem. Amikor megterveztem, 6 tűs csatlakozót biztosítottam, amely lehetővé tette egy programozó kábel csatlakoztatását. - Itt van egy fénykép a tábláról, amely a különböző csatlakozókat mutatja.

Természetesen - amikor az összetevőket a táblára töltjük, nem töltjük be ezeket a csatlakozókat - egyszerűen csak programozáshoz és teszteléshez.

A tábla hátulja a tábla hátsó részén, szemben a tábla elejével az összes LED-rel - először elterjed. gyártás során.

Ezt a táblát nagyon óvatosan mértem a különböző kapcsolatok helyének és távolságának mérésére.

Most - hogyan csatlakozhattam a fórumhoz? Örülök, hogy megkérdezte. Pogo csapokat használtam!

2. lépés: Pogo csapok és egyéb hardverek

A Pogo csapok a szakemberek arra használják, hogy ideiglenes kapcsolatokat hozzanak létre a táblákhoz, amikor tesztelik őket. Sok méretben és formában kaphatók, és precíziós rugós terhelhetőségű mechanizmussal rendelkeznek annak biztosítására, hogy a csap egyenletes nyomással nyomja a táblát.

Az eBay-nél egy szállítótól vittem Pogo csapokat - elég olcsóak voltak, úgyhogy azt hiszem, van egy életidőm! Ugyanez a beszállító is megadta nekem a másik trükkös hardvert, amire szükségem volt, hogy le lehessen szorítani a táblát.

Íme néhány fotó a csapokról, a remek fórumon lévő bilincsről és a gumiból készült távolságtartókról.

3. lépés: A Mount mérése és elkészítése

Szóval, van a Pogo Pins és más szerelési hardverem. Gondosan mértem a lyukméreteket és a távolságot, és létrehoztam egy elrendezést a lézeres vágógépemnek. Egy fúróval egyszerűen lyukakat is fúrhattam volna, de a vágó szépen megismételhető munkát végez.

Úgy döntöttem, hogy a lyukakat úgy helyeztem el, hogy a csapok ne legyenek a pad lyukak közepén - ez biztosítja, hogy a csapok szilárdan érintkeztek a táblával.

Azt is terveztem, hogy helyet kapjak a bilincsnek és néhány lapnak a tábla hátuljára.

A DeskClock tábla esetében egy 2,1 mm-es axiális tápcsatlakozó van a táblán, amelyet megkönnyebbült lyukkal kellett ellátni, és végül, ne felejtsük el a gumi tartóelemeket, hogy támogassák a tábla hátulját.

4. lépés: A Raspberry Pi az agyakért és egy 1,8 "-os színes kijelző

Szükségem volt valamire a laptopom cseréjére, ezért úgy döntöttem, hogy a Raspberry PI-t használom.

Könnyedén szerelhető a programozó aljára, és egy egyszerű, 26-szoros kábelt használ a GPIO csapokhoz, hogy csatlakozzon a DeskClock kártyához és a kijelzőhöz, valamint a váltókapcsolóhoz.

a használt pin-konfiguráció nem fontos - a saját igényeit figyelembe véve fogja használni.

A kijelzőn egy 1,8 "-es kijelző látható a Sainsmarttól - 6 hónappal ezelőtt hoztam nekik egy halomot, ha hasznosnak találtam számomra - ez csak a használat! Én követtem Marks blogját http://marks-space.com/ 2012/11/23 / raspberrypi-tft / Linux rendszermag újjáépítése a kijelző támogatásához.

Mark jobb volt - a Pi kernel fordítása lassú folyamat volt - elhagytam egy éjszakán át.

A kijelző bekötése egyszerű volt, és nagyon gyorsan működött a FrameBuffer2 készülékem.

5. lépés: Az 1,8 "-es kijelző tartására szolgáló zseb

Szükségem volt egy módra, hogy az LCD-kijelzőt felszereljék a jigre, hogy ne essen körül. Egy egyszerű idézőkkel büszkélkedek - építsen rá egy szögletes zsebet.

A készülék elülső részén szépen ül, és a felhasználó könnyen láthatja a kijelzőt.

A kijelző szilárdan illeszkedik, de ha úgy döntenek, hogy kicsúszik, és 3 mm-es nylon csavar tartja a helyén.

Vicces, körülbelül 20 éve elfelejtettem, hogy milyen könnyű az akril. Az iskolában vásároltam, majd azonnal elfelejtettem. most, a műhelyemben vödrök vannak:-)

6. lépés: A Pi készítése programozó

Az építés következő része olyan szoftvert talált, amely lehetővé tette számomra, hogy közvetlenül a Pi program segítségével programozzam a táblát. Úgy döntöttem, hogy a Steve Marple által a blogjában kifejtett módszert használja:

Esetemben különböző GPIO csapokat használtam, mivel az 1,8 "-os LCD kijelző ellentétes volt velük.

Hatalmas kipipogás volt, amikor rájöttem, hogy a Pi programozása helyesen történt.

Vannak, akik a PI védelme érdekében használták a szintváltókat - nem, és a projekt éppen működik.

7. lépés: Átváltó kapcsoló a DeskClock kártyáról

Úgy döntöttem, hogy telepítek egy kapcsolókapcsolót, hogy eltávolítsam a tápellátást a DeskClock kártyáról, és elmondjam a PI-nek, hogy mikor indult az idő.

A kapcsoló DPDT volt, így a fele csatlakozott a + 5v-hez és a másik fele egy nem használt GPIO-tűhöz.

Amikor a kapcsoló ki volt kapcsolva, a GPIO tüskét földelték, és amikor be volt kapcsolva, a GPIO csap magas volt. 100 ohmos ellenállást alkalmaztam annak biztosítására, hogy a GPIO tű pufferelve legyen abban az esetben, ha kimenetként lett beállítva.

8. lépés: Szoftver a Pi-ban, hogy összekapcsolja az összes Togehtert

Ezután írtam az első Python programot.

C programozó vagyok - szerencsére van egy vödör oktató, amely segít.

A legtöbb kódot egy olyan mintából vettem, ahol valaki használta PI-jét időjárási megjelenítésként.

Itt van a Python parancsfájl kódja, amely elolvassa a gombot és vezérli a kijelzőt

#! / Usr / bin / python

importálj pygame-t

importál

importidő

az idő importálásától

import os

import alfolyamat

importálja az RPi.GPIO-t GPIO-ként

GPIO.setmode (GPIO.BCM)

# állítsa be a framebuffer eszközt a TFT-re

ha nem os.getenv ('SDL_FBDEV'):

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

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

def displayTime ():

# a TFT dátumának és idejének megjelenítéséhez használható

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

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

most = time.localtime ()

a ("% H:% M:% S", 60) ("% d% b", 10) beállításához:

timeformat, dim = beállítás

currentTimeLine = strftime (timeformat, most)

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

Surf = pygame.transform.rotate (szöveg, -90)

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

def displayText (szöveg, méret, vonal, szín, clearScreen):

# a TFT képernyőn megjelenő szöveg

ha clearScreen:

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

font = pygame.font.Font (Nincs, méret)

text = font.render (szöveg, 0, szín)

textRotated = pygame.transform.rotate (szöveg, -90)

textpos = textRotated.get_rect ()

textpos.centery = 80

ha = = 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

elif vonal == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def fő ():

globális képernyő

pygame.init ()

méret = szélesség, magasság = 128, 160

fekete = 0,0,0

RED = 255,0,0

ZÖLD = 0,255,0

KÉK = 0,0255

WHITE = 255,255,255

fail_cnt = 0

GPIO.setup (18, GPIO.IN)

pygame.mouse.set_visible (0)

képernyő = pygame.display.set_mode (méret)

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)

míg igaz:

displayText ("Várakozás", 30, 1, ZÖLD, Igaz)

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

pygame.display.flip ()

ha (GPIO.input (18)):

displayText ("Programozás", 30, 1, (200,200,1), igaz)

displayText ("Várjon 10 sec", 30, 2, RED, False)

pygame.display.flip ()

És itt van a shell parancsfájl, amely valójában a programozást teszi:

#! / Bin / sh

cd / home / pi

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

Természetesen a jig lesz más szoftver:-)

9. lépés: MINDEN MŰKÖDIK !!!

Végül, volt a csomópont összekapcsolva, és egy élvezetes dolgot!

Megtanultam egy kis haladást ezeknek a kis 1,8 "-os LCD kijelzőknek a vezetéséig, olyan pontra, ahol most elkezdem fordulni a triviális Pi projektekhez.

Különben is - itt van néhány fotó a cselekvésben.

Élvez.

Honnan innen?

Nos, ez egy hűvös kérdés - Jelenleg a programozó egyszerűen programozza a táblát, és ellenőrzi, hogy a mikró helyesen villogott-e. A LED-ek működését vizuálisan vizsgáljuk (tehát a fényes kijelzőt). A következő lépés egy olyan funkció hozzáadása, amely kommunikálhat a futó fórumon az RTC chip / kristálykombináció pontosságának ellenőrzéséhez, összehasonlítva az idő múlását az interneten alapértelmezett. Ez nem lehet túl kemény …..:-)