Dziś o perypetiach i komplikacjach czyli inaczej nie ma nic na tym świecie prostego. W ramach oszczędności zakupiłem na Amazonie klawiaturę Wiegand, o taką:
Niestety po zakupie poczytałem trochę o protokole Wiegand i odkryłem że nie ma siły żeby Rapsberry Pi było w stanie czytać ten protokół a jednocześnie jeszcze być w stanie robić cokolwiek innego. W związku z czym uznałem że nie ma co się bawić i trzeba kupić adapter. Więc zakupiłem coś takiego:
Wszystko pięknie, po podłączeniu do tego klawiatury z jednej strony i Pi z drugiej okazało się że czyta on wspaniale karty Wiegand (takie plastikowe), ale klawiszy za nic. Więc zacząłem szukać i okazało się że w sumie nie wiadomo co ta klawiatura wysyła, jako że protokół Wiegand nie definiuje zachowania klawiatury i każdy producent robi to inaczej – jedni np. czytają cztery klawisze po kolei i całość wysyłają w 26 bitowym bloku, inni wysyłają każdy wciśnięty klawisz jako bardzo niestandardowy, ośmiobitowy pakiet Wiegand. Kontroler który zakupiłem oczywiście nie był w stanie zrozumieć co do niego klawiatura mówi.
Ale jako że nie lubię się poddawać, to zastosowałem inne rozwiązane – zakupiłem chińską podróbkę Arduino Nano za jakieś śmieszne pieniądze (dosłownie $5) i po krótkiej walce z sterownikami USB, małym przeglądaniu internetu itp. udało mi się w końcu zrobić rozwiązanie, które umie czytać tą klawiaturę, mrugać jej lampką i piszczeć jej głośniczkiem.
Jak widać rozwiązanie jest banalne z punktu widzenia oprogramowania, choć pod spodem kryje się dość mocno zmodyfikowana biblioteka „Wiegand Protocol for Arduino” – wersja jak na GitHub nie działała z moją klawiaturą i po jakimś czasie grzebania w kodzie itp. udało mi się w końcu zmusić całość do działania. Okazuje się że ta moja klawiatura używa zupełnie niestandardowego protokołu – wysyła klawisze jako cztero-bitowe znaki – numeryczne zgodnie z ich wartością, ESC jako 10 a ENT jako 11.
Więc mam już podstawowe rozwiązanie problemu klawiatury; jednak będę je modyfikował tak by Pi mogło wysłać Arduino długość kodu (ilość cyfr) jakie trzeba wpisać oraz listę dozwolonych kodów. Po to by Arduino mogło mrugać lampką i piszczeć w inny sposób jeżeli zostanie wpisany poprawny kod w porównaniu z niepoprawnym.
Prostota używania Nano mnie tak zachęciła że zamówiłem z Chin jeszcze kilka sztuk i planuję zbudować za ich pomocą coś. Co? Tego jeszcze nie wiem, ale jako że poza Nano zamówiłem także inny, bardzo ciekawy scalak, to myślę że powstaną z tego jakieś czujniki gadające przez internet z Pi i wysyłające jej dane.