Cov txheej txheem:

I2C InfraRed Chaw Taws Teeb Nrog Arduino: 8 Kauj Ruam (nrog Duab)
I2C InfraRed Chaw Taws Teeb Nrog Arduino: 8 Kauj Ruam (nrog Duab)

Video: I2C InfraRed Chaw Taws Teeb Nrog Arduino: 8 Kauj Ruam (nrog Duab)

Video: I2C InfraRed Chaw Taws Teeb Nrog Arduino: 8 Kauj Ruam (nrog Duab)
Video: Using LM393 IR Module as DC Motor Speed Sensor with Arduino 2024, Lub Xya hli ntuj
Anonim
I2C InfraRed Chaw Taws Teeb Nrog Arduino
I2C InfraRed Chaw Taws Teeb Nrog Arduino
I2C InfraRed Chaw Taws Teeb Nrog Arduino
I2C InfraRed Chaw Taws Teeb Nrog Arduino

PreambleThis Qhia paub cov ntsiab lus yuav ua li cas thiaj tsim tau lub chaw taws teeb tswj thoob ntiaj teb siv I2C rau lub interface.

Koj hais txawv li cas, siv I2C qhev ntaus ntawv?

Yog, I2C qhev ntaus ntawv.

Qhov no vim tias lub sijhawm raug ntawm IR pob ntawv yog qhov xav tau heev thiab ib qho piv txwv Arduino yuav tawm tsam nrog yog tias nws twb tau ua tiav ntau lwm yam haujlwm nyob rau tib lub sijhawm. Nws yog qhov zoo dua los faib cov lej suav los ntawm kev teem sijhawm ua haujlwm hnyav rau cov txheej txheem tshwj xeeb thaum twg ua tau (zoo dua tseem ua nws hauv kho vajtse). Muab I2C yog cov ntaub ntawv teev tseg zoo thiab muaj kev sib txuas lus zoo ntawm ICs, Kuv tau xaiv qhov no los ua kev sib tham.

Taw qhia

Raws li tau hais los saum no cov lus qhia piav qhia yuav ua li cas tswj cov cuab yeej siv hauv tsev xws li TV, DVD player thiab Satellite thiab lwm yam siv IRremote lub tsev qiv ntawv ntawm Arduino.

Nws xaus nrog cov qauv piv txwv tig Arduino rau hauv I2C qhev tswj chaw taws teeb tswj (duab 1 saum toj no) nrog cov qauv kev sim ua ntu zus (daim duab 2 saum toj no) thiab txuas ntxiv mus kom ntxaws ntxaws li cas koj tsim los rau yam tsawg kawg ntawm cov khoom tsim nyog yog li nws tuaj yeem ua tau kos rau lwm qhov tsim. Hauv kuv qhov xwm txheej kuv siv cov cuab yeej kos hauv IoT Universal cov chaw taws teeb tswj raws li ib puag ncig ESP8266-12E.

Yam twg kuv xav tau?

Txhawm rau tsim cov kab lus piav qhia hauv Kauj Ruam 1 (IR Transmitter) koj yuav xav tau cov hauv qab no;

  • 2 tawm 10K resistors
  • 1 tawm ntawm 390R resistor
  • 1 tawm ntawm 33R resistor
  • 1 tawm ntawm 3K8 resistor
  • 1 tawm Red LED
  • 1 tawm IR Led TSAL6400
  • 1 tawm Transistor BC337
  • 1 tawm 220uF capacitor
  • 1 tawm ntawm Arduino Uno

Txhawm rau tsim cov kab lus piav qhia hauv Kauj Ruam 4 (Tus Txais IR) koj yuav xav tau cov hauv qab no;

  • 1 tawm 10K resistor
  • 1 off TSOP38328
  • 1 tawm 220uF capacitor
  • 1 tawm ntawm Arduino Uno

Txhawm rau tsim cov phiaj xwm hluav taws xob tau piav qhia hauv Kauj Ruam 5 (Qhib kev ntsuas Circuit) koj yuav xav tau cov hauv qab no;

  • 4 tawm 10K resistors
  • 2 tawm 390R resistor
  • 1 tawm ntawm 33R resistor
  • 1 tawm ntawm 3K8 resistor
  • 2 tawm Red LED
  • 1 tawm IR Led TSAL6400
  • 1 tawm Transistor BC337
  • 1 tawm 220uF capacitor
  • 2 tawm SPST Nyees khawm
  • 2 tawm ntawm Arduino Unos

Txhawm rau tsim cov phiaj xwm hluav taws xob tau piav qhia hauv Kauj Ruam 6 (Shrunk design) koj yuav xav tau cov hauv qab no;

  • 3 tawm 10K resistors
  • 1 tawm ntawm 270R resistor
  • 1 tawm ntawm 15R resistor
  • 4 tawm ntawm 1K resistors
  • 1 tawm Red LED
  • 1 tawm IR Led TSAL6400 lossis TSAL5300
  • 1 tawm ntawm Transistor BC337
  • 1 tawm 220uF capacitor electrolytic @ 6.3v
  • 1 tawm 1000uF capacitor electrolytic @ 6.3v
  • 2 tawm 0.1uF capacitors
  • 2 tawm 22pF capacitors
  • 1 tawm ntawm 16MHz Xtal
  • 1 tawm ntawm ATMega328P-PU

Nco tseg: Koj tseem yuav xav tau FTDI ntaus ntawv los teeb tsa ATMega328P

Kuv xav tau txuj ci dab tsi?

  • Tsawg me ntsis ntawm cov khoom siv hluav taws xob,
  • Paub txog Arduino thiab nws yog IDE,
  • Ua siab ntev me ntsis,
  • Qee qhov kev nkag siab ntawm I2C yuav muaj txiaj ntsig (saib ntawm no rau qee qhov I2C/Wire Library cov ntsiab lus dav dav).

Cov ncauj lus npog

  • Cov lus qhia luv luv ntawm Circuit Court,
  • Cov ntsiab lus luv luv ntawm software,
  • Cov ntsiab lus pob I2C,
  • Tau txais cov lej tswj chaw taws teeb (ui32Data),
  • Yuav ntsuas koj li I2C Slave device li cas,
  • Shrinking koj tsim,
  • Xaus,
  • Cov ntaub ntawv siv.

Tsis lees paub

Raws li ib txwm, koj siv cov lus qhia no ntawm koj tus kheej txoj kev pheej hmoo thiab lawv tuaj tsis raug txhawb nqa.

Kauj Ruam 1: Cov Lus Qhia luv luv ntawm Circuit

Luv luv Txheej Txheem ntawm Circuit
Luv luv Txheej Txheem ntawm Circuit

Lub hom phiaj ntawm Circuit yog xa IR cov chaw taws teeb tswj cov lej. Nws tsim yog ncaj ncaj rau pem hauv ntej thiab yooj yim heev.

Thaum transistor Q1 BC337 NPN tau qhib los ntawm cov laj thawj los ntawm Arduino PWM O/P D3 rau Resistor R5, tam sim no dhau los ntawm Leds 1 thiab 2. Txwv tsuas yog los ntawm ballast resistors R3 thiab R4 feem. Q1 tau siv los txhawb qhov tam sim no dhau los ntawm IR Diode (IF Max = 100mA) mus rau qhov ntawd ntau tshaj qhov Arduino O/P muaj peev xwm ~ 40mA @ +5v mov.

Capacitor C1 a 220uF Electrolytic muab qee qhov ruaj khov tiv thaiv txoj kev tsheb nqaj hlau poob los ntawm lub zog rub los ntawm Leds 1 thiab 2.

Resistors R1 thiab R2 yog I2C rub nce.

Kauj Ruam 2: Txheej txheem cej luam ntawm Software

Luv luv Txheej Txheem ntawm Software
Luv luv Txheej Txheem ntawm Software
Luv luv Txheej Txheem ntawm Software
Luv luv Txheej Txheem ntawm Software
Luv luv Txheej Txheem ntawm Software
Luv luv Txheej Txheem ntawm Software

Zaj lus piv txwv

Txhawm rau ua tiav cov ntaub ntawv no koj yuav xav tau cov tsev qiv ntawv ntxiv hauv qab no;

IRremote.h

  • Ua: z3t0
  • Lub Hom Phiaj: Lub tsev qiv ntawv nyob deb deb rau Arduino: xa thiab tau txais cov teeb liab infrared nrog ntau txoj cai
  • Los ntawm:

Txoj Cai Txheej Txheem

Raws li tau hais hauv daim duab 1 saum toj no, thaum pib ua txoj cai teeb tsa lub micro-controller I/O ces xaiv qhov xwm txheej ntawm sab hauv software chij 'bFreshDataFlag'. Thaum tus chij no tau teeb tsa tus tswj hwm lees paub tias nws 'Busy' kab (xa cov ntaub ntawv tus lej D4 qis) thiab txav mus rau 'eBUSY' lub xeev xwm txheej nyeem ntawv khawm nias cov lus txib nyob hauv uDataArray thiab xa IR hloov cov ntaub ntawv mus rau IR LED hauv ntu sib kis.

Thaum cov ntaub ntawv tuav hauv uDataArray tau xa tag, 'eIDLE' lub xeev tau rov pib dua thiab kab 'Busy' tau lees paub (xa cov ntaub ntawv pin D4 siab). Cov cuab yeej tam sim no tau npaj kom tau txais ntau lub khawm nias cim rau qhov kawg ntawm kev sib kis ua ntu zus.

Txais tos ntawm IR khawm nias cov ntaub ntawv

Thaum cov ntaub ntawv raug xa mus rau InfraRed cov chaw taws teeb tswj ntawm I2C nws ua rau muaj kev cuam tshuam thiab cov txaisEvent () kev ua haujlwm hu tau ua rau tsis sib xws.

Thaum ua tiav qhov tau txais I2C cov ntaub ntawv tau sau ua ntu zus mus rau qhov tsis 'uDataArray '.

Thaum lub sijhawm txais cov ntaub ntawv, yog tias qhov kawg ntawm ntu tau qhia los ntawm tus tswv (bFreshData! = 0x00) qhov 'bFreshDataFlag' tau teeb tsa, yog li qhia txog qhov pib ntawm kev sib kis sib kis.

Cov duab 2… 3 muab piv txwv ntawm cov ntawv ntim ib txwm muaj.

Nco tseg: Tag nrho cov cai muaj nyob ntawm no

Kauj Ruam 3: Cov ntsiab lus pob I2C

Cov ntsiab lus pob I2C
Cov ntsiab lus pob I2C

Hom kev tswj hwm pob ntawv xa mus rau tus qhev dhau I2C tau muab rau saum toj no hauv daim duab 1 lub ntsiab lus ntawm txhua daim teb tau muab hauv qab no

Lub ntsiab lus ntawm cov tswj pob ntawv teb

byte bEncoding;

  • IR chaw taws teeb tswj kev tswj hwm,

    • RC6 (Ntuj) = 0,
    • SONY = 1,
    • SAMSUNG = 2,
    • NCO = 3,
    • LGJ = 4

uint32_t ui32Data;

Cov sawv cev hex ntawm binary IR cov ntaub ntawv kwj 4 Cov ntaub ntawv bytes (tsis kos npe ntev), LSByte… MSByte

byte bNumberOfBitsInTheData;

Tus naj npawb ntawm cov khoom hauv cov ntaub ntawv (Max ntawm 32). Khwv = 1… 32

byte bPulseTrainRepeats;

Muaj pes tsawg tus neeg rov ua dua ntawm lub tsheb ciav hlau no. Khwv = 1… 255. Feem ntau 2… 4 rov ua dua. Koj yuav xav txuas ntxiv qhov no rau On/Off cov lus txib raws li cov khoom siv tau txais qee zaum yuav tsum tau siv ob peb lub tsheb ciav hlau txuas ntxiv kom rov tau txais lub teeb liab tig

byte bDelayBetweenPulseTrainRepeats;

Ncua nruab nrab ntawm kev rov ua dua ntawm lub tsheb ciav hlau no. Ntau = 1… 255mS. Piv txwv li 22mS… 124mS

byte bButtonRepeats;

Simulates rov ua dua ntawm tib lub khawm (tab sis tsis txhawb nqa txoj cai hloov pauv zoo li Apple chaw taws teeb, nws tsuas yog rov ua dua lub pob khawm). Ntau yam = 1… 256. Default = 1

uint16_t ui16DelayBetweenButtonRepeats;

Ncua nruab nrab ntawm khawm rov ua dua (tsis tau kos npe). 2 bytes hauv LSByte tag nrho… MSByte. Ntau = 1… 65535mS. Default = 0mS

byte bFreshData;

  • Cov ntaub ntawv tshiab. Tus nqi xoom. Sau qhov kawg, ua rau IR TX ntu. Khwv 0x00… 0xFF

    • Ntau pob ntawv tswj kom tuaj = 0
    • Nov yog qhov kawg tswj hwm pob = Tsis-Xoom tus nqi 1, 2,… 255

Nco tseg qhov kev siv '_packed_' compiler directive. Qhov no yog txhawm rau txheeb xyuas cov ntaub ntawv yog pob ntawv byte rau byte hauv kev nco tsis hais txog lub hom phiaj siv (Uno, Due, ESP8266 thiab lwm yam). Qhov no txhais tau tias yog kev sib koom ua ke ntawm registerAllocationType thiab dataArrayType xav tau tsuas yog teev ua ntu zus/teev hauv bytes los ntawm pob ntawv tswj, ua rau TX/RX software yooj yim.

Kauj Ruam 4: Tau Txais Cov Cai Tswj Chaw Taws Teeb (ui32Data)

Tau Txais Cov Cai Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Cai Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Chaw Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Chaw Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Chaw Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Chaw Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Cai Tswj Chaw Taws Teeb (ui32Data)
Tau Txais Cov Cai Tswj Chaw Taws Teeb (ui32Data)

Muaj peb txoj hauv kev uas koj tuaj yeem tau txais cov cai tswj hwm cov chaw taws teeb;

  1. Ntawm me ntsis suav nrog oscilloscope,
  2. Saib nws ntawm lub vev xaib,
  3. Txiav txim siab nws ncaj qha los ntawm cov ntaub ntawv ntws hauv software.

Ntawm kev suav me ntsis nrog qhov dav

Qhov no tsis yog txoj hauv kev muaj txiaj ntsig vim nws siv sijhawm me ntsis thiab muaj peev xwm xav tau ntau dua ib qho kev sim, txawm li cas los xij nws tuaj yeem raug qhov tseeb. Nws kuj tseem muaj txiaj ntsig hauv kev pom tseeb cov lej tau txais siv txoj hauv kev 2 thiab 3, kuj tseem txiav txim siab ib qho tshwj xeeb ntawm cov chaw taws teeb. Los ntawm txoj kev piv txwv thaum tuav lub pob ntawm Apple IR chaw taws teeb. Cov chaw taws teeb yuav pib teeb tsa cov lus txib ua raws tom qab ntawd nrog rov ua ntu ntu ntawm 0xF….

Saib nws ntawm lub vev xaib

Cov chaw tswj hwm cov chaw taws teeb ntawm Linux Infrared Remote Control lub vev xaib yog qhov chaw zoo.

Qhov tsis zoo, txawm li cas los xij, koj yuav tsum tau sim ob peb tus lej kom txog thaum koj pom ib qho uas ua haujlwm rau koj. Koj kuj tseem yuav tau txhais qee qhov sawv cev ntawm cov lej los hloov pauv lawv mus rau lawv daim ntawv sib npaug hex.

Txiav txim siab nws ncaj qha los ntawm cov ntaub ntawv kwj

Siv lub voj voog hauv daim duab 1 saum toj no ua ke nrog IRremote lub tsev qiv ntawv piv txwv 'IRrecvDumpV2.ino' nws tuaj yeem txiav txim siab cov ntaub ntawv kwj ncaj qha los ntawm cov chaw taws teeb. Daim duab 2 qhia txog kev txiav txim siab Samsung TV chaw taws teeb rau qhib/kaw khawm hauv Arduino IDE lub davhlau ya nyob twg qhov rai.

Ua ke Receiver/Transmitter

Cov duab 3 thiab 4 saum toj no piav qhia qhov kev daws teeb meem uas tso cai rau txais tos thiab xa IR cov lus txib kom tso cai rau ua qauv yooj yim.

Txhawm rau txiav txim siab IR chaw taws teeb tswj lub pob nyem koj yuav xav tau nyem Arduino nrog 'IRrecvDumpV2.ino' piv txwv uas tuaj nrog IRremote lub tsev qiv ntawv.

Nws kuj tseem ua haujlwm zoo sib xws rau kev xa xov yog IR cov lus txib. Ib lub teeb liab tau suav nrog ua qhov pom tau hais tias lub cuab yeej ua haujlwm.

Kauj Ruam 5: Yuav Ntsuas Koj Li I2C Slave Device li cas

Yuav Ntsuas Koj Li I2C Tus Qhev Li Cas
Yuav Ntsuas Koj Li I2C Tus Qhev Li Cas
Yuav Ntsuas Koj Li I2C Tus Qhev Li Cas
Yuav Ntsuas Koj Li I2C Tus Qhev Li Cas

Siv qhov chaws nyob ntawm no, thiab cov lus piav qhia saum toj saud hauv daim duab 1, program 'Master' Arduino nrog 'IR_Remote_Sim_Test.ino' thiab 'Slave' Arduino nrog 'IR_Remote_Sim.ino'.

Piv txwv tias koj muaj Sony Bravia TV, Sky HD box thiab Sony BT SoundBar, nias lub pob 1 thiab koj lub TV yuav hloov mus rau BBC1 (channel 101). Nias lub pob 2 thiab koj lub suab nrov yuav ntsiag to. Nias dua thiab nws yuav tsis hais tawm.

Thaum lub sijhawm ua tiav ntawm IR kis ntu ntu LED3 yuav pom kev qhia tias tus qhev tsis khoom thiab LED1 yuav flicker inline nrog IR cov txheej txheem xa mus.

Yog lawm yog tias koj tsis muaj qhov kev lom zem tib yam teeb tsa zoo li saum toj no, koj tuaj yeem rov ua haujlwm qhev nrog 'IRrecvDumpV2.ino', txiav txim siab koj cov lus txib nyob deb ntawm kev txaus siab, tom qab ntawd teeb tsa lawv mus rau hauv 'IR_Remote_Sim_Test.ino' rau koj muab scenario.

Daim duab 2 qhia txog cov txheej txheem ntsuas software ntsuas ntawm Master thiab Slave.

Kauj Ruam 6: Txo Koj Txoj Kev Tsim

Shrinking Koj Tsim
Shrinking Koj Tsim

Ok, yog li xav tias koj tau ua raws cov lus qhia no cia siab rau ob Arduinos los tswj hwm koj lub cuab yeej hauv tsev tsis yog qhov siv tau zoo tshaj plaws ntawm koj li Arduino Tshuag. Thiaj li yog tias koj tsim cov phiaj xwm uas tau qhia hauv daim duab saum toj no thiab ua raws cov lus qhia ntawm no txhawm rau teeb tsa ATMega328P nrog 'IR_Remote_Sim.ino', koj yuav tuaj yeem txo tag nrho cov kab ke mus rau yam tsawg kawg nkaus. Qhov no yuav tso cai rau koj los teeb tsa koj tus qauv tsim rau hauv qee qhov system.

Kauj Ruam 7: Xaus

Xaus
Xaus
Xaus
Xaus

Txoj kev daws teeb meem ruaj khov thiab ua haujlwm tau zoo, nws tau teeb tsa hauv lwm qhov system rau qee lub lis piam tam sim no yam tsis muaj teeb meem.

Kuv xaiv Arduino Uno R3 raws li kuv xav tau lub cuab yeej uas muaj RAM txaus xws li kuv tuaj yeem muaj lub khawm tsis sib haum ntawm qhov tsim nyog. Kuv txiav txim siab rau qhov me me ntawm 20 pob ntawv (MAX_SEQUENCES).

Cov ntaub thaiv npog Hybrid TX/RX Kuv tau ua kuj tseem tuaj yeem yooj yim thaum txiav txim siab Sony thiab Ntuj cov chaw taws teeb tswj. Txawm hais tias kuv yuav tsum lees paub siv kuv qhov kev siv digital los ntawm lub sijhawm los tshuaj xyuas cov software txiav txim siab IR cov lus txib yog tib yam li uas los ntawm IR tau txais (TSOP38328).

Tib qhov uas kuv yuav tau ua txawv yuav tsum tau siv qhov kev tsav tsheb tas mus li rau IR coj raws li tau hais los saum toj no hauv daim duab 2.

Ib lub ntsiab lus ntxiv uas yuav tsum nco ntsoov yog, tsis yog txhua lub IR transmitters tau hloov pauv nrog 38KHz, TSOP38328 tau ua kom zoo rau 38KHz.

Kauj Ruam 8: Cov Lus Qhia Siv

IRRemote.h

  • Ua: z3t0
  • Lub Hom Phiaj: Lub tsev qiv ntawv nyob deb deb rau Arduino: xa thiab tau txais cov teeb liab infrared nrog ntau txoj cai
  • Los ntawm:

IR Cov tsev qiv ntawv nyob deb

  • z3t0.github.io/Arduino-IRremote/
  • https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

IR (Infrared) Txais Txais Sensor - TSOP38238 (sib npaug)

https://cdn-shop.adafruit.com/datasheets/tsop382.pdf

Txhawm rau zam cov ntaub ntawv teeb tsa rau lo lus ib puag ncig

  • https://github.com/esp8266/Arduino/issues/1825
  • https://github.com/tuanpmt/esp_bridge/blob/master/modules/include/cmd.h#L15
  • https://stackoverflow.com/questions/11770451/what-is-the-meaning-of-attribute-packed-aligned4

Qhov chaw zoo ntawm IR cov ntsiab lus nyob deb

https://www.sbprojects.com/knowledge/ir/index.php

Kuv 2C

  • https://playground.arduino.cc/Main/WireLibraryDetailedReference
  • https://www.arduino.cc/en/Reference/WireSend

IR Remotes Database

  • https://www.lirc.org/
  • https://lirc-remotes.sourceforge.net/remotes-table.html

Cov Ntaub Ntawv Keeb Kwm Dav Hlau rau BC337 los ntawm Kev Tshawb Dav Dav Dav

https://www.onsemi.com/pub/Collateral/BC337-D. PDF

1N4148 Cov Ntaub Ntawv

https://www.vishay.com/docs/81857/1n4148.pdf

Pom zoo: