Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowalna klawiatura modułowa USB

andrzejlisek 13 Paź 2019 16:05 2703 7
  • Programowalna klawiatura modułowa USB

    Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX Spectrum, czy Commodore 64 ma podobny układ QWERTY, ale większość klawiszy w tych urządzeniach ma dodatkowe funkcje i jest trochę inny zasób klawiszy sterujących. Co prawda, można odpowiednio ustawić klawisze zwykłej klawiatury, ale to nie rozwiązuje problemu takiego, jak brak oznaczeń na klawiszach i konieczność pamiętania, jakie klawisze pełnią jakie funkcje (np. słowa kluczowe BASIC w przypadku ZX Spectrum 48). Można mieć wydrukowaną ściągę, ale praca z nią jest trudniejsza niż na klawiaturze z naniesionymi oznaczeniami.
    Inny przykład, na którym zetknąłem się z tym problemem, jest emulator komputera CA80. Ten komputer ma 24 klawiszy, ale ich rozmieszczenie jest zupełnie inne niż na klawiaturze PC. Z tego można wybrnąć na dwa sposoby: Pierwszy to przypisanie klawiszy według oznaczeń na komputerze (cyfry od 0 do 9, litery od A do F, klawisze X, Y, Z, M, G itp.), drugi to przypisanie klawiszy w sposób podobny do rozmieszczenia na komputerze. Komputer ma 4 rzędy po 6 klawiszy, wiec teoretycznie można odpowiednio przypisać do rzędów klawiszy od „3” do „8”, od „W” do „U” (patrząc na klawiaturę QWERTY), od „S” do „J” i ostatni rząd to klawisze od „Z” do „N”. Jak widać, pierwszy przypadek całkowicie zmienia układ klawiszy, a drugi przypadek zatraca znaczenie oznaczeń klawiszy na rzeczywistej klawiaturze. Na CA80 jest kilka prostych gier i przez to rozgrywka jest znacznie utrudniona.
    Na rynku są klawiatury „dla graczy”, w których podobno można programować funkcję większości klawiszy, ale cały czas pozostaje problem braku zmiany oznaczeń. W Internecie wyczytałem, że istnieją klawiatury, w których na każdym klawiszu jest wyświetlacz OLED mogący wyświetlić dowolny rysunek. Taka klawiatura całkowicie odpowiadałaby moim potrzebom, gdyby nie mała dostępność, bardzo wysoka cena (zważywszy na to, że będzie to sprzęt do okazjonalnej zabawy, a nie do codziennej pracy) i fakt, że cały czas jest to układ klawiatury komputerowej (jednak to ostatnie nie byłoby problemem).
    Mój pomysł rozwiązuje powyższy problem kosztem wygody i niezawodności sterowania. Założenia projektu s ą następujące:
    1. Działanie na dowolnym systemie mogącym współpracować ze standardową klawiaturą USB.
    2. System traktuje urządzenie jako standardową klawiaturę USB.
    3. Brak dedykowanych sterowników.
    4. Jedynym potrzebnym programem do konfiguracji klawiatury jest program typu „notepad”, który pełni funkcję konsoli tekstowej.
    5. Łatwa zmiana oznaczeń klawiszy.
    6. Klawisze ułożone w macierz prostokątną.
    7. Możliwość przypisania do klawisza klawiatury naciśnięcia dowolnego klawisza w systemie lub brak przypisania (wtedy naciśnięcie klawisza nie wywołuje żadnego skutku).
    Wobec powyższego, wymyśliłem, że moja klawiatura będzie się składać z 16 modułów 4x4, które można układać w różnych konfiguracjach, jednak nie muszą być użyte wszystkie moduły. Na przykład do CA80 potrzebne są 2 moduły, do ZX Spectrum lub Cobra 1 są potrzebne 3 moduły, a do Commodore 64 są potrzebne minimum 4 moduły (klawisz spacji będzie w rzędzie klawiszy od „Q” do „P”) lub 8 modułów, jeżeli klawisz spacji ma być na dole. Aby odwzorować klawiaturę PC, potrzebnych jest 10 lub 12 modułów ułożonych w układzie 5x2 lub 6x2 (wstępne oszacowanie).
    Do budowy modułów wykorzystałem klawiatury membranowe, gdyż są płaskie i tanie. Fakt, że klawiatura jest płaska ma znaczenie w nadawaniu oznaczeń. Można je wydrukować na arkuszu papieru i wyciąć kartkę nieco większą od samej klawiatury i na nią nałożyć. Tak nałożona kartka nie ma istotnego wpływu na komfort i niezawodność sterowania. Dokładnie takie rozwiązanie spotykałem w wielkopowierzchniowych sklepach, na wagach przeznaczonych do obsługi przez klientów, konkretnie, klient ma zważyć towar i wcisnąć przycisk odpowiadający rodzajowi ważonego towaru.
    Do budowy centralnego układu i każdego modułu użyłem mikrokontrolera Atmega328. Wybór kontrolera wynika z faktu, że mam doświadczenie w mikrokontrolerach 8-bit AVR i że w module potrzebnych jest w sumie 14 linii cyfrowych, a w centrali potrzebne są 2 linie cyfrowe, jednak potrzebne było więcej linii cyfrowych do testów działania. Po prostu kupiłem 20 egzemplarzy Atmega328, z których wykorzystałbym 17 egzemplarzy, a pozostałe byłyby na zapas.
    Do komunikacji centrali z komputerem wykorzystałem PS/2, na portalu aukcyjnym kupiłem prawdziwy adapter do podłączania klawiatury i myszy PS/2 do portu USB. Technologia PS/2 jest przestarzała, ale protokół jest bardzo prosty i możliwy do zastosowania na mikrokontrolerze, natomiast nie mam żadnego doświadczenia w implementacji USB. Znam jeden przypadek Arduino, który komunikuje się z komputerem po USB, jednakże komputer traktuje to jako standardowy port szeregowy.

    Urządzenie może pracować w trzech trybach wybieranych przełącznikiem na obudowie centrali:
    0. Tryb pracy. Po uruchomieniu należy wybrać adres miejsca w pamięci (numer w systemie szesnastkowym), z którego ma zostać wczytany układ klawiatury poprzez wciśniecie kolejno 3 klawiszy (numer użytego modułu nie ma znaczenia podczas tej czynności). Pamięć ma 1024 bajty, po wprowadzeniu adresu jest obliczana reszta z dzielenia przez 1024. Wybieranie adresu nie jest sygnalizowane, po jego wybraniu następuje wczytanie układu klawiatury i rozpoczyna się normalna praca z klawiaturą. Jest to jedyny tryb, w czasie uruchamiania którego nie są wprowadzane jakiekolwiek informacje, więc nie jest potrzebne przygotowanie edytora tekstu. Dodatkowo, w trybie 0 można uruchomić tryb sprawdzenia układu. W tym celu należy przygotować edytor tekstu, a po uruchomieniu wprowadzić adres zwiększony o 1024, czyli należy wprowadzić numer z przedziału od 400h do 7FFh. W tym trybie, przy wciskaniu klawiszy będą wypisywane wszystkie naciśnięcia z odpowiadającym numerem klawisza przypisanego i konfiguracją modyfikatorów. W przypadku podania adresu większego od 2048 (w zakresie od 800h do FFFh), w celu rozstrzygnięcia, czy ma być to praca, czy wyświetlanie, oblicza się resztę z dzielenia przez 2048.
    1. Tryb programowania. Ten tryb służy do programowania i konfiguracji klawiatury. Centrala wypisuje komunikaty związane z aktualnym stanem działania. W tym trybie można również wyświetlić i wyczyścić pamięć, zapisać konfigurację do pamięci lub ją wczytać i zmodyfikować.
    2. Tryb testowania. Ten tryb służy do testowania poprawności działania urządzenia. Bezpośrednio po uruchomieniu, wypisywane są wszystkie naciśnięcia i zwolnienia poszczególnych klawiszy.
    Wszystkich możliwych klawiszy jest 256 (16 modułów po 16 klawiszy), numer klawisza składa się z numeru modułu i numeru klawisza w nim. Do każdego klawisza przypisane są dwie wartości, z których każda może zawierać się w zakresie od 0 do 127, jednak nie wszystkie możliwe wartości mogą być wykorzystane. Pierwsza wartość to kod klawisza na klawiaturze PC, a druga wartość to ustawienie modyfikatorów. Ponieważ wszystkich modyfikatorów jest 8, a 6 z nich można połączyć w pary klawiszy działających tak samo, jest 5 różnych modyfikatorów, które ustawia się poprzez wartość poszczególnych bitów. Od najmniej znaczącego bitu, można zdefiniować modyfikatory: Lewy Shift, Lewy Control, Lewy Alt, Prawy Alt i Prawy Windows. Jak wiadomo, tylko klawisze Alt różnią się działaniem, dlatego są traktowane osobno. Taka konfiguracja umożliwia zdefiniowanie pod jednym klawiszem naciśnięcia klawisza z modyfikatorem, np. Alt+F4, Windows+R, Shift+S itp. Oczywiście można pod jeden klawisz przypisać sam modyfikator (traktowany tak samo, jak każdy inny klawisz), pod drugi klawisz przypisać klawisz, w takim przypadku, w celu uruchomienia określonego zdarzenia, należy nacisnąć oba klawisze tak samo, jak na standardowej klawiaturze. Wartość 0 dla klawisza i modyfikatora oznacza brak reakcji na naciśnięcia klawisza, czyli brak przypisania.

    Warto zauważyć następujące fakty:
    1. Mapa klawiatury składa się zawsze z 512 wartości, w dwóch ciągach po 256 wartości.
    2. Każda wartość zawiera się w przedziale od 0 do 127.
    3. W większości przypadków przypisanych jest od 30 do 70 klawiszy.
    4. W większości przypadków do żadnego klawisza nie są ustawione modyfikatory, ewentualnie ustawia się modyfikatory do mniej niż 10 klawiszy.

    Wobec powyższego, możliwa jest bardzo prosta i skuteczna kompresja danych w pamięci. Algorytm kompresji jest następujący: Dla każdej wartości, jeżeli wartość jest inna niż 0, to zapisuje się ja w pamięci, a jeżeli wartość jest równa 0, to sprawdza się, ile jest kolejnych wystąpień wartości 0. Do tak otrzymanej liczy dodaje się 127 i zapisuje się ją w pamięci (jej wartość wyniesie od 128 do 255). Przy tak zdefiniowanej kompresji, jedna mapa klawiatury zajmuje w pamięci od 4 bajtów (pusta mapa) do 512 bajtów (do każdego klawisza przypisany klawisz klawiatury z modyfikatorem). Pamięć Atmega328 ma wielkość 1024 bajty i można w niej przechować od kilku do kilkunastu map klawiatur.

    Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB

    Centrala składa się z mikrokontrolera ATMega328 taktowanego z częstotliwością 16MHz. W mikrokontrolerze jest skonfigurowane przerwanie wyzwalane z częstotliwością 50kHz, co po podzieleniu przez 4 daje częstotliwość 12500Hz, która mieści się w zakresie częstotliwości zegara w PS/2 (od 10 do 16kHz). Protokół PS/2 przewiduje generowanie sygnału zegarowego zawsze przez urządzenie peryferyjne, bez względu na kierunek transmisji. W stanie spoczynku, urządzenie nie generuje sygnału zegarowego, a sprawdza stan linii danych. Jeżeli komputer chce wysłać dane, to zmienia stan linii danych z wysokiego na niski, a potem urządzenie generuje sygnał zegarowy i odczytuje poszczególne bity. Protokół PS2 jest zaimplementowany w zakresie niezbędnym do uruchomienia klawiatury, obsługi naciśnięć klawiszy i przyjmowania komunikatów o zmianach stanu Num lock, Caps lock, Scroll lock. Odczyt stanu linii danych PS/2 nie jest stały i nie wyzwala dodatkowego przerwania, tylko następuj e z częstotliwością 50kHz, co według przeprowadzonych testów jest wystarczające.
    Na schemacie jest wejście audio, ponieważ na początku przewidywałem również obsługę za pomocą smartfonu poprzez odpowiednio generowane sygnały dźwiękowe o strukturze podobnej do komunikatów w transmisji szeregowej asynchronicznej. Do testów działania centrali było to dobre, ale ostatecznie zrezygnowałem, ponieważ w celu zapewnienia poprawnego działania, prędkość przesyłu danych musiała być niska, a i tak metoda była zawodna, aplikację przygotowałem w HTML/JS i często się zdarzało, że przy naciśnięciu przycisku zamiast wygenerować się dźwięk, powiększał się obraz, pomimo, że na komputerze nie było z tym żadnego problemu. Ostatecznie z obsługi audio zrezygnowałem, tym bardziej, że w dalszej implementacji funkcjonalności pojawił się problem z poprawną obsługą sterowania przez dźwięk i stwierdziłem, że nie będę próbować rozwiązywać problemu. Dodatkowo, na moim smartfonie Huawei Mate 10 Lite dźwięk był generowany z krótkim, ale wyczuwalnym opóźnieniem w stosunku do naciśnięcia palcem, więc do testów jest OK, ale do pracy to trzeba powoli naciskać, więc pod tym względem klawiatura membranowa „wygrywa”. Sprawdzałem na trzech smartfonach kolegów, w tym jeden taki sam, jak mój i dwa różne Samsungi, na wszystkich było to samo opóźnienie. Natomiast na komputerze, przy klikaniu myszą nie było żadnego opóźnienia ani problemów z działaniem.

    Zegarowi 50kHz jest podporządkowane działanie całego urządzenia. Moduły z centralą są połączone dwiema liniami danych (oprócz zasilania), z których jedna przenosi impulsy sterujące generowane przez centralę, a druga przenosi informację o klawiszach generowane przez poszczególne moduły. Odczyt stanu klawiszy w modułach następuje co 10milisekund. W jednym cyklu trwającym 10ms jest wysyłanych 16 impulsów, pierwszy impuls jest dwa razy dłuższy od pozostałych. Po wysłaniu impulsu następuje odczyt komunikatu wysłanego przez moduł, który trwa 18 cykli zegara 50kHz. Pierwsze 16 bitów to stan poszczególnych klawiszy jednego modułu, a ostatnie dwa bity to bity parzystości, z których jeden jest w stanie wysokim, a drugi w stanie niskim lub na odwrót. W przypadku błędu parzystości oraz w przypadku, gdy oba bity parzystości mają tą samą wartość, komunikat jest ignorowany i przyjmuje się, że stan klawiszy nie był zmieniany (tak, jakby komunikat był taki sam, jak w poprzednim cyklu).

    Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB Programowalna klawiatura modułowa USB

    Moduł składa się z klawiatury membranowej 4x4 na podstawce. Zaciski pozwalają łączyć moduły ze sobą za pomocą krótkich odcinków drutu oraz do centrali. Używane są 4 zaciski, środkowy nie jest używany. Jeżeli moduł jest klawiszami do góry, to zaciski górne i dolne patrząc od lewej do prawej, a zaciski lewe i prawe patrząc od góry do dołu to kolejno sygnał z centrali, masa, zasilanie i sygnał z modułu.
    Do budowy układu sterującego jest wykorzystana płytka Cyfronika UM-75, z jednej płytki można wyciąć płytki do czterech modułów, więc do budowy całości wykorzystałem 4 płytki. Na płytce jest ATMega328 taktowana z częstotliwością 16MHz (próbowałem z częstotliwością 4 lub 8MHz, okazuje się, że były problemy z komunikacja lub prawidłowym generowaniem komunikatów). Przełączniki DIP służą do ustawienia numeru modułu, przez co do każdego modułu można wgrać ten sam program, który odczyta stan linii PD0, PD1, PD2 i PD3 (ostatecznie przełączniki są podłączone do tych linii zamiast do linii PD5, PD6, PD7 i PB0). Do linii PB2, PB3, PB4, PB5, PC0, PC1, PC2, PC3 jest podłączona klawiatura membranowa, linia PC5 wysyła stan klawiszy, a linia PC4 przyjmuje sygnał sterujący z centrali.
    W celu eliminacji skutków ewentualnego „drgania styków”, stan klawiatury jest aktualizowany tylko wtedy, gdy trzy ostatnie odczyty dają taki sam rezultat. W przypadku, gdy przez ostatnie trzy odczyty (w ostatnich trzech cyklach) odczytany stan danego klawisza był różny, to przyjmuje się, że stan jest taki sam, jak w poprzednim cyklu. To powoduje opóźnienie od 30ms zamiast 10ms od naciśnięcia klawisza do wykonania czynności na komputerze. Fakt tego opóźnienia nie jest odczuwalny, nie wiem, jakie jest opóźnienie w fabrycznych klawiaturach komputerowych, jest to jeden z powodów, dlaczego zależało mi na cyklach 10ms, jak równie dobrze mogłyby być dłuższe cykle. Pomimo tego, sporadycznie zdarza się, że przy jednym naciśnięciu zostaną zarejestrowane dwa naciśnięcia.
    Moduł ma ustawione przerwanie z częstotliwością 150kHz, trzykrotność sygnału zegara przy transmisji danych daje największą odporność na błędy spowodowane brakiem synchronizacji taktowania i tolerancją częstotliwości rezonatorów kwarcowych, a zarazem jest to częstotliwość wystarczająca do odczytu stanu (podobnie, jak w centrali, odczyt nie jest ciągły i nie wyzwala dodatkowych przerwań, odczyt następuje tylko w przerwaniu zegara). Moduł jest w stanie oczekiwania na impuls z centrali Po otrzymaniu impulsu, jeżeli trwa dłużej niż 20 wywołań przerwania, to licznik impulsów jest zerowany, to znaczy, że centrala po szerszym impulsie oczekuje wysłania stanu klawiszy przez moduł nr 0. Pozostałe impulsy zwiększają stan licznika o 1. Jeżeli stan licznika po odebraniu impulsu jest zgodny z numerem modułu, to po odczekaniu 4 wywołań przerwania, na sygnał klawiatury (pin PC5 w module) jest wystawiany stan poszczególnych klawiszy, a potem dwa bity parzystości. W czasie trwania transmisji pin PC5 jest w trybie „wyjście”, a poza czasem transmisji jest w trybie „wejście z podciągnięciem do VCC”. Jeden bit trwa przez 3 wywołania przerwania. Rysunek przedstawia skrajne przypadki komunikacji i sens stosowania 3-krotnej częstotliwości bitów (częstotliwość 2-krotna i 4-krótna jest mniej odporna na różnice w taktowaniu mikrokontrolerów). Moduły można łączyć ze sobą za pomocą odcinków drutu 1,5mm2 o długości 2 cm.

    Programowalna klawiatura modułowa USB

    Załączam szablon nakładki z etykietami przycisków przygotowany w Microsoft Word. Jako przykład, załączam etykiety klawiatury ZX Spectrum i konfigurację do współpracy z programem Speccy 5.1 dla Windows.

    Do konfiguracji, klawisze klawiatury maja numery według poniższego schematu:
    Code:
    +--+ +--+--+--+--+ +--+--+--+--+ +--+--+--+--+  +--+--+--+
    
    |6E| |70|71|72|73| |74|75|76|77| |78|79|7A|7B|  |7C|7D|7E|
    +--+ +--+--+--+--+ +--+--+--+--+ +--+--+--+--+  +--+--+--+

    +--+--+--+--+--+--+--+--+--+--+--+--+--+-----+  +--+--+--+  +--+--+--+--+
    |01|02|03|04|05|06|07|08|09|0A|0B|0C|0D|  0F |  |4B|50|55|  |5A|5F|64|69|
    +--++-++-++-++-++-++-++-++-++-++-++-++-++----+  +--+--+--+  +--+--+--+--+
    |10 |11|12|13|14|15|16|17|18|19|1A|1B|1C| 1D |  |4C|51|56|  |5B|60|65|  |
    +---++-++-++-++-++-++-++-++-++-++-++-++-+----+  +--+--+--+  +--+--+--+6A|
    | 1E |1F|20|21|22|23|24|25|26|27|28|29|  2B  |              |5C|61|66|  |
    +----++-++-++-++-++-++-++-++-++-++-++-+------+     +--+     +--+--+--+--+
    | 2C  |2E|2F|30|31|32|33|34|35|36|37|   39   |     |53|     |5D|62|67|  |
    +---+-+-++--+--+--+--+--+--+-++-++--++---+---+  +--+--+--+  +--+--+--+6C|
    |3A |3B |3C |       3D       | 3E| 3F| 40| 41|  |4F|54|59|  |  63 |68|  |
    +---+---+---+----------------+---+---+---+---+  +--+--+--+  +-----+--+--+

    Modifiers:
    01 = 00000001 - Shift (2C)
    02 = 00000010 - Control (3A)
    04 = 00000100 - Alt (3C)
    08 = 00001000 - AltGr (3E)
    10 = 00010000 - Win (3F)

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    andrzejlisek
    Poziom 28  
    Offline 
    Specjalizuje się w: informatyk
    andrzejlisek napisał 2067 postów o ocenie 287, pomógł 40 razy. Mieszka w mieście Poznań. Jest z nami od 2005 roku.
  • PCBway
  • #2
    fotomh-s
    Poziom 21  
    Klawiatury membranowe nie są zbyt wygodne. Szczególnie do takich zastosowań jak granie albo programowanie starych komputerów (czy ich emulatorów).
    Wiem że mechaniczne switche są drogie, jednak może pozyskać całe moduły klawiatur mechanicznych ze starych kas fiskalnych. To najlepsza opcja, część tych kas posiada nakładki na klawisze pod które można wsadzić oznaczenia.

    Ja osobiście zrobiłem jakiś czas temu takiego grata:
    Programowalna klawiatura modułowa USB









    Wygląda strasznie, ale bardzo wygodnie się korzysta z prawdziwej mechanicznej klawiatury.

    A jak jesteśmy w temacie klawiatur USB to ten mój grat posiada opcję przerzucania danych ze stosu RPN do komputera...
    ...Przez emulację klawiatury USB właśnie. Dzięki temu nie wymaga sterowników (no chyba że poza tą funkcją chce się korzystać z wirtualnego portu szeregowego który służy do przerzucania programów i emulacji drukarki).

    Wiem jak bardzo wszyscy psioczą na biblioteki do Arduino, jednak biblioteka USB composite dla STM-32 nie jest taka zła. Zajmuje tylko kilka % pamięci tego scalaka (chyba jakiś 5%) a umożliwia całkiem sporo. Najważniejsze jednak że na tym śmiesznie tanim scalaku działa dobrze.
    Sprzętowe USB to dobra rzecz. W połączeniu z tą biblioteką jest wygodne, do tego ta płytka z STM-32 kosztuje pewnie nie wiele więcej (a może nawet mniej?) od przejściówki PS-2 > USB.

    Osobiście to sam myślę o czymś podobnym. Tylko muszę pozyskać więcej modułów klawiatur mechanicznych. Jeden jest w kalkulatorze, drugi czeka aby go tam wsadzić (jak wreszcie zrobię jakąś sensowną obudowę), trzeci jest zbyt mały aby miało sens robienie z niego klawiatury tego typu.

    Polecam Ci popytać znajomych sklepikarzy z małych sklepów, ja w ten sposób pozyskałem 3 kasy za jednym razem. Kasy te mają moduły fiskalne które blokują się po 5 latach użytkowania, wtedy stają się praktycznie bezużyteczne. Już nie praktykuje się wymiany modułów fiskalnych (są one zintegrowane z obudową w obecnych kasach Elzab), ponadto takie wymiany się zwyczajnie nie opłacały (ceny modułów były zawsze bardzo wysokie). Kasy takie zwyczajnie zalegają sobie w magazynach zajmując miejsce.

    Na dawców klawiatur najlepsze są stare kasy Elzab Alfa, mają duże klawiatury w pełni mechaniczne. ECO oraz Jota E mają mniejsze klawiatury, klasyczne stare kasy Jota mają jeszcze mniejsze. Elzab ma to do siebie że można wsadzić karteczki z opisami pod te "szybki" na klawiszach. Nie każde kasy jednak tak mają.
  • PCBway
  • #3
    prosiak_wej
    Poziom 29  
    Czemu te połączenia takie siermiężne i z takimi fuj kostkami, które wręcz uwielbiają ciąć kardiele w przewodach?

    BTW - mam trochę złomu fiskalnego (klawiatury, moduły drukujące termiczne...) - jak ktoś będzie zainteresowany to możemy pogadać :)
  • #4
    andrzejlisek
    Poziom 28  
    fotomh-s napisał:
    Klawiatury membranowe nie są zbyt wygodne. Szczególnie do takich zastosowań jak granie albo programowanie starych komputerów (czy ich emulatorów).
    Wiem że mechaniczne switche są drogie, jednak może pozyskać całe moduły klawiatur mechanicznych ze starych kas fiskalnych. To najlepsza opcja, część tych kas posiada nakładki na klawisze pod które można wsadzić oznaczenia.

    Ja osobiście zrobiłem jakiś czas temu takiego grata:

    Wygląda strasznie, ale bardzo wygodnie się korzysta z prawdziwej mechanicznej klawiatury.

    Zgadzam się z tym, że klawiatura membranowa nie nadaje się do intensywnej pracy, trzeba stosunkowo mocno wciskać, żeby zadziałało, a i klawiatura membranowa podobno szybko się psuje. Jak szukałem klawiatur 4x4, to z taką, jak stosowana w kasach fiskalnych się nie spotkałem. Ta w Twoim "gracie" byłaby idealna, bo jak dobrze widzę, można zdjąć przezroczystą pokrywkę i włożyć karteczkę z etykietą. Jako alternatywa dla 4x4 widywałem typu "tact switch" lub ewentualnie takie w postaci czarnej obudowy z wypukłymi przyciskami. Ze względu na brak możliwości oetykietowania lub przykrycie kartką papieru będzie mieć wpływ na pracę, te klawiatury nie spełniają podstawowego założenia. Widziałem też klawiatury "przemysłowe", całkowicie metalowe (do zastosowania np. w bankomatach), ale to byłoby sprowadzanie z zagranicy, a koszt nie wiadomo jaki.

    prosiak_wej napisał:
    Czemu te połączenia takie siermiężne i z takimi fuj kostkami, które wręcz uwielbiają ciąć kardiele w przewodach?

    Te połączenia pełnią podwójną funkcję. Pierwszą jest zapewnienie połączeń elektrycznych, drugą jest mechaniczne utrzymywanie klawiatury w kupie. Wybór padł na to, że miało to być coś, co ja znam i miało być montowane do stelaża, a nie do PCB. Jedyną wadę takich kostek, jaką dostrzegłem, to fakt, że czasami zrywa się gwint w śrubkach i to bez przykładania przesadnie dużej siły. Wiem, że do takich połączeń służą goldpiny, ale w tym przypadku chodziło o montaż do stelaża. A z drutem 1,5mm na odcinki połączeniowe nie mam problemu, mam ten drut w większych ilościach.
  • #5
    osctest1
    Poziom 19  
    @andrzejlisek Malutki plusik za chęci ale wykonanie straszne (pomysł też od czapki). Odrobina wysiłku i kupujesz sobie na aliexpress https://www.aliexpress.com/item/32926172277.h...chweb0_0,searchweb201602_8,searchweb201603_52 + do tego klawisze, stabilizatory i inne bajery.

    fotomh-s napisał:
    Wiem że mechaniczne switche są drogie
    Cena za 200sz 150zł to drogo - bez przesady.

    Biblioteki do eagle, trochę wysiłku i robisz klawiaturę jaką chcesz. Keypads kupisz dowolne.
  • #6
    Bambzo
    Poziom 12  
    fotomh-s napisał:
    Na dawców klawiatur najlepsze są stare kasy Elzab Alfa, mają duże klawiatury w pełni mechaniczne. ECO oraz Jota E mają mniejsze klawiatury, klasyczne stare kasy Jota mają jeszcze mniejsze. Elzab ma to do siebie że można wsadzić karteczki z opisami pod te "szybki" na klawiszach. Nie każde kasy jednak tak mają.


    Użycie klawiszy z kas ELZAB to bardzo dobry pomysł, ponieważ są tam zastosowane klawisze bardzo dobrej jakości. Wszystkie klawisze modułowe to oryginalne CHERRY natomiast klawisze membranowe to ALPS lub OMRON.
  • #7
    fotomh-s
    Poziom 21  
    Faktycznie, te klawiatury są nie do zdarcia. Kilka lat temu widziałem na targu w Tychach działają kasę Elzab System (nie pamiętam numerka, ale jest to ta co działa na DOSie) także z mechaniczną klawiaturą. Sprzęt z lat 90tych cały czas działał. I komuś widocznie jakimś cudem opłacało się wymieniać moduły fiskalne.

    Niestety model Alfa plus/super/extra już dano się zestarzał (chociaż niektórzy jeszcze trzymają takie trupy w magazynach), jest jednak nowa Alfa MAX.
    Co ciekawe nie wszystkie kasy mają układ matrix dla klawiatur, niektóre mają układy "matrixopodobne" inne zupełnie dziwaczne kombinacje których nawet nie opłaca się badać (łatwiej przeciąć ścieżki i polutować samemu).

    Zaletą kas Elzab jest to że są wszędzie. Jest ich jak grzybów po deszczu i taka sytuacja ma miejsce chyba od początków lat 2000nych.
  • #8
    Bambzo
    Poziom 12  
    fotomh-s napisał:
    Co ciekawe nie wszystkie kasy mają układ matrix dla klawiatur, niektóre mają układy "matrixopodobne" inne zupełnie dziwaczne kombinacje których nawet nie opłaca się badać (łatwiej przeciąć ścieżki i polutować samemu).


    Klawiatury we WSZYSTKICH kasach produkcji Elzab są multiplexowanymi matrycami, czasem z drobnymi dodatkami w postaci:
    - multiplexera/demultiplexera, gdy matryca jest duża a w uP brakuje odpowiedniej ilości pinów: np kasa System600 lub Delta
    - jednoczesnego sterowania multipleksowaniem wyświetlacza LED: np kasa Mini
    - dodatkowych dwóch, trzech klawiszy wykrywanych "analogowo" (podłączonych do wejścia ADC): niektóre wersje kasy Jota
    Czasem matryce te nie są pełne (tzn nie w każdym wierszu są obsadzone wszystkie kolumny) gdy istniała potrzeba wydzielenia klawiszy specjalnych (np. ALT, SHIFT) które to naciskane są w kombinacjach z innymi klawiszami

    Faktycznie projekty PCB są zazwyczaj mało czytelne i trudno na ich podstawie wywnioskować do jakich kolumn i wierszy są podłączone konkretne klawisze. Wynika to z tego, że PCB wykonane są na drukach jednostronnych (kiedyś takie były zdecydowane tańsze) i optymalizacja liczby jumperów powodowała, że klawisze są czasem porozrzucane trochę chaotycznie.