Съдържание:
Видео: UChip - Serial Over IR!: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Безжичната комуникация се превърна в ключова характеристика в нашите проекти в днешно време и говорим за безжична връзка, първото нещо, което ми идва на ум е 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
Ако включите горната схема след зареждане на кода „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 екраниране), което може да бъде много полезно в някои приложения!
Скоро ще кача видео, където можете да видите няколко примера за приложенията, които направих. Наслади се!
Препоръчано:
Текст в реч Щракнете върху ARMbasic Powered UChip и други ARMbasic Powered SBCs: 3 стъпки
Текст в говор Щракнете върху UM чип с ARMbasic Powered и други SBCs с ARMbasic Powered: Въведение: Добър ден. Казвам се Тод. Аз съм аерокосмически и отбранителен професионалист, който също е малко отрепка по сърце. Вдъхновение: Произлиза от ерата на комутируем BBS, 8-битови микроконтролери, персонални компютри Kaypro/Commodore/Tandy/TI-994A, когато R
UChip - Проста скица към двигатели и/или сервоустройства за дистанционно управление чрез 2.4GHz Radio Tx -Rx !: 3 стъпки
UChip - Проста скица към двигатели за дистанционно управление и/или серво чрез 2.4GHz Radio Tx -Rx !: Наистина харесвам света на RC. Използването на RC играчка ви създава усещането, че контролирате нещо изключително, въпреки че е малка лодка, кола или дрон! Не е лесно обаче да персонализирате играчките си и да ги накарате да правят каквото искате
UChip-RC лодка от пластмасови бутилки и CD-ROM плейър!: 4 стъпки
UChip-RC Boat Out of Plastic Bottles and CD-ROM Player !: След като внедрих хардуера и софтуера за свързване на моето безпилотно радио към двигатели/серво, следващата стъпка беше да използвам добре свършената работа и да изградя свой собствен RC играчка, която е … лодка! Тъй като не съм машинен инженер, избрах улесненията
UChip Lightsaber - „Нека силата бъде с вас“: 6 стъпки
UChip Lightsaber - „Нека силата бъде с вас“: Мечтали ли сте някога да бъдете джедай или сит от вселената на Междузвездни войни, да размахвате мощен светлинен меч, за да подкрепите собствената си страна? Какъвто и да е отговорът, ето го: Как да си направим светлинен меч „направи си сам“с µChipFirst, нека уточня, че възнамерявам да
ESP 32 Camera Streaming Video Over WiFi - Първи стъпки с ESP 32 CAM Board: 8 стъпки
ESP 32 Camera Streaming Video Over WiFi | Първи стъпки с ESP 32 CAM Board: ESP32-CAM е много малък камерен модул с чип ESP32-S, който струва приблизително 10 долара. Освен камерата OV2640 и няколко GPIO за свързване на периферни устройства, тя разполага и със слот за microSD карта, която може да бъде полезна за съхраняване на изображения, направени с