Inhoudsopgave:

De computer IR-afstandsbediening: 4 stappen
De computer IR-afstandsbediening: 4 stappen

Video: De computer IR-afstandsbediening: 4 stappen

Video: De computer IR-afstandsbediening: 4 stappen
Video: 🇳🇱 INFRAROOD ONTVANGER MET AFSTANDSBEDIENING (HX1838 VS1838) - Arduino les #9 2024, November
Anonim
De computer IR-afstandsbediening
De computer IR-afstandsbediening

Naast de vele andere doeleinden gebruik ik mijn pc als multimediacentrum. Soms ontspan ik op de bank terwijl ik naar muziek luister of een film of tv kijk en geen zin heb om op te staan om het volume aan te passen of het tv-kanaal te veranderen telkens als er stomme reclames verschijnen of als ik in slaap val en wens voor de stilte. Dus heb ik besloten om mijn pc op afstand te bedienen met een standaard IR-afstandsbediening, zodat ik gewoon meteen op de knop kon drukken in plaats van woedend naar de muis of de mute-toets op het toetsenbord te grijpen.

Het project bestaat uit de verschillende onderdelen:

  1. Afstandsbediening
  2. pc-software
  3. IR-ontvangermodule

Stap 1: De afstandsbediening

De afstandsbediening
De afstandsbediening

Het eerste item - de afstandsbediening - is triviaal om mee af te handelen. Gebruik gewoon elke IR-bediening die je leuk vindt. Ik gebruikte degene die te koop is als set samen met IR-ontvanger - zie de foto. De enige reden dat ik voor dit type heb gekozen is gewoon omdat ik het al in huis had.

Stap 2: Software

Ik heb het programma voor het GNU/Linux-besturingssysteem gemaakt dat in een terminal draait. De broncode is gratis te downloaden/gebruiken/delen/wijzigen. Om de code te compileren, geeft u het commando zoals gcc -o remotePC remotePC.c in de terminal. Om het programma uit te voeren type./remotePC.

De volgende informatie in deze stap is bedoeld voor diegenen die geïnteresseerd zijn in hoe de dingen werken.

De programmabeschrijving

Het programma controleert eerst of het bestand /dev/ttyACM0 of ttyACM1 bestaat. Als dit het geval is, wordt gecontroleerd of de groeps-ID van het bestand verschilt van nul. Dit betekent dat de seriële poort gelezen en beschreven kan worden door de gewone gebruiker. Twee bytes met de waarden 0xAA 0x55 worden vervolgens naar de poort geschreven om aan te geven dat het programma klaar is om de gegevens te ontvangen. De binnenkomende gegevens worden vergeleken met de opgeslagen waarden. Als de overeenkomst wordt gevonden, wordt de vooraf gedefinieerde actie uitgevoerd.

De volumeregeling

Het programma kan het geluid in-/uitschakelen en het volumeniveau op systeemniveau verhogen/verlagen. Dit wordt bereikt met behulp van het pactl-programma. De commando's zien er dan als volgt uit:

pactl set-sink-mute 0 toggle

pactl set-sink-volume 0 +10%

pactl set-sink-volume 0 -10%

Installeer indien nodig de gevraagde pakketten.

De VLC Media Player-besturing

Het programma kan ook de audio/video starten/pauzeren en de track wijzigen naar de vorige/volgende in de afspeellijst van de VLC Media Player. In dit geval wordt de Desktop Bus gebruikt. De commando's:

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Next

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Vorige

Stap 3: IR-ontvangermodule

IR-ontvangermodule
IR-ontvangermodule
IR-ontvangermodule
IR-ontvangermodule
IR-ontvangermodule
IR-ontvangermodule

Het derde deel van het project is het meest complexe en toch vrij eenvoudig. Het idee is dat de IR-ontvanger het signaal naar de MCU zal sturen die het naar het unieke nummer zal transformeren. Dit nummer wordt vervolgens via USB naar de pc verzonden.

De module is bedoeld om in de pc-behuizing te worden gemonteerd en met de kabel op de USB-sleuf op het moederbord te worden aangesloten. Als je de voorkeur geeft aan de externe aansluiting op de USB, zul je kleine aanpassingen moeten maken.

MCU

Ik heb de module gebouwd op de PIC16F1829 microcontroller. De keuze van de MCU is niet kritisch, je kunt elke andere MCU gebruiken als je de broncode kunt aanpassen. Ik heb deze PIC gekozen om twee redenen. Ten eerste had ik het beschikbaar en ten tweede waren de pinnen deels beschadigd door het intensieve gebruik in de verschillende testprojecten. Dus ik wilde het in het permanente project gebruiken voordat het totaal onbruikbaar wordt.:-)

IR-ontvanger

Het tweede onderdeel waarop de module is gebaseerd, is de IR-ontvanger VS1838B - degene die in de eerste stap wordt genoemd.

UART/USB-converter

Het derde deel is de MCP2221, dat is de UART/I2C/USB-converter.

De taak is om deze 3 delen te combineren om de module op te bouwen die de signalen van de IR-afstandsbediening kan ontvangen en aan de pc kan overdragen.

de bedrading

Op de eerste foto is er het testcircuit op het breadboard. In de tweede is er het bedradingsschema.

De lijst met onderdelen

1 pc PIC16F1829 (of een andere MCU)

1 pc VS1838B (of een andere IR-ontvanger)

1 pc MCP2221 (of een andere UART/USB-converter)

2 stuks 4-pins header

1 pc 6-pins header

1 st weerstand 100R

2 stuks weerstand 10K

2 stuks weerstand 330R

1 st condensator 470 nF

2 stuks elektrolytische condensator 4,7 uF

1 pc-schakelaar (optioneel)

PCB-assemblage:

Stel de module samen met behulp van het schema. U kunt het universele bord gebruiken of de aangepaste PCB maken. Als het laatste het geval is, heb ik de KiCad-bestanden in het onderstaande archief aangeleverd.

De firmware

De broncode voor de PIC die is geschreven met behulp van de MPLAB X IDE en de XC8-compiler is hieronder te downloaden.

De broncode opmerkingen

Voor degenen die willen weten wat het programma precies doet zijn de volgende regels.

Nadat alle instellingen zijn gedaan, brandt de rode LED en wacht de MCU op de 0x55AA-gegevens. Daarna wordt de LED groen en begint de MCU het signaal van de IR-ontvanger te detecteren met behulp van de interrupts. Het meet en registreert de tijdsintervallen waarin het signaal zich in de hoge en lage niveaus bevindt. Deze tijden worden vervolgens omgezet in het 32-bits getal dat naar de pc wordt verzonden.

De relatie tussen de tijden en het uiteindelijke getal wordt gegeven door het NEC-protocol.

Stap 4: Hoe het apparaat te gebruiken?

Hoe het apparaat te gebruiken
Hoe het apparaat te gebruiken
Hoe het apparaat te gebruiken
Hoe het apparaat te gebruiken
Hoe het apparaat te gebruiken
Hoe het apparaat te gebruiken

Firmware

Upload de firmware naar de PIC. Ik gebruik de PICkit 3 programmer.

Hardware

Installeer de IR-ontvangermodule zoals te zien op de afbeeldingen:

  1. Sluit de USB-header aan op de interne USB-sleuf op het moederbord in de pc-behuizing met de juiste 4-aderige kabel of extern op de USB-sleuf met de standaard USB-kabel. In het tweede geval moet je jezelf op de een of andere manier helpen, b.v. zoals te zien op de 3e foto ter inspiratie.
  2. Sluit de 5 V-voedingskabel van de stroombron in de pc-behuizing aan op de 4-pins header. Of voed de module op een andere manier bij extern gebruik.

Zoek de beschrijving van de USB-socketpinnen van het moederbord op. Ik weet niet zeker of de bedrading een soort standaard volgt, dus het is beter om ervoor te zorgen. In mijn geval zijn er twee pinnenrijen met 5 pinnen in de bovenste rij en 4 pinnen in de onderste. Van links naar rechts zijn de pinnen + 5 V, D-, D+, Gnd. De 5e pin in de eerste rij is niet aangesloten. Ik heb de kabel aangesloten zoals te zien is op de tweede foto.

Software

Voer het programma uit in de terminal. Als alles goed gaat, is de laatste melding van het programma "waiting for data…". Als u nu op de knop op de afstandsbediening drukt, verschijnt de ontvangen code in de terminal. Zo weet je welke knop welke code afgeeft.

Nu wachten er wat programmeerdingen op je, maar maak je geen zorgen. Er hoeven slechts een paar dingen in de broncode van het programma te worden gewijzigd, zodat het programma op uw afstandsbediening reageert. Open het bestand remotePC.c in de teksteditor of in een IDE als je wilt en vervang mijn codes door de jouwe. Druk gewoon één voor één op de knoppen die u voor elke actie wilt gebruiken. Kopieer eenvoudig de codes die in de terminal verschijnen en plak ze in de broncode op de plaats met de bijbehorende actie.

Als u klaar bent, beëindigt u het programma en compileert u de code opnieuw met het commando gcc -o remotePC remotePC.c. Voer het programma opnieuw uit en het reageert vanaf nu op uw afstandsbediening.

Ik gebruik deze manier met hardgecodeerde acties in het programma omdat ik het zinloos vind om mijn tijd te verdoen met de verdere ontwikkeling van het project tot het mogelijk is om codes/acties toe te voegen/te wijzigen in de gebruiksvriendelijke grafische omgeving bijvoorbeeld. Maar als u dit of zelfs meer wilt doen, dan kan dat.

Aanbevolen: