INHOUDSOPGAWE:

USB NEC infrarooi sender en ontvanger: 4 stappe (met foto's)
USB NEC infrarooi sender en ontvanger: 4 stappe (met foto's)

Video: USB NEC infrarooi sender en ontvanger: 4 stappe (met foto's)

Video: USB NEC infrarooi sender en ontvanger: 4 stappe (met foto's)
Video: CS50 Live, Episode 009 2024, November
Anonim
USB NEC infrarooi sender en ontvanger
USB NEC infrarooi sender en ontvanger

Hierdie projek is 'n uitvloeisel van 'n ander projek waaraan ek werk, en aangesien daar 'n afstandbeheer-2017-kompetisie op Instructables is, het ek gedink ek plaas hierdie projek. Dus, as u van hierdie projek hou, stem asseblief daarvoor. Dankie.

Soos u dalk weet, is ek 'n groot aanhanger van die Microchip 8-bit PIC-beheerders, sien:

Ek gebruik die JAL -programmeertaal, aangesien dit soos Pascal lyk (waarvan ek ook hou). Die JAL -samesteller en die biblioteke kan afgelaai word vanaf: https://www.justanotherlanguage.org/downloads (blaai af vir die nuutste weergawe).

Normaalweg skryf ek self alle kode om heeltemal te verstaan wat ek doen, maar vir hierdie projek moes ek die PIC aan die USB -poort van die rekenaar koppel, en ek het dus 'n JAL USB -seriële bestuurder vir hierdie PIC -beheerder nodig gehad. Ek het die USB -reeksbestuurder in die JAL -aflaai -pakket gebruik, wat blykbaar goed werk. Aangesien hierdie USB -reeksbestuurder vir 'n spesifieke PIC geskryf is, het ek die PIC, die PIC18F14K50, gebruik. Hierdie kontroleerder het baie meer funksies as wat ek nodig het vir hierdie projek, so ek is tans besig om hierdie USB -bestuurder te laat werk aan 'n eenvoudiger PIC -weergawe, die PIC16F1455, wat ook goedkoper is.

So waaroor gaan hierdie projek? Met die toestel wat in hierdie instruksies genoem word, kan u die opdragte van en na u rekenaar via die USB-poort stuur en ontvang met behulp van die gewilde NEC Infra-Red-protokol. Op hierdie manier kan u Infra-Red-opdragte monitor en kan u enige toestel wat die NEC Infra-Red Remote Control-protokol gebruik, beheer. Die projek ontsyfer en vertaal infra-rooi boodskappe in 'n adresbyte en 'n opdragbyte of in 'n herhaalde boodskap. Die adres word natuurlik gebruik om 'n sekere toestel soos 'n TV of 'n radio aan te spreek, waar die opdragbyte die funksie aandui, soos Volume Up, Volume Down. Behalwe vir die dekodering van hierdie boodskappe, kan dit ook via hierdie toestel via Infra-Red oorgedra word.

Stap 1: 'n bietjie inligting oor die NEC infrarooi protokol

Enkele inligting oor die NEC Infra-Red Protocol
Enkele inligting oor die NEC Infra-Red Protocol

'N Kort inleiding tot hierdie protokol. Die NEC Infra Red Remote Control -protokol word gebruik op baie toestelle en afstandsbedienings wat u kan koop. Dit moduleer 'n infrarooi sein op 'n draer van 38 kHz en gebruik polsafstandkodering vir die kodering van 'n logiese '1' en 'n logiese '0'. Die protokol gebruik 'n eenvoudige kontrole om te sien of die boodskap in orde is deur beide die adres en die opdragbyte en 'n omgekeerde weergawe van beide in een en dieselfde boodskap te stuur en te kontroleer of dit dieselfde is na ontvangs. As 'n knoppie op die afstandsbediening ingedruk word, stuur dit 'n volledige Infra Red -boodskap met adres en opdrag een keer. Deur die knoppie ingedruk te hou, sal 'n korter herhaalboodskap sonder adres- en opdraginligting gestuur word. Die herhalingstyd van die gestuurde boodskappe terwyl die knoppie ingedruk gehou word, is vasgestel.

Meer inligting oor die NEC Infra Red-protokol kan byvoorbeeld gevind word op:

Stap 2: Vereiste komponente

Vereiste komponente
Vereiste komponente
Vereiste komponente
Vereiste komponente

U moet die volgende komponente vir hierdie projek hê:

  • PIC-mikrobeheerder PIC18F14K50, sien:
  • Kristal 12 MHz
  • Keramiek kondensator: 2 * 100nF, 1 * 220 nF, 2 * 18pF
  • Elektrolitiese kondensator 47 uF/16V
  • Infra Red Receiver TSOP4838, sien:
  • Weerstande: 2 * 33k, 1 * 4k7, 1 * 1k, 3 * 330 Ohm, 1 * 22 Ohm
  • LED's: 2 * infrarooi, 1 amber, 1 groen, 1 rooi
  • Transistor BC640, sien:
  • Trui (opsioneel)
  • USB -aansluiting

Sien die skematiese diagram oor hoe om die komponente aan te sluit. Ek het 'n broodbord vir hierdie projek gebruik, soos u kan sien op die foto en in die video. Die stroombaan kry sy krag vanaf die USB -poort van die rekenaar.

Stap 3: Die sagteware en die werking van die toestel

Soos reeds genoem, is die sagteware vir 'n PIC18F14K50 geskryf. Dit is in JAL geskryf. Die Intel Hex -lêer vir die programmering van u PIC is aangeheg. Die sagteware verrig die volgende funksies:

  • Dekodering van NEC Infra-Red boodskappe en stuur dit na die rekenaar via USB. Die boodskap word gedekodeer van die bitstroom wat deur die infrarooi ontvanger gegenereer word en vertaal word na 'n adres + opdragboodskap of 'n herhaalde boodskap.
  • Stuur NEC Infra Red -boodskappe wat vanaf die rekenaar via USB ontvang is. Let daarop dat die sagteware ook die draagfrekwensie van 38 kHz skep wat die infrarooi LED's direk dryf. Parallel met die infrarooi LED word 'n Amber LED gekoppel om die oordrag van 'n boodskap sigbaar te maak.

Standaard sal hierdie stroombaan die infrarooi ontvanger demp tydens die oordrag van 'n infrarooi boodskap. As 'n trui op die 'Unmute' -posisie geplaas word, sal hierdie dempfunksie uitgeskakel word. In so 'n geval sal die gestuurde infrarooi boodskap ook parallel met die uitsending gedekodeer word en na volledige ontvangs word dit as 'n ontvangen infrarooi boodskap na die rekenaar gestuur. As 'n geldige NEC infrarooi boodskap ontvang word, sal die rooi 'IR OK' LED brand.

Om hierdie toestel te kan gebruik, moet u 'n Terminal Emulator -program op u rekenaar hê. Ek het 'Termite' vir hierdie doel gebruik. As die toestel aan die rekenaar gekoppel is, word dit outomaties herken deur Windows 10 as 'n ekstra COM-poort, aangesien dit blykbaar 'n Microchip-bestuurder vir hierdie toestel in Windows 10 vooraf geïnstalleer is. Die instelling vir hierdie COM-poort moet wees: 19200 baud 8 bits, 1 stop-bit, geen pariteit en die gebruik van RTS/CTS vloei beheer. Die baud -tempo kan indien nodig op enige ander waarde ingestel word, sodat 'n baud -tempo van 115200 ook werk. Sodra die toestel via die USB -poort gekonfigureer is deur dit aan te sluit via die Terminal Emulator -program, brand die groen 'Configured' LED.

Ontvang infrarooi boodskappe

As 'n infrarooi boodskap ontvang word, word die volgende in die Terminal Emulator-program vertoon:

  • 'A: xx C: xx' in die geval van 'n volledige boodskap, waar xx die heksadesimale nommer van die adres (A) en die opdrag (C) is. Waardes vir albei kan wissel van 0x00 (0) tot 0xFF (255).
  • 'Herhaal' in geval van 'n herhaalde boodskap.

Stuur infrarooi boodskappe

Hiervoor moes ek 'n protokol opstel wat die toestel vertel wat om te doen. Aangesien ons 'n Terminal Emulator gebruik, het ek ASCII -karakters gebruik om 'n boodskap te definieer. Die protokol om 'n opdrag na die toestel te stuur, gebruik die volgende formaat: '! AACCRR#', waar (alle karakters nie hooflettergevoelig is nie):

  • '!' Dui die begin van die boodskap aan.
  • 'AA' is die waarde van die adres in heksadesimale notasie, so '0' tot '9' en 'A' tot 'F',
  • 'CC' is die waarde van die opdrag in heksadesimale notasie, so '0' tot '9' en 'A' tot 'F'
  • 'RR' is die aantal herhaalde boodskappe wat in heksadesimale notasie oorgedra moet word, dus '0' na '9' en 'A' na 'F'. 'N Waarde van' 00 'beteken dat geen herhaalde boodskap gestuur word nie.

'N Voorbeeld van 'n boodskap met adres 0x07, opdrag 0x05 en 3 herhalings moet dan soos volg getik word op die Terminal Emulator -program:! 070503#

Die toestel het verskillende reaksies nadat 'n opdrag vanaf die rekenaar gestuur is:

  • 'Y' beteken dat 'n boodskap oorgedra is. Let daarop dat hierdie antwoord gegee word nadat alle boodskappe - insluitend alle herhalings - oorgedra is, sodat dit 'n geruime tyd kan neem voordat hierdie antwoord gegee word wanneer baie herhaalde boodskappe oorgedra moet word.
  • 'N' beteken dat daar 'n onwettige karakter was in die boodskap wat na die rekenaar gestuur is.
  • 'B' beteken dat 'n infrarooi transmissie nog besig was toe die opdrag gegee is.
  • ? 'Beteken dat die toestel'! 'Verwag het, maar dat dit iets anders ontvang het.

Stap 4:

Ek het 'n kort video gemaak van die toestel in aksie. Vir hierdie video gebruik ek 'n kommersiële LED -lamp met sy afstandsbediening om te sien dat beide die transmissie en ontvangs werk. Die video wys die volgende:

  • Stel die USB -toestel op vanaf die Terminal Emulation -program. As die toestel gekonfigureer is, reageer dit met die boodskap 'USB NEC Infra Red Transmitter and Receiver'. Op die toestel is die groen LED aangeskakel wat wys dat die toestel deur die rekenaar gekonfigureer is.
  • Die lamp word aangeskakel met die afstandsbediening. Hiervoor gebruik die afstandbeheer adres 0x00 en opdrag 0x07 wat deur die toestel gedekodeer word en op die rekenaar gewys word.
  • Die lamp word met die afstandsbediening afgeskakel. Hiervoor gebruik die afstandbeheer adres 0x00 en opdrag 0x06 wat deur die toestel gedekodeer word en op die rekenaar gewys word.
  • Die lamp word aangeskakel deur dieselfde afstandsbediening -opdrag op die rekenaar te tik met 'n herhalingswaarde van 0 (geen herhaling nie), deur '! 000700#' in te tik. Die lamp brand.
  • Verander die kleur van die lamp na blou deur adres 0x00 te gebruik en opdrag 0x0A en herhaal 0x30. Die Amber Led, wat parallel met die Infra Red LED's gekoppel is, flikker en wys die oordrag van die herhaalboodskap via Infra Red. Die getikte boodskap is '! 000A30#'.

Let daarop dat tydens die opname van hierdie video die springverbinding 'Unmute' aktief was, sodat u ook die gestuurde boodskap '! 000700#' kon sien as 'A: 00 C: 07' op die Terminal Emulation -program. In die demonstrasie van die lamp wat blou kleur, kan u ook sien dat die rooi LED brand net so lank as die geldige - herhaalde - boodskappe oorgedra word, aangesien dit parallel ontvang word met die oordrag van die herhaalde boodskappe.

Geniet u eie projek en sien uit na u reaksies. Moenie vergeet om vir hierdie projek in die Remote Control 2017 -wedstryd te stem as u daarvan hou nie. Weereens dankie.

Aanbeveel: