Kazalo:

UChip - Serijski prek IR!: 4 koraki
UChip - Serijski prek IR!: 4 koraki

Video: UChip - Serijski prek IR!: 4 koraki

Video: UChip - Serijski prek IR!: 4 koraki
Video: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, Julij
Anonim
UChip - Serijsko preko IR!
UChip - Serijsko preko IR!
UChip - Serijski prek IR!
UChip - Serijski prek IR!

Brezžična komunikacija je danes postala ključna značilnost naših projektov in govorimo o brezžični povezavi, kar mi najprej pade na pamet Wi-Fi ali BT, vendar ravnanje s komunikacijskimi protokoli Wi-Fi ali BT ni lahka naloga in porabi veliko virov MCU, kar pušča majhen prostor za kodiranje moje aplikacije. Zato se običajno odločim za zunanji modul Wi-Fi/BT, ki je serijsko povezan z mikrokrmilnikom, da si razdelim vloge in pridobim več svobode.

Vendar sta včasih Wi-Fi in BT "pretirani" za nekatere aplikacije, ki zahtevajo nizko bitno hitrost in kratko komunikacijsko razdaljo. Poleg tega uporaba Wi-Fi ali BT pomeni, da morate pametni telefon ali napravo povezati s pravilno avtentikacijo.

Predstavljajte si, da preprosto morate vklopiti/izklopiti zunanjo luč ali spremeniti jakost svetilke ali odpreti električna vrata. Ali bi bilo vredno uporabiti Wi-Fi ali BT?

Odvisno od okolja in aplikacij bi lahko prišla brezžična komunikacija preko IR (infrardeče) valovne dolžine. Serijski prek IR, izveden z nekaj zunanjimi komponentami (3 diskretne komponente!), In uChip (zelo majhna plošča, združljiva z Arduino), je lahko rešitev, ki ste jo iskali!

Materiali (za eno napravo Tx-Rx):

1x uChip

1 x IR LED: z emisijskim vrhom pri 950nm

1 x TSOP-38238 (enakovredno)

1 x 1KOhm upor

Strojna oprema

1 x plošča/proto plošča

1 x črna plastična cev: notranji premer enake velikosti kot IR LED, cev je potrebna za preprečevanje navzkrižnega pogovora s sprejemnikom TSOP.

1 x aluminijasta folija (3 cm x 3 cm)

1 x trak

NAMIG: Če potrebujete enosmerno komunikacijo, lahko ustvarite samo napravo TX ali samo RX, tako da odstranite nepotrebno strojno opremo RX/TX iz vezja ali omogočite/onemogočite ustrezno kodo na skici.

1. korak: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje

Sestavite komponente skupaj v skladu s shemo.

Nekaj opomb o preprosti shemi. Ker TSOP-38238 omogoča napajanje od 2,5 V do 5 V in absorbira največ 0,45 mA (podatkovni list najdete TUKAJ), bom sprejemnik napajal z dvema zatičema, ki bosta zagotovila ozemljitev in napajanje. To omogoča vklop/izklop sprejemnika na zahtevo in zelo preprosto nastavitev strojne napeljave. Poleg tega, če potrebujete enosmerno komunikacijo, lahko izberete, ali želite napravo (samo Tx/Rx), tako da preprosto onemogočite/omogočite TSOP-38238.

Kako deluje vezje?

Precej preprosto je. Izhodni zatič TSOP se potegne nizko, ko senzor zazna niz 6 impulzov ali več pri 38 KHz, po drugi strani pa visoko, ko ni takega signala. Zato za prenos serijskih podatkov po IR -ju vezje napaja LED anodo s 38KHz PWM, modulirano s serijskim signalom TX, ki potegne nizko LED katodo.

Posledično na visoki ravni serijskega TX0 LED ni pristranski ali pristranski v obratni smeri (brez impulzov) in izhodni zatič TSOP se potegne visoko. Ko oddaja nizko raven na serijski enoti, se LED napaja in ustvarja IR impulze v skladu z uporabljenim signalom PWM; zato je izhod TSOP nizek.

Ker je prenos neposreden (0-> 0 in 1-> 1), na strani sprejemnika ni potrebe po pretvornikih ali drugi logiki.

Optično izhodno moč LED uravnavam z izbiro delovnega cikla PWM glede na aplikacijo. Višji kot je obratovalni cikel, večja je optična izhodna moč, zato boste dlje prenašali svoje sporočilo.

Ne pozabite, da moramo še vedno ustvarjati impulze! Tako ne smete preseči 90 -odstotnega delovnega cikla, sicer TSOP ne zazna signala kot impulzov.

Ali potrebujete več energije?

Ali lahko za povečanje toka preprosto zmanjšamo vrednost upora 1 kOhm?

Mogoče, samo ne bodite preveč zahtevni! Največji tok, ki ga dobite z zatičem MCU, je omejen na 7 mA, ko je priključek za vrata močnejši od običajnega (PINCFG. DRVSTR = 1 in VDD> 3 V), kot je navedeno v podatkovnem listu SAMD21.

Vendar standardna konfiguracija (ki jo knjižnice Ardeino IDE sprejmejo privzeto) omejuje tok na 2 mA. Zato uporaba 1kOhm že daje trenutno omejitev s privzetimi nastavitvami!

Povečanje toka ni samo stvar električnih komponent. Na kratko:

  • Zamenjajte upor (katerega minimalna vrednost je omejena na približno 470Ohm -> VDD/470 ~ 7mA);
  • Ustrezno PORT-> PINCFG-> DRVSTR nastavite na 1;

Kodo s to funkcijo bom posredoval v prihodnji posodobitvi.

Vendar ne pozabite, da potopitev in odvajanje toka iz zatičev MCU blizu njegovih meja ni tako dober pristop. Dejansko zmanjšuje življenjsko dobo in zanesljivost MCU. Zato predlagam, da ohranite normalno moč pogona za dolgotrajno uporabo.

2. korak: Programiranje

Skico »IRSerial.ino« naložite v uChip (ali ploščo, združljivo z Arduino, ki jo uporabljate).

Če morate spremeniti pin, ki generira PWM, se prepričajte, da uporabljate pin, povezan s časovnikom TCC, saj ta različica kode deluje samo s časovniki TCC (za te informacije preverite »variant.c« na vaši plošči). Kodo bom dodal za uporabo tudi časovnikov TC v prihodnjih posodobitvah.

Koda je precej preprosta. Ko nastavite PIN_5 na nizko (zagotavlja TSOP GND) in visoko na PIN_6 (napaja TSOP), MCU zažene PWM na PIN_1, nastavi časovnik in zajem ustrezno primerja s potrebno frekvenčno modulacijo (v mojem primeru je to 38KHz) in dolžino cikla (12,5% privzeto). To se naredi z uporabo standardne funkcije analogWrite () na zatičih PWM in spreminjanjem samo registra PER_REG (obdobja) in registra CC (primerjava zajemanja) (napisana koda je preprosto izreži in prilepi iz knjižnice wiring_analog). Ustrezno frekvenco lahko nastavite tako, da senzor TSOP spremeni PER_REG (to je zgornja meja za ponastavitev števca časovnika), medtem ko CC nastavite sorazmerno z vrednostjo obdobja na želeni odstotek delovnega cikla.

Nato koda nastavi serijska vrata z uporabo pravilne hitrosti prenosa 2400 b / s. Zakaj tako nizka hitrost prenosa podatkov ?! Odgovor je v podatkovnem listu TSOP, ki ga najdete TUKAJ. Ker ima TSOP filtre z visokim zavračanjem šuma, da prepreči neželeno preklapljanje, je treba poslati niz več impulzov, da se izvleče izhodni zatič TSOP (število impulzov je odvisno od različice TSOP, 6 je tipična vrednost). Podobno se izhod TSOP potegne visoko po minimalnem času, ki ustreza 10 impulzom ali več. Zato je za nastavitev izhoda TSOP kot modulirajočega signala TX0 potrebno nastaviti hitrost prenosa ob upoštevanju naslednje enačbe:

Zaporedni baud <PWM_frequency/10

Z uporabo 38KHz to povzroči hitrost prenosa manj kot 3800bps, kar pomeni, da je višja "standardna" dovoljena hitrost prenosa 2400pbs, kot je bilo predvideno prej.

Ali želite povečati hitrost prenosa podatkov? Obstajata dve možnosti.

Najlažja možnost je spremeniti TSOP v različico z višjo frekvenco (kot TSOP38256), kar bi vam omogočilo podvojitev hitrosti prenosa (4800bps)

Ne dovolj?! Nato morate narediti lastno optično povezavo s preprosto IR LED+fotodiodo in ojačevalnim vezjem. Vendar pa ta rešitev zahteva veliko znanja o kodiranju in elektroniki, da prepreči, da bi hrup vplival na posredovane podatke, zato njeno izvajanje sploh ni enostavno! Če pa se počutite dovolj samozavestni, lahko poskusite izdelati svoj sistem TSOP!:)

Nazadnje sem nastavil vrata SerialUSB (2400bps), ki jih uporabljam za pošiljanje in sprejemanje podatkov na serijskem monitorju.

Funkcija loop () vključuje kodo, potrebno za prehod podatkov skozi dve serijski publikaciji, in se kopira neposredno iz vzorčne skice SerialPassthrough, pri čemer se spremenijo samo imena serijskih publikacij.

3. korak: Zaščitna IR LED

Zaščitna IR LED
Zaščitna IR LED
Zaščitna IR LED
Zaščitna IR LED

Če po nalaganju kode »IRSerial.ino« vklopite zgornje vezje, preverite serijski monitor v Arduino IDE in poskusite poslati niz. Verjetno boste videli, da uChip prejema točno tisto, kar oddaja! V vezju je navzkrižni pogovor zaradi optične komunikacije med IR LED in TSOP iste naprave!

Prihaja težji del tega projekta, ki preprečuje navzkrižni pogovor! Če želite vzpostaviti dvosmerno serijsko komunikacijo po IR, je treba zanko prekiniti.

Kako prekinimo zanko?

Prva možnost je, da znižate obratovalni cikel PWM in tako znižate optično moč LED. Ta pristop pa tudi zmanjša razdaljo, na kateri dobite zanesljiv serijski IR kanal. Druga možnost je zaščita IR LED in s tem usmerjen IR "žarek". Gre za poskus in napako; končno sem s kosom črne pnevmatske cevi za zrak, ovito v aluminijasto folijo in trak (zagotavlja električno izolacijo), uspel prekiniti navzkrižni pogovor. Vstavljanje oddajne IR LED v cev preprečuje komunikacijo med TX in RX iste naprave.

Oglejte si sliko, da vidite mojo rešitev, vendar vas prosimo, da preizkusite druge metode in/ali predlagate svojo! Za to težavo ni absolutne rešitve (razen če potrebujete preprost enosmerni kanal) in verjetno morate prilagoditi postavitev vezja, delovni cikel PWM in IR ščit glede na vaše potrebe.

Ko prekinete navzkrižni pogovor, lahko preverite, ali vaša naprava še vedno deluje, tako da na napravi Tx-Rx ustvarite zanko, ki izkorišča odboj valovne dolžine IR na odsevnih površinah IR.

4. korak: Komunicirajte

Komunicirajte!
Komunicirajte!
Komunicirajte!
Komunicirajte!

To je vse

Vaša serijska naprava prek IR -ja je pripravljena za komunikacijo, uporabite jih za pošiljanje podatkov prek IR -ja, vklopite/izklopite vse, kar želite, ali preverite stanje senzorja, ki ga skrivaj skrivate!

Razdalja, na kateri je komunikacija zanesljiva, ni tako velika kot pri napravah WiFi ali BT. Je pa usmerjen (odvisno od odprtine LED in izvedenega sistema IR zaščite), kar je v nekaterih aplikacijah lahko zelo uporabno!

Kmalu bom naložil video, kjer si lahko ogledate nekaj primerov aplikacij, ki sem jih naredil. Uživajte!

Priporočena: