Inhoudsopgave:

USB NEC infrarood zender en ontvanger - Ajarnpa
USB NEC infrarood zender en ontvanger - Ajarnpa

Video: USB NEC infrarood zender en ontvanger - Ajarnpa

Video: USB NEC infrarood zender en ontvanger - Ajarnpa
Video: 26 infrarood-afstandsbediening 2024, November
Anonim
USB NEC infrarood zender en ontvanger
USB NEC infrarood zender en ontvanger

Dit project is een spin-off van een ander project waar ik aan werk en aangezien er een Remote Control 2017-wedstrijd is op Instructables, dacht ik dat ik dit project post. Dus als je dit project leuk vindt, stem er dan op. Bedankt.

Zoals u wellicht weet, ben ik een grote fan van de Microchip 8-bit PIC-controllers, zie:

Ik gebruik de JAL-programmeertaal omdat het op Pascal lijkt (wat ik ook leuk vind). De JAL-compiler en de bibliotheken kunnen worden gedownload van: https://www.justanotherlanguage.org/downloads (scroll naar beneden voor de laatste vrijgegeven versie).

Normaal schrijf ik alle code zelf om volledig te begrijpen wat ik doe, maar voor dit project moest ik de PIC aansluiten op de USB-poort van de pc en dus had ik een JAL USB seriële driver nodig voor deze PIC-controller. Ik heb de USB-seriële driver in het JAL-downloadpakket gebruikt, wat prima lijkt te werken. Aangezien deze USB seriële driver voor één specifieke PIC is geschreven, heb ik die PIC gebruikt, de PIC18F14K50. Deze controller heeft veel meer functionaliteit dan ik nodig heb voor dit project, dus ik ben momenteel bezig om dit USB-stuurprogramma te laten werken op een eenvoudigere PIC-versie, de PIC16F1455, die ook goedkoper is.

Dus waar gaat dit project over? Met het apparaat dat in deze Instructables wordt genoemd, kunt u via de USB-poort Infra Red Remote Control-opdrachten van en naar uw pc verzenden en ontvangen met behulp van het populaire NEC Infra-Red-protocol. Op deze manier kunt u infraroodcommando's bewaken en kunt u elk apparaat bedienen dat gebruikmaakt van het NEC Infra-Red Remote Control-protocol. Het project decodeert en vertaalt infraroodberichten naar een adresbyte en een commandobyte of naar een herhaalbericht. Het adres wordt – natuurlijk – gebruikt om een bepaald apparaat aan te spreken, zoals een tv of een radio, waarbij de opdrachtbyte de functie aangeeft die moet worden uitgevoerd, zoals Volume omhoog, Volume omlaag. Naast het decoderen van deze berichten, kunnen ze met dit apparaat ook via infrarood worden verzonden.

Stap 1: Enige informatie over het NEC infraroodprotocol

Enige informatie over het NEC infraroodprotocol
Enige informatie over het NEC infraroodprotocol

Een korte introductie van dit protocol. Het NEC Infra Red Remote Control-protocol wordt gebruikt in veel apparaten en afstandsbedieningen die u kunt kopen. Het moduleert een infrarood signaal op een draaggolf van 38 kHz en gebruikt pulsafstandscodering voor het coderen van een logische '1' en een logische '0'. Het protocol gebruikt een eenvoudige controle om te zien of het bericht in orde is door zowel het adres als de opdrachtbyte en een omgekeerde versie van beide in één en hetzelfde bericht te verzenden en na ontvangst te controleren of ze hetzelfde zijn. Wanneer een knop op de afstandsbediening wordt ingedrukt, verzendt deze één keer een volledig infraroodbericht met adres en commando. Als u de knop ingedrukt houdt, wordt een korter herhaald bericht verzonden zonder adres- en opdrachtinformatie. De herhalingstijd van de verzonden berichten terwijl u de knop ingedrukt houdt, ligt vast.

Meer informatie over het NEC Infra Red protocol is bijvoorbeeld te vinden op:https://sibotic.files.wordpress.com/2013/12/adoh-n…

Stap 2: Vereiste componenten

Vereiste componenten
Vereiste componenten
Vereiste componenten
Vereiste componenten

Voor dit project heb je de volgende onderdelen nodig:

  • PIC-microcontroller PIC18F14K50, zie:https://www.win-source.net/embedded-microcontrolle…
  • Kristal 12 MHz
  • Keramische condensator: 2 * 100nF, 1 * 220 nF, 2 * 18pF
  • Elektrolytische condensator 47 uF/16V
  • Infra Rood Ontvanger TSOP4838, zie:https://www.win-source.net/optical-sensors-photo-d…
  • Weerstanden: 2 * 33k, 1 * 4k7, 1 * 1k, 3 * 330 Ohm, 1 * 22 Ohm
  • LED's: 2 * Infra Rood, 1 Amber, 1 Groen, 1 Rood
  • Transistor BC640, zie:https://www.win-source.net/transistorsbjt-single-b…
  • Jumper (optioneel)
  • USB-connector

Zie het schema voor het aansluiten van de componenten. Ik heb voor dit project een breadboard gebruikt, zoals je op de foto en in de video kunt zien. De schakeling krijgt zijn stroom van de USB-poort van de pc.

Stap 3: De software en de werking van het apparaat

Zoals eerder vermeld, is de software geschreven voor een PIC18F14K50. Het is geschreven in JAL. Het Intel Hex-bestand voor het programmeren van uw PIC is bijgevoegd. De software voert de volgende functies uit:

  • Decoderen van NEC Infra-Red-berichten en deze via USB naar de pc sturen. Het bericht wordt gedecodeerd uit de bitstroom die wordt gegenereerd door de Infra-Rood ontvanger en vertaald naar een adres + opdrachtbericht of een herhaalbericht.
  • NEC Infra Red-berichten verzenden die zijn ontvangen van de pc via USB. Merk op dat de software ook de draaggolffrequentie van 38 kHz creëert die de infrarood-LED's rechtstreeks aanstuurt. Parallel aan de Infra-Rood LED is een Amber LED aangesloten om de verzending van een bericht zichtbaar te maken.

Standaard zal deze schakeling de infraroodontvanger dempen tijdens het verzenden van een infraroodbericht. Als een jumper op de 'Unmute'-positie wordt geplaatst, wordt deze mute-functie uitgeschakeld. In dat geval wordt het verzonden infraroodbericht ook parallel aan de verzending gedecodeerd en na volledige ontvangst als ontvangen infraroodbericht naar de pc verzonden. Als een geldig NEC Infra-Rood-bericht wordt ontvangen, gaat de rode ‘IR OK’-led branden.

Om dit apparaat te kunnen bedienen, moet u een Terminal Emulator-programma op uw pc hebben. Ik heb hiervoor 'Termite' gebruikt. Wanneer het apparaat is aangesloten op de pc, wordt het automatisch herkend als een extra COM-poort door Windows 10, aangezien er een vooraf geïnstalleerde Microchip-driver voor dit apparaat in Windows 10 lijkt te zijn. De instelling voor deze COM-poort moet zijn: 19200 baud 8 bits, 1 stop-bit, geen pariteit en gebruik van RTS/CTS-stroombesturing. De baudrate kan indien nodig op elke andere waarde worden ingesteld, dus een baudrate van 115200 zal ook werken. Zodra het apparaat is geconfigureerd via de USB-poort door er verbinding mee te maken via het Terminal Emulator-programma, gaat de groene ‘Configured’-LED branden.

Infraroodberichten ontvangen

Wanneer een infraroodbericht wordt ontvangen, wordt het volgende weergegeven in het programma Terminal Emulator:

  • ‘A:xx C:xx’ in geval van een volledig bericht, waarbij xx het hexadecimale getal is van het adres (A) en commando (C). Waarden voor beide kunnen variëren van 0x00 (0) tot 0xFF (255).
  • ‘Herhalen’ bij een herhaalbericht.

Infraroodberichten verzenden

Hiervoor moest ik een protocol definiëren dat het apparaat vertelt wat het moet doen. Omdat we een Terminal Emulator gebruiken, heb ik ASCII-tekens gebruikt om een bericht te definiëren. Het protocol om een commando naar het apparaat te sturen gebruikt het volgende formaat: ‘!AACCRR#’, waarbij (alle tekens zijn hoofdletterongevoelig):

  • ‘!’ geeft het begin van het bericht aan.
  • 'AA' is de waarde van het adres in hexadecimale notatie dus '0' tot '9' en 'A' tot 'F',
  • 'CC' is de waarde van het commando in hexadecimale notatie dus '0' tot '9' en 'A' tot 'F'
  • 'RR' is het aantal herhaalde berichten dat moet worden verzonden in hexadecimale notatie, dus '0' tot '9' en 'A' tot 'F'. Een waarde van '00' betekent dat er geen herhaalbericht wordt verzonden.

Een voorbeeld van een bericht met adres 0x07, commando 0x05 en 3 herhalingen dient dan als volgt te worden getypt in het Terminal Emulator programma: !070503#

Het apparaat reageert op verschillende manieren nadat een opdracht vanaf de pc is verzonden:

  • 'Y' betekent dat er een bericht is verzonden. Merk op dat dit antwoord wordt gegeven nadat alle berichten - inclusief alle herhalingen - zijn verzonden, dus het kan enige tijd duren voordat dit antwoord wordt gegeven als er veel herhaalde berichten moeten worden verzonden.
  • 'N' betekent dat er een illegaal teken was in het bericht dat naar de pc werd verzonden.
  • ‘B’ betekent dat een infraroodtransmissie nog bezig was toen het commando werd gegeven.
  • ?' betekent dat het apparaat '!' verwachtte, maar iets anders ontving.

Stap 4:

Ik heb een korte video gemaakt van het apparaat in actie. Voor deze video heb ik een commerciële LED-lamp met afstandsbediening gebruikt om te zien dat zowel de verzending als de ontvangst werken. De video laat het volgende zien:

  • Het USB-apparaat configureren vanuit het programma Terminal Emulation. Wanneer het apparaat is geconfigureerd, reageert het met het bericht 'USB NEC Infra Red Transmitter and Receiver'. Op het apparaat gaat de groene LED branden om aan te geven dat het apparaat door de pc is geconfigureerd.
  • De lamp wordt ingeschakeld met de afstandsbediening. Hiervoor gebruikt de afstandsbediening het adres 0x00 en het commando 0x07 dat door het apparaat wordt gedecodeerd en op de pc wordt weergegeven.
  • De lamp wordt uitgeschakeld met de afstandsbediening. Hiervoor gebruikt de afstandsbediening het adres 0x00 en het commando 0x06 dat door het apparaat wordt gedecodeerd en op de pc wordt weergegeven.
  • De lamp wordt aangezet door op de PC hetzelfde Remote Control commando in te typen met een herhalingswaarde van 0 (geen herhaling) dus door ‘!000700#’ in te typen. De lamp gaat aan.
  • De kleur van de lamp veranderen in blauw door adres 0x00 en commando 0x0A te gebruiken en 0x30 herhalingen te gebruiken. De Amber Led, die parallel is geschakeld met de Infra Rode Leds, knippert en geeft aan dat de herhaalmelding via Infra Rood is verzonden. Het getypte bericht is ‘!000A30#’.

Merk op dat tijdens de opname van deze video de jumperverbinding 'Unmute' actief was, zodat u ook het verzonden bericht '!000700#' kon zien, ontvangen als 'A:00 C:07' in het Terminal Emulation-programma. In de demo van de lamp die blauw kleurt, kunt u ook zien dat de rode LED brandt zolang de geldige – herhaal – berichten worden verzonden, aangezien ze worden ontvangen en gedecodeerd parallel met de verzending van de herhalingsberichten.

Veel plezier met het bouwen van je eigen project en kijk uit naar je reacties. Vergeet niet te stemmen op dit project in de Remote Control 2017-wedstrijd als je het leuk vindt. Nogmaals bedankt.

Aanbevolen: