INHOUDSOPGAWE:

UChip - Serial Over IR !: 4 stappe
UChip - Serial Over IR !: 4 stappe

Video: UChip - Serial Over IR !: 4 stappe

Video: UChip - Serial Over IR !: 4 stappe
Video: Смотрите 4, 5, 6 серии, юмористического сериала для подростков - "Хочу в Париж". 2024, November
Anonim
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!

Draadlose kommunikasie het deesdae 'n belangrike kenmerk geword in ons projekte en oor draadloos gepraat, die eerste ding wat ek in gedagte hou is Wi-Fi of BT, maar die hantering van die Wi-Fi- of BT-kommunikasieprotokolle is nie 'n maklike taak nie en verg baie van MCU -hulpbronne, wat min ruimte laat vir die kodering van my aansoek. Daarom kies ek gewoonlik vir 'n eksterne Wi-Fi/BT-module wat serieel aan die mikrobeheerder gekoppel is om die rolle te verdeel en groter vryheid te verkry.

Soms is Wi-Fi en BT egter "te veel" vir sommige toepassings wat 'n lae bitrate en kort kommunikasie-afstand vereis. Verder impliseer die gebruik van Wi-Fi of BT die noodsaaklikheid om u slimfoon of toestel met die regte verifikasie te verbind.

Stel jou voor dat jy eenvoudig 'n eksterne lig moet aan/uit skakel, die lampintensiteit moet verander, of 'n elektriese hek moet oopmaak. Is dit die moeite werd om Wi-Fi of BT te gebruik?

Afhangende van die omgewing en toepassings, kan draadlose kommunikasie oor IR (infrarooi) golflengte handig wees. 'N Seriële oor IR, geïmplementeer met min eksterne komponente (3 diskrete komponente!), En uChip ('n baie klein Arduino -versoenbare bord) kan die oplossing wees waarna u gesoek het!

Materiaalsak (vir een Tx-Rx-toestel):

1 x uChip

1 x IR -LED: met 'n emissiepiek van 950 nm

1 x TSOP-38238 (van ekwivalent)

1 x 1KOhm weerstand

Hardeware

1 x broodbord/protobord

1 x swart plastiekbuis: binnediameter dieselfde grootte as die IR-LED, die buis is nodig om kruisgesprek met die TSOP-ontvanger te voorkom.

1 x aluminiumfoelie (3 cm x 3 cm)

1 x band

WENK: U kan 'n slegs-TX- of slegs-RX-toestel maak as u eenrigtingkommunikasie benodig deur die onnodige RX/TX-hardeware uit die kring te verwyder of die verwante kode in die skets in/uit te skakel.

Stap 1: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Verbind die komponente dienooreenkomstig volgens die skema.

'N Paar aantekeninge oor die eenvoudige skema. Aangesien die TSOP-38238 'n kragtoevoer van 2,5V tot 5V toelaat en hoogstens 0,45mA absorbeer (u vind die datablad HIER), sal ek die ontvanger met twee penne aanstuur, wat onderskeidelik grond- en kragtoevoer bied. Dit laat die ontvanger op aanvraag in/uit en 'n baie eenvoudige opstelling van hardeware -bedrading. Verder, as u 'n eenrigtingkommunikasie benodig, kan u kies of u 'n (Tx/Rx) -apparaat wil maak deur eenvoudig die TSOP-38238 uit te skakel/in te skakel.

Hoe werk die kring?

Dit is redelik eenvoudig. Die TSOP -uitsetpen word laag getrek as die sensor 'n trein van 6 pulse of meer by 38KHz opspoor, aan die ander kant word dit hoog getrek as daar nie so 'n sein is nie. Om die seriële data oor IR te stuur, is die stroombaan die LED -anode aan te dryf met 'n 38KHz PWM gemoduleer met die TX -seriële sein wat die LED -katode laag trek.

Gevolglik, op 'n hoë vlak van die seriële TX0, is die LED nie bevooroordeeld of agteruit (sonder pulse) en word die TSOP -uitsetpen hoog getrek. Deur 'n lae vlak op die reeks te stuur, word die LED aangedryf en genereer IR -pulse ooreenkomstig die toegepaste PWM -sein; daarom word die TSOP -uitset laag getrek.

Aangesien die transmissie direk is (0-> 0 en 1-> 1), is omvormers of ander logika aan die ontvangerkant nie nodig nie.

Ek reguleer die LED -optiese uitsetvermoë deur die PWM -dienssiklus ooreenkomstig die toepassing te kies. Hoe hoër die dienssiklus, hoe hoër is die optiese uitsetvermoë, en hoe verder sal u u boodskap oordra.

Hou in gedagte dat ons nog steeds pulse moet genereer! U moet dus nie die 90% -siklus bereik nie, anders sal die TSOP die sein nie as pulse opspoor nie.

Het u meer krag nodig?

Kan ons die waarde van die 1kOhm -weerstand eenvoudig verminder om die stroom te verhoog?

Miskien, moenie te veeleisend wees nie! Die maksimum stroom wat u uit 'n pen van die MCU kry, is beperk tot 7mA as u die poortpen sterker as normaal ry (PINCFG. DRVSTR = 1 en VDD> 3V) soos aangedui in die SAMD21 -datablad.

Die standaardkonfigurasie (wat die standaard is wat deur die Arduino IDE -biblioteke aangeneem word) beperk egter die stroom tot 2mA. Daarom gee die gebruik van 1kOhm reeds die huidige limiet met die standaardinstellings!

Die verhoging van die stroom is nie net 'n kwessie van elektriese komponente nie. Kortliks:

  • Verander die weerstand (waarvan die minimum waarde beperk is tot ongeveer 470Ohm -> VDD/470 ~ 7mA);
  • Stel die ooreenstemmende PORT-> PINCFG-> DRVSTR op 1;

Ek sal die kode, insluitend hierdie funksie, in 'n toekomstige opdatering verskaf.

Maar onthou, dit is nie so 'n goeie benadering om die stroom van MCU -penne naby sy perke te sink en af te trek nie. Dit verlaag inderdaad die MCU se leeftyd en betroubaarheid. Daarom stel ek voor dat u die normale dryfkrag behou vir langdurige gebruik.

Stap 2: Programmering

Laai die skets "IRSerial.ino" in uChip (of die Arduino -versoenbare bord wat u gebruik).

As u die pen wat die PWM genereer, moet verander, maak seker dat u 'n speld gebruik wat aan 'n TCC -timer gekoppel is, aangesien hierdie weergawe van die kode slegs met TCC -timers werk (kyk na die 'variant.c' van u bord vir hierdie inligting). Ek sal die kode byvoeg om ook TC -timers te gebruik in toekomstige opdaterings.

Die kode is redelik eenvoudig. Nadat die PIN_5 laag is (bied TSOP GND) en PIN_6 hoog (die TSOP aangeskakel), begin die MCU die PWM op PIN_1, stel die tydsduur en opname in ooreenstemming met die nodige frekwensiemodulasie (in my geval is dit 38KHz) en diens siklus (12,5% as standaard). Dit word gedoen deur gebruik te maak van die standaard analogWrite () -funksie op PWM-penne en slegs die PER_REG (perioderegister) en die CC (opname vergelyk) register te verander (die geskrewe kode is eenvoudig 'n knip-en-plak-uit die wiring_analog-biblioteek). U kan die nodige frekwensie dienooreenkomstig instel deurdat die TSOP -sensor PER_REG verander (wat die boonste grens is om die tydteller terug te stel), terwyl CC proporsioneel ingestel is op die periodewaarde tot die gewenste persentasie van die dienssiklus.

Vervolgens stel die kode die seriële poort in met die korrekte baud -tempo wat 2400bps is. Waarom so 'n lae baud -koers ?! Die antwoord is in die TSOP -datablad wat u HIER kan vind. Aangesien die TSOP filters vir hoë ruisverwerping bevat om ongewenste oorskakeling te voorkom, is dit nodig om 'n trein met veelvoudige pulse te stuur om die TSOP -uitvoerpen af te trek (die aantal pulse hang af van die TSOP -weergawe, 6 is die tipiese waarde). Net so word die TSOP -uitset hoog getrek na 'n minimum tyd gelykstaande aan 10 pulse of meer. Om die TSOP -uitset as die modulerende TX0 -sein in te stel, is dit dus nodig om die baud -tempo in te stel met inagneming van die volgende vergelyking:

Seriële baud <PWM_frekwensie/10

As u 38KHz gebruik, lei dit tot 'n baudrate laer as 3800bps, wat beteken dat die hoër "standaard" toegelate baud rate 2400pbs is, soos voorheen verwag.

Wil u die baud -koers verhoog? Daar is twee opsies.

Die maklikste opsie is om die TSOP in 'n hoër frekwensie te verander (soos die TSOP38256), waardeur u die baud -tempo (4800bps) kan verdubbel

Nie genoeg?! Dan moet u u eie optiese skakel maak met behulp van 'n eenvoudige IR LED+fotodiode en versterkingskringe. Hierdie oplossing verg egter baie kodering- en elektronika -kundigheid om te voorkom dat geraas die oordraagde data beïnvloed, en daarom is die implementering daarvan glad nie maklik nie! As u egter selfversekerd voel, is u meer as welkom om u eie TSOP -stelsel te probeer maak!:)

Uiteindelik stel ek die SerialUSB -poort (2400bps) in wat ek gebruik om data op die seriële monitor te stuur en te ontvang.

Die lus () -funksie bevat die kode wat nodig is om data oor die twee reekse deur te voer en word direk gekopieer vanaf die voorbeeldskets SerialPassthrough wat slegs die reeksname verander.

Stap 3: Afskerming van IR LED

Beskermende IR LED
Beskermende IR LED
Beskermende IR LED
Beskermende IR LED

As u die bogenoemde stroombane aanskakel nadat u die "IRSerial.ino" -kode gelaai het, kyk na die Serial Monitor op Arduino IDE en probeer om 'n string te stuur. U sal waarskynlik sien dat uChip presies ontvang wat dit stuur! Daar is 'n kruispraat in die stroombane as gevolg van optiese kommunikasie tussen die IR-LED en die TSOP van dieselfde toestel!

Hier kom die moeilike deel van hierdie projek, om kruispraatjies te voorkom! Die lus moet gebreek word om tweetalige seriële kommunikasie oor IR te maak.

Hoe breek ons die lus?

Eerste opsie, u verlaag die PWM -dienssiklus en verlaag sodoende die optiese kraguitset van die LED. Hierdie benadering verminder egter ook die afstand waaroor u 'n betroubare seriële IR -kanaal kry. Die tweede opsie is om die IR -LED te beskerm en sodoende 'n rigting -IR -balk te maak. Dit is 'n kwessie van probeer en fout; Uiteindelik het ek met 'n stuk swart pneumatiese lugslang toegedraai in aluminiumfoelie en band (wat elektriese isolasie bied) daarin geslaag om die kruispraat te verbreek. Deur die oordragende IR -LED in die buis te plaas, word kommunikasie tussen die TX en RX van dieselfde toestel verhoed.

Kyk na die prentjie om my oplossing te sien, maar probeer gerus ander metodes en/of stel u eie voor! Daar is geen absolute oplossing vir hierdie probleem nie (tensy u 'n eenvoudige eenrigtingkanaal nodig het), en u moet waarskynlik die stroombaanuitleg, PWM-dienssiklus en IR-skerm daarvolgens aanpas by u behoeftes.

Sodra u die gesprek onderbreek het, kan u verifieer dat u toestel nog steeds werk deur 'n lus op die toestel Tx-Rx te maak deur die weerkaatsing van die IR-golflengte op IR-weerkaatsende oppervlaktes te benut.

Stap 4: Kommunikeer

Kommunikeer!
Kommunikeer!
Kommunikeer!
Kommunikeer!

Dit is al

U seriële via IR -toestel is gereed om te kommunikeer, gebruik dit om data oor IR te stuur, alles wat u wil aanskakel/aanskakel of kyk na die status van 'n sensor wat u in die geheim verberg!

Die afstand waarop die kommunikasie betroubaar is, is nie soveel as vir 'n WiFi- of BT -toestel nie. Dit is egter rigtinggewend (afhangende van die LED -diafragma en die geïmplementeerde IR -afskermstelsel), wat in sommige toepassings baie nuttig kan wees!

Ek sal binnekort 'n video oplaai waar u 'n paar voorbeelde kan sien van die toepassings wat ek gemaak het. Geniet dit!

Aanbeveel: