Съдържание:

UChip - Serial Over IR!: 4 стъпки
UChip - Serial Over IR!: 4 стъпки

Видео: UChip - Serial Over IR!: 4 стъпки

Видео: UChip - Serial Over IR!: 4 стъпки
Видео: (COLA-POTATO CHIPS)Who'stheBest?1,2,3 or 4?#shorts #tiktok #viral 2024, Ноември
Anonim
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!

Безжичната комуникация се превърна в ключова характеристика в нашите проекти в днешно време и говорим за безжична връзка, първото нещо, което ми идва на ум е Wi-Fi или BT, но боравенето с комуникационните протоколи Wi-Fi или BT не е лесна задача и консумира много на MCU ресурси, оставяйки малко място за кодиране на моето приложение. Затова обикновено избирам външен Wi-Fi/BT модул, последователно свързан към микроконтролера, за да разделя ролите и да спечеля по-голяма свобода.

Понякога обаче Wi-Fi и BT са „прекалени“за някои приложения, изискващи нисък битрейт и кратко разстояние за комуникация. Освен това използването на Wi-Fi или BT предполага необходимостта от свързване на вашия смартфон или устройство с подходящо удостоверяване.

Представете си, че просто трябва да включите/изключите външна светлина или да промените интензитета на лампата или да отворите електрическа порта. Струва ли си да използвате Wi-Fi или BT?

В зависимост от средата и приложенията, безжичната комуникация през IR (инфрачервена) дължина на вълната може да бъде полезна. Сериен по IR, реализиран с няколко външни компонента (3 дискретни компонента!), И uChip (много малка Arduino съвместима платка) може да бъде решението, което търсите!

Сметка за материали (за едно устройство Tx-Rx):

1 x uChip

1 x IR LED: с пик на излъчване при 950nm

1 x TSOP-38238 (от еквивалент)

1 x 1KOhm резистор

Хардуер

1 х платка/прото дъска

1 x черна пластмасова тръба: вътрешен диаметър със същия размер като IR LED, тръбата е необходима, за да се предотврати кръстосано говорене с TSOP приемника.

1 x алуминиево фолио (3 см x 3 см)

1 x лента

СЪВЕТ: Можете да направите устройство само с TX или само с RX в случай, че се нуждаете от комуникация в една посока, като премахнете ненужния RX/TX хардуер от веригата или разрешите/забраните свързания код в скицата.

Стъпка 1: Окабеляване

Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации

Свържете компонентите заедно съгласно схемата.

Няколко бележки за простата схема. Тъй като TSOP-38238 позволява захранване от 2.5V до 5V и абсорбира най-много 0.45mA (можете да намерите листа с данни ТУК), аз ще захранвам приемника с помощта на два пина, които ще осигурят съответно заземяване и захранване. Това позволява включване/изключване на приемника при поискване и много проста настройка на хардуерно окабеляване. Освен това, в случай че се нуждаете от комуникация в една посока, можете да изберете дали да направите само устройство (Tx/Rx), като просто деактивирате/активирате TSOP-38238.

Как работи веригата?

Това е съвсем просто. Изходният щифт на TSOP се издърпва ниско, когато сензорът открие влак от 6 или повече импулса при 38KHz, от друга страна се дърпа високо, когато няма такъв сигнал. Следователно, за да се предават серийните данни по IR, това, което веригата прави, е захранването на LED анода с 38KHz PWM, модулиран с TX сериен сигнал, който издърпва катода на LED.

Следователно, на високо ниво на серийния TX0, светодиодът не се отклонява или отклонява обратно (без импулси) и изходният щифт на TSOP се дърпа високо. Предавайки ниско ниво на серийния сигнал, светодиодът се захранва и генерира инфрачервени импулси в съответствие с приложения ШИМ сигнал; следователно изходът на TSOP е намален.

Тъй като предаването е директно (0-> 0 и 1-> 1), няма нужда от инвертори или друга логика от страна на приемника.

Регулирам оптичната изходна мощност на светодиода, като избирам работния цикъл на ШИМ според приложението. Колкото по -висок е работният цикъл, толкова по -висока е оптичната изходна мощност и следователно, толкова по -далеч ще предавате съобщението си.

Имайте предвид, че все още трябва да генерираме импулси! По този начин не трябва да надвишавате 90% работен цикъл, в противен случай TSOP няма да засече сигнала като импулси.

Имате ли нужда от повече мощност?

За да увеличим тока, можем ли просто да намалим стойността на 1kOhm резистора?

Може би, просто не бъдете твърде взискателни! Максималният ток, който получавате от щифт на MCU, е ограничен до 7mA, когато задвижването на порта е по -силно от нормалното (PINCFG. DRVSTR = 1 и VDD> 3V), както е посочено в листа с данни SAMD21.

Стандартната конфигурация (която е тази, приета от библиотеките на Arduino IDE по подразбиране) ограничава тока до 2mA. Следователно, използването на 1kOhm вече дава текущото ограничение с настройките по подразбиране!

Увеличаването на тока не е само въпрос на електрически компоненти. Накратко:

  • Сменете резистора (чиято минимална стойност е ограничена до приблизително 470Ohm -> VDD/470 ~ 7mA);
  • Задайте съответно PORT-> PINCFG-> DRVSTR на 1;

Ще предоставя кода, включително тази функция, в бъдеща актуализация.

Но не забравяйте, че потъването и източването на ток от щифтове на MCU близо до неговите граници не е толкова добър подход. Всъщност това намалява живота и надеждността на MCU. Затова предлагам да се запази нормалната сила на задвижването за продължителна употреба.

Стъпка 2: Програмиране

Заредете скицата „IRSerial.ino“в uChip (или съвместимата с Arduino платка, която използвате).

В случай, че се нуждаете от смяна на щифта, генериращ PWM, уверете се, че използвате щифт, свързан към TCC таймер, тъй като тази версия на кода работи само с TCC таймери (проверете „variant.c“на вашата платка за тази информация). Ще добавя кода, за да използвам и TC таймери в бъдещи актуализации.

Кодът е съвсем прост. След задаване на нисък PIN_5 (осигурява TSOP GND) и висок PIN_6 (захранване на TSOP), MCU стартира PWM на PIN_1, задавайки периода на таймера и улавянето, сравнете съответно с необходимата честотна модулация (в моя случай е 38KHz) и натоварване цикъл (12,5% по подразбиране). Това се прави, като се използва стандартната функция analogWrite () на PWM щифтове и се променят само регистрите PER_REG (регистър на периода) и CC (улавяне сравнение) (написаният код е просто изрязване и поставяне от библиотеката wiring_analog). Можете да зададете необходимата честота съответно на сензора TSOP, който променя PER_REG (което е горната граница за нулиране на брояча на таймера), като същевременно задавате CC пропорционално на стойността на периода до желания процент от работния цикъл.

След това кодът задава серийния порт, използвайки правилната скорост на предаване, която е 2400bps. Защо толкова ниска скорост на предаване ?! Отговорът е в листа с данни на TSOP, който можете да намерите ТУК. Тъй като TSOP разполага с филтри за високо отхвърляне на шума, за да се предотврати нежеланото превключване, е необходимо да се изпрати последователност от множество импулси, за да се изтегли изходният щифт на TSOP (броят на импулсите зависи от версията на TSOP, 6 е типичната стойност). По същия начин изходът на TSOP се изтегля високо след минимално време, еквивалентно на 10 или повече импулса. Следователно, за да се настрои TSOP изходът като модулиращ TX0 сигнал, е необходимо да се настрои скоростта на предаване, като се има предвид следното уравнение:

Сериен обмен <PWM_frequency/10

Използвайки 38KHz, това води до скорост на предаване по -ниска от 3800bps, което означава, че по -високата „стандартна“позволена скорост на предаване е 2400pbs, както се очакваше по -рано.

Искате ли да увеличите скоростта на предаване? Има две възможности.

Най -лесният вариант е да промените TSOP във версия с по -висока честота (като TSOP38256), което ще ви позволи да удвоите скоростта на предаване (4800bps)

Не достатъчно?! След това трябва да направите своя собствена оптична връзка, като използвате обикновена IR LED+фотодиодна и усилвателна схема. Това решение обаче изисква много опит в кодирането и електрониката, за да се предотврати влиянието на шума върху предаваните данни и следователно въвеждането му не е никак лесно! Ако обаче се чувствате достатъчно уверени, вие сте повече от добре дошли да опитате да създадете своя собствена TSOP система!:)

Накрая зададох SerialUSB порт (2400bps), който използвам за изпращане и получаване на данни на серийния монитор.

Функцията loop () включва кода, необходим за преминаване на данни през двата сериала и се копира директно от примерната скица SerialPassthrough, като променя само имената на сериалите.

Стъпка 3: Екраниращ IR LED

Екраниращ IR LED
Екраниращ IR LED
Екраниращ IR LED
Екраниращ IR LED

Ако включите горната схема след зареждане на кода „IRSerial.ino“, проверете Serial Monitor на Arduino IDE и опитайте да изпратите низ. Вероятно ще видите, че uChip получава точно това, което предава! В схемата има кръстосано говорене поради оптична комуникация между IR LED и TSOP на същото устройство!

Тук идва трудната част от този проект, предотвратявайки кръстосаните разговори! Цикълът трябва да бъде прекъснат, за да се осъществи двупосочна серийна комуникация по IR.

Как да прекъснем цикъла?

Първият вариант е да намалите работния цикъл на ШИМ, като по този начин намалите оптичната мощност на светодиода. Този подход обаче намалява и разстоянието, на което получавате надежден сериен IR канал. Вторият вариант е екраниране на IR LED, като по този начин се прави насочен IR „лъч“. Това е въпрос на опит и грешка; най -накрая, използвайки парче черен пневматичен маркуч за въздух, увит в алуминиево фолио и лента (осигуряващ електрическа изолация), успях да прекъсна кръстосаното говорене. Поставянето на предаващия IR LED в тръбата предотвратява комуникацията между TX и RX на едно и също устройство.

Погледнете снимката, за да видите моето решение, но не се колебайте да опитате други методи и/или да предложите своя! Няма абсолютно решение на този проблем (освен ако не се нуждаете от прост еднопосочен канал) и вероятно трябва да настроите схемата на схемата, работния цикъл на ШИМ и IR щита според вашите нужди.

След като прекъснете кръстосаното говорене, можете да проверите дали устройството ви все още работи, като създадете контур на устройството Tx-Rx, използвайки отражението на дължината на вълната на инфрачервената светлина върху отражателните повърхности на IR.

Стъпка 4: Общувайте

Общувайте!
Общувайте!
Общувайте!
Общувайте!

Това е всичко

Вашето серийно през IR устройство е готово за комуникация, използвайте ги за изпращане на данни по IR, включване/изключване на всичко, което харесвате или проверка на състоянието на сензор, който скривате тайно!

Разстоянието, на което комуникацията е надеждна, не е толкова, колкото за WiFi или BT устройство. Въпреки това, той е насочен (в зависимост от LED отвора и внедрената система за IR екраниране), което може да бъде много полезно в някои приложения!

Скоро ще кача видео, където можете да видите няколко примера за приложенията, които направих. Наслади се!

Препоръчано: