Obsah:

UChip - Sériové přes IR!: 4 kroky
UChip - Sériové přes IR!: 4 kroky

Video: UChip - Sériové přes IR!: 4 kroky

Video: UChip - Sériové přes IR!: 4 kroky
Video: Rayhon va Shohjahon Juraev - Kuzlari Zebo... 2024, Červenec
Anonim
UChip - Sériové přes IR!
UChip - Sériové přes IR!
UChip - Sériové přes IR!
UChip - Sériové přes IR!

Bezdrátová komunikace se v dnešní době stala klíčovou funkcí našich projektů a když mluvíme o bezdrátové síti, první, co mě napadne, je Wi-Fi nebo BT, ale manipulace s komunikačními protokoly Wi-Fi nebo BT není snadný úkol a spotřebovává mnoho zdrojů MCU, takže malý prostor pro kódování mé aplikace. Proto se obvykle rozhoduji pro externí modul Wi-Fi/BT sériově připojený k mikrokontroléru, abych rozdělil role a získal vyšší svobodu.

Někdy jsou však Wi-Fi a BT u některých aplikací vyžadujících nízkou přenosovou rychlost a krátkou komunikační vzdálenost „přehnané“. Kromě toho používání Wi-Fi nebo BT znamená nutnost připojení smartphonu nebo zařízení se správným ověřením.

Představte si, že jednoduše potřebujete zapnout/vypnout externí světlo nebo změnit intenzitu lampy nebo otevřít elektrickou bránu. Vyplatilo by se používat Wi-Fi nebo BT?

V závislosti na prostředí a aplikacích může přijít vhod bezdrátová komunikace přes infračervenou (infračervenou) vlnovou délku. Řešení, které jste hledali, může být sériový přenos přes IR implementovaný s několika externími komponentami (3 diskrétní komponenty!) A uChip (velmi malá deska kompatibilní s Arduino)!

Kusovník (pro jedno zařízení Tx-Rx):

1 x uChip

1 x IR LED: s emisním maximem při 950 nm

1 x TSOP-38238 (ekvivalent)

Rezistor 1 x 1 KOhm

Hardware

1 x prkénko/proto deska

1 x černá plastová trubice: vnitřní průměr stejné velikosti jako IR LED, trubice je nezbytná, aby se zabránilo křížovému hovoru s přijímačem TSOP.

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

1 x páska

TIP: Zařízení pro pouze TX nebo pouze RX můžete vytvořit v případě, že potřebujete jednosměrnou komunikaci, odstraněním nepotřebného hardwaru RX/TX z obvodu nebo povolením/zakázáním souvisejícího kódu v náčrtu.

Krok 1: Zapojení

Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení

Spojte součásti dohromady podle schématu.

Několik poznámek k jednoduchému schématu. Vzhledem k tomu, že TSOP-38238 umožňuje napájení od 2,5 V do 5 V a pohlcuje maximálně 0,45 mA (katalogový list naleznete ZDE), budu přijímač napájet pomocí dvou pinů, které zajistí uzemnění a napájení. To umožňuje zapnutí/vypnutí přijímače na vyžádání a velmi jednoduché nastavení hardwarového zapojení. Kromě toho v případě, že potřebujete jednosměrnou komunikaci, můžete si vybrat, zda chcete vytvořit pouze zařízení (Tx/Rx), jednoduše deaktivovat/povolit TSOP-38238.

Jak obvod funguje?

Je to docela jednoduché. Výstupní kolík TSOP je vytažen nízko, když snímač detekuje sled 6 pulsů nebo více při 38KHz, na druhé straně je vytažen vysoko, když takový signál neexistuje. Proto, aby obvod přenášel sériová data přes IR, to, co dělá obvod, napájí LED anodu 38KHz PWM modulovanou sériovým signálem TX, který táhne nízko LED katodu.

V důsledku toho na vysoké úrovni sériového TX0 není dioda LED předpojatá ani neobrácená v opačném směru (žádné impulsy) a výstupní kolík TSOP je vytažen vysoko. Vysílá nízkou úroveň na sériovém rozhraní, LED je napájena a generuje infračervené impulsy podle použitého signálu PWM; proto je výkon TSOP stažen nízko.

Protože je přenos přímý (0-> 0 a 1-> 1), není na straně přijímače potřeba měničů ani jiné logiky.

Reguluji optický výstupní výkon LED výběrem pracovního cyklu PWM podle aplikace. Čím vyšší je pracovní cyklus, tím vyšší je optický výstupní výkon, a tím dále budete svoji zprávu přenášet.

Mějte na paměti, že stále musíme generovat impulsy! Neměli byste tedy překročit 90% pracovní cyklus, jinak TSOP nezjistí signál jako pulzy.

Potřebujete více energie?

Abychom zvýšili proud, můžeme jednoduše snížit hodnotu odporu 1 kOhm?

Možná, prostě nebuďte příliš nároční! Maximální proud, který získáte z pinu MCU, je omezen na 7 mA, když je portový kolík silnější než obvykle (PINCFG. DRVSTR = 1 a VDD> 3 V), jak je uvedeno v datovém listu SAMD21.

Standardní konfigurace (která je výchozí konfigurací knihoven Arduino IDE) však omezuje proud na 2mA. Proto použití 1 kOhm již dává aktuální limit s výchozím nastavením!

Zvýšení proudu není jen záležitostí elektrických součástek. Krátce:

  • Změňte odpor (jehož minimální hodnota je omezena přibližně na 470Ohm -> VDD/470 ~ 7mA);
  • Nastavte odpovídajícím způsobem PORT-> PINCFG-> DRVSTR na 1;

Kód včetně této funkce poskytnu v budoucí aktualizaci.

Ale pamatujte si, že potopení a odvedení proudu z pinů MCU blízko jeho limitů není tak dobrý přístup. Skutečně to snižuje životnost a spolehlivost MCU. Proto navrhuji zachovat normální sílu disku pro dlouhodobé použití.

Krok 2: Programování

Vložte náčrt „IRSerial.ino“do uChip (nebo na desku kompatibilní s Arduino, kterou používáte).

V případě, že potřebujete změnit pin generující PWM, ujistěte se, že používáte pin připojený k časovači TCC, protože tato verze kódu funguje pouze s časovači TCC (tyto informace najdete na kartě „variant.c“na vaší desce)). Přidám kód pro použití také časovačů TC v budoucích aktualizacích.

Kód je celkem jednoduchý. Po nastavení nízkého PIN_5 (poskytuje TSOP GND) a vysokého PIN_6 (napájení TSOP) spustí MCU PWM na PIN_1, nastaví periodu časovače a podle toho porovnává potřebnou frekvenční modulaci (v mém případě je to 38KHz) a službu cyklu (12,5% jako výchozí). Toho je dosaženo využitím standardní funkce analogWrite () na pinech PWM a změnou pouze registru PER_REG (periodický registr) a CC (porovnání porovnání) (zapsaný kód je jednoduše vyjmutím a vložením z knihovny wiring_analog). Podle toho, jak se snímač TSOP mění PER_REG (což je horní mez vynulování čítače časovače), můžete nastavit potřebnou frekvenci, zatímco CC nastavit úměrně k hodnotě periody k požadovanému procentu pracovního cyklu.

Dále kód nastaví sériový port pomocí správné přenosové rychlosti 2400bps. Proč tak nízká přenosová rychlost ?! Odpověď je v datovém listu TSOP, který najdete ZDE. Protože TSOP obsahuje filtry s vysokým potlačením šumu, které zabraňují nežádoucímu přepínání, je nutné vyslat sled více impulsů, aby bylo možné stáhnout výstupní pin TSOP (počet pulzů závisí na verzi TSOP, 6 je typická hodnota). Podobně je výstup TSOP vytažen vysoko po minimálním čase, který odpovídá 10 pulsům nebo více. V důsledku toho, aby bylo možné nastavit výstup TSOP jako modulační signál TX0, je nutné nastavit přenosovou rychlost s ohledem na následující rovnici:

Sériová přenosová rychlost <PWM_frequency/10

Při použití 38KHz to má přenosovou rychlost nižší než 3800bps, což znamená, že vyšší „standardní“povolená přenosová rychlost je 2 400 pbs, jak se dříve očekávalo.

Chcete zvýšit přenosovou rychlost? Jsou dvě možnosti.

Nejjednodušší možností je změnit TSOP na verzi s vyšší frekvencí (jako TSOP38256), což vám umožní zdvojnásobit přenosovou rychlost (4800bps)

Nedostatek?! Poté musíte vytvořit vlastní optický odkaz pomocí jednoduché IR LED+fotodiody a zesilovacích obvodů. Toto řešení však vyžaduje velké znalosti v oblasti kódování a elektroniky, aby se zabránilo přenosu šumu na přenášená data, a proto není jeho implementace vůbec jednoduchá! Pokud se však cítíte dostatečně sebejistě, jste více než vítáni, když si zkusíte vytvořit vlastní systém TSOP!:)

Nakonec jsem nastavil port SerialUSB (2400bps), který používám k odesílání a přijímání dat na sériovém monitoru.

Funkce loop () obsahuje kód nezbytný pro průchod dat přes dva seriály a je zkopírován přímo z ukázkové skici SerialPassthrough měnící pouze názvy seriálů.

Krok 3: Stínění IR LED

Stínění IR LED
Stínění IR LED
Stínění IR LED
Stínění IR LED

Pokud zapnete výše uvedené obvody po načtení kódu „IRSerial.ino“, zkontrolujte Serial Monitor na Arduino IDE a zkuste odeslat řetězec. Pravděpodobně uvidíte, že uChip přijímá přesně to, co vysílá! Díky optické komunikaci mezi IR LED a TSOP stejného zařízení dochází v obvodech ke vzájemnému hovoru!

Zde přichází těžká část tohoto projektu, která brání vzájemné komunikaci! Aby byla obousměrná sériová komunikace přes IR zajištěna, musí být smyčka přerušena.

Jak prolomíme smyčku?

První možnost, snížíte pracovní cyklus PWM, čímž snížíte optický výkon LED. Tento přístup však také snižuje vzdálenost, na kterou získáte spolehlivý sériový IR kanál. Druhou možností je stínění IR LED, čímž se vytvoří směrový IR „paprsek“. Je to otázka pokusu a omylu; konečně se mi pomocí kusu černé pneumatické vzduchové hadice omotané hliníkovou fólií a páskou (zajišťující elektrickou izolaci) podařilo prolomit křížovou řeč. Umístění vysílací IR LED do trubice brání komunikaci mezi TX a RX stejného zařízení.

Podívejte se na obrázek, abyste viděli moje řešení, ale můžete zkusit jiné metody a/nebo navrhnout své! Neexistuje žádné absolutní řešení tohoto problému (pokud nepotřebujete jednoduchý jednosměrný kanál) a pravděpodobně budete muset upravit uspořádání obvodů, pracovní cyklus PWM a IR štít podle svých potřeb.

Jakmile přerušíte křížovou řeč, můžete si ověřit, že vaše zařízení stále funguje, vytvořením smyčky na zařízení Tx-Rx využívající odraz IR vlnové délky na IR odrazivých plochách.

Krok 4: Komunikujte

Komunikovat!
Komunikovat!
Komunikovat!
Komunikovat!

To je vše

Vaše sériové zařízení přes IR je připraveno komunikovat, používat je k odesílání dat přes IR, zapínat/vypínat vše, co se vám líbí, nebo kontrolovat stav senzoru, který tajně skrýváte!

Vzdálenost, na kterou je komunikace spolehlivá, není tak velká jako u zařízení WiFi nebo BT. Je však směrový (v závislosti na světelnosti LED a implementovaném systému IR stínění), což může být v některých aplikacích velmi užitečné!

Brzy nahraji video, kde můžete vidět několik příkladů aplikací, které jsem vytvořil. Užívat si!

Doporučuje: