Spisu treści:

DemUino - komputer domowy/kontroler: 7 kroków
DemUino - komputer domowy/kontroler: 7 kroków

Wideo: DemUino - komputer domowy/kontroler: 7 kroków

Wideo: DemUino - komputer domowy/kontroler: 7 kroków
Wideo: DemUino 2024, Listopad
Anonim
Image
Image
Nagrywanie bootloadera
Nagrywanie bootloadera

Komputer inspirowany Arduino firmy DemeterArt Wykorzystaj w pełni swoją starą klawiaturę PS2. Zhakuj go na dostosowanym komputerze osobistym, aby kontrolować rzeczy! Zawsze chciałem zbudować własny komputer domowy, trochę w stylu retro, nic wymyślnego, ale z konkretnymi możliwościami dostosowanymi do moich preferencji. Tak więc dotarłem do tego z MCU atmega328 i zestawem rozwojowym Arduino.

Pozwolę sobie stwierdzić, że ten projekt trwałby znacznie dłużej z wątpliwymi wynikami końcowymi, gdyby nie utalentowani fani, którzy mniej samolubni dostarczają darmowe biblioteki do użytku wszystkich. Dziękuję wam wszystkim:-)

odwiedź moją stronę, aby przeczytać całą historię i pobrać wszystkie odpowiednie pliki

www.sites.google.com/site/demeterart

Krok 1: Funkcje

  • Oparty na ATMEGA328 z 32KB flash, 2KB SRAM i 1KB EEPROM.
  • obsługa trybów interaktywnych i wsadowych
  • edytor linii i tryb listy podczas edycji
  • 8 niestandardowych znaków dla grafiki użytkownika
  • 60 kroków programu o numerach 00, …, 99
  • Pętle warunkowe „If”, „while” i „for” oraz instrukcje „goto” i „sub” dla rozgałęzień
  • Podstawowe wyrażenia arytmetyczne i matematyczne plus testy logiczne
  • zmienne systemowe pozwalają na zdarzenia czasowe, średnie, rms, minimalne i maksymalne wartości z pinów analogowych itp
  • 26 zmiennych użytkownika do interakcji ze zmiennymi systemowymi i poleceniami
  • 104 bajty tablicy adresowalnej przez użytkownika lub 52 krótkie liczby całkowite
  • możliwość odczytu/zapisu danych programu oraz kodu w locie (zmienna p)
  • mini aplikacja oscyloskopowa z niestandardowymi znakami do pseudografiki
  • zapisywanie i ładowanie programów i danych do/z EEPROM
  • ładowanie/zapisywanie programów i zmiennych z/do komputera
  • autoexec do ładowania i uruchamiania programu z EEPROM po każdym resecie
  • 9 pinów GPIO (w zestawie SPI) dostępnych na zewnętrznym złączu DB15
  • BUZZER dla efektów dźwiękowych

Krok 2: Rzeczy, których będziesz potrzebować

Stara klawiatura ps/2 wystarczająco gruba, aby pomieścić wyświetlacz LCD pcb (popularny format równoległy) Układ MAX232 dla portu RS232 zestaw rozwojowy Arduino atmel atmega328PU z regulatorem IDE 1.0.1 LM7805 5 V prostownik mostkowy brzęczyk, kondensatory, przycisk resetowania, złącza itp

Krok 3: Nagrywanie bootloadera

Tak więc po zakupie „pustego” układu atmega328PU należy podjąć decyzję. Czy używam specjalnego programatora zewnętrznego lub ISP, czy też wypalam bootloader Arduino do bestii i renderuję urządzenie do programowania za pośrednictwem portu UART? Wybrałem to drugie, aby ułatwić sobie życie! Nowy bootloader zajmuje tylko pół kilobajta pamięci flash, pozostawiając nieco ponad 31 KB programu użytkownika i danych statycznych. Strona Arduino obejmuje przypadek wypalenia bootloadera na nowym chipie, jeśli chodzi o użycie avrdude do faktycznego wypalenia docelowego chipa, proces nie powiódł się z błędem wskazującym zły identyfikator dla konkretnego MCU. Więc po kilku poszukiwaniach znalazłem tego faceta, który miał rację i zastosowałem się do jego procedury. Jedyną różnicą były 2 pliki konfiguracyjne, avrdude.conf i boards.txt, potrzebne avrdude i arduino IDE 1.0.1, aby było to możliwe. Po skopiowaniu 2 plików do odpowiednich lokalizacji (najpierw wykonaj kopię zapasową starych) dostępna była opcja „arduino328” z Tools->Board i avrdude przystąpił do wypalania bezpieczników i bootloadera. Teraz chip jest gotowy do zaprogramowania z poziomu nowej maszyny!

Krok 4: Budowanie jednostki

Budowanie jednostki
Budowanie jednostki
Budowanie jednostki
Budowanie jednostki

Perforowana płyta z miedzianymi paskami została wykorzystana jako rozwiązanie do szybkiego montażu z gniazdami DIP na chipy, wiesz, na wszelki wypadek! Następnie otwory i nacięcia na złącza, przycisk resetowania i wyświetlacz LCD zostały otwarte przez wyjątkowo wytrzymały i gruby plastik klawiatury. Tak, to zostało zbudowane 25 lat temu! Nastąpił bałagan przewodów wychodzących z płytki drukowanej w kierunku różnych urządzeń peryferyjnych. Prymitywna kontrola ciągłości, a następnie podłączenie zasilania bez zapełnienia chipów tylko po to, aby sprawdzić gniazda pod kątem prawidłowych napięć. Potem pojawiły się 2 układy scalone, a obudowa klawiatury została mocno zamknięta za pomocą plastikowych zatrzasków na dole. Urządzenie było gotowe do wypalenia szkiców w sterowniku!

Proponuję użyć niepolarnych kondensatorów 1uF/16V do pomp ładujących MAX232. Zlokalizuj kondensatory odsprzęgające 100nF dla dwóch chipów jak najbliżej odpowiednich pinów VCC i GND. Użyj połączenia w gwiazdę dla zasilania i uziemienia w odniesieniu do regulatora LM7805. Przełącznik 2 może być zworką w zależności od implementacji, ale dobrze jest mieć, choćby w celu uniknięcia niechcianych resetów MCU z komputera hosta w niektórych przypadkach. W każdym razie przełącznik musi być zamknięty, aby umożliwić Arduino IDE wypalenie szkicu poprzez zresetowanie docelowego MCU (pin DTR RS232). W moim przypadku połączenie jest stałe (zawsze zamknięte). Użyj rezystora szeregowego dla brzęczyka, aby odizolować kilka nF pojemności od bramki sterującej… nigdy nie wiadomo. Zlokalizuj XTAL i ładujące kondensatory 18-22pF jak najbliżej odpowiednich pinów sterownika.

Dzięki mostkowi prostowniczemu urządzenie może być zasilane zarówno z zasilaczy AC, jak i DC. W przypadku prądu stałego pomiędzy adapterem a wejściem regulatora występuje spadek napięcia 1,5 V. W przypadku prądu przemiennego wejście regulatora jest około 1,4 razy większe niż wyjście RMS adaptera lub mniej z powodu obciążenia. Jeśli różnica między wejściem regulatora a jego wyjściem (+5V) jest duża, powiedzmy 7 V, to moc pobierana przez regulator zbliża się do 0,5 wata i lepiej jest użyć małego radiatora, na którym można zamontować chip (pod warunkiem jest na to miejsce) na długie godziny pracy w czasie upałów.

Bezpiecznik wejściowy AC może być wybrany w zależności od zewnętrznych obciążeń (poprzez złącze DB15). Inne czynniki wpływające na wybór bezpiecznika to rezystor ograniczający prąd dla podświetlenia LED wyświetlacza LCD, kondensator mostkowy dla prądu ładowania i obciążalność prądowa transformatora zasilającego.

Krok 5: SCHEMAT

SCHEMATYCZNY
SCHEMATYCZNY

Krok 6: OPROGRAMOWANIE URUCHOMIONE NA POKŁADZIE

To jest szkic, który sprawia, że wszystko się dzieje… a 32 KB to za mało! Możesz używać go w niezmienionej formie, w takim przypadku byłbym wdzięczny za odniesienie do mojego imienia, lub zmienić je do woli i zapomnieć o mnie;-)

To jest szczegółowa dokumentacja dotycząca maszyny.

Podsumowanie poleceń i wyrażeń

„: niedrukowalna linia komentarza

ai: dołącz przerwanie 0 (pin D2)

ar: odczyt analogowy

aw: 'zapis analogowy' na arduino lub bardziej poprawnie pwm

ca: przechwytywanie analogowe w tablicy

cl: czyści wyświetlacz cno: return *Prgm indeks linii o numerze

di: czekaj na serię impulsów i zmierz czas trwania i czas

dl: opóźnienie

zrobić: w połączeniu z „wh”

dr: cyfrowy odczyt dowolnego pinu

dw: cyfrowy zapis dowolny pin

ed: tryb edytora / ładowanie programu z komputera / zmiana numeracji linii

el: funkcja dostępu do pamięci EEPROM;

end: instrukcja END programu

enb: kończy podprogram

es: funkcja dostępu do EEPROM

fl: prosty filtr średniej ruchomej

fr: pętla for-next (fr-nx)

idź: przejdź do kroku programu

gosb: kontynuuj wykonanie do podprogramu

gt: czeka na dane wejściowe użytkownika

if: sprawdź warunek i przejdź do kroku

io: GPIO 1-9 bitów

ld: ładowanie/scalanie programu z EEPROM

lp:: pętla sterowana klawiaturą w trybie interaktywnym

ls: tryb listy/wyślij program do komputera po linii na raz

ml: zdobądź czas

mm: wyświetl wolną pamięć

nos: zamienia liczbę na ciąg

nx: w połączeniu z „fr”

pl: tablica kreślenia cxx

pm: ustaw szpilki dla wejścia lub wyjścia

pr: drukuje wiadomość, wartość lub niestandardowy znak

rgc: polecenie kopiowania zakresu dla tablic

rgs: polecenie ustawienia zakresu dla tablic

rn: uruchom program w pamięci RAM

rs: miękki reset

rx: odbierz znak przez RS232

si: synchroniczne wejście szeregowe z zegarem i pinami danych

sm: aplikacja mini oscyloskopu sno: konwertuje ciąg na liczbę

tak: synchroniczne wyjście szeregowe z zegarem i pinami danych

sub: deklaruje podprogram

sv: zapisz program do EEPROM

tn: sygnał dźwiękowy

tx: prześlij numer przez RS232

wh: pętla do-while używana w połączeniu z „do”

Krok 7: Wideoklip z uruchomionej aplikacji Mini App

odwiedź moją stronę, aby przeczytać całą historię i pobrać wszystkie odpowiednie pliki

www.sites.google.com/site/demeterart

Zalecana: