Obsah:

UChip - Sériové cez IR!: 4 kroky
UChip - Sériové cez IR!: 4 kroky

Video: UChip - Sériové cez IR!: 4 kroky

Video: UChip - Sériové cez IR!: 4 kroky
Video: SKR 1.4 - TMC2130 SPI 2024, November
Anonim
UChip - Sériové cez IR!
UChip - Sériové cez IR!
UChip - Sériové cez IR!
UChip - Sériové cez IR!

Bezdrôtová komunikácia sa v dnešnej dobe stala kľúčovou črtou našich projektov a keď hovoríme o bezdrôtovom pripojení, prvá vec, ktorá mi príde na myseľ, je Wi-Fi alebo BT, ale ovládanie komunikačných protokolov Wi-Fi alebo BT nie je jednoduchá úloha a spotrebuje veľa zdrojov MCU, pričom ponecháva malý priestor na kódovanie mojej aplikácie. Preto sa zvyčajne rozhodujem pre externý modul Wi-Fi/BT sériovo prepojený s mikrokontrolérom, aby som rozdelil roly a získal väčšiu voľnosť.

Wi-Fi a BT sú však niekedy „nadbytočné“pre niektoré aplikácie, ktoré vyžadujú nízky dátový tok a krátku komunikačnú vzdialenosť. Okrem toho používanie Wi-Fi alebo BT znamená nutnosť prepojenia vášho smartfónu alebo zariadenia so správnou autentifikáciou.

Predstavte si, že jednoducho musíte zapnúť/vypnúť vonkajšie svetlo alebo zmeniť intenzitu žiarovky alebo otvoriť elektrickú bránu. Oplatilo by sa používať Wi-Fi alebo BT?

V závislosti od prostredia a aplikácií môže byť užitočná bezdrôtová komunikácia cez infračervenú (infračervenú) vlnovú dĺžku. Sériové rozhranie IR, implementované s niekoľkými externými komponentmi (3 diskrétne komponenty!), A uChip (veľmi malá doska kompatibilná s Arduino) môže byť riešením, ktoré ste hľadali!

Kusovník (pre jedno zariadenie Tx-Rx):

1 x uChip

1 x IR LED: s emisným vrcholom pri 950 nm

1 x TSOP-38238 (ekvivalent)

Rezistor 1 x 1 KOhm

Hardvér

1 x doštička/proto doska

1 x čierna plastová trubica: vnútorný priemer má rovnakú veľkosť ako IR LED, je potrebná, aby sa zabránilo krížovému rozhovoru s prijímačom TSOP.

1 x hliníková fólia (3 cm x 3 cm)

1 x páska

TIP: Zariadenie typu iba TX alebo iba RX môžete vytvoriť v prípade, že potrebujete jednosmernú komunikáciu, odstránením nepotrebného hardvéru RX/TX z obvodu alebo povolením/zakázaním súvisiaceho kódu v náčrte.

Krok 1: Zapojenie

Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie

Spojte komponenty dohromady podľa schémy.

Niekoľko poznámok k jednoduchej schéme. Pretože TSOP-38238 umožňuje napájanie od 2,5 V do 5 V a absorbuje maximálne 0,45 mA (technický list nájdete TU), budem napájať prijímač pomocou dvoch pinov, ktoré budú poskytovať uzemnenie a napájanie. To umožňuje zapnúť/vypnúť prijímač na požiadanie a veľmi jednoduché nastavenie hardvérového zapojenia. Navyše, v prípade, že potrebujete jednosmernú komunikáciu, môžete si vybrať, či chcete vyrábať iba zariadenie (Tx/Rx) jednoduchým vypnutím/zapnutím TSOP-38238.

Ako funguje obvod?

Je to celkom jednoduché. Výstupný kolík TSOP je potiahnutý nízko, keď snímač detekuje sled 6 alebo viac impulzov pri 38 KHz, na druhej strane je vytiahnutý vysoko, keď taký signál neexistuje. Preto, aby obvod prenášal sériové údaje cez IR, to, čo robí obvod, napája LED anódu 38KHz PWM modulovanou sériovým signálom TX, ktorý ťahá nízko LED katódu.

V dôsledku toho na vysokej úrovni sériového TX0 nie je LED dióda predpätá ani neobrátená v opačnom smere (žiadne impulzy) a výstupný kolík TSOP je vytiahnutý vysoko. Vysielanie nízkej úrovne na sériovom zariadení, LED dióda je napájaná a generuje IR impulzy podľa aplikovaného signálu PWM; preto je výkon TSOP znížený.

Pretože je prenos priamy (0-> 0 a 1-> 1), nie sú na strane prijímača potrebné žiadne invertory ani iná logika.

Regulujem optický výstupný výkon diódy LED výberom pracovného cyklu PWM podľa aplikácie. Čím vyšší je pracovný cyklus, tým vyšší je optický výstupný výkon, a preto budete svoju správu prenášať ďalej.

Majte na pamäti, že stále musíme generovať impulzy! Nemali by ste preto prekročiť 90% pracovný cyklus, inak TSOP nezistí signál ako impulzy.

Potrebujete viac energie?

Aby sme zvýšili prúd, môžeme jednoducho znížiť hodnotu odporu 1 kOhm?

Možno, jednoducho nebuďte príliš nároční! Maximálny prúd, ktorý dostanete z kolíka MCU, je obmedzený na 7 mA pri napájaní kolíka portu silnejšie než obvykle (PINCFG. DRVSTR = 1 a VDD> 3 V), ako je uvedené v technickom liste SAMD21.

Štandardná konfigurácia (ktorá je predvolene používaná knižnicami Arduino IDE) však obmedzuje prúd na 2 mA. Preto použitie 1 kOhm už dáva aktuálny limit s predvolenými nastaveniami!

Zvýšenie prúdu nie je len záležitosťou elektrických súčiastok. Stručne:

  • Zmeňte odpor (ktorého minimálna hodnota je obmedzená na približne 470Ohm -> VDD/470 ~ 7mA);
  • Zodpovedajúcim spôsobom nastavte PORT-> PINCFG-> DRVSTR na 1;

Kód vrátane tejto funkcie poskytnem v budúcej aktualizácii.

Pamätajte si však, že klesanie a odvádzanie prúdu z pinov MCU blízko jeho limitov nie je taký dobrý prístup. Skutočne to znižuje životnosť a spoľahlivosť MCU. Preto navrhujem zachovať normálnu silu disku pre dlhodobé používanie.

Krok 2: Programovanie

Vložte náčrt „IRSerial.ino“do uChip (alebo do dosky kompatibilnej s Arduino, ktorú používate).

V prípade, že potrebujete zmeniť pin generujúci PWM, uistite sa, že používate pin pripojený k časovaču TCC, pretože táto verzia kódu funguje iba s časovačmi TCC (tieto informácie nájdete na stránke „variant.c“na svojej doske)). Pridám kód, aby sa v budúcich aktualizáciách mohli používať aj časovače TC.

Kód je celkom jednoduchý. Po nastavení nízkeho PIN_5 (poskytuje TSOP GND) a vysokého PIN_6 (napájanie TSOP) spustí MCU PWM na PIN_1, nastaví periódu časovača a zachytí podľa toho potrebnú frekvenčnú moduláciu (v mojom prípade je to 38 kHz) a službu cyklu (predvolene 12,5%). To sa deje využitím štandardnej funkcie analogWrite () na pinoch PWM a zmenou iba registra PER_REG (dobový register) a CC (porovnanie zachytenia) (zapísaný kód je jednoducho vystrihnutím a vložením z knižnice wiring_analog). Potrebnú frekvenciu môžete nastaviť podľa toho, aby sa snímač TSOP zmenil na PER_REG (čo je horná hranica vynulovania počítadla časovača), pričom CC nastavte proporcionálne k hodnote periódy k požadovanému percentu pracovného cyklu.

Ďalej kód nastaví sériový port pomocou správnej prenosovej rýchlosti 2400bps. Prečo taká nízka prenosová rýchlosť ?! Odpoveď je v technickom liste TSOP, ktorý nájdete TU. Pretože TSOP obsahuje filtre s vysokým potlačením hluku, ktoré zabraňujú nechcenému prepínaniu, je potrebné vyslať sled viacerých impulzov, aby sa stiahol výstupný kolík TSOP (počet impulzov závisí od verzie TSOP, 6 je typická hodnota). Podobne je výkon TSOP vytiahnutý vysoko po minimálnom čase ekvivalentnom 10 alebo viac impulzom. Preto, aby bolo možné nastaviť výstup TSOP ako modulačný signál TX0, je potrebné nastaviť prenosovú rýchlosť s ohľadom na nasledujúcu rovnicu:

Sériová prenosová rýchlosť <PWM_frequency/10

Pri použití 38 kHz to znamená, že prenosová rýchlosť je nižšia ako 3800bps, čo znamená, že vyššia „štandardná“povolená prenosová rýchlosť je 2 400 pbs, ako sa pôvodne predpokladalo.

Chcete zvýšiť prenosovú rýchlosť? Sú dve možnosti.

Najľahšou možnosťou je zmeniť TSOP na verziu s vyššou frekvenciou (ako TSOP38256), čo vám umožní zdvojnásobiť prenosovú rýchlosť (4800bps)

Nedostatočné?! Potom musíte vytvoriť vlastné optické prepojenie pomocou jednoduchej infračervenej LED+fotodiódy a zosilňovacích obvodov. Toto riešenie však vyžaduje veľa znalostí z oblasti kódovania a elektroniky, aby sa zabránilo hluku, ktorý by ovplyvňoval prenášané údaje, a preto jeho implementácia nie je vôbec jednoduchá! Ak sa však cítite dostatočne sebavedomo, ste viac ako vítaní, keď vyskúšate vytvoriť si vlastný systém TSOP!:)

Nakoniec nastavím port SerialUSB (2400bps), ktorý používam na odosielanie a prijímanie údajov na sériovom monitore.

Funkcia loop () obsahuje kód potrebný na prechod údajov cez dva seriály a je skopírovaný priamo z ukážky náčrtu SerialPassthrough a mení iba názvy seriálov.

Krok 3: Tienenie IR LED

Tieniaca IR LED
Tieniaca IR LED
Tieniaca IR LED
Tieniaca IR LED

Ak zapnete vyššie uvedené obvody po načítaní kódu „IRSerial.ino“, skontrolujte sériový monitor na Arduino IDE a skúste odoslať reťazec. Pravdepodobne uvidíte, že uChip prijíma presne to, čo vysiela! V obvodoch dochádza k krížovému hovoru kvôli optickej komunikácii medzi IR LED a TSOP toho istého zariadenia!

Tu prichádza ťažká časť tohto projektu, ktorá zabraňuje krížovým rozhovorom! Aby bola obojsmerná sériová komunikácia cez IR prerušená, musí byť slučka prerušená.

Ako prelomíme slučku?

Prvá možnosť, znížite pracovný cyklus PWM, čím znížite optický výkon LED. Tento prístup však tiež znižuje vzdialenosť, na ktorú získate spoľahlivý sériový infračervený kanál. Druhou možnosťou je tienenie IR LED, čím sa vytvorí smerový IR „lúč“. Je to vec pokusu a omylu; Nakoniec sa mi pomocou kúska čiernej vzduchovej hadice zabalenej do hliníkovej fólie a pásky (zaisťujúcej elektrickú izoláciu) podarilo prelomiť krížové reči. Umiestnenie vysielacej IR LED do trubice zabraňuje komunikácii medzi TX a RX toho istého zariadenia.

Moje riešenie nájdete na obrázku, ale môžete vyskúšať aj iné metódy a/alebo navrhnúť svoje! Neexistuje žiadne absolútne riešenie tohto problému (pokiaľ nepotrebujete jednoduchý jednosmerný kanál) a pravdepodobne budete musieť prispôsobiť usporiadanie obvodov, pracovný cyklus PWM a IR štít podľa svojich potrieb.

Keď prerušíte krížové rozhovory, môžete si overiť, že vaše zariadenie stále funguje, a to tak, že na zariadení Tx-Rx vytvoríte slučku využívajúcu odraz infračervenej vlnovej dĺžky na infračervených odrazových plochách.

Krok 4: Komunikujte

Komunikujte!
Komunikujte!
Komunikujte!
Komunikujte!

To je všetko

Vaše sériové zariadenie cez IR je pripravené komunikovať, používať ich na odosielanie údajov cez IČ, zapínanie/vypínanie všetkého, čo sa vám páči, alebo kontrolu stavu senzora, ktorý tajne skrývate!

Vzdialenosť, na ktorú je komunikácia spoľahlivá, nie je taká veľká ako pre zariadenie WiFi alebo BT. Je však smerový (v závislosti od LED clony a implementovaného systému IR tienenia), čo môže byť v niektorých aplikáciách veľmi užitočné!

Čoskoro nahrám video, kde môžete vidieť niekoľko príkladov aplikácií, ktoré som vytvoril. Užite si to!

Odporúča: