
Zgodnie z tym, co autor projektu – Geoff Graham – umieścił na swojej stronie, jego mini-komputer MaxiMite może być wykorzystany jako:

Minikomputer
Wtedy o MaxiMite należy myśleć jak o współczesnej wersji komputerów Tandy TRS-80, Commodore 64 czy jakiegokolwiek innego modelu popularnego kilkanaście lat temu. Do MaxiMite można podłączyć kolorowy monitor VGA, standardową klawiaturę IBM PC i działać! Minikomputer zawiera wbudowany, własny interpreter BASICa i nie potrzebuje żadnego systemu operacyjnego, więc po uruchomieniu można w mgnieniu oka korzystać z właśnie napisanego programu. MaxiMite wyposażony jest też w gniazdo kart SD, na których można zapisywać programy i dane do późniejszego użytku. Z kolei interpreter BASICa jest oparty o rozwiązania Microsoftu, więc jest kompatybilny z większością programów dostępnych w Internecie. A dla początkujących w dziedzinie programowania – łatwa składnia języka BASIC pozwala na proste rozpoczęcie przygody z tworzeniem własnych programów. Interpreter MaxiMite został stworzony w taki sposób, aby stanowił przyjazne środowisko do nauki programowania, a przy tym nie tracił na wydajności i funkcjonalności, aby łatwo – po poznaniu początków programowania – uczynić krok do przodu, w stronę bardziej zaawansowanych rozwiązań.
Sterownik
MaxiMite został wyposażony w 20 wejść/wyjść bezpośrednio na płycie głównej i dodatkowe 20, obecne po połączeniu łącznika kompatybilnego z Arduino. Piny I/O minikomputera mogą posłużyć do pomiaru napięcia, określania częstości czy kontroli przycisków, a także mogą sterować zewnętrznymi urządzeniami – zapalaniem świateł, włączaniem przekaźników, pomp itp. A to wszystko kontrolowane z poziomu języka BASIC. Dlatego też MaxiMite może stać się wielokanałowym woltomierzem do pomiaru temperatury, ciśnienia, przyspieszenia czy innych parametrów z wykorzystaniem czujników z analogowym wyjściem. Dzięki temu MaxiMite może zostać przystosowany do pracy jako sterownik procesu przemysłowego, inteligentny alarm przeciwwłamaniowy czy rejestrator temperatury. W dodatku, minikomputer może zostać zaprogramowany do automatycznego wczytywania programu po włączeniu, nawet w przypadku nieobecności klawiatury i monitora – dlatego sprawdzi się jako wydajny sterownik w rozwiązaniach wbudowanych; także wiele tanich, 5- bądź 7-calowych wyświetlaczy VGA dostępnych na serwisach aukcyjnych sprawdzi się jako monitory do MaxiMite. Minikomputer wspiera także szereg protokołów komunikacyjnych (szeregowy, I²C, SPI oraz 1-wire) – czyli tych najpopularniejszych do komunikacji między układami scalonymi. Dzięki temu MaxiMite może stać się – z wykorzystaniem garści elementów zewnętrznych – choćby interfejsem dla rozmaitych urządzeń pomiarowych. A jako że minikomputer jest tani, może także służyć do bardziej prozaicznych rozwiązań – działać jako inteligentny sterownik ładowania czy monitor temperatury w domu. Jest także na tyle wydajny, aby w pełni sterować parametrami w szklarni czy zbierać dane z auta wyścigowego.
Komputer do gier
MaxiMite będzie także cieszył się zainteresowaniem użytkowników lubiących tworzyć i grać w gry. Współpraca z kolorowym monitorem jest w tym przypadku bardzo użyteczna, a MaxiMite wyposażono w specjalny, szybki tryb pracy w celu grania. Dodatkowo interpreter minikomputera MMBasic posiada specjalne komendy służące do poruszania obrazami na ekranie, co jest niezbędne w przypadku tworzenia gier. Na poniższym filmie można zobaczyć niewielką grę napisaną i uruchomioną na MaxiMite.

Główne cechy MaxiMite to:
- Szybki, 32-bitowy procesor ze 128kB pamięci RAM
- Wbudowany wydajny interpreter języka BASIC, w pełni wspierający zmienne zmiennoprzecinkowe i tekstowe, długie nazwy zmiennych, tablice wartości zmiennoprzecinkowych lub zmiennych o różnych długościach czy obsługę wejść/wyjść. Bez problemu obsłuży on ponad 1000 linii kodu i jest zdolny do wykonywania ponad 30 000 linijek kodu na sekundę.
- Wyjście wideo obsługujące 8 kolorów, w standardzie VGA. Maksymalna rozdzielczość to 480x432 px. Tablica znaków zawiera pełen zestaw wielkich i małych znaków zgodny z ASCII. Na monitorze może być wyświetlane 80 znaków w linii w 33 liniach.
- Tryb przyspieszony do gier, obsługujący rozdzielczość 240x213 px i specjalne komendy języka BASIC.
- Współpraca z typową klawiaturą PS/2, ze wsparciem klawiatury numerycznej i przycisku CapsLock.
- Wyjście audio stereo, służące do odtwarzania muzyki w formacie MOD za pomocą wbudowanego syntezatora lub do generowania sygnałów sinusoidalnych o częstości od 1 Hz do 20 kHz.
- Port USB do łączenia z komputerem PC. MaxiMite wykrywany jest jako wirtualny port COM i emuluje klawiaturę. Także przez USB mogą być wysyłane do komputera PC/odczytywane z niego programy minikomputera.
- Wsparcie dla kart SD/MMC/SDHC z systemem plików FAT16/FAT32 i o pojemności do 32GB.
- „Napęd” wbudowany – z wykorzystaniem pamięci flash mikrokontrolera, do zapisu danych poza kartą SD. Oferuje 180KB pamięci.
- 20 pinów I/O na płycie komputera i dodatkowe 20 pinów I/O po przyłączeniu łącznika kompatybilnego z Arduino.
- Wsparcie dla protokołów komunikacyjnych: I²C, szeregowy (RS-232), SPI oraz 1-wire.
- Dwa kanały PWM.
- Możliwość upgrade’u z poziomu dowolnego komputera PC z portem USB.
- Możliwość zasilania napięciami z zakresu 7-16 VDC.
Budowa minikomputera

MaxiMite powstał w oparciu o jeden procesor (PIC32 od Microchipa), który obsługuje wszystkie peryferia oraz interpreter BASIC. Dodatkowymi układami na płytce komputera są jedynie stabilizatory napięcia oraz zegar z podtrzymaniem bateryjnym. Schemat minikomputera można zobaczyć poniżej.
W minikomputerze pracuje 32-bitowy procesor PIC o 100 wyprowadzeniach, w obudowie 14x14 mm TQFP. Można użyć dwu typu procesorów: PIC32MX695F512L-80I/PF bądź PIC32MX795F512L-80I/PF. Drugi z układów jest dodatkowo wyposażony w interfejs CAN, który i tak nie znajduje zastosowania w MaxiMite. Obydwa procesory są taktowane zegarem 80MHz, mają 512 kB pamięci flash i 128 kB RAM-u.
W prawym, górnym rogu schematu widać obwody sterownika VGA. Dla każdego koloru obwód składa się z rezystora i diody, które dopasowują napięcie wyjściowe do poziomu 0,7V i pozwalają dostosować wyjście do impedancji monitora. Dodatkowo, wyprowadzenie 9 służy do wykrywania przejściówki RCA. Sygnał wideo generowany jest przez obwody procesora PIC32 sterowane poprzez interfejs SPI. Procesor wystawia na wyjścia kolejne ramki danych odczytywane z pamięci DMA. Proces ten odbywa się niejako niezależnie od procesora – zadaniem CPU jest zapisanie jedynie danych dotyczących obrazu do pamięci. Technika ta została szerzej opisana w niniejszej książce. Dodatkowo, minikomputer może zostać wyposażony w przejściówkę RCA, jak na schemacie poniżej.

Z kolei poniższy schemat pokazuje obwód pojedynczego wejścia/wyjścia minikomputera wraz z zabezpieczeniami. Piny I/O podciągnięte są do masy za pomocą rezystora 100 kΩ i wyposażone w szeregowo włączony opór 4,7 kΩ zabezpieczający przed przepływem zbyt dużego prądu.

Wyjście audio obsługiwane jest programowo przez specjalnie napisany syntezator, a od strony sprzętowej jest to wyjście sygnału PWM z nośną o częstości ok. 100 kHz. Rezystor 1 kΩ i kondensator 47 nF tworzą filtr dolnoprzepustowy usuwający nośną. Wyjście audio może być dostosowane do współpracy ze wzmacniaczem głośnikowym lub z słuchawkami – szczegóły zostały przedstawione na stronie projektu. Dodatkowo, aby wykorzystywać wyjście audio do generowania sygnałów PWM należy zmodyfikować obwód filtru dolnoprzepustowego – odpowiednie wartości elementów dla takiego rozwiązania to 4,7 kΩ oraz 33 nF.
Zegar został zbudowany w oparciu o układ DS1307 i wyposażony w podtrzymanie bateryjne. W przypadku rezygnacji z zegara czasu rzeczywistego, układ będzie wykorzystywał zegar wbudowany w procesor – zerowany przy każdym jego uruchomieniu.
Dodatkowymi obwodami są: przycisk służący do wgrywania firmware’u (wtedy MaxiMite rozpoznawany jest przez komputer PC jako urządzenie HID), oscylator kwarcowy (częstotliwość mnożona jest w obwodach procesora do wartości 80 MHz), interfejs USB (połączony bezpośrednio z procesorem, pin 54 służy do wykrywania podłączonego komputera) oraz obwody dla trybu przyspieszonego (uaktywniające stabilizator 1,8V zasilający rdzeń procesora).
Konstrukcja


Minikomputer dostępny jest w postaci kitu, ale wszelkie materiały – wzory płytek, spis elementów, oprogramowanie – może zostać ściągnięte ze strony projektu. Wszelkie elementy są łatwo dostępne. Płytka jest dwustronna, a montaż całości nie powinien zająć więcej niż 1-2 godziny; wymaga on umiejętności montażu elementów SMD. Wszelkie pozostałe szczegóły – dotyczące wgrywania firmware’u czy modyfikacji minikomputera – można znaleźć na stronie projektu.
Źródło (oraz kolejne podstrony).
Cool? Ranking DIY