Inhoudsopgave:

Hoe een PS/2-toetsenbord op de iPhone aan te sluiten: 11 stappen
Hoe een PS/2-toetsenbord op de iPhone aan te sluiten: 11 stappen

Video: Hoe een PS/2-toetsenbord op de iPhone aan te sluiten: 11 stappen

Video: Hoe een PS/2-toetsenbord op de iPhone aan te sluiten: 11 stappen
Video: Bizarre iPhone-truc: ‘Deze ken je echt niet’ 2024, November
Anonim
Een PS/2-toetsenbord aansluiten op de iPhone
Een PS/2-toetsenbord aansluiten op de iPhone
Een PS/2-toetsenbord aansluiten op de iPhone
Een PS/2-toetsenbord aansluiten op de iPhone
Een PS/2-toetsenbord aansluiten op de iPhone
Een PS/2-toetsenbord aansluiten op de iPhone

Hoewel ik veel foto's heb gezien van PS/2-toetsenborden die op iPhones zijn aangesloten op internet, heeft nog niemand een gedetailleerde howto gepubliceerd om dit zelf te laten werken. Tot nu toe, dat wel.

In deze Instructable laat ik je zien hoe je een PS/2-toetsenbord naar iPhone-converter kunt maken, inclusief alle hardware- en software-instructies.

Vereisten

  • Gejailbreakte iPhone - De officiële SDK staat geen toegang tot de seriële poort toe vanwege de Elf Conspiracy, dus de jailbreak is vereist. Alles wat je moet weten over jailbreaken vind je op de iPhone Dev Team Blog.
  • Arduino Diecimila of Dumilanove (of kloon), op veel plaatsen verkrijgbaar. Deze howto gaat ervan uit dat je Arduino is geassembleerd.
  • Een iPod Breakout board, zoals deze van Sparkfun. Elk soortgelijk product zal werken.
  • Een vrouwelijke PS/2 (Din 6) toetsenbordconnector. Trek er een van een oude computer of koop er een bij Digikey of een vergelijkbare leverancier.
  • Draad, bij voorkeur meerdere kleuren en ongeveer 24 gauge. Ik gebruik een spoel van RadioShack in de onderstaande foto's.
  • Een 500k-weerstand. Ik gebruik een axiale doorlopende weerstand van RadioShack, maar je zou deze ook aan je Digikey-bestelling kunnen toevoegen.
  • Soldeerbout en soldeer. Als je niet weet hoe je moet solderen, kun je het hier en hier leren.
  • (Optioneel) Pinheaders, zoals deze. Ik breek deze af en soldeer ze aan de uiteinden van draden, zodat ze mooi in de Arduino pluggen.
  • (Optioneel) Sweet 9v Battery-harnas zodat je Arduino draagbaar wordt, verkrijgbaar in de Maker Store.
  • (Optioneel) Stereo hoofdtelefoonaansluiting van RadioShack of Digikey.

Stap 1: Soldeer de IPhone Breakout - Deel 1

Soldeer de IPhone Breakout - Deel 1
Soldeer de IPhone Breakout - Deel 1

Zodra al je ingrediënten zijn aangekomen, steek je de soldeerbout aan en kijk je snel naar de iPod Connector Pin-Out.

We gebruiken vier van deze pinnen voor het toetsenbord: 11, 13, 16 en 21. De definitie van pin 21 zegt dat we een weerstand van 500k tussen pin 21 en aarde moeten plaatsen om seriële communicatie met de iPhone mogelijk te maken, dus we gaan een weerstand tussen pin 21 en pin 16 steken, wat de seriële aarde is. We gaan ook pin-headers toevoegen aan pin 11 en 13, die zullen fungeren als de TX- en RX-pinnen voor seriële communicatie. Omdat we ALLEEN naar de iPhone sturen, maken we alleen gebruik van de RX-pin van de iPhone, dus we zullen ook een stuk draad toevoegen om pin 11, de ongebruikte TX-pin, rechtstreeks met de grond op pin 16 te verbinden.

Je kunt nu ook optioneel de stereo hoofdtelefoonaansluiting toevoegen aan pinnen 2, 3 en 4 en het zal werken wanneer de breakout is aangesloten. Dit heeft niets te maken met het toetsenbord, maar als je een 1G iPhone hebt met de kreupele niet- standaard hoofdtelefoonaansluiting, dit zal het oplossen.

Stap 2: Soldeer de IPhone Breakout - Deel 2

Soldeer de IPhone Breakout - Deel 2
Soldeer de IPhone Breakout - Deel 2

Ik heb de jumper tussen pin 11 en pin 16 aan de achterkant van het breakout-bord geplaatst. Het kan een beetje lastig zijn om alles op pin 16 te passen, dus ik raad aan om eerst de weerstand door het gat te steken, dan het uiteinde van de jumperdraad eromheen te wikkelen en ze aan elkaar te solderen voordat je de weerstandsdraad afknipt.

Een andere tactiek die hier nuttig kan zijn, is om eerst de uiteinden van je draad te vertinnen en vervolgens een beetje soldeer op het gat waar je de draad wilt plakken te klodderen. Gebruik de zijkant van de soldeerbout om je klodder soldeer op te warmen en SCHUIF het vertinde uiteinde van de draad in de klodder. Verwijder het strijkijzer, laat de klodder afkoelen en laat dan de draad los.

Stap 3: Soldeer de PS/2 Connector - Deel 1

Soldeer de PS/2 Connector - Deel 1
Soldeer de PS/2 Connector - Deel 1

Er is geen weg die u kunt nemen door de pinnummering van de PS/2-connector die enige zin heeft buiten de context van de gestoorde omzwervingen van een commissievergadering. Denk niet te veel na over de pinnummers, kijk maar naar de foto.

We maken hier gebruik van vier pinnen en verbinden ze allemaal met de Arduino. Ground zal worden aangesloten op Ground op de Arduino, VCC zal worden aangesloten op 5V en de data- en klokpinnen worden overgebracht naar twee van de digitale pinnen van de Arduino (3 en 4).

Stap 4: Soldeer de PS/2 Connector - Deel 2

Soldeer de PS/2 Connector - Deel 2
Soldeer de PS/2 Connector - Deel 2

De onderkant van de PS/2 Connector is nog minder intuïtief dan het nummeringsschema. Ik raad aan om deze afbeelding te controleren, maar ook om te controleren of de pinnen aan de onderkant van je connector overeenkomen met de genummerde pinnen die je denkt te doen voordat je iets gaat solderen. U kunt de connectiviteit controleren met een gewone multimeter door deze in te stellen om weerstand te meten en een sonde aan te sluiten op de pin aan de onderkant en de andere in het gat te steken. Als er al enige weerstand is, dan is die pin verbonden met dat gat.

Ik gebruik de groene draad voor de klokpen, de rode draad voor VCC, de witte draad voor gegevens en de zwarte draad voor aarde.

Stap 5: Soldeer Pin Headers naar Leads

Soldeerpenkoppen naar kabels
Soldeerpenkoppen naar kabels

Zodra u de connectoren hebt aangesloten, stript u de andere uiteinden van de draden en soldeert u de draden aan de pin-headers. Hiermee kunt u ze eenvoudig op de Arduino aansluiten. Als je de pin-headers niet hebt gekregen, kun je proberen de draden voorzichtig te vertinnen om ze beter in de Arduino-pingaten te laten blijven.

Ik heb wat draden aan de pin-headers op pin 11 en 13 van het iPhone-breakout-bord bevestigd. De zwarte draad is naar aarde (pin 11) en de rode draad is naar VCC (pin 13). Ik heb vervolgens pin-headers gesoldeerd aan de leads voor de twee draden van het breakout-bord en de vier die van de PS/2-connector komen.

Stap 6: (Optioneel) 9V batterijharnas

(Optioneel) 9V batterijharnas
(Optioneel) 9V batterijharnas

Ik gebruik een Arduino Diecimila, omdat dit programma geen betere chip vereist. Dit wordt getoond met een 9V batterijharnas van SparkFun voor draagbaarheid.

Stap 7: Sluit PS/2-kabels aan op Arduino

Bevestig PS/2-kabels aan Arduino
Bevestig PS/2-kabels aan Arduino

Vervolgens verbinden we de PS/2 Connector met de Arduino. Sluit de klokdraad aan op digitale pin 3, de datadraad op digitale pin 4 en sluit de aardedraad aan op aarde op de Arduino en de VCC-draad op de 5V-pin.

Stap 8: sluit iPhone-kabels aan op Arduino

Bevestig iPhone-kabels aan Arduino
Bevestig iPhone-kabels aan Arduino

Om de iPhone-breakout aan te sluiten, sluit u eenvoudig de kabel van pin 13 aan op de TX-pin op de Arduino (digitale pin 1) en sluit je vervolgens de kabel van pin 11 aan op een beschikbare massa op de Arduino.

BELANGRIJK: Om problemen met het knipperen van de Arduino te voorkomen, moet u de TX-pin op de Arduino loskoppelen voordat u gaat knipperen. Hierover later meer. Daarna is al het soldeerwerk gedaan. Nu is het tijd om verder te gaan met het programmeren van de Arduino!

Stap 9: De Arduino-code

De Arduino-code
De Arduino-code

De Arduino-software klokt gegevens uit het toetsenbord, vertaalt de toetsenbordscancodes naar toetscodes en verwerkt het indrukken van de shift- en caps lock-toetsen.

Download en installeer eerst de Arduino-ontwikkelomgeving vanaf hier. Volg de aanwijzingen op de site, maar zorg ervoor dat u de juiste FTDI-driver installeert vanuit de directory met stuurprogramma's in de Arduino-installatie.

Vervolgens heb je een extra Arduino-bibliotheek voor PS/2 nodig. Download het bestand "ps2.zip" van deze pagina. Om te installeren, pakt u de download uit naar een map en verplaatst u die map naar een submap van de map "hardware/bibliotheken" onder uw Arduino-installatie. Op OSX kun je eerst naar Arduino.app en "Show Package Contents" gaan.

Zodra Arduino en de ps2-bibliotheek zijn geïnstalleerd, downloadt u hier de broncode. Open de Arduino-toepassing, maak een nieuw project en plak de broncode erin. Sla op en ga vervolgens naar Sketch->Verify/Compile om ervoor te zorgen dat het wordt gebouwd. Als dit niet het geval is, controleert u of de bibliotheek correct is geïnstalleerd.

Even terzijde, ik heb eigenlijk helemaal geen code geschreven voor dit project. Ik begon te proberen de PS2KeyboardExt2-bibliotheek te gebruiken, maar die bibliotheek is gebaseerd op interrupts en hoewel hij kan draaien op een Arduino die ook serieel spreekt met 9600 bps, toen ik de seriële naar 19200 bps had verhoogd, stopten de interrupts met werken in een stabiele manier. Dus ik heb alle mooie code uit PS2KeyboardExt2 gehaald, inclusief de belangrijkste definities en de goede afhandeling van shifts en caps lock en heb het herwerkt tot een programma dat geen interrupts gebruikt en gebruik maakt van een andere, veel eenvoudigere PS/2-bibliotheek. Dit maakt het in staat om op een betrouwbare manier 19200 bps serieel te verwerken.

Nu, om de Arduino te programmeren!

Koppel de kabel los die naar pin 1 op de Arduino gaat. Verbind vervolgens de Arduino met uw computer via een USB-kabel. Mogelijk moet u de Arduino-toepassing opnieuw opstarten zodat deze het nieuwe seriële USB-apparaat correct detecteert. Laad de opgeslagen schets met de bron en druk vervolgens op de knop Uploaden om de Arduino te programmeren.

Zodra het programma is geüpload, sluit u het toetsenbord aan op de PS/2-connector. Je zou de lichten moeten zien knipperen. U kunt de seriële monitor openen in de Arduino-toepassing en proberen enkele letters op het toetsenbord te typen. Je zou die letters moeten zien verschijnen in de seriële monitor. Probeer Caps Lock in en uit te schakelen, het lampje op het toetsenbord moet aan en uit gaan en de tekens moeten correct met een hoofdletter worden weergegeven.

Stap 10: Het iPhone-clientprogramma

Nu om het iPhone-clientprogramma in te stellen.

Voor de klantcode gebruik ik een programma dat ik op de Google Code-pagina van Anthony Pray heb gevonden. Dit programma leest invoer van de seriële poort met 19200 bps en injecteert vervolgens de juiste toetsenbordgebeurtenis met behulp van een VNC-clientbibliotheek. Ik heb hier een lokale tekstspiegel van de bron gemaakt, die gemakkelijk kan worden opgehaald met wget.

Aangezien we toetsaanslagen door VNC zullen injecteren, moet u ook een VNC-server op de iPhone gebruiken. We gaan Veency gebruiken (wat geweldig is en je zou toch moeten installeren).

Ga naar Cydia of Icy en installeer de volgende pakketten:

  • Veency - Biedt de VNC-server, configureer deze om te draaien bij het opstarten
  • LibVNCServer - Biedt libvncclient
  • iPhone 2.0 Toolchain - Biedt een bouwomgeving (gcc, libgcc, ldid, libz zijn vereist als u een andere route volgt)
  • MobileTerminal - Zo heb je toegang tot de iPhone-terminal
  • wget - Dus je kunt het bronbestand naar beneden halen

Nu om de bron te downloaden en te bouwen. Open MobileTerminal of SSH op uw telefoon en doe het volgende:

  • wget
  • gcc -static-libgcc -o TouchClient TouchClient.c -lvncclient
  • ldid -S TouchClient

De laatste stap, met behulp van ldid, vervalst het ondertekenen van het binaire bestand. Zonder dit zal het iPhone OS je proces onmiddellijk doden.

Om het programma te starten, voert u het uit vanaf Mobile Terminal met:

./TouchClient

Hierdoor verschijnt er in Veency een dialoogvenster waarin u wordt gevraagd of u de VNC-verbinding wilt accepteren. Druk op Accepteren.

Ik heb gemerkt dat als je dit vanuit MobileTerminal uitvoert, het programma in leven blijft, zelfs als je MobileTerminal verlaat, maar het is beter om launchd te gebruiken. Ik heb dat nog niet bedacht.

Stap 11: Finishing touch en toekomstig werk

Sluit tot slot de kabel van pin 13 op de iPhone-breakout opnieuw aan op de TX-pin (pin 1) op de Arduino. Koppel de USB-kabel los en schakel de Arduino over op externe voeding. Sluit de iPhone-breakout aan op uw iPhone.

Indien:

  • TouchClient draait op je iPhone
  • De PS2-software draait op je Arduino
  • Het toetsenbord is aangesloten op de connector en de connector is correct op de Arduino aangesloten
  • Veency is actief en u hebt de verbinding van TouchClient. geaccepteerd
  • Niets anders is verpest

Je zou in staat moeten zijn om op het PS/2-toetsenbord te typen en die toetsaanslagen te laten vertalen naar de juiste iPhone-toetsaanslagen. Dit werkt overal op de iPhone, in elke app of native-functie.

Deze oplossing is niet perfect, maar het is een algemene benadering om de Arduino te gebruiken om PS/2-toetsenbordondersteuning toe te voegen aan bijna alles dat eenvoudige seriële berichten kan lezen.

Toekomstwerk:

  • De scancodetoewijzing zou volledig naar de iPhone kunnen worden verplaatst en het hardwaregedeelte van dit project zou opnieuw kunnen worden geïmplementeerd op een veel goedkopere chip met een lager energieverbruik, zoals een PIC. Dit zou de kosten van de eenheid met ongeveer $ 30 verlagen, hoewel er een PIC-programmeur voor nodig zou zijn.
  • Niet alle speciale toetsen zijn correct toegewezen, maar als je in de Arduino-code kijkt en vervolgens naar de iPhone-code, zul je zien dat dit een ongelooflijk eenvoudig proces is. Plaats eventuele wijzigingen die u aanbrengt hier terug als een opmerking!
  • In plaats van een gekke draadhack te zijn, zou ik dit graag in een knusse kleine behuizing zien passen voor echte draagbaarheid. Om het even welke ideeën in deze afdeling zouden worden gewaardeerd.
  • Ik zou TouchClient een wachtwoord voor Veency willen geven, zodat er geen vervelende pop-up Accepteren/Weigeren verschijnt.
  • Deze exacte methode kan worden gebruikt om een Bluetooth-toetsenbord toe te voegen. Voeg eenvoudig een Bluetooth-seriële module toe aan de iPhone-breakout en blijf TouchClient & Veency gebruiken.

Dat is het. Ik hoop dat je genoten hebt van de Instructable! Ik kijk uit naar uw opmerkingen. Met vriendelijke groet, - awgh

Aanbevolen: