10 bemenetes PIC alapú USB billentyűzet emulátor

Ma már nagyon sok gép, illetve elektronikus kütyü vezérlésére számítógépet használunk. A legtöbb grafikus felület kezelésének megkönnyítésére a szoftverekben billentyűket, billentyűkombinációkat is van lehetőség használni. Sok esetben az eszközünk, gépünk vezérlése csupán néhány billentyűt igényel, viszont ezek használata megkíván egy komplett billentyűzetet. Méretéből adódóan egy ilyen periféria elhelyezése sok esetben közvetlenül a gép mellett nem túl praktikus és nem is ergonómikus.

Ekkor elgondolkodhatunk azon, hogy csak azt a néhány billentyűt vezetjük ki az eszközhöz, de az nem éppen egy szakszerű átalakítása a számítógépes billentyűzetnek. Egy fokkal talán jobb, ha a billentyűzetben lévő elektronikai panelt kioperáljuk és a hozzá kapcsolódó mártix bementre vezetékekkel, gombokat kötünk. Ez már egy fokkal igényesebb megoldás, de a mátrixban működő billentyűk kiválasztása, megfelelő összekötése – különösen, ha több billentyűkombinációt is szeretnénk alkalmazni – nem éppen egyszerű és előfordulhat, hogy egy átláthatatlan vezetékhalmaz lesz az egész.

Az USB szabvány ma már annyira elterjedt, hogy egyrészt nagyon sok olyan perifériát lehet számítógéphez kötni, ami ezzel a csatlkaozással rendelkezik, illetve a mikrovezérlők között is sok olyan típus van, ami beépített USB 2.0 interfésszel rendelkezik. Mivel én javarészt PIC mikrokontrollerekkel dolgozom, így egy PIC alapú eszközt készítettem el. A megfelelő terméktámogatásnak köszönhetően a gyártónál elérhető Microchip Libraries for Applications kódgyűjteményben megtalálható a komplett USB stack és különféle mintaprogramok is, melyek nagyban megkönnyítik a fejlesztést. Ezt alapul véve készítettem el az itt bemutatott emulátor egységet.

Maga a hardver nem bonyolult, szükség van kontaktus bemenetekre, egy mikrovezérlőre és egy USB csatlakozóra, illetve kábelre. Az eszköz külön tápellátást nem igényel, mivel az USB 5V-os feszültsége teljesen megfelel erre a célra. Ezt az emulátort kérésre készítettem el, a megrendelő a Mach3 programban használatos vezérlőbillentyűkhöz alakított ki gombokat a CNC gépén, hogy munka közben egy komplett billentyűzet használata nélkül, kényelmesen tudjon mozgatásokat végezni. Az emulátorral viszonylag hamar kész kellett lennem, így a gyártói mintakódot vettem alapul, amit aztán az igényeknek megfelelően átírtam. Az igényelt 5-6 gomb számára elegendő volt a legkisebb lábszámú USB-s mikrovezérlőt használnom és abból szerencsére volt is kéznél pár darab.

Az áramkört egy PIC18F14K50 típusú mikrovezérlő köré építettem fel. Mivel ennek több szabad lába is maradt volna, ha csak 5-6 gombnak készítek bemenetet, célszerű volt kihasználni már kettő kivételével az összes fennmaradó lábat, így összesen 10db benetet sikerült kialakítani, ami további gombok bekötését is lehetővé teszi. A bemeneteket pergésmentesítő áramkörrel láttam el, így a nemkívánatos jelek már hardver által is szűrve vannak.

Az USB csatlakozást én mini-USB alzattal oldottam meg mert ez szintén volt kéznél és a mérete is kisebb az USB-B alzathoz képest. A gombok bekötésére NYÁK sorkapocs szolgál, így forrasztás nélkül is, könnyen beszerelhető a modul. A 10db bemenet előre definiált billenyű emulációját működteti, a bemenetek logikai 0 szintre aktívak, emiatt egy GND kivezetés is helyet kapott a sorkapcsokon.

P1070407_700

P1070409_700

További fejlesztések

Az idő rövidsége miatt és mivel nem volt különösebb átkonfigurálással kapcsolatos igény, ez az emulátor fix programmal készült, tehát a definiált billentyűk felhasználó által nem módosíthatóak. Tervben van egy azonos bemenettekell rendelkező, de soros porton keresztül konfigurálható emulátor elkészítése is. Az annyiban jobb, hogy a felhasználó maga tudja majd definiálni a 10 bementhez tartozó gombokat. Ehhez már a mostani konstrukcióban is fenntartottam a soros portot és el is kezdtem a program ide vonatkozó részének a megírását, de a befejezésére már nem volt idő. A jelenlegi verzió ettől függetlenül hibátlanul használható, a 2.0-ás változaton már ott lesz a beállítási lehetőség.