Programowanie Jig dla naszych kart DougsWordClock.com DeskClock: 9 kroków

Programowanie Jig dla naszych kart DougsWordClock.com DeskClock: 9 kroków

Spisu treści:

Anonim

Hej - minęło * wieków *, odkąd przesłałem coś do Instructables, aby oddać je społeczności, więc pomyślałem, że podzielę się tym, jak zbudowałem naszą nową platformę programistyczną do płyt używanych w DeskClocks www.dougswordclock.com.

Wiesz, jak to działa, stworzyłeś niesamowity projekt i opowiedziałeś o tym wielu ludziom, a na pewno wystarczająca ilość ludzi chciałaby, aby każdy z nich miał to dla siebie. Przygotowuje się płytki drukowane i spędza wiele lat na nakładaniu pasty lutowniczej i komponentów, lutowaniu reflow i instalowaniu komponentów bez przepływu, a następnie rozpoczyna się ładowanie mikrokodu do kontrolera, aby projekt zrobił to, do czego został zaprojektowany ….. Wow - Co za dużo kroków!

Ładowanie mikrokodu ????? Tak - jak zapewne wiesz, komputer bez oprogramowania jest całkiem bezużyteczny. Wszystkie nasze zegary mają załadowany specjalny program, dzięki czemu mogą poprawnie określić czas. Kiedy buduję płyty dla zegarów, nie ma żadnego oprogramowania załadowanego do mikrokontrolera (chip jest zbyt mały, aby umieścić go w normalnym programatorze) - Ten proces wprowadza oprogramowanie do układu, tak aby zegar mógł działać.

W dawnych czasach (kilka tygodni temu:-)) użyłem laptopa, programatora USBTiny i wspaniałego oprogramowania AVRDUDE do programowania płyt - usiadłem przy biurku w warsztacie, wpisałem polecenie programowania do komputera, przytrzymaj kabel programujący przed zegarem i naciśnij ENTER. Komputer wtedy sumiennie zaprogramuje płytę dla mnie i zrobię to. Jedynym haczykiem jest to, że muszę siedzieć cały czas, więc zdecydowałem, że zamiast tego jeden z moich pracowników mógłby to zrobić … Niestety, odkrył, że czasami przesuwał kabel odrobinę, powodując, że zadanie programistyczne stało się zawiodą i będzie musiał zacząć od nowa. Aby pogłębić problem, jeśli wystąpił błąd lutowania, port USB mojego laptopa wyłączyłby się i USBTiny musiałoby zostać odłączone i ponownie ustawione, aby zresetować port USB ….. Musiał być lepszy sposób !! jak to zrobili Big Boys?

Okazuje się, że Big Boys (tm) mają roboty, które bardzo dobrze trzymają kable w bezruchu i funky elektroniki, które mogą wykonywać testy. Ponieważ w DougsWordClock.com zabrakło mi garnizonu, nie mogłem tam dotrzeć w najbliższym czasie, więc co mogłem zrobić, aby ułatwić nam życie? Jak powiedziałby mój przyjaciel Mikal… „Zbuduj przyrząd!”. (Notatka 1)

Więc mamy Jig, który zrobił Doug! Chociaż jest specjalnie zaprojektowany do programowania płyt DeskClock firmy DougsWordClock.com, koncepcje tutaj można rozszerzyć na każdy inny projekt oparty na mikroprocesorze, który budujesz zbiorczo, więc przeczytaj o tym, jak rozwiązałem problem i zobacz, co możesz zrobić sam!

Zaczynajmy.

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

Uwaga 1 - Na początku 2000 r. Mój najlepszy przyjaciel Mikal wpadł do mojego warsztatu, kiedy budowałem zestaw półek - prowadziłem stawy, co było nudnym powtarzającym się zadaniem - powiedział Mikal „Zbuduj Jig!” Powiedziałem: „Za ciężko - niedługo będę skończony” - Powiedział „Nahh, po prostu zróbmy to”…. Krótko mówiąc, prostota budowania jigów, w połączeniu z faktem, że nie pomyślałem o tym, uderzyło w moje Ego mocno … Uznałem, że jest bezużyteczny …. (Idź do figury).. W końcu wyrwałem się z postanowiłem napisać artykuł, aby udowodnić światu, że nie jestem bezużyteczny - więc zaprojektowałem projekt kostki elektronicznej oparty na PIC. Został nawet opublikowany przez magazyn Silicon Chip - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Prawdziwa historia i prawdopodobnie początek mojego powrotu do używania mikrokontrolerów do projektów i pisania artykułów..:-)

Kieszonkowe dzieci:

Krok 1: Płyta DeskClock

Najpierw zacząłem od płyty DeskClock. Kiedy to zaprojektowałem, dostarczyłem 6-pinowe złącze, aby umożliwić podłączenie kabla programistycznego - oto zdjęcie płyty, pokazujące różne złącza.

Oczywiście - gdy ładujemy komponenty na płytę, nie zapełniamy tych złączy - są one po prostu dostępne do programowania i testowania.

Strona na tym zdjęciu z tyłu tablicy, w przeciwieństwie do przodu tablicy ze wszystkimi diodami LED - zapełnia się najpierw. podczas produkcji.

Użyłem tej płyty, aby bardzo dokładnie zmierzyć lokalizację i rozmieszczenie różnych połączeń, z którymi chciałem się połączyć.

Teraz - jak połączyłem się z płytą? Cieszę się, że zapytałeś. użyłem szpilek Pogo!

Krok 2: pinezki Pogo i inny sprzęt

Piny Pogo są tym, czego profesjonaliści używają do tymczasowego łączenia się z płytami podczas ich testowania. Są one dostępne w wielu rozmiarach i kształtach oraz posiadają precyzyjny mechanizm sprężynowy, który zapewnia, że ​​sworzeń jest dociskany do płyty z równomiernym naciskiem.

Przyniosłem moje szpilki Pogo od dostawcy w serwisie eBay - były wystarczająco tanie, że myślę, że mam teraz zapas czasu na życie! Ten sam dostawca dostarczył mi również inny skomplikowany sprzęt, którego potrzebowałem, aby zacisnąć płytę.

Oto kilka zdjęć samych sworzni, sprytnego zacisku na deskę i uchwytów z gumowymi płytkami.

Krok 3: Pomiar i wykonanie uchwytu dla Zarządu

Mam więc szpilki Pogo i inny sprzęt montażowy. Starannie zmierzyłem rozmiary otworów i odstępy i stworzyłem układ dla mojej wycinarki laserowej. Mógłbym również po prostu wywiercić otwory za pomocą wiertarki, ale frez wykonuje pięknie powtarzalną pracę.

Postanowiłem odłożyć otwory tak, aby szpilki nie znajdowały się na środku otworów na podkładki - dzięki temu kołki mocno zetknęły się z płytką.

Zaprojektowałem także miejsce na Clamp i kilka zakładek z tyłu tablicy.

W przypadku płyty DeskClock na płycie znajduje się 2,1 mm osiowe gniazdo zasilania, które musiałem zapewnić otwór odciążający, a na koniec nie zapomnieć o gumowych mocowaniach podtrzymujących ten tył płyty.

Krok 4: Raspberry Pi dla mózgów i 1,8-calowy kolorowy wyświetlacz

Potrzebowałem czegoś, co zastąpiłoby mój laptop, więc postanowiłem użyć Raspberry PI.

Jest łatwo montowany u podstawy programatora i używa prostego kabla 26-stykowego podłączonego do pinów GPIO, aby połączyć się z płytą DeskClock i wyświetlaczem oraz przełącznikiem.

specyficzna konfiguracja pinów, której użyłem, nie jest ważna - użyjesz własnej w zależności od potrzeb.

Ekran, który używał, to wyświetlacz Sainsmart o przekątnej 1,8 cala - przyniosłem kupę ich 6 miesięcy temu na wypadek, gdyby znalazłem dla nich zastosowanie - to było po prostu zastosowanie! Śledziłem blog Marks http://marks-space.com/ 2012/11/23 / raspberrypi-tft / aby odbudować jądro Linuksa w celu obsługi wyświetlacza.

Mark miał rację - kompilacja jądra na Pi była procesem POWOLNYM - zostawiłem go uruchomionym na noc.

Okablowanie wyświetlacza było proste i dość szybko miałem działające urządzenie FrameBuffer2.

Krok 5: Kieszeń na wyświetlacz 1.8 ”

Potrzebowałem sposobu na zamontowanie wyświetlacza LCD na uchwycie, żeby nie grzechotał wokół. Wybieram prostą ides - po prostu zbuduj dla niej kątową kieszeń.

Siedzi starannie z przodu urządzenia, pod kątem, aby użytkownik mógł łatwo zobaczyć wyświetlacz.

Wyświetlacz pasuje mocno, ale w przypadku, gdy powinien zdecydować się na wysunięcie, a wkręt nylonowy 3 mm utrzymuje się na miejscu.

To zabawne, zapomniałem przez około 20 lat, jak łatwo jest pracować z akrylem. Użyłem go w sklepie w szkole, a potem szybko o tym zapomniałem. teraz mój warsztat ma wiadra z materiałami:-)

Krok 6: Tworzenie Pi być programistą

Kolejną częścią kompilacji było znalezienie oprogramowania, które pozwoli mi zaprogramować płytę bezpośrednio za pomocą Pi. Postanowiłem użyć metody, którą Steve Marple wyjaśnił na swoim blogu:

W moim przypadku użyłem różnych pinów GPIO, ponieważ wyświetlacz LCD 1.8 ”był z nimi w konflikcie.

Nastąpił głośny pisk radości, gdy odkryłem, że Pi poprawnie programuje.

Niektórzy używają przesuwników poziomu, aby chronić PI - nie zrobiłem tego i projekt działa.

Krok 7: Przełącznik do usuwania zasilania z płyty DeskClock

Postanowiłem zainstalować przełącznik, aby usunąć zasilanie z płyty DeskClock i powiedzieć PI, kiedy nadszedł czas, aby zacząć.

Przełącznik był DPDT, więc jedna połowa była połączona z + 5v, a druga połowa z nieużywanym pinem GPIO.

Gdy przełącznik był wyłączony, pin GPIO był uziemiony, a gdy był włączony, pin GPIO został wyciągnięty wysoko. Użyłem rezystora 100 omów, aby upewnić się, że pin GPIO był buforowany na wypadek, gdyby był ustawiony na wyjście.

Krok 8: Oprogramowanie w Pi to Tie It All Togehter

Następnie napisałem mój pierwszy program Pythona.

Jestem programistą C - Na szczęście istnieją podręczniki do pomocy.

Większość kodu otrzymałem z zestawu próbek, w którym ktoś użył swojego PI jako wyświetlacza pogody.

Oto kod skryptu Pythona, który odczytuje przycisk i steruje wyświetlaniem

#! / usr / bin / python

import pygame

import sys

czas importu

od czasu importu strftime

import os

podproces importu

importuj RPi.GPIO jako GPIO

GPIO.setmode (GPIO.BCM)

# ustaw urządzenie bufora ramki na TFT

jeśli nie os.getenv („SDL_FBDEV”):

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

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

def displayTime ():

# służy do wyświetlania daty i godziny w TFT

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

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

teraz = time.localtime ()

do ustawienia w ("% H:% M:% S", 60), ("% d% b", 10):

format czasu, ustawienie dim =

currentTimeLine = strftime (format czasu, teraz)

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

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

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

def displayText (tekst, rozmiar, linia, kolor, clearScreen):

# używany do wyświetlania tekstu na ekranie TFT

jeśli clearScreen:

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

font = pygame.font.Font (Brak, rozmiar)

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

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

textpos = textRotated.get_rect ()

textpos.centery = 80

jeśli linia == 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

linia elif == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def main ():

ekran globalny

pygame.init ()

size = width, height = 128, 160

czarny = 0,0,0

CZERWONY = 255,0,0

ZIELONY = 0,255,0

NIEBIESKI = 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 (rozmiar)

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

displayText („150 mm programator”, 20, 2, NIEBIESKI, Fałsz)

pygame.display.flip ()

time.sleep (5)

displayText („Firmware Rev”, 20, 1, RED, True)

displayText ("20130520", 40, 2, BIAŁY, Fałsz)

pygame.display.flip ()

time.sleep (5)

podczas gdy prawda:

displayText („Waiting”, 30, 1, GREEN, True)

displayText („Insert Board”, 20, 2, BLUE, False)

pygame.display.flip ()

if (GPIO.input (18)):

displayText („Programowanie”, 30, 1, (200,200,1), prawda)

displayText („Wait 10 Sec”, 30, 2, RED, False)

pygame.display.flip ()

A oto skrypt powłoki, który faktycznie programuje:

#! / bin / sh

cd / home / pi

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

Oczywiście twój przyrząd będzie miał inne oprogramowanie:-)

Krok 9: TO WSZYSTKO DZIAŁA !!!

W końcu miałem dużo powiązań i to działało przyjemnie!

Nauczyłem się kupować te małe wyświetlacze LCD o przekątnej 1,8 cala, aż do momentu, w którym teraz zwrócę się do urządzenia do trywialnych projektów Pi.

W każdym razie - oto kilka jego zdjęć w akcji.

Cieszyć się.

Gdzie stąd?

Cóż, to fajne pytanie - w tej chwili programista po prostu programuje kartę i sprawdza, czy mikropłytka była poprawnie błyskała. Wizualnie kontrolujemy działanie diod LED (stąd jasny wyświetlacz) - Kolejnym krokiem jest dodanie funkcji, która może komunikować się z działającą płytą w celu sprawdzenia dokładności kombinacji chip / kryształ RTC, porównując upływ czasu z internetem standard. To nie powinno być zbyt trudne …..:-)