Orodha ya maudhui:

Udhibiti wa Kijijini cha I2C na Arduino: Hatua 8 (na Picha)
Udhibiti wa Kijijini cha I2C na Arduino: Hatua 8 (na Picha)

Video: Udhibiti wa Kijijini cha I2C na Arduino: Hatua 8 (na Picha)

Video: Udhibiti wa Kijijini cha I2C na Arduino: Hatua 8 (na Picha)
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Novemba
Anonim
Udhibiti wa kijijini wa I2C na Arduino
Udhibiti wa kijijini wa I2C na Arduino
Udhibiti wa kijijini wa I2C na Arduino
Udhibiti wa kijijini wa I2C na Arduino

Maelezo ya kwanza kuhusu jinsi ya kuunda kidhibiti cha mbali kwa kutumia I2C kwa kiolesura.

Unasemaje isiyo ya kawaida, kwa kutumia kifaa cha mtumwa cha I2C?

Ndio, kifaa cha mtumwa cha I2C.

Hii ni kwa sababu wakati sahihi wa pakiti za IR zinahitaji sana na moja Arduino ya kawaida itapambana nayo ikiwa tayari inafanya majukumu mengine mengi kwa wakati mmoja. Ni bora kusambaza mzigo wa kompyuta kwa kupeana shughuli kubwa za wasindikaji wakfu wakati wowote inapowezekana (bora bado ufanye kwenye vifaa). Kwa kuwa I2C ni njia nzuri ya mawasiliano na kumbukumbu kati ya IC, nilichagua hii kama kiolesura.

Utangulizi

Kama ilivyoelezwa hapo juu hii inaelezewa jinsi ya kudhibiti vifaa vya nyumbani kama TV, Kicheza DVD na Satelaiti n.k kutumia maktaba ya IRremote kwenye Arduino.

Inahitimisha na mfano wa kubuni kugeuza Arduino kuwa moduli ya kudhibiti kijijini ya watumwa wa I2C (pic 1 hapo juu) na mzunguko wa majaribio ya mfano (pic 2 hapo juu) na inaendelea kwa kina jinsi ya kupunguza muundo wako chini kwa vifaa vya chini vinavyohitajika ili iweze kuwa iliyoingia katika muundo mwingine. Kwa upande wangu mimi hutumia kifaa hiki kilichopachikwa kwenye kifaa cha IoT Universal cha kudhibiti kijijini kulingana na ESP8266-12E.

Ninahitaji sehemu gani?

Ili kujenga mzunguko ulioonyeshwa katika Hatua ya 1 (Transmitter IR) utahitaji sehemu zifuatazo;

  • 2 mbali vipinga 10K
  • 1 off 390R kontena
  • 1 off 33R kupinga
  • 1 off 3K8 kontena
  • 1 off Red LED
  • Punguzo 1 la IR Led TSAL6400
  • 1 mbali Transistor BC337
  • 1 off 220uF capacitor
  • 1 mbali Arduino Uno

Ili kujenga mzunguko ulioonyeshwa katika Hatua ya 4 (Mpokeaji wa IR) utahitaji sehemu zifuatazo;

  • 1 off 10K kontena
  • Punguzo 1 TSOP38328
  • 1 off 220uF capacitor
  • 1 mbali Arduino Uno

Ili kujenga mzunguko ulioonyeshwa katika Hatua ya 5 (Mzunguko wa mtihani wa Mtumwa) utahitaji sehemu zifuatazo;

  • 4 mbali 10 resistors
  • 2 off 390R kontena
  • 1 off 33R kupinga
  • 1 off 3K8 kontena
  • Punguza 2 LED Nyekundu
  • Punguzo 1 la IR Led TSAL6400
  • 1 mbali Transistor BC337
  • 1 off 220uF capacitor
  • Vifungo 2 vya SPST
  • 2 mbali Arduino Unos

Ili kujenga mzunguko ulioonyeshwa katika Hatua ya 6 (Ubunifu uliopunguzwa) utahitaji sehemu zifuatazo;

  • 3 mbali vipinga 10K
  • 1 off 270R kontena
  • 1 off 15R kupinga
  • 4 mbali vipinga 1K
  • 1 off LED Nyekundu
  • 1 off IR Led TSAL6400 au TSAL5300
  • 1 mbali Transistor BC337
  • 1 mbali 220uF capacitor electrolytic @ 6.3v
  • 1 mbali 1000uF capacitor electrolytic @ 6.3v
  • 2 mbali 0.1uF capacitors
  • 2 mbali 22pF capacitors
  • Punguzo 1 kwa 16MHz Xtal
  • Punguzo 1 ATMega328P-PU

Kumbuka: Utahitaji pia kifaa cha FTDI kupanga ATMega328P

Ninahitaji ujuzi gani?

  • Uelewa mdogo wa umeme,
  • Ujuzi wa Arduino na ni IDE,
  • Subira kidogo,
  • Uelewa fulani wa I2C utafaa (angalia hapa kwa maelezo kadhaa ya kawaida ya I2C / waya ya Maktaba).

Mada zimefunikwa

  • Muhtasari mfupi wa mzunguko,
  • Muhtasari mfupi wa programu,
  • Yaliyomo Pakiti ya I2C,
  • Kupata nambari za kudhibiti kijijini (ui32Data),
  • Jinsi ya kujaribu kifaa chako cha Mtumwa cha I2C,
  • Kupunguza muundo wako,
  • Hitimisho,
  • Marejeleo yaliyotumiwa.

Kanusho

Kama kawaida, unatumia maagizo haya kwa hatari yako mwenyewe na hayatumiki.

Hatua ya 1: Muhtasari mfupi wa Mzunguko

Muhtasari mfupi wa Mzunguko
Muhtasari mfupi wa Mzunguko

Kusudi la mzunguko ni kusambaza nambari za kudhibiti kijijini cha IR. Ubunifu ni sawa mbele na ni rahisi sana.

Wakati transistor Q1 BC337 NPN imewashwa kupitia moja ya mantiki kutoka Arduino PWM O / P D3 hadi Resistor R5, sasa hupita kupitia Leds 1 na 2. Imedhibitiwa tu na vizuizi vya ballast R3 na R4 mtawaliwa. Q1 hutumiwa kukuza kupita kwa sasa kupitia IR Diode (IF Max = 100mA) hadi ile zaidi ya kile Arduino O / P inauwezo wa usambazaji wa 40mA @ + 5v.

Capacitor C1 Electrolytic ya 220uF hutoa utulivu kadhaa kuzuia kushuka kwa reli ya usambazaji na nguvu inayotolewa na Leds 1 na 2.

Resistors R1 na R2 ni I2C ya kuvuta.

Hatua ya 2: Muhtasari mfupi wa Programu

Muhtasari mfupi wa Programu
Muhtasari mfupi wa Programu
Muhtasari mfupi wa Programu
Muhtasari mfupi wa Programu
Muhtasari mfupi wa Programu
Muhtasari mfupi wa Programu

Utangulizi

Ili kufanikiwa kukusanya nambari hii ya chanzo utahitaji maktaba ya ziada ifuatayo;

Irremote.h

  • Na: z3t0
  • Kusudi: Maktaba ya mbali ya infrared ya Arduino: tuma na upokee ishara za infrared na itifaki nyingi
  • Kutoka:

Muhtasari wa Kanuni

Kama inavyoonyeshwa kwenye picha 1 hapo juu, wakati wa kuanzisha nambari hiyo inasanidi mdhibiti mdogo wa I / O kisha anapiga kura hali ya bendera ya programu ya ndani 'bFreshDataFlag'. Wakati bendera hii imewekwa mdhibiti anasisitiza kuwa ni 'Busy' laini (kutuma pini ya data D4 chini) na kuhamia kwenye hali ya 'eBUSY' kwa amri ya kitufe cha kusoma kitufe cha waandishi wa habari uliofanyika DataArray na kutuma data ya IR iliyosimamiwa kwa IR katika Mlolongo wa maambukizi.

Mara tu data iliyoshikiliwa kwenye DataArray imeshatumwa kikamilifu, hali ya 'eIDLE' itaanza tena na laini ya 'Busy' imedhibitishwa (kutuma pini ya data D4 juu). Kifaa sasa iko tayari kupokea vitufe zaidi vya kuashiria mwisho wa mlolongo wa usambazaji.

Mapokezi ya data ya kitufe cha kitufe cha IR

Wakati data inatumwa kwa mtawala wa kijijini wa InfraRed kupitia I2C husababisha usumbufu na simu ya kazi ya kupokeaEvent () inasababishwa kwa usawa.

Mara baada ya kusababisha data iliyopokelewa ya I2C imeandikwa kwa mtiririko kwenye bafa ya 'uDataArray '.

Wakati wa upokeaji wa data, ikiwa mwisho wa mlolongo umeonyeshwa na bwana (bFreshData! = 0x00) 'bFreshDataFlag' imewekwa, na hivyo kuashiria kuanza kwa mlolongo wa usambazaji.

Picha 2… 3 toa mfano wa mlolongo wa kawaida wa pakiti.

Kumbuka: Nambari kamili ya chanzo inapatikana hapa

Hatua ya 3: Maudhui ya Pakiti ya I2C

Yaliyomo Pakiti ya I2C
Yaliyomo Pakiti ya I2C

Muundo wa pakiti ya kudhibiti iliyotumwa kwa mtumwa juu ya I2C imetolewa hapo juu kwenye picha 1 maana ya kila uwanja imepewa hapa chini

Maana ya uwanja wa pakiti ya kudhibiti

byte b Kuandika;

  • Usimbuaji wa kijijini wa IR,

    • RC6 (Anga) = 0,
    • MWANA = 1,
    • SAMSUNG = 2,
    • NEC = 3,
    • LG = 4

uint32_t ui32Data;

Uwakilishi wa hex wa mtiririko wa data ya IR ya binary 4 ka data (muda usiotiwa saini), LSByte… MSByte

byte bNumberOfBitsInTheData;

Idadi ya Bits katika data (Max ya 32). Mbalimbali = 1… 32

byte bPulseTrainRepeats;

Ni marudio ngapi ya treni hii ya kunde. Masafa = 1… 255. Kwa kawaida 2… 4 hurudia. Unaweza kutaka kupanua hii kwa amri za On / Off kwani kifaa kinachopokea wakati mwingine kinahitaji marudio kadhaa ya treni ya ziada ili kupokea ishara ya kuwasha

byte bDelayPakati paPulseTrainRepeats;

Kuchelewesha kati ya kurudia kwa treni hii ya kunde. Masafa = 1… 255mS. Kwa kawaida 22mS… 124mS

byte bButtonRudia;

Inafananisha kubonyeza kitufe kimoja mara kwa mara (lakini haiungi mkono nambari iliyobadilishwa kama kijijini cha Apple, inarudia tu nambari ya kifungo). Masafa = 1… 256. Chaguomsingi = 1

uint16_t ui16Kuchelewa Kati yaBattonRepeats;

Kuchelewesha kati ya kurudia kifungo (unsigned int). Ka 2 kwa jumla LSByte… MSByte. Masafa = 1… 65535mS. Chaguo-msingi = 0mS

byte bFreshData;

  • Takwimu mpya. Thamani isiyo ya sifuri. Imeandikwa mwisho, husababisha mlolongo wa IR TX. Masafa 0x00… 0xFF

    • Pakiti zaidi za kudhibiti zinazokuja = 0
    • Hii ni pakiti ya mwisho ya kudhibiti = Thamani isiyo ya Zero 1, 2,… 255

Kumbuka matumizi ya maagizo ya mkusanyaji ya '_packed_'. Hii ni kuhakikisha kuwa data ni pakiti byte ya baiti kwenye kumbukumbu bila kujali mfumo unaolengwa uliotumiwa (Uno, Kutokana, ESP8266 n.k.). Hii inamaanisha muungano kati ya daftariAllocationType na dataArrayType inahitaji tu saa / saa kwa mtiririko kwa ka kutoka kwenye pakiti ya kudhibiti, na kuifanya programu ya TX / RX iwe rahisi.

Hatua ya 4: Kupata Nambari za Udhibiti wa Kijijini (ui32Data)

Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)
Kupata Nambari za Udhibiti wa Kijijini (ui32Data)

Kuna njia tatu ambazo unaweza kupata nambari muhimu ya kudhibiti kijijini;

  1. Kupitia kuhesabu kidogo na oscilloscope,
  2. Itafute kwenye wavuti,
  3. Amua moja kwa moja kutoka kwa mkondo wa data katika programu.

Kupitia kuhesabu kidogo na upeo

Hii sio njia bora kwani inachukua muda mwingi na inaweza kuhitaji jaribio zaidi ya moja, hata hivyo inaweza kuwa sahihi sana. Inafaa pia katika kuithibitisha nambari zinazopatikana kwa kutumia njia 2 na 3, pia katika kuamua upendeleo wa kijijini. Kwa mfano wakati unashikilia kitufe kwenye kijijini cha Apple IR. Kijijini hapo awali kitatoa mlolongo wa amri kisha ufuate hiyo na mlolongo uliosisitizwa wa 0xF….

Itafute kwenye wavuti

Hifadhidata ya nambari ya kudhibiti kijijini kwenye wavuti ya Udhibiti wa Kijijini wa Linux ni chanzo kizuri.

Ubaya wake ni kwamba, inabidi ujaribu nambari kadhaa mpaka upate inayokufaa. Unaweza pia kulazimika kutafsiri baadhi ya viwakilishi vya nambari ili kuzibadilisha kuwa fomu yao sawa ya hex.

Amua moja kwa moja kutoka kwa mkondo wa data

Kutumia mzunguko kwenye picha 1 hapo juu kwa kushirikiana na mfano wa maktaba ya IRremote 'IRrecvDumpV2.ino' inawezekana kuamua mtiririko wa data moja kwa moja kutoka mbali. Picha ya 2 inaonyesha kijijini cha Samsung TV kilichodhibitiwa kwa kitufe cha kuwasha / kuzima kwenye dirisha la terminal la Arduino IDE.

Pamoja Mpokeaji / Mpelekaji

Picha 3 na 4 hapo juu zinaonyesha suluhisho ambayo inaruhusu kupokea na kupitisha amri ya IR kuruhusu utaftaji rahisi.

Kuamua vyombo vya habari vya kitufe cha kudhibiti kijijini utahitaji kuwasha Arduino na mfano wa 'IRrecvDumpV2.ino' ambao unakuja na maktaba ya IRremote.

Pia inafanya kazi sawa kwa usafirishaji ikiwa IR inaamuru. Uongozi nyekundu umejumuishwa kama dalili ya kuona kifaa kiko katika hatua.

Hatua ya 5: Jinsi ya Kujaribu Kifaa chako cha Mtumwa cha I2C

Jinsi ya Kujaribu Kifaa chako cha Mtumwa cha I2C
Jinsi ya Kujaribu Kifaa chako cha Mtumwa cha I2C
Jinsi ya Kujaribu Kifaa chako cha Mtumwa cha I2C
Jinsi ya Kujaribu Kifaa chako cha Mtumwa cha I2C

Kutumia nambari ya chanzo hapa, na mzunguko ulioonyeshwa hapo juu kwenye picha 1, panga programu ya 'Master' Arduino na 'IR_Remote_Sim_Test.ino' na 'Slave' Arduino na 'IR_Remote_Sim.ino'.

Kwa kudhani una Sony Bravia TV, Sky HD box na Sony BT SoundBar, bonyeza kitufe cha 1 na TV yako itabadilika kuwa BBC1 (kituo 101). Bonyeza kitufe cha 2 na bar yako ya sauti itanyamaza. Bonyeza tena na itanyamazisha.

Wakati wa utekelezaji wa mlolongo wa usafirishaji wa IR, LED3 itaangazia ikionyesha mtumwa yuko busy na LED1 itazunguka katikati na mchakato wa usafirishaji wa IR.

Kwa kweli ikiwa hauna mfumo huo wa burudani uliowekwa kama hapo juu, unaweza kupanga tena mtumwa na 'IRrecvDumpV2.ino', chagua amri zako za mbali za kupendeza, kisha uzipange kwenye 'IR_Remote_Sim_Test.ino' kwa yako mazingira yaliyopewa.

Picha ya 2 inaonyesha muhtasari wa programu ya mtihani wa kiwango cha mfumo kati ya Mwalimu na Mtumwa.

Hatua ya 6: Kupunguza Ubunifu Wako

Kupunguza Ubunifu Wako
Kupunguza Ubunifu Wako

Sawa, kwa hivyo ukidhani kuwa umefata kufuata kutegemea kwa Arduino mbili kudhibiti vifaa vyako vya nyumbani sio matumizi bora zaidi ya hisa yako ya Arduino. Kwa hivyo ikiwa utaunda mzunguko ulioonyeshwa kwenye picha hapo juu na kufuata maagizo hapa ili kupanga ATMega328P na 'IR_Remote_Sim.ino', utaweza kupunguza mfumo wote kuwa vifaa vidogo. Hii itakuruhusu kupachika muundo wako kwenye mfumo mwingine.

Hatua ya 7: Hitimisho

Hitimisho
Hitimisho
Hitimisho
Hitimisho

Suluhisho ni thabiti na inafanya kazi vizuri, imeingizwa katika mfumo mwingine kwa wiki kadhaa sasa bila maswala yoyote.

Nilichagua Arduino Uno R3 kwani nilitaka kifaa ambacho kilikuwa na RAM ya kutosha ili nipate kitufe cha kina cha busara. Nilikaa saizi ya bafa ya pakiti 20 (MAX_SEQUENCES).

Ngao ya Hybrid TX / RX niliyoifanya pia ilikuja vizuri sana wakati wa kusimbua udhibiti wa kijijini wa Sony na Sky. Ingawa lazima nikiri kutumia upeo wangu wa dijiti mara kwa mara kukagua amri ya IR iliyosimbuliwa na programu ilikuwa sawa na ile inayotokana na IR iliyopokea (TSOP38328).

Kitu pekee ambacho ningefanya tofauti ingekuwa kutumia mzunguko wa sasa wa kuendesha gari kwa IR iliyoongozwa kama ilivyoonyeshwa hapo juu kwenye picha 2.

Jambo moja zaidi la kuzingatia ni kwamba, sio vifaa vyote vya IR vinavyobadilishwa na 38KHz, TSOP38328 imeboreshwa kwa 38KHz.

Hatua ya 8: Marejeo Imetumika

IRRemote.h

  • Na: z3t0
  • Kusudi: Maktaba ya mbali ya infrared ya Arduino: tuma na upokee ishara za infrared na itifaki nyingi
  • Kutoka:

Maktaba ya mbali ya IR

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

Sensorer ya Mpokeaji wa IR (Infrared) - TSOP38238 (sawa)

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

Ili kuepusha muundo wa data kwenye mipaka ya neno

  • 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

Chanzo kizuri cha maelezo ya mbali ya IR

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

I2C

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

Hifadhidata ya Remote ya IR

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

Jedwali la BC337

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

1N4148 Takwimu

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

Takwimu za ATMega328P-PU

Ilipendekeza: