Innholdsfortegnelse:

USB NEC infrarød sender og mottaker: 4 trinn (med bilder)
USB NEC infrarød sender og mottaker: 4 trinn (med bilder)

Video: USB NEC infrarød sender og mottaker: 4 trinn (med bilder)

Video: USB NEC infrarød sender og mottaker: 4 trinn (med bilder)
Video: Min opgave er at observere skoven, og her sker noget mærkeligt. 2024, November
Anonim
USB NEC infrarød sender og mottaker
USB NEC infrarød sender og mottaker

Dette prosjektet er en spin-off av et annet prosjekt jeg jobber med, og siden det er en fjernkontroll 2017-konkurranse på Instructables tenkte jeg at jeg skulle legge ut dette prosjektet. Så hvis du liker dette prosjektet, kan du stemme på det. Takk.

Som du kanskje vet, er jeg en stor fan av Microchip 8-biters PIC-kontrollere, se:

Jeg bruker JAL programmeringsspråk siden det ser ut som Pascal (som jeg også liker). JAL -kompilatoren og bibliotekene kan lastes ned fra: https://www.justanotherlanguage.org/downloads (rull ned for den siste utgitte versjonen).

Normalt skriver jeg all kode selv for å helt forstå hva jeg gjør, men for dette prosjektet trengte jeg å koble PIC til USB -porten på PCen, og derfor trengte jeg en JAL USB seriell driver for denne PIC -kontrolleren. Jeg brukte seriell USB -driver i JAL -nedlastingspakken som ser ut til å fungere fint. Siden denne USB -seriedriveren ble skrevet for en bestemt PIC, brukte jeg den PIC -en som er PIC18F14K50. Denne kontrolleren har mye mer funksjonalitet enn jeg trenger for dette prosjektet, så jeg er for tiden i gang med å få denne USB -driveren til å fungere på en enklere PIC -versjon, PIC16F1455, som også er billigere.

Så hva handler dette prosjektet om? Med enheten som er nevnt i denne instruksjonsboken, kan du sende og motta kommandoer for infrarød fjernkontroll fra og til din PC via USB-porten ved hjelp av den populære NEC infrarøde protokollen. På denne måten kan du overvåke Infra-Red-kommandoer, og du kan kontrollere hvilken som helst enhet som bruker NEC Infra-Red Remote Control-protokollen. Prosjektet dekoder og oversetter infrarøde meldinger til en adressebyte og en kommandobyte eller til en gjentagelsesmelding. Adressen brukes - selvfølgelig - til å adressere en bestemt enhet som en TV eller en radio der kommandobyte angir funksjonen som må utføres som Volum opp, Volum ned. Ved siden av dekodingen av disse meldingene, kan de også overføres via infrarød bruk av denne enheten.

Trinn 1: Litt informasjon om NECs infrarøde protokoll

Litt informasjon om NECs infrarøde protokoll
Litt informasjon om NECs infrarøde protokoll

En kort introduksjon til denne protokollen. NEC Infra Red Remote Control -protokollen brukes på mange enheter og fjernkontroller som du kan kjøpe. Den modulerer et infrarødt signal på en bærer på 38 kHz og bruker pulsavstandskoding for koding av et logisk '1' og et logisk '0'. Protokollen bruker en enkel sjekk for å se om meldingen er OK ved å sende både adressen og kommandobyten og en omvendt versjon av både i en og samme melding og sjekke om de er like etter mottak. Når du trykker på en knapp på fjernkontrollen, sender den en fullstendig infrarød melding med adresse og kommando én gang. Hvis du holder knappen inne, vil det føre til at du sender en kortere gjentagelsesmelding uten adresse- og kommandoinformasjon. Gjentagelsestiden for de overførte meldingene mens du holder knappen inne, er fast.

Mer informasjon om NEC Infra Red-protokollen finner du for eksempel på:

Trinn 2: Nødvendige komponenter

Nødvendige komponenter
Nødvendige komponenter
Nødvendige komponenter
Nødvendige komponenter

Du må ha følgende komponenter for dette prosjektet:

  • PIC-mikrokontroller PIC18F14K50, se:
  • Krystall 12 MHz
  • Keramisk kondensator: 2 * 100nF, 1 * 220 nF, 2 * 18pF
  • Elektrolytisk kondensator 47 uF/16V
  • Infra Red Receiver TSOP4838, se:
  • Motstander: 2 * 33k, 1 * 4k7, 1 * 1k, 3 * 330 Ohm, 1 * 22 Ohm
  • Lysdioder: 2 * infrarød, 1 gul, 1 grønn, 1 rød
  • Transistor BC640, se:
  • Jumper (valgfritt)
  • USB -kontakt

Se skjematisk diagram for hvordan du kobler komponentene. Jeg brukte et brødbrett for dette prosjektet som du kan se på bildet og i videoen. Kretsen får strøm fra USB -porten på PCen.

Trinn 3: Programvaren og driften av enheten

Som allerede nevnt, er programvaren skrevet for en PIC18F14K50. Det ble skrevet i JAL. Intel Hex -filen for programmering av PIC er vedlagt. Programvaren utfører følgende funksjoner:

  • Dekoding av NEC infrarøde meldinger og send den til PC-en via USB. Meldingen dekodes fra bitstrømmen som genereres av Infra-Red-mottakeren og oversettes til en adresse + kommandomelding eller en gjentatt melding.
  • Sender NEC Infra Red -meldinger mottatt fra PC -en via USB. Vær oppmerksom på at programvaren også oppretter en 38 kHz bærefrekvens som direkte driver infrarøde lysdioder. Parallelt med den infrarøde LED-en er en gul LED tilkoblet for å gjøre overføringen av en melding synlig.

Som standard vil denne kretsen dempe den infrarøde mottakeren under overføring av en infrarød melding. Hvis en jumper er plassert i "Unmute" -posisjonen, deaktiverer den denne dempefunksjonen. I så fall vil den overførte infrarøde meldingen også bli avkodet parallelt med overføringen, og etter fullstendig mottak blir den sendt som en mottatt infrarød melding til PCen. Hvis en gyldig NEC infrarød melding mottas, lyser den røde "IR OK" -lampen.

For å kunne bruke denne enheten må du ha et Terminal Emulator -program på din PC. Jeg brukte 'Termite' til dette formålet. Når enheten er koblet til PC-en, vil den automatisk bli gjenkjent som en ekstra COM-port av Windows 10 siden det ser ut til å være en Microchip-driver for denne enheten i Windows 10 forhåndsinstallert. Innstillingen for denne COM-porten bør være: 19200 baud 8 bits, 1 stop-bit, ingen paritet og bruk av RTS/CTS flytkontroll. Overføringshastigheten kan settes til en hvilken som helst annen verdi om nødvendig, så en overføringshastighet på 115200 vil også fungere. Når enheten er konfigurert via USB -porten ved å koble til den via Terminal Emulator -programmet, lyser den grønne ‘Configured’ LED’en.

Motta infrarøde meldinger

Når en infrarød melding mottas, vises følgende i Terminal Emulator-programmet:

  • 'A: xx C: xx' i tilfelle en fullstendig melding, hvor xx er det heksadesimale nummeret til adressen (A) og kommandoen (C). Verdier for begge kan variere fra 0x00 (0) til 0xFF (255).
  • "Gjenta" hvis meldingen gjentas.

Sender infrarøde meldinger

For dette trengte jeg å definere en protokoll som forteller enheten hva den skal gjøre. Siden vi bruker en terminalemulator brukte jeg ASCII -tegn for å definere en melding. Protokollen for å sende en kommando til enheten bruker følgende format: '! AACCRR#', hvor (alle tegn er store og små bokstaver):

  • ‘!’ Indikerer starten på meldingen.
  • 'AA' er verdien av adressen i heksadesimal notasjon, så '0' til '9' og 'A' til 'F',
  • 'CC' er verdien av kommandoen i heksadesimal notasjon, så '0' til '9' og 'A' til 'F'
  • 'RR' er antallet gjentatte meldinger som må overføres i heksadesimal notasjon, så '0' til '9' og 'A' til 'F'. Verdien ‘00’ betyr at ingen gjentatt melding blir sendt.

Et eksempel på en melding med adresse 0x07, kommando 0x05 og 3 repetisjoner skal deretter skrives som følger på Terminal Emulator -programmet:! 070503#

Enheten har forskjellige svar etter at en kommando er sendt fra PCen:

  • 'Y' betyr at en melding ble overført. Vær oppmerksom på at dette svaret er gitt etter at alle meldinger - inkludert alle gjentakelser - er overført, så det kan ta litt tid før dette svaret blir gitt når mange gjentatte meldinger må overføres.
  • 'N' betyr at det var en ulovlig karakter i meldingen som ble sendt til PCen.
  • 'B' betyr at en infrarød overføring fortsatt var opptatt da kommandoen ble gitt.
  • ?’Betyr at enheten ventet‘!’, Men den mottok noe annet.

Trinn 4:

Jeg lagde en kort video av enheten i bruk. For denne videoen brukte jeg en kommersiell LED -lampe med fjernkontroll for å se at både overføring og mottak fungerer. Videoen viser følgende:

  • Konfigurere USB -enheten fra Terminal Emulation -programmet. Når enheten er konfigurert, svarer den med meldingen 'USB NEC infrarød sender og mottaker'. På enheten er den grønne lysdioden slått på og viser at enheten ble konfigurert av PCen.
  • Lampen slås på med fjernkontrollen. For dette bruker fjernkontrollen adressen 0x00 og kommandoen 0x07 som dekodes av enheten og vises på PCen.
  • Lampen slås av med fjernkontrollen. For dette bruker fjernkontrollen adressen 0x00 og kommandoen 0x06 som dekodes av enheten og vises på PCen.
  • Lampen slås på ved å skrive den samme fjernkontrollkommandoen på PC -en med en gjentakelsesverdi på 0 (ingen gjentagelse), så ved å skrive ‘! 000700#’. Lampen tennes.
  • Endre fargen på lampen til blå ved å bruke adressen 0x00 og kommandoen 0x0A og bruke 0x30 repetisjoner. Den gule lysdioden, som er koblet parallelt med infrarøde lysdioder, blinker og viser overføringen av gjentagelsesmeldingen via infrarød. Den skrevne meldingen er ‘! 000A30#’.

Vær oppmerksom på at under opptaket av denne videoen var jumper -tilkoblingen 'Unmute' aktiv, slik at du også kunne se den overførte meldingen '! 000700#', mottatt som 'A: 00 C: 07' i Terminal Emulation -programmet. I demonstrasjonen av lampen som blåser, kan du også se at den røde LED -lampen lyser så lenge gyldige - gjenta - meldinger overføres siden de mottas og dekodes parallelt med overføringen av gjentagelsesmeldingene.

Ha det gøy med å bygge ditt eget prosjekt og gleder deg til reaksjonene dine. Ikke glem å stemme på dette prosjektet i fjernkontrollen 2017 -konkurransen hvis du liker det. Takk igjen.

Anbefalt: