Spisu treści:

Ręczny komputer BASIC: 6 kroków (ze zdjęciami)
Ręczny komputer BASIC: 6 kroków (ze zdjęciami)

Wideo: Ręczny komputer BASIC: 6 kroków (ze zdjęciami)

Wideo: Ręczny komputer BASIC: 6 kroków (ze zdjęciami)
Wideo: Syn mówi, że z komputerem coś nie tak 🤔 2024, Lipiec
Anonim
Ręczny komputer PODSTAWOWY
Ręczny komputer PODSTAWOWY
Ręczny komputer PODSTAWOWY
Ręczny komputer PODSTAWOWY

Ten Instruktaż opisuje mój proces budowania małego komputera przenośnego z systemem BASIC. Komputer jest zbudowany na chipie ATmega 1284P AVR, który również zainspirował głupią nazwę komputera (HAL 1284).

Ta konstrukcja jest CAŁKOWICIE zainspirowana niesamowitym projektem znalezionym tutaj i odznaką SuperCON BASIC.

Na komputerze działa zmodyfikowana wersja TinyBasic, chociaż większość oprogramowania jest oparta na projekcie dan14. Możesz oczywiście postępować zgodnie z tym Instruktażem, a nawet lepiej, ulepszyć go, ponieważ popełniłem kilka błędów.

Do tego projektu stworzyłem również instrukcję obsługi. Wspomina o kilku błędach i szczegółach dla wybranego monitora, ale co najważniejsze, zawiera listę operacji BASIC.

Po publikacji nakręciłem film prezentujący projekt.

Krok 1: Części, których użyłem

Części, których użyłem
Części, których użyłem
Części, których użyłem
Części, których użyłem
Części, których użyłem
Części, których użyłem

Dla głównego układu scalonego:

  • ATmega 1284P
  • Kryształ 16 MHz
  • Kondensator ceramiczny 2x22pf
  • Rezystor 10KΩ (do resetowania podciągania)
  • 4-stykowy przycisk (do resetowania)
  • Rezystor 470 Ω (dla sygnału kompozytowego)
  • Rezystor 1kΩ (do synchronizacji kompozytowego sygnału wideo)
  • Zworka 3-pinowa (dla sygnału wideo)
  • Brzęczyk pasywny

Do kontroli klawiatury:

  • ATmega 328P (jak te używane w Arduino Uno)
  • Kryształ 16 MHz
  • Kondensator ceramiczny 2x22pf
  • Rezystor 12x 10KΩ (do resetowania podciągania i przycisków)
  • 51x 4-pinowy przycisk (dla rzeczywistej klawiatury)

Dla mocy:

  • Regulator napięcia L7805
  • 3mm dioda LED
  • Rezystor 220Ω (dla LED)
  • 2x 0.1 µF kondensator elektrolityczny
  • Kondensator elektrolityczny 0,22 µF (można zamienić ten 0,22 i jeden 0,1 na jeden 0,33. Powiedziano mi również, że wartości nie mają większego znaczenia, ale nie radzę sobie dobrze z kondensatorami)
  • 2x zworka 2-pinowa (dla wejścia zasilania i dla wyłącznika głównego)

GPIO (może dodać jeszcze kilka podstaw):

  • Zworka 7-pinowa
  • 2x zworka 8-pinowa
  • Zworka 2-pinowa (dla 5V i GND)
  • Zworka 3-4-pinowa (do komunikacji szeregowej)

Inne niż PCB:

  • 4-calowy wyświetlacz LCD z kompozytowym wideo (Mój miał napięcie wejściowe między 7-30 V)
  • Drukowany w 3D uchwyt na wyświetlacz
  • Jakiś przełącznik

Krok 2: Obwód

Obwód
Obwód

Obwód nie jest zbyt ładny i większość głównego regionu IC jest inspirowana przez dan14. To powiedziawszy, jest to całkiem proste Arduino na obwodzie Breadboard. Klawiatura ma prostą siatkę i jest kontrolowana przez ATmega328. Dwa układy AVR komunikują się za pośrednictwem pinów szeregowych UART.

Zarówno obraz, jak i moje pliki Eagle są załączone i mam nadzieję, że wystarczą do odtworzenia obwodu. Jeśli nie, poinformuj mnie, a zaktualizuję Instructable.

Krok 3: PCB

PCB
PCB
PCB
PCB

Płytka jest dwuwarstwowa i stworzona za pomocą Auto Route (och, co za ** dziura!). Posiada przyciski i wskaźnik zasilania LED z przodu, a resztę z tyłu. Miałem swoją płytkę PCB wykonaną z PCB JCL i wykonali z nią niesamowitą robotę. Pliki potrzebne do odtworzenia PCB powinny znajdować się w plikach Eagle z wcześniej.

Sugerowałbym przeprojektowanie PCB, ponieważ mam kilka rzeczy, które chciałbym zrobić inaczej. Jeśli podoba Ci się mój projekt, nadal mam (w momencie pisania) cztery nieużywane tablice, które chętnie sprzedam.

Na płytce znajdują się cztery wywiercone otwory, które wykorzystałem do montażu wyświetlacza LCD.

Krok 4: Przesyłanie kodu

Przesyłanie kodu
Przesyłanie kodu
Przesyłanie kodu
Przesyłanie kodu
Przesyłanie kodu
Przesyłanie kodu

Zarówno 1284, jak i 328 oczywiście potrzebują kodu, a kod, którego użyłem, można znaleźć tutaj: https://github.com/PlainOldAnders/HAL1284 pod ArduinoSrc/src. Po prostu użyłem Arduino IDE do modyfikacji i przesyłania kodu, ale zanim to zrobisz, musisz nagrać bootloadery na układach scalonych:

ATMega328:

Ten jest łatwy w tym sensie, że jest dużo wsparcia, jak nagrać bootloader i przesłać kod do tego IC. Zwykle podążam za tym przewodnikiem, głównie dlatego, że ciągle zapominam o szczegółach.

Kod dla 328 (pod ArduinoSrc/klawiaturą) jest dość prosty. Całkowicie opiera się na bibliotece Adafruit_Keypad-master. Na wypadek, gdyby coś się zmieniło w lib, dołączyłem wersję, której użyłem na mojej stronie github pod ArduinoSrc/lib.

ATmega1284:

To było dla mnie trochę trudne, kiedy po raz pierwszy dostałem IC. Zacząłem od pobrania bootloadera stąd i podążałem za przewodnikiem instalacji. Aby spalić bootloader, po prostu zrobiłem to samo, co z 328 i otrzymałem stąd pomoc. W przypadku obu układów scalonych użyłem Arduino Uno zarówno do nagrywania bootloadera, jak i przesyłania kodu (usunąłem układ scalony z Arduino Uno podczas przesyłania).

Kod (pod ArduinoSrc/HAL1284Basic) jest dla mnie zbyt skomplikowany, ale udało mi się zmodyfikować niektóre części kodu:

Dodałem kilka komend (oznaczonych [A] w manual.pdf), zmieniłem też inne komendy:

Tone: Polecenie tonu używało wcześniej funkcji tonu Arduino, ale podczas korzystania z biblioteki TVout powodowało to, że brzęczyk nie działał poprawnie. Zmieniłem go na funkcję tone TVout, ale to oznacza, że pin tonu MUSI być pin 15 (dla atmega1284)

Komunikacja szeregowa: Ponieważ klawiatura jest DIY, używa komunikacji szeregowej do odczytywania znaków. Ponieważ atmega1284 jest tutaj używany, dostępne są dwie linie komunikacji szeregowej, a przy włączonym "sercom" kod pozwala również na zapis przez port szeregowy (z komputera lub czegokolwiek).

Rozdzielczość: Monitor używany w tym projekcie jest dość głupi i potrzebna jest mała rozdzielczość, w przeciwnym razie obraz migocze. Jeśli używany jest lepszy monitor, sugerowałbym zmianę rozdzielczości w funkcji ustawień.

Krok 5: Montaż

montaż
montaż
montaż
montaż
montaż
montaż

Po przesłaniu kodu i gotowej płytce drukowanej i częściach nadszedł czas na montaż. Wszystkie części, których użyłem, były przelotowe, więc lutowanie nie było zbyt trudne (w przeciwieństwie do twardzieli z SMD). Monitor został przymocowany do czterech otworów w płytce drukowanej za pomocą drukowanego w 3D uchwytu. Jeśli używany jest inny monitor, cztery otwory mogą być wykorzystane do jego zamontowania.

Zastosowany tutaj uchwyt monitora jest również przeznaczony do umieszczenia przełącznika dwustabilnego (podłączonego do zworki „switch” na płytce drukowanej) oraz trzech przycisków sterujących monitorem. Uchwyt mocowany jest plastikowymi śrubami M3 i przekładkami.

Do wtyczki zasilania użyłem złącza JST PCB, chociaż zgrabne gniazdo baryłkowe byłoby nieco bardziej płynne. Aby zasilić płytkę przełączyłem się między zasilaczem 12V lub trzema akumulatorami 18650 szeregowo. Gładszy kowboj niż ja mógłby prawdopodobnie zaprojektować zgrabny uchwyt baterii do deski.

Krok 6: Błędy i przyszła praca

Klawisze strzałek: Klawisze strzałek zostały umieszczone przypadkowo i nie pełnią zbyt wiele funkcji. To utrudnia nawigację

File I/O: Istnieją możliwości File I/O, ale nie są one zaimplementowane. Aby temu zaradzić, oprogramowanie HAL1284Com jest w stanie przesyłać pliki na płytę. Możliwe jest również wgranie do EEPROM.

PEEK/POKE: PEEK i POKE nie są testowane i nie jestem pewien, jakie są adresy.

Break: Break (Esc) czasami mieszał z całym kodem, gdy jest w nieskończonych pętlach.

Pin 7: Pin 7 PWM może być trudny podczas próby DWRITE High lub AWRITE 255. Działa dobrze z AWRITE 254.

Idiota: Idealnie byłoby również móc przesyłać przez UART1, ale przesyłanie jest możliwe tylko przez UART0, więc przesyłanie będzie musiało zostać wykonane przez wyodrębnienie głównego układu scalonego. Ekran i Regulator Napięcia 5 nagrzewają się nieco za gorąco podczas długiej pracy.

Zalecana: