Advertentie
De bescheiden Arduino kan veel dingen doen, maar wist je dat hij een USB-toetsenbord kan emuleren? Je kunt die moeilijk te onthouden lange sneltoetsen combineren in een enkele aangepaste sneltoets, met dit eenvoudige circuit. Hier is het eindresultaat:
Nog nooit een Arduino gebruikt? Bekijk onze beknopte handleiding Aan de slag met Arduino: een beginnersgidsArduino is een open-source platform voor prototyping van elektronica op basis van flexibele, gebruiksvriendelijke hardware en software. Het is bedoeld voor kunstenaars, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het maken van interactieve objecten of omgevingen. Lees verder eerste.
Wat je nodig hebt
Dit is wat je nodig hebt om dit project te maken:
- 1 x Arduino Pro Micro.
- Kortstondige knoppen of toetsenbordknoppen.
- 10K ohm weerstanden.
- Diverse aansluitdraden.
- 1 x 220 ohm weerstanden.
- LED van 1 x 5 mm (0,196 inch).
- 1 x 5 mm LED-houder.
U hebt voor dit project een zeer specifieke Arduino nodig. Ik gebruik een Pro Micro
, omdat ze zo klein en goedkoop zijn, heb je een Arduino nodig met USB-serieel ingebouwd in de processor (Atmega32u4). Het is mogelijk om dit project samen met andere Arduinos, zoals een UNO of Nano, te bouwen, maar het vereist veel hard werk om de bios opnieuw te flitsen en te knoeien om dingen aan het werk te krijgen. Klonen van andere Arduino-modellen werken meestal helemaal niet, maar een Pro Micro-kloon is ook prima.OSOYOO Pro Micro ATmega32U4 5V / 16MHz-modulekaart met 2 rijen pin-header voor Arduino Leonardo vervang ATmega328 Pro MiniOSOYOO Pro Micro ATmega32U4 5V / 16MHz-modulekaart met 2 rijen pin-header voor Arduino Leonardo vervang ATmega328 Pro Mini Koop nu op Amazon $10.99
U hebt een tijdelijke knop, een weerstand van 10 K ohm en een geschikte aansluitdraad nodig voor elke knop die u wilt gebruiken. Ik gebruik echter mechanische mechanische MX-schakelaars voor de daadwerkelijke sneltoetsen ieder schakelaar volstaat, mits deze tijdelijk is en niet vergrendeld.
Afhankelijk van hoe je dit bouwt, heb je misschien een paar andere items nodig. Als u een prototype wilt maken, hebt u een broodplank zonder soldeer. Het is de moeite waard om het geld aan een goede uit te geven - ze kunnen soms erg onbetrouwbaar zijn. Als je dit in dozen wilt doen, wil je wat stripboard kopen.
Bouwplan
Dit is hoe dit zal werken. De Arduino zal worden geprogrammeerd om te werken als een USB-toetsenbord - wat uw computer betreft, dat is het. Verschillende knoppen verbonden met de Arduino sturen toetsopdrachten naar uw computer. U drukt maar op één knop, maar uw computer denkt dat u hebt gedrukt Alt > F4, bijvoorbeeld.
Een schakelaar selecteren
Er zijn verschillende variaties van schakelaars uit de MX-serie. Deze website biedt een uitstekende introductie, maar ze komen in wezen neer op lawaai en druk. Sommige modellen vereisen meer kracht om te drukken, en sommige modellen maken een mechanisch "klikgeluid" wanneer ingedrukt. Ik heb Cherry MX Browns gebruikt, die geen geluid maken als ik erop druk. Ze hebben allemaal dezelfde afmetingen, dus kies zonder zorgen elk model dat u leuk vindt (of mix and match).
Je moet natuurlijk ook enkele key caps kopen, en er is een wereld van aangepaste ontwerpen daar om uit te kiezen - we kochten van KeyboardCo in het Verenigd Koninkrijk
De zaak
Ik heb deze hoes 3D-geprint en je kunt de downloaden .STL bestanden van Thingiverse. Maak je geen zorgen als je geen 3D-printer hebt, je kunt deze nog steeds bouwen. Veel websites bieden 3D-printservices, zoals 3D Hubs of Vormen. Als alternatief is dit een heel eenvoudig geval, je kunt het zelf maken van plasticard, perspex, hout of zelfs karton. Als je echt zuinig wilt zijn, verkoopt Cherry MX een switch tester / sampler ingesteld op Amazone (UK). U hebt 4 M5 x 35 mm bouten en 4 M5-moeren nodig. Je kunt deze natuurlijk vervangen door een geschikt alternatief dat je hebt.
Max Keyboard Keycap, Cherry MX Switch, Tester Kit (9 schakelaars Pro Sampler Tester Kit)Max Keyboard Keycap, Cherry MX Switch, Tester Kit (9 schakelaars Pro Sampler Tester Kit) Koop nu op Amazon $14.99
Als u uw eigen zaak maakt, is er één belangrijk detail dat u moet weten: Cherry MX-schakelaars passen in hun montagegaten. Ze vereisen een vierkant bevestigingsgat van 14 x 14 mm (0,551 inch), waarbij de plaat niet dikker is dan 1,5 mm (0,059 inch). Verdwaald te ver van deze afmetingen, en uw schakelaars worden mogelijk niet meer correct gemonteerd.
De 3D-geprinte behuizing bestaat uit twee delen, de boven- en onderkant. Duw de Cherry MX-schakelaars in de vierkante gaten:
Zorg ervoor dat u de schakelaars op de juiste manier monteert. De bovenkant heeft de woorden "CHERRY" op, en de onderkant heeft een kleine inkeping. Plaats een 3 mm LED in dit kleine slot:
Het kan zijn dat de LED's er het beste "ondersteboven" uitzien. Dit was het geval voor de keycaps die ik gebruikte, en het heeft helemaal geen invloed op de schakelaars.
U zou nu negen schakelaars met 9 LEDS moeten hebben. Het is niet nodig om een van deze onderdelen in te lijmen. Het soldeer houdt de LED's vast en wrijving houdt de schakelaars vast.
Schroef vervolgens de LED-houder in (laat de LED voorlopig verwijderd). Je zult de behuizing later monteren, zodra het circuit is gebouwd.
Het circuit
Dit circuit is gebouwd op stripboard. Dit is uitstekend voor het bouwen van semi-permanente circuits, zonder de kosten van een printplaat (PCB). Het is gewoon een stuk glasvezel met koperen sporen die parallel in één richting lopen. Deze tracks kunnen worden gesoldeerd, evenals knippen. Het zagen van een baan kan worden gedaan met een speciaal gereedschap of een kleine boor.
Niet te veel vertrouwen in solderen? Kijk even naar deze eenvoudige projecten Leer solderen met deze eenvoudige tips en projectenBen je een beetje geïntimideerd door de gedachte aan een heet ijzer en gesmolten metaal? Als je met elektronica wilt gaan werken, moet je leren solderen. Laat ons helpen. Lees verder eerste.
Dit is de lay-out van het stripboard (met uitsluiting van leads):
Zorg ervoor dat je de sporen onder de weerstanden en de Arduino snijdt. Omdat het heel moeilijk kan zijn om een stripboard-circuit te lezen, is hier een breadboard-versie:
Het past nauw om alle componenten in zo'n kleine ruimte te persen. Snijd de hoeken van uw stripboard als volgt:
Dit moet netjes in de onderkant van de behuizing passen:
Zorg ervoor dat de tracks verticaal lopen.
Verbind de anode (lang been, positief) van de LED naar de weerstand van 200 ohm en vervolgens naar +5 V. Verbind de kathode (korte poot, negatief) aan grond. Bedek de benen met krimpkous en duw deze vervolgens in de LED-houder. Er is geen lijm nodig, maar uw LED-houder is mogelijk niet push-fit, dus u moet deze instructies misschien aanpassen.
Mogelijk wilt u hier in plaats daarvan een tweekleurige LED gebruiken - hiermee kunt u twee of meer banken met schakelaars instellen, met een verschillend gekleurde status-LED voor elke bank.
Nu is het tijd om alle LED's voor de keycaps te solderen. Deze worden alleen gebruikt om de toetsen te laten gloeien, dus je kunt ze overslaan als je wilt, en ze hoeven niet te worden aangesloten op een digitale pin, alleen stroom. Verbind alle anodes met elkaar en alle kathodes met elkaar. Leer van mijn fout - het is veel gemakkelijker om dit te doen voordat u de schakelaars bedraad! Verbind de anoden met +5 V via een weerstand van 220 ohm en de kathoden met aarde. Deze LED's zijn parallel bedraad. Hier is het circuit alleen voor deze LEDS:
Gebruik een klein stukje krimpkous om de verbinding tussen de LED's en de Arduino te bedekken:
Start de Arduino op om alle LED's te testen. U hoeft geen code te uploaden. Als eventuele LED's niet werken, controleer dan je bedrading.
Sluit nu de schakelaars aan. Deze moeten worden aangesloten via een 10k-weerstand, anders sterft de Arduino. Dit wordt een 'dead short' genoemd - +5 V gaat rechtstreeks de grond in, en het enige dat overblijft van je Arduino zal een rookwolk zijn (geloof me, ik heb er al een gedood zodat je dat niet hoeft te doen). Dit is het circuit voor één schakelaar:
Dit circuit is hetzelfde voor alle negen schakelaars. Verbind de schakelaars met digitale pinnen twee tot en met tien, elk met hun eigen 10K-weerstand naar aarde. Wees voorzichtig met het solderen van Cherry MX-schakelaars, ze kunnen een beetje fragiel zijn, ik had verschillende pinnen op me. Misschien wilt u deze rechtstreeks op wat meer stripboard solderen, maar volgkabels zijn nog steeds geschikt.
Dat is het voor de bedrading. Misschien wilt u een USB-type B vrouwelijke aansluiting monteren, maar de kleine pinnen erop kunnen vaak vrij moeilijk zijn om aan te solderen. Maak je geen zorgen als je dit niet wilt doen. De Micro USB-connector op de Arduino past precies in het gat in het chassis. Als je een beetje in de war bent over de verschillende USB-typen, zorg er dan voor dat je dat doet de verschillen begrijpen Begrijp USB-kabeltypen en welke te gebruikenWaarom zijn er zoveel verschillende soorten USB-kabels? Ontdek de verschillen tussen de soorten USB-connectoren en hoe u de beste kabel kunt kopen. Lees verder .
Controleer ten slotte of uw circuit correct is. Een short kan een Arduino gemakkelijk vernietigen, en het kan gemakkelijk zijn om te doen met behulp van stripboard.
De code
Test nu of het circuit correct is. Het is een goed idee om dit te doen voordat u doorgaat, dus u kunt nu eventuele problemen oplossen. Upload deze testcode (vergeet niet het juiste bord en de juiste poort te selecteren uit de Gereedschap > Bord en Gereedschap > Haven menu's):
const int knoppen [] = {2,3,4,5,6,7,8,9,10}; // array van alle knoppinnen void setup () {// plaats hier uw setup-code om één keer uit te voeren: Serial.begin (9600); pinMode (2, INPUT); pinMode (3, INPUT); pinMode (4, INPUT); pinMode (5, INPUT); pinMode (6, INPUT); pinMode (7, INPUT); pinMode (8, INPUT); pinMode (9, INPUT); pinMode (10, INPUT); } void loop () {// plaats hier uw hoofdcode om herhaaldelijk uit te voeren: for (int i = 2; i <11; ++ i) {if (digitalRead (i) == HIGH) {// software-de-bounce verbetert de nauwkeurigheidsvertraging (10); if (digitalRead (i) == HIGH) {// check schakelaars Serial.print ("input"); Serial.println (i); vertraging (250); } } } }
Mogelijk moet u de pinnen vervangen als u het circuit hebt gewijzigd.
Na het uploaden opent u de seriële monitor (rechtsboven > Seriële monitor). Druk één voor één op elke knop. U zou de seriële monitor moeten zien met het nummer van de knop die u hebt ingedrukt. Net als bij de LED, als uw computer klaagt over teveel stroom verbruiken, of de LED's uitgaan wanneer u op een knop drukt, verbreek dan onmiddellijk! Er is ergens een kortsluiting in het circuit. Controleer nogmaals of het circuit correct is en of er geen kortsluiting is tussen de verbindingen.
Als alles werkt, ga je gang en stop je het circuit in de doos. Misschien wilt u een beetje lijm gebruiken om het circuit op zijn plaats te houden (hoewel de draden de mijne in orde hielden). Schroef ook het deksel erop.
Het is heel eenvoudig om de Arduino een toetsenbord te laten lijken. Als u een Nano of UNO gebruikt, gaat u uw Arduino opnieuw programmeren met behulp van Firmware-update van apparaat (DFU). Dit wordt meestal gebruikt om nieuwe firmware naar de Arduino te flashen. Je gaat het gebruiken om de Arduino te flashen met een nieuwe firmware die het zal laten werken als een toetsenbord. Dit wordt hier niet behandeld, omdat het een vrij complexe taak is. De Arduino website heeft hier een goede tutorial voor.
De Arduino Pro Micro maakt deze stap heel eenvoudig. De logica die nodig is om een USB-toetsenbord te emuleren is al ingebouwd in de processor, dus het is net zo eenvoudig als het schrijven van code!
Stel eerst de toetsen in:
int toetsen [] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
Dit is een array met alle pinnen waarop de knoppen zijn aangesloten. Als u meer of minder knoppen of verschillende pinnen hebt gebruikt, wijzigt u de waarden hier.
Een array is een verzameling gelijkgestemde dingen. Computers kunnen uw code optimaliseren om er snel toegang toe te krijgen, en ze versnellen het code-schrijfproces.
Initialiseer nu alle pinnen als invoer:
void setup () {// plaats hier uw installatiecode om één keer uit te voeren: Keyboard.begin (); // setup-toetsenbord voor (int i = 2; i <11; ++ i) {// pinnen pinMode initiëren (i, INPUT); } }
Dit vertelt de Arduino dat alle pinnen in de array ingangen zijn. Hiervoor wordt een lus gebruikt, dus niet als schrijven pinMode (2, INPUT) negen keer hoef je het maar één keer te schrijven. Dit roept ook op Toetsenbord. Begin. Hiermee wordt een functie ingesteld die is ingebouwd in de Arduino-bibliotheek, speciaal ontworpen voor het emuleren van een toetsenbord.
Maak een methode genaamd leesknop:
boolean readButton (int pin) {// check en debounce knoppen als (digitalRead (pin) == HIGH) {delay (10); if (digitalRead (pin) == HIGH) {return true; }} return false; }
Dit neemt een pin en controleert of deze is ingedrukt of niet. Het komt gewoon terug WAAR of ONWAAR. Het bevat ook enkele software debouncen - een eenvoudige vertraging en het opnieuw controleren van de schakelaar zorgt ervoor dat de knop echt werd ingedrukt.
Nu wordt een andere for-lus binnen genoemd ongeldige lus ():
void loop () {// plaats hier uw hoofdcode om herhaaldelijk uit te voeren: for (int i = 2; i <11; ++ i) {// vink knoppen aan als (readButton (i)) {doAction (i); } } }
Nogmaals, dit gaat over elk element in de array en controleert of er op is gedrukt. Het doet dit door de leesknop methode die u eerder hebt gemaakt. Als op een knop is gedrukt, wordt dat pincode doorgegeven aan een andere methode doAction:
void doAction (int pin) {// taken uitvoeren switch (pin) {case 2: Keyboard.println ("drive.google.com"); breken; case 3: Keyboard.println ("makeuseof.com"); breken; case 4: // CMD + T (nieuw tabblad, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ('t'); vertraging (100); Keyboard.releaseAll (); breken; case 5: // uw taak breekt hier; casus 6: // uw taak breekt hier; casus 7: // uw taak breekt hier; casus 8: // uw taak breekt hier; casus 9: // uw taak breekt hier; } }
Dit controleert het pincode met behulp van een schakelaar uitspraak. Schakel verklaringen uit (soms genoemd schakelkast) lijken op een als verklaring, maar ze zijn handig om te controleren dat één ding (in dit geval het pincode) gelijk is aan een van verschillende uitkomsten. In wezen zijn ze veel sneller te berekenen.
De belangrijkste componenten bevinden zich in deze schakeloptie. Keyboard.println schrijft tekst naar de computer alsof u elke toets fysiek hebt getypt. Toetsenbord. Druk houdt een toets ingedrukt. Vergeet ze niet vrij te geven met Keyboard.releaseAlle na een korte vertraging!
Hier is de volledige code:
int toetsen [] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; void setup () {// plaats hier uw installatiecode om één keer uit te voeren: Keyboard.begin (); // setup-toetsenbord voor (int i = 2; i <11; ++ i) {// pinnen pinMode initiëren (i, INPUT); } } void loop () {// plaats hier uw hoofdcode om herhaaldelijk uit te voeren: for (int i = 2; i <11; ++ i) {// vink knoppen aan als (readButton (i)) {doAction (i); } } } boolean readButton (int pin) {// check en debounce knoppen als (digitalRead (pin) == HIGH) {delay (10); if (digitalRead (pin) == HIGH) {return true; }} return false; } void doAction (int pin) {// taken uitvoeren switch (pin) {case 2: Keyboard.println ("drive.google.com"); breken; case 3: Keyboard.println ("makeuseof.com"); breken; case 4: // CMD + T (nieuw tabblad, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ('t'); vertraging (100); Keyboard.releaseAll (); breken; case 5: // uw taak breekt hier; casus 6: // uw taak breekt hier; casus 7: // uw taak breekt hier; casus 8: // uw taak breekt hier; casus 9: // uw taak breekt hier; } }
Naast alle cijfer- en lettertoetsen kan de Arduino op de meeste speciale toetsen drukken Toetsenbordmodificaties. Deze zijn met name handig voor het indrukken van sneltoetsen. De Arduino-website heeft een nuttige lijst.
Het enige dat u nog moet doen, is enkele snelkoppelingen maken. U kunt dit toewijzen aan bestaande snelkoppelingen, zoals Alt + F4 (programma afsluiten in Windows) of cmd + Q (programma macOS afsluiten). Als alternatief, zorg ervoor dat u onze leest ultieme sneltoetsgids Windows-sneltoetsen 101: de ultieme gidsSneltoetsen kunnen u uren tijd besparen. Beheers de universele Windows-sneltoetsen, trucs voor specifieke programma's en een paar andere tips om uw werk te versnellen. Lees verder , hoe Windows snelkoppelingen te maken Hoe maak je Windows Desktop snelkoppelingen op de Easy WaySlimme bureaubladsnelkoppelingen kunnen u hersenloos door menu's en mappen bladeren. We tonen u snelle en eenvoudige manieren om ze te maken. Lees verder en elke Chromebook-snelkoppeling Elke Chromebook-sneltoets die u ooit nodig zult hebbenBeheers Chrome OS met deze lijst van alle belangrijke sneltoetsen voor Chromebook die u ooit nodig zult hebben. Lees verder om te beginnen met het maken van je eigen snelkoppelingen.
Heb je je eigen snelkoppeling gemaakt? Laat het me weten in de reacties, ik zou graag wat foto's zien!
Joe is afgestudeerd in computerwetenschappen aan de Universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en wanneer hij niet met drones vliegt of muziek schrijft, is hij vaak te vinden bij het maken van foto's of het maken van video's.