Obsah:
Video: UChip - Sériové cez IR!: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
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
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
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
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:
Ako odčítať elektromer cez Arduino: 3 kroky
Ako odčítať elektromer cez Arduino: Často by bolo zaujímavé poznať aktuálnu spotrebu energie alebo celkovú spotrebu energie vášho domu, aby ste obmedzili náklady na elektrickú energiu a chránili životné prostredie. To nie je problém, pretože väčšinou nájdete inteligentný digitálny
Arduino Uno + ESP8266 ESP-01 Zapnite lampu cez internet (nie LAN WIFI): 3 kroky
Arduino Uno + ESP8266 ESP-01 Zapnite lampu cez internet (nie LAN WIFI): Zapnite lampu prostredníctvom webovej stránky na ľubovoľnom zariadení pomocou webového prehliadača v tomto zariadení, aj keď ste od lampy ďaleko. Na webovú stránku sa môžete dostať prostredníctvom prenosného počítača, smartfónu alebo niečoho iného pomocou webového prehliadača, ktorý je v tomto zariadení nainštalovaný
Programovanie Arduina cez mobil -- Arduinodroid -- Arduino Ide pre Android -- Žmurknutie: 4 kroky
Programovanie Arduina cez mobil || Arduinodroid || Arduino Ide pre Android || Blink: Prihláste sa na odber môjho kanála youtube a získajte ďalšie videá …… Arduino je doska, ktorú je možné programovať priamo cez USB. Je to veľmi jednoduché a lacné pre projekty vysokých škôl a škôl alebo dokonca pre prototypy produktov. Mnoho produktov na tom najskôr stavia, aby som
Kaskáda posuvných registrov 74HC595 riadená cez Arduino a Ethernet: 3 kroky
Kaskáda posuvných registrov 74HC595 riadená cez Arduino a Ethernet: Dnes by som chcel predstaviť projekt, ktorý som implementoval v dvoch verziách. Projekt používa 12 posuvných registrov 74HC595 a 96 LED diód, dosku Arduino Uno s ethernetovým štítom Wiznet W5100. Ku každému posuvnému registru je pripojených 8 diód LED. Čísla 0
UChip - jednoduchý náčrt motorov a/alebo serv na diaľkové ovládanie cez 2,4 GHz rádio Tx -Rx!: 3 kroky
UChip - jednoduchý náčrt motorov a/alebo serv na diaľkové ovládanie cez 2,4 GHz rádio Tx -Rx !: Mám rád svet RC. Používanie RC hračky vám dáva pocit, že máte kontrolu nad niečím výnimočným, napriek tomu, že je to malý čln, auto alebo dron! Nie je však ľahké prispôsobiť si svoje hračky a prinútiť ich robiť, čo chcete