Мазмуну:

UChip - Сериалдын үстүнөн IR !: 4 кадам
UChip - Сериалдын үстүнөн IR !: 4 кадам

Video: UChip - Сериалдын үстүнөн IR !: 4 кадам

Video: UChip - Сериалдын үстүнөн IR !: 4 кадам
Video: Учим плоские геометрические фигуры с паровозиком Чух-Чухом - часть первая (1). Геометрия для детей 2024, Ноябрь
Anonim
UChip - IR үстүнөн сериялык!
UChip - IR үстүнөн сериялык!
UChip - IR үстүнөн сериялык!
UChip - IR үстүнөн сериялык!

Зымсыз байланыш биздин долбоорлордун негизги өзгөчөлүгүнө айланды жана зымсыз байланыш жөнүндө айтып жатат, биринчи кезекте менин оюма Wi-Fi же BT келет, бирок Wi-Fi же BT байланыш протоколдорун иштетүү оңой иш эмес жана көп керектелет. MCU ресурстары, менин колдонмомду коддоо үчүн кичинекей орун калтыруу. Ошондуктан, мен көбүнчө ролдорду бөлүштүрүү жана жогорку эркиндикке жетүү үчүн микроконтроллерге сериялык туташкан тышкы Wi-Fi/BT модулун тандап алам.

Бирок, кээде Wi-Fi жана BT аз бит ылдамдыгын жана кыска байланышты талап кылган кээ бир тиркемелер үчүн "ашыкча" болуп калышат. Мындан тышкары, Wi-Fi же BT колдонуу смартфонуңузду же түзмөгүңүздү туура тастыктоо менен туташтыруу зарылдыгын билдирет.

Сырттагы жарыкты күйгүзүү/өчүрүү же чырактын күчүн өзгөртүү же электр дарбазасын ачуу керек экенин элестетип көрүңүз. Wi-Fi же BT колдонууга арзыйбы?

Айлана -чөйрөгө жана колдонмолорго жараша IR (Infrared) толкун узундугу боюнча зымсыз байланыш ыңгайлуу болушу мүмкүн. Бир нече тышкы компоненттер менен ишке ашырылган IR үстүндөгү серия (3 дискреттик компонент!) Жана uChip (абдан кичинекей Arduino шайкеш тактасы) сиз издеген чечим болушу мүмкүн!

Билл материалдары (бир Tx-Rx түзмөгү үчүн):

1 x uChip

1 х IR LED: эмиссия чокусуна 950nm ээ

1 x TSOP-38238 (барабар)

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

Аппараттык

1 х нан/прото тактасы

1 x Black Plastic Tube: ички диаметри IR LED менен бирдей, түтүк TSOP алуучусу менен кайчылаш сүйлөшүүнү болтурбоо үчүн керек.

1 х алюминий фольга (3 см х 3 см)

1 x Тасма

КЕҢЕШ: Сиз керексиз RX/TX жабдууларын чынжырдан чыгарып же эскиздеги тиешелүү кодду иштетүү/өчүрүү аркылуу бир багыттуу байланышка муктаж болсоңуз, жалаң гана TX же RX түзмөгүн жасай аласыз.

1 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү

Схемага ылайык компоненттерди бириктириңиз.

Жөнөкөй схема боюнча бир нече эскертүүлөр. TSOP-38238 2.5Vдан 5Vга чейин энергия менен камсыздоого мүмкүндүк бергендиктен жана эң көбү 0.45mA сиңиргендиктен (сиз маалымат барагын БУЛ ЖЕРДЕН таба аласыз), мен ресиверди тийиштүү түрдө жер жана электр менен камсыздоочу эки казык аркылуу кубаттайм. Бул талап боюнча ресиверди күйгүзүүгө/өчүрүүгө жана аппараттык зымдарды өтө жөнөкөй орнотууга мүмкүнчүлүк берет. Мындан тышкары, сизге бир багыттуу байланыш керек болсо, TSOP-38238ди жөн эле өчүрүү/иштетүү менен (Tx/Rx) гана түзмөк жасоону тандасаңыз болот.

Район кантип иштейт?

Бул абдан жөнөкөй. Сенсор 38KHzде 6 импульс же андан көп поездди аныктаганда TSOP чыгаруу пин төмөн тартылат, экинчи жагынан андай сигнал жок болгондо жогору тартылат. Ошондуктан, сериялык маалыматтарды IR аркылуу берүү үчүн, схема LED катодун төмөн тарткан TX сериялык сигналы менен модуляцияланган 38KHz PWM менен LED анодун иштетет.

Демек, TX0 сериясынын жогорку деңгээлинде, LED тескери (импульс жок) бир жактуу же бир жактуу эмес жана TSOP чыгаруу пини жогору тартылган. Сериалда төмөн деңгээлди өткөрүп, LED иштейт жана PWM сигналына ылайык IR импульсун жаратат; ошондуктан, TSOPтун өндүрүмдүүлүгү төмөн тартылды.

Берүү түз болгондуктан (0-> 0 жана 1-> 1), кабыл алуучу тарапта инверторлорго же башка логикага муктаждык жок.

Мен колдонмого ылайык PWM милдетинин циклин тандоо менен LED оптикалык чыгаруу кубатын жөнгө салам. Милдеттин цикли канчалык жогору болсо, оптикалык кубаттуулугу ошончолук жогору болот, андыктан билдирүүңүздү андан ары жеткиресиз.

Биз дагы эле импульс жаратышыбыз керек экенин унутпаңыз! Ошентип, сиз 90% кызмат циклинен ашпашыңыз керек, антпесе TSOP сигналды импульстар катары аныктай албайт.

Сизге көбүрөөк күч керекпи?

Учурдагы агымды көбөйтүү үчүн 1kOhm резисторунун маанисин жөн эле азайта алабызбы?

Балким, жөн эле талап кылбаңыз! SAMD21 маалымат барагында айтылгандай, MCU пининен ала турган максималдуу ток 7мА менен чектелет, порт пин кадимкидей күчтүү (PINCFG. DRVSTR = 1 жана VDD> 3V).

Бирок, стандарттык конфигурация (бул Arduino IDE китепканалары тарабынан демейки катары кабыл алынган), токту 2мАга чейин чектейт. Ошондуктан, 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де иштей баштайт, таймердин мөөнөтүн белгилейт жана керектүү жыштык модуляциясына (менимче 38КГц) салыштырат. цикл (демейки катары 12,5%). Бул PWM төөнөгүчтөрүндөгү analogWrite () стандарттуу функциясын колдонуу жана PER_REG (мезгил регистри) менен CC (тартуу салыштыруу) реестрин гана өзгөртүү аркылуу жүзөгө ашырылат (жазылган код жөн эле wiring_analog китепканасынан кесилген жана чапталган). Сиз керектүү жыштыкты TSOP сенсоруна жараша PER_REG (бул таймердин эсептегичин баштапкы абалга келтирүү) орното аласыз, ал эми мезгилдин маанисине пропорционалдуу CCни циклдин каалаган пайызына коюңуз.

Андан кийин, код Serial портун 2400bps ылдамдыкта туура ылдамдыкта орнотот. Эмнеге байдын ылдамдыгы төмөн? Жооп TSOP маалымат барагында, бул жерден таба аласыз. TSOPтун каалабаган которууну болтурбоо үчүн ызы -чууну четке кагуучу чыпкалары бар болгондуктан, TSOP чыгаруу пинин түшүрүү үчүн бир нече импульстун поездин жөнөтүү керек (импульстун саны TSOP версиясына жараша болот, 6 типтүү маани). Ошо сыяктуу эле, TSOP чыгаруу 10 импульске же андан көп убакытка барабар болгон минималдуу убакыттан кийин жогору тартылат. Демек, TSOP өндүрүшүн модуляциялоочу TX0 сигналы катары орнотуу үчүн, төмөнкү теңдемени эске алуу менен, байдын ылдамдыгын орнотуу керек:

Serial Baud <PWM_frequency/10

38KHzти колдонуу 3800bpsтан төмөн болгон ылдамдыкты алып келет, демек, жогорку стандарттык уруксат берилген радиустун ылдамдыгы 2400pbs, мурда болжолдонгон.

Бод ылдамдыгын жогорулаткыңыз келеби? Эки вариант бар.

Эң оңой вариант - TSOPту жогорку жыштыктагы версияга өзгөртүү (TSOP38256 сыяктуу), бул сизге байдын ылдамдыгын эки эсе көбөйтүүгө мүмкүндүк берет (4800bps)

Жетпейт ?! Андан кийин жөнөкөй IR LED+фотодиод жана күчөткүч схемасын колдонуу менен өзүңүздүн оптикалык шилтемеңизди түзүшүңүз керек. Бирок, бул чечим ызы -чуунун берилүүчү маалыматтарга таасир этүүсүн алдын алуу үчүн көп коддоо жана электроника боюнча экспертизаны талап кылат, ошондуктан аны ишке ашыруу таптакыр оңой эмес! Бирок, эгер сиз өзүңүздү ишенимдүү сезсеңиз, анда өзүңүздүн TSOP системаңызды түзүп көрүңүз!:)

Акырында, мен сериялык мониторго маалыматтарды жөнөтүү жана алуу үчүн колдонгон SerialUSB портун (2400bps) койдум.

Цикл () функциясы эки сериядагы маалыматтарды өткөрүү үчүн зарыл болгон кодду камтыйт жана SerialPassthrough үлгүсүнүн эскизинен түз гана сериалдардын аттарын өзгөртүү менен көчүрүлөт.

3 -кадам: IR LEDди коргоо

IR LED коргоочу
IR LED коргоочу
IR LED коргоочу
IR LED коргоочу

Эгерде сиз "IRSerial.ino" кодун жүктөгөндөн кийин жогорудагы схеманы иштетсеңиз, Arduino IDEдеги Сериялык Мониторду текшерип, сап жөнөтүүгө аракет кылыңыз. Сиз, балким, uChip өзү өткөрүп жаткан нерсени алып жатканын көрөсүз! IR LED жана ошол эле түзмөктүн TSOP ортосундагы оптикалык байланыштын айынан схемада кайчылаш сөз бар!

Мына бул долбоордун оор бөлүгү келип, кайчылаш сүйлөшүүгө жол бербейт! IR аркылуу эки багыттуу Сериялык байланышты түзүү үчүн цикл үзүлүшү керек.

Укурукту кантип бузабыз?

Биринчи вариант, сиз PWM милдетинин циклин төмөндөтүп, LEDдин оптикалык кубаттуулугун төмөндөтөсүз. Бирок, бул ыкма ишенимдүү сериялык IR каналын ала турган аралыкты да кыскартат. Экинчи вариант IR LEDди калкалап турат, ошону менен багытталган IR "нурун" түзөт. Бул сыноо жана жаңылыштык маселеси; Акыры, алюминий фольгага жана лентага оролгон кара пневматикалык аба түтүгүн колдонуп (электр изоляциясын камсыз кылдым), мен кайчылаш сүйлөшүүнү үзө алдым. Өткөрүүчү IR LEDди түтүктүн ичине коюу ошол эле түзмөктүн TX жана RX ортосундагы байланышты алдын алат.

Менин чечимимди көрүү үчүн сүрөттү караңыз, бирок башка ыкмаларды колдонуп көрүңүз жана/же өзүңүздүн сунуштуңузду бериңиз! Бул маселенин абсолюттук чечими жок (эгер сизге бир багыттуу канал керек болбосо) жана, балким, схемаңыздын түзүлүшүн, PWM кызмат циклин жана IR калканчын керектөөлөрүңүзгө жараша тууралашыңыз керек.

Кайчылаш сөздү үзгөндөн кийин, IR чагылтуучу беттерде IR толкунунун чагылышын пайдаланып, Tx-Rx түзмөгүндө укурук түзүп, түзмөгүңүз дагы эле иштеп жатканын текшере аласыз.

4 -кадам: Байланыш

Байланыш!
Байланыш!
Байланыш!
Байланыш!

Баары ушул

IR сериясындагы сериалыңыз байланышка даяр, аларды инфракызыл аркылуу маалымат жөнөтүү үчүн, каалаган нерсеңизди күйгүзүү/өчүрүү же сиз жашырган сенсордун абалын текшерүү үчүн даяр!

Байланыш ишенимдүү болгон аралык WiFi же BT түзмөгүндөй эмес. Бирок, бул кээ бир тиркемелерде абдан пайдалуу болушу мүмкүн (LED диафрагмасына жана ишке ашырылган IR коргоочу системасына жараша)!

Жакында мен жүктөгөн видеолорду жүктөйм, анда мен жасаган тиркемелердин бир нече мисалын көрө аласыз. Ырахат алыңыз!

Сунушталууда: