Programavimo programinė įranga mūsų „DougsWordClock.com DeskClock“ lentoms: 9 žingsniai

Programavimo programinė įranga mūsų „DougsWordClock.com DeskClock“ lentoms: 9 žingsniai

Turinys:

Anonim

Ei - Tai buvo * amžius *, nes pateikiau kažką „Instructables“, kad galėčiau grįžti į bendruomenę, todėl maniau, kad pasidalinsiu, kaip sukūriau savo naują programavimo įrangą lentoms, kurios naudojamos „www.dougswordclock.com DeskClocks“.

Jūs žinote, kaip tai vyksta, jūs sukūrėte nuostabų projektą ir papasakojote daug žmonių apie tai ir įsitikinote, kad pakankamai tonų žmonių norėtų vienas. Jūs gaunate plokščių plokštes ir praleidžiate amžius, naudodami lydmetalę ir komponentus, perpurškite lituoklę ir sumontuokite nešviečiančius komponentus, tada pradėsite įkrauti mikrokodą į valdiklį, kad projektas atliktų tai, ką ji ketina atlikti ….. Oho - kokių žingsnių!

Mikrokodo įkėlimas ????? Taip - kaip žinote, kompiuteris be programinės įrangos yra gana nenaudingas. Visi mūsų laikrodžiai turi specialią programą, įkeliamą į juos, kad jie galėtų tiksliai pasakyti laiką. Kai pastatysiu laikrodžių lentas, į mikrokontrolerio mikroschemą neįkraunama jokia programinė įranga (mikroschema yra per maža, kad įdėtų į įprastą programuotoją) - šis procesas įjungia programinę įrangą į lustą, kad laikrodis veiktų.

Senosiomis dienomis (prieš porą savaičių:-)) aš naudoju nešiojamąjį kompiuterį, USBTiny programuotoją ir nuostabią AVRDUDE programinę įrangą lentoms programuoti - norėčiau sėdėti prie savo stalo dirbtuvėje, įveskite programavimo komandą į kompiuterį, laikykite programavimo kabelį prieš laikrodį ir paspauskite ENTER. Tuomet kompiuteris man patikėtai užprogramuotų valdybą, o aš būtų padaryta. Vienintelis laimikis yra tai, kad turiu visą laiką sėdėti ten, todėl nusprendžiau, kad vienas iš mano darbuotojų galėtų tai padaryti …. Deja, jis nustatė, kad kartais jis perkelė kabelį mažai, todėl programavimo darbas nepavyko ir jis turėtų vėl pradėti. Jei norite sumaišyti problemą, jei buvo lydymo klaida, mano nešiojamojo kompiuterio USB prievadas būtų išjungtas ir USBTiny turėtų būti atjungtas ir iš naujo įjungtas, kad būtų iš naujo nustatyti USB prievadą ….. Turėjo būti geresnis būdas! kaip tai padarė didieji berniukai?

Pasirodo, kad Big Boys (tm) turi robotų, kurie yra labai geri kabelių laikymui ir funky elektronikai, kuri gali atlikti bandymus. Kadangi „DougsWordClock.com“ pasibaigia mano garagage, greičiausiai netrukus ten nuvažiavau, todėl ką galėčiau padaryti, kad mūsų gyvenimas būtų lengvesnis? Kaip pasakė mano draugas Mikal …. „Sukurkite džigą!“. (1 pastaba

Taigi čia mes turime „Jig“, kurį padarė „Doug“! Nors ji yra specialiai sukurta programuoti „DougsWordClock.com DeskClock“ lentas, čia pateiktos sąvokos gali būti išplėstos bet kokiam kitam mikroprocesoriaus projektui, kurį statote urmu, todėl skaitykite, kaip išsprendžiau problemą ir pažiūrėkite, ką galite padaryti sau!

Pradėkime.

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

1 pastaba - 2000 m. Pradžioje, mano geriausias draugas Mikal, atsisakęs į mano dirbtuves, kai statydavau lentynų rinkinį, - nukreipiau sąnarius, kurie buvo nuobodu pasikartojanti užduotis - Mikal sakė: „Sukurkite džigą!“ Sakiau: „Per sunku - netrukus baigsiu“ - sakė jis: „Nahh, leidžia tik tai padaryti“. Trumpas trumpas pasakojimas, pastatymo paprastumas, kartu su tuo, kad aš nemanau, kad tai smarkiai nukentėjo mano Ego … Aš nusprendžiau nenaudingas …. (Eiti figūra).. Galų gale, aš nužudiau ji nusprendė parašyti straipsnį, kuris įrodytų pasauliui, kad nebūčiau nenaudingas - Taigi aš sukūriau PIC elektroninį kauliukų projektą. Ją netgi paskelbė žurnalas „Silicon Chip“ (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html). Tikroji istorija ir tikriausiai tai, kad pradėjau grįžti į mikrokontrolerių naudojimą projektams ir straipsnių rašymui..:-)

Prekės:

1 žingsnis: „DeskClock“ valdyba

Pirma, aš pradėjau su DeskClock lenta. Kai aš ją suprojektavau, pateikiau 6 kontaktų jungtį, leidžiančią prijungti programavimo kabelį. - Čia yra lentos nuotrauka, kurioje rodomos įvairios jungtys.

Žinoma, kai įkeliame komponentus į lentą, mes neužpildome šių jungčių - jie tiesiog yra programavimui ir bandymui.

Šios nuotraukos galinės pusės pusėje, priešingai nei plokštės priekyje su visais LED šviesos diodais, jis pirmą kartą užpildomas. gamybos metu.

Šią lentą naudoju labai atidžiai matuojant skirtingų jungčių, prie kurių norėjau prisijungti, vietą ir atstumą.

Dabar - kaip prisijungti prie lentos? Malonu, kad paklausėte. aš naudoju Pogo kaiščius!

2 žingsnis: Pogo smeigtukai ir kita aparatūra

Pogo smeigtukai yra tai, ką profesionalai naudoja laikiniesiems ryšiams su lentomis bandydami juos. Jie yra prieinami daugybe dydžių ir formų ir turi tiksliai pritaikytą spyruoklinį mechanizmą, užtikrinantį, kad kaištis stumiamas į plokštę tolygiai.

Aš atnešėu savo „Pogo“ smeigtukus iš tiekėjo eBay - jie buvo pakankamai pigūs, kad manau, kad dabar turiu visą gyvenimą. Tas pats tiekėjas man suteikė ir kitą sudėtingą aparatūrą, kurią turėjau naudoti, kad galėčiau įspausti plokštę.

Štai keletas nuotraukų apie pačius kaiščius, puikų lentos gnybtą ir guminių plokščių tarpiklius.

3 žingsnis: valdybos matavimas ir tvirtinimas

Taigi, turiu Pogo kaiščius ir kitą tvirtinimo aparatūrą. Aš kruopščiai išmatavau skylučių dydį ir atstumą bei sukūriau savo lazerinio pjaustytuvo išdėstymą. Aš taip pat galėjau tiesiog išgręžti skyles gręžtuvu, tačiau pjoviklis atlieka gražiai pakartojamą darbą.

Nusprendžiau patalpinti skyles taip, kad kaiščiai nebūtų centre esančių skylių centre - tai užtikrino, kad kaiščiai tvirtai prisilietė prie plokštės.

Aš taip pat sukūriau erdvę spaustuvui ir kai kuriuos skirtukus lentos gale.

„DeskClock“ plokštės atveju ant lentos yra įrengta 2,1 mm ašinė maitinimo lizdas, kurį turėjau suteikti reljefo skylę, ir, galiausiai, nepamirškite guminių laikiklių, kurie paremtų tą plokštės galą.

4 žingsnis: Raspberry Pi už smegenis ir 1,8 colio spalvotas ekranas

Man reikėjo ką nors pakeisti savo nešiojamąjį kompiuterį, todėl nusprendžiau naudoti aviečių PI.

Jis lengvai sumontuotas programuotojo pagrinde ir naudoja paprastą 26 krypčių kabelį, prijungtą prie GPIO kaiščių, kad galėtumėte prisijungti prie DeskClock plokštės ir ekrano ir perjungimo jungiklio.

konkreti mano naudojama PIN kodo konfigūracija nėra svarbi - naudosite savo poreikius pagal savo poreikius.

Naudojamas ekranas yra 1,8 colio ekranas iš „Sainsmart“ - prieš šešis mėnesius išgirdau jų krūvą, jei rado jų naudojimą - tai buvo tik naudojimosi! Aš po žymių dienoraščio http://marks-space.com/ 2012/11/23 / raspberrypi-tft / atkurti Linux branduolį, kad būtų palaikomas ekranas.

Markas buvo teisus - „Pi“ branduolio sudarymas buvo Lėtas procesas - palikau jį paleisti per naktį.

Ekrano prijungimas buvo paprastas, ir gana greitai turėjau „FrameBuffer2“ įrenginį.

5 žingsnis: kišenė, skirta laikyti 1,8 colio ekraną

Man reikėjo būdų, kaip prijungti LCD ekraną prie stovo, kad jis nesikartotų. Aš užversiu paprastą ides - tiesiog pastatykite kampinę kišenę.

Jis gerai sėdi prie prietaiso priekio, kampu, kad vartotojas galėtų lengvai matyti ekraną.

Ekranas tvirtai pritvirtinamas, tačiau tuo atveju, jei jis nuspręstų išstumti, o 3 mm nailono varžtas laikomas vietoje.

Tai juokinga, aš užmiršau apie 20 metų, kaip lengva dirbti su akrilu. Aš jį naudoju parduotuvėje mokykloje, tada tuoj pat užmiršau apie tai. dabar mano dirbtuvėse yra kibirų:-)

6 žingsnis: „Pi“ tapimas programuotoju

Kitas kūrinio dalis buvo rasti programinę įrangą, leidžiančią programuoti lentą tiesiogiai su „Pi“. Nusprendžiau naudoti metodą, kurį Steve Marple paaiškino savo dienoraštyje:

Mano atveju naudoju skirtingus GPIO smeigtukus, nes 1,8 colio LCD ekranas su jais prieštaravo.

Ten, kai atradau, kad „Pi“ programavimas buvo teisingas, buvo garsus žvilgsnis.

Kai kurie žmonės naudojo lygių perjungiklius, kad apsaugotų PI - aš ne, o projektas tiesiog veikia.

7 žingsnis: perjungimo jungiklis, skirtas pašalinti maitinimą iš DeskClock valdybos

Nusprendžiau įdiegti perjungimo jungiklį, kad galėtumėte pašalinti maitinimą iš „DeskClock“ plokštės ir papasakoti PI, kada atėjo laikas pradėti.

Jungiklis buvo DPDT, taigi pusė prijungta prie + 5v, o kita pusė prijungta prie nepanaudoto GPIO kaiščio.

Kai jungiklis buvo išjungtas, GPIO kaištis buvo įžemintas, o kai jis buvo įjungtas, GPIO kaištis buvo ištrauktas aukštai. Aš naudoju 100 omų rezistorių, siekiant užtikrinti, kad GPIO kaištis būtų buferinis, jei jis buvo nustatytas kaip išėjimas.

8 žingsnis: programinė įranga „Pi“, kad susietų visą „Togehter“

Toliau parašiau savo pirmąją Python programą.

Aš esu C programuotojas - Laimei, yra pagalbinių pamokų, kad padėtų.

Daugumą kodo gavau iš mėginių rinkinio, kur kas nors naudojo savo PI kaip oro ekraną.

Čia yra „Python“ scenarijaus kodas, nuskaitantis mygtuką ir valdantis ekraną

#! / usr / bin / python

importuoti „pygame“

importuoti

importo laikas

nuo laiko importo strftime

importuoti os

importuoti subprocesą

importuoti RPi.GPIO kaip GPIO

GPIO.setmode (GPIO.BCM)

# nustatykite „Framebuffer“ įrenginį į TFT

jei ne os.getenv („SDL_FBDEV“):

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

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

def displayTime ():

# naudojama TFT datai ir laikui rodyti

užpildymas ((0,0,0))

font = pygame.font.Font (Nėra, 50)

dabar = time.localtime ()

nustatymui ("% H:% M:% S", 60), ("% d% b", 10):

timeformat, dim = nustatymas

currentTimeLine = strftime (timeformat, dabar)

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

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

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

def displayText (tekstas, dydis, linija, spalva, skaidrus ekranas):

# naudojamas rodyti tekstą TFT ekrane

jei „ClearScreen“:

užpildymas ((0,0,0))

font = pygame.font.Font (Nėra, dydis)

text = font.render (tekstas, 0, spalva)

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

textpos = textRotated.get_rect ()

textpos.centery = 80

jei eilutė == 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

elifo linija == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def pagrindinis ():

pasaulinis ekranas

pygame.init ()

dydis = plotis, aukštis = 128, 160

juoda = 0,0,0

RED = 255,0,0

ŽALIOJI = 0,255,0

Mėlyna = 0,0255

BALTAS = 255,255,255

fail_cnt = 0

GPIO.setup (18, GPIO.IN)

pygame.mouse.set_visible (0)

screen = pygame.display.set_mode (dydis)

displayText („DougsWordClock“, 20, 1, GREEN, True)

displayText ("150mm programuotojas", 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)

o tiesa:

displayText („Laukimas“, 30, 1, ŽALIAS, Tiesa)

displayText („Įterpti lentą“, 20, 2, BLUE, False)

pygame.display.flip ()

jei (GPIO.input (18)):

displayText („Programavimas“, 30, 1, (200,200,1), tiesa)

displayText („Palaukite 10 sek.“, 30, 2, RED, False)

pygame.display.flip ()

Ir čia yra apvalkalo scenarijus, kuris iš tikrųjų atlieka programavimą:

#! / bin / sh

cd / home / pi

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

Žinoma, jūsų programinė įranga turės skirtingą programinę įrangą:-)

9 žingsnis: VISI DARBAI!

Galiausiai, aš turėjau daug lizdo, ir jis dirbo!

Aš sužinojau apie šių 1,8 colių skystųjų kristalų ekranų vairavimą, iki dabar, kai jie dabar kreipiasi į prietaisą trivialiems Pi projektams.

Bet kokiu atveju - čia yra keletas nuotraukų apie tai.

Mėgautis.

Kur iš čia?

Na, tai yra kietas klausimas - šiuo metu programuotojas paprasčiausiai užprogramuoja lentą ir patikrina, ar mikroskopas buvo teisingai išreikštas. Vizualiai apžiūrime šviesos diodų veikimą (taigi ryškus ekranas). Kitas žingsnis - pridėti funkciją, kuri gali bendrauti su važiavimo lenta, kad patvirtintų RTC lustų / kristalų derinio tikslumą, lyginant laiką su internetu standartas. Tai neturėtų būti pernelyg sunku …..:-)