Spisu treści:

Komputer domowy DIY: 4 kroki
Komputer domowy DIY: 4 kroki

Wideo: Komputer domowy DIY: 4 kroki

Wideo: Komputer domowy DIY: 4 kroki
Wideo: 23 несчастья или не забывайте снимать линзы 2024, Listopad
Anonim
Komputer domowy DIY
Komputer domowy DIY

Jakiś czas temu opublikowałem Instructable, używając Espruino Pico do stworzenia komputera domowego:

Ten wymagał podłączenia monitora VGA przez przecięcie kabla VGA, ale do tego Instructable używam płyty o nazwie Pixl.js, która ma wbudowany ekran LCD. Oznacza to, że wszystko, co musisz podłączyć, to kilka przewodów i masz poprawnie działający mały komputer o niskim poborze mocy.

Więc czego potrzebujesz?

  • Espruino Pixl.js
  • Kawałek plastiku lub drewna do działania jako podstawa
  • Deska do krojenia chleba
  • 4x klawiatura 4x4
  • Wiele naklejek na klucze
  • 6 zestawów 8x męskich->męskich przewodów połączeniowych w stylu Dupont (łącznie 48 przewodów) - pasujące wielokolorowe paski znacznie ułatwiają życie

Krok 1: Tworzenie klawiatury

Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
  • Umieść swoje 4 klawisze obok siebie na swojej podstawie (są samoprzylepne). Możesz chcieć przyciąć ich krawędzie, ale uważaj, aby nie przyciąć zbyt daleko, ponieważ możesz odciąć niektóre kontakty.
  • Przyklej płytkę stykową na środku - też jest lepka!
  • Podziel przewód połączeniowy na 4 odcinki po 8 - staraj się zachować te same kolory na każdym.
  • Przyklej przewody do klawiatur, upewniając się, że wszystkie kolory pasują. Złóż przewody z powrotem i przyklej je do tylnej części podstawy. Możesz dodać kilka lepkich nóżek, aby uchronić przewody przed wygięciem pod zbyt dużym kątem.
  • Teraz dodaj naklejkę do każdego przycisku w klawiaturze i oznacz je, jak chcesz, na klawiaturze. Użyj obrazu jako przykładu, ale po przesłaniu kodu możesz zmienić zmienną 'KEYMAP' na taką, jaką masz.

Krok 2: Okablowanie

Okablowanie
Okablowanie

Teraz musisz podłączyć klawiaturę. Każda klawiatura 4x4 jest ułożona jako siatka i łączymy je tak, jakby same były w siatce 2x2 - tworząc dużą siatkę przycisków 8x8.

Połącz przewody, jak pokazano na rysunku, w 4 grupy po 4 przewody w poprzek płytki stykowej (sprawdź kolory przewodów na rysunkach), od lewej do prawej:

  • Klawiatura 1 Pierwsze 4 przewody -> pierwsza grupa 4 na płytce stykowej -> D0, D1, D2, D3
  • Klawiatura 1 Drugie 4 przewody -> trzecia grupa 4 na płytce stykowej -> D8, D9, D10, D11
  • Klawiatura 2 Pierwsze 4 przewody -> pierwsza grupa 4 na płytce stykowej -> D0, D1, D2, D3
  • Klawiatura 2 Drugie 4 przewody -> czwarta grupa 4 na płytce stykowej -> D12, D13, SDA, SCL
  • Klawiatura 3 Pierwsze 4 przewody -> druga grupa 4 na płytce stykowej -> D4, D5, D6, D7
  • Klawiatura 3 Drugie 4 przewody -> trzecia grupa 4 na płytce stykowej -> D8, D9, D10, D11
  • Klawiatura 4 Pierwsze 4 przewody -> druga grupa 4 na płytce stykowej -> D4, D5, D6, D7
  • Klawiatura 4 Drugie 4 przewody -> czwarta grupa 4 na płytce stykowej -> D12, D13, SDA, SCL

Na obrazku mamy 6 zestawów po 8 przewodów. Pierwsze 2 pochodzą z klawiatur 1 i 2, drugie 2 trafiają do Pixl.js, a trzecie 2 do klawiatur 4 i 3.

Krok 3: Oprogramowanie

Teraz upewnij się, że oprogramowanie Twojego Pixla jest aktualne, połącz się z nim za pomocą Espruino IDE i prześlij poniższy kod. Odłącz IDE i gotowe!

// Zmienna okablowania klawiatury KEYROW = [D7, D6, D5, D4, D3, D2, D1, D0]; var KLUCZKOL = [A5, A4, D13, D12, D11, D10, D9, D8];

// Mapy klawiszy dla klawiatury

var KEYMAPLOWER = ["`1234567890-=\x08", "\tqwertyuiop\n", "\0asdfghjkl;'#\x84\x82\x85", "\x01\zxcvbnm,./ \x80\x83\ x81",]; var KEYMAPUPPER = ["¬!\"£$%^&*()_+\x08", "\tQWERTYUIOP{}\n", "\0ASDFGHJKL:@~\x84\x82\x85", "\x01| ZXCVBNM? \x80\x83\x81",];

/* Jeśli znak w mapie klawiszy wynosi >=128, odejmij 128 i poszukaj w tej tablicy wieloznakowych kodów kluczy*/ var KEYEXTRA = [String.fromCharCode(27, 91, 68), // 0x80 left String.fromCharCode(27, 91, 67), // 0x81 right String.fromCharCode(27, 91, 65), // 0x82 w górę String.fromCharCode(27, 91, 66), // 0x83 w dół String.fromCharCode(27, 91, 53, 126), // 0x84 strona w górę String.fromCharCode (27, 91, 54, 126), // 0x85 strona w dół]; // Stan zmiany var hasShift = false; funkcja setShift(s) { hasShift = s; // narysuj wskaźnik przesunięcia na ekranie if (hasShift) { g.setColor(1); g.fillRect(105, 0, 128, 6); g.setColor(0); g.drawString("SHIFT", 107, 1); g.ustawKolor(1); } else { g.setColor(0); g.fillRect(105, 0, 128, 6); g.ustawKolor(1); } g.flip(); }

// Konwertuj rzeczywisty klucz na ciąg znaków

// I wyślij do Loopback (gdzie jest konsola) function handleKeyPress(e) { var kx = e>>3; var ky = e&7; if (ky>3) { // zamień w długi wiersz kx+=8; ky=4; } klawisz var = hasShift ? KEYMAPPER[ky][kx]: KEYMAPLOWER[ky][kx]; if (key=="\x01") { setShift(!hasShift); } else { setShift(false); if (key && key.length) { if (key.charCodeAt(0)>127) key = KEYEXTRA[key.charCodeAt(0)-128]; Terminal.inject(klucz); } } }

// skonfiguruj klawiaturę

require("Klawiatura").connect(KLUCZ, KLUCZ, handleKeyPress);

Krok 4: Korzystanie z niego

Użyj tego!
Użyj tego!

Teraz to działa:

  • Klawiatura może wykryć tylko jedno naciśnięcie na raz, więc Shift przełącza wielkie litery (ze wskaźnikiem w prawym górnym rogu), a wpisywanie litery zmienia się na małe. Przytrzymanie klawisza Shift i innego klawisza nie zadziała.
  • Pisanie może być dość bolesne, więc używaj klawisza Tab (po lewej) tak często, jak to możliwe, aby automatycznie uzupełniać słowa!
  • Grafika dla ekranu jest dostępna za pomocą metod na zmiennej g - np. g.fillRect(20, 20, 40, 40) lub g.clear().
  • Wiele IO jest używanych w klawiaturze, ale nadal masz piny A0, A1, A2 i A3, których możesz użyć do podłączenia zewnętrznego sprzętu.
  • reset() zresetuje wszystko - łącznie z kodem do obsługi klawiatury. Aby tego uniknąć, włącz zapisywanie przy wysyłaniu, nawet po zresetowaniu w opcjach komunikacji Web IDE i prześlij ponownie.
  • Twój komputer jest zaskakująco wydajny energetycznie – nadal możesz oczekiwać około 20 dni pracy na baterii – zawsze włączony – na jednej baterii CR2032!

Zalecana: