Menü Bezárás

MorseAVR: egy USB-s távíró billentyű

Már több, mint egy fél éve felmerült bennem (a GólyaKörTe nevű újonctoborzó rendezvényre készített Morse-chatszobánk elkészültekor), hogy a távíróbillentyűmet a gépemre kössem. Ez akkor idő hiányában nem készült el, de most egy másik projekt (soon tm) előtti „bemelegítésként” ezt be is fejeztem.

Az első ötletem egy billentyűzet elektronikájának az újrahasznosítása volt, és a billentyűt a keyboard matrix megfelelő két oszlop- és sorvonala közé kötöttem volna. Sajnos azonban a szénbevonatú érintkezőire nem tudtam forrasztani, a rögtönzött krokodilcsipeszes megoldás pedig nem biztosított megfelelő kapcsolatot, az eszköz a gyakorlatban teljesen használhatatlan volt.

A projekt egészen mostanáig az asztalomon hevert, amikor is a mellettem lakó szobából megkértek, hogy segítsek egy mikrovezérlős projektben. Itt a SEMAVR-t javasoltam nekik kiindulási alapként, ami egy Atmega8A alapú, kisméretű fejlesztői kártya. Eredetileg a 2019-es tanfolyamra készült, hogy bevezesse a tanfolyamozókat (köztük engem is) a NYÁK-tervezés, AVR programozás és a forrasztás világába.

A projekthez az Objective Development V-USB nevű projektjét használtam. Ez egy USB implementáció, főleg AVR alapú mikrovezérlőkre. Gyakran használják, olyannyira, hogy a SEM által a mikrovezérlőre telepített bootloader is ezt használja!

Az ObDev oldalán megtalálható példaprogram alapján, minimális átalakításokkal el is készült a firmware. Az eredeti kód 17 billentyűt támogat (mindegyiket egy-egy megfelelő GPIO-ra mappelve), míg nekünk csak 1 inputra lesz szükségünk. Ezáltal egyszerűsödik a keyPressed() függvény: egyetlen bool-ban adja vissza, hogy a Morse billentyű le van-e nyomva. A keyReport[]-ra sincs szükségünk, a buildReport() csak egy üres riportot, vagy egy (módosítóbillentyűk nélküli) Space leütését generálja, a billentyű állapotától függően. Ezen felül az usbconfig.h-ban át kellett állítani a D- vonal helyét, ami a SEMAVR-en a PD4-re van kötve. A kód többi része nem igényelt módosítást.

Ezek után következett a Morse billentyű bekötése a SEMAVR-re. A régi projektről leszedtem a 6,3mm-es Jack aljzatot, és egész egyszerűen ráforrasztottam a SEMAVR tüskesorára úgy, hogy az a billentyű lenyomásakor összezárja a PC2-t és a GND-t.

A SEMAVR, tetején a 6,3mm Jack aljzattal és a hátulján az USB A-MicroB kábellel
A kész MorseAVR

.A SEMAVR-ek tipikus problémája (mondhatni „szériahibája”), hogy a SMD Micro USB aljzat túl könnyen letörik; 10 bedugás-kihúzás ciklusnál többet kibíró darabbal még nem találkoztam. Ennek orvoslására, stílusosan körbenyomtam a csatlakozót műanyagragasztó pákával.

A másik probléma, hogy a 6,3mm-es Jacket először fordítva tettem fel. Tudni kell, hogy ennek az aljzatnak 4 lába volt, amiből 1 a Tip, 1 a Sleeve érintkezőkre van kötve, míg a másik kettő csupán a Jack bedugását érzékelő, presence-sense láb. Nekem sikerült ez utóbbi kettőt beforrasztani, de mivel ezeket a lábakat amúgy sem használnám, hát csak átkötöttem felül a szükséges lábakat, és azokat is a SEMAVR pinjeire forrasztottam.

A MorseAVR áram alatt, a beledugott Morse billentyűvel
A MorseAVR és a beledugott Morse billentyű működés közben

Így már tökéletesen operál az USB-s Morse billentyűm! A kód megtalálható GitHub-on is, bár érdemben nem hoz sok változást a példaprojekthez képest. Fordításához a V-USB-ből az usbdrv mappa bemásolása szükséges.

Vélemény, hozzászólás?