Sisukord:

UChip - seeria üle IR !: 4 sammu
UChip - seeria üle IR !: 4 sammu
Anonim
UChip - jada IR kaudu!
UChip - jada IR kaudu!
UChip - jada IR kaudu!
UChip - jada IR kaudu!

Traadita side on tänapäeval saanud meie projektide võtmeelemendiks ja juhtmevabast rääkimisest tuleb esimesena meelde Wi-Fi või BT, kuid Wi-Fi või BT sideprotokollide haldamine pole lihtne ülesanne ja kulutab palju MCU ressursse, jättes väikese ruumi minu rakenduse kodeerimiseks. Seetõttu valin rollide jagamiseks ja suurema vabaduse saamiseks tavaliselt välise Wi-Fi/BT mooduli, mis on järjestikku ühendatud mikrokontrolleriga.

Kuid mõnikord on Wi-Fi ja BT mõne rakenduse jaoks, mis nõuavad madalat bitikiirust ja lühikest sidekaugust, „üle jõu”. Lisaks tähendab WiFi või BT kasutamine vajadust ühendada nutitelefon või seade nõuetekohase autentimisega.

Kujutage ette, et peate lihtsalt sisse/välja lülitama välisvalguse, muutma lambi intensiivsust või avama elektrilise värava. Kas tasuks kasutada WiFi või BT?

Sõltuvalt keskkonnast ja rakendustest võib tulla kasuks traadita side infrapuna (infrapuna) lainepikkusel. Otseseks lahenduseks võib olla infrapunaühendus, milles on vähe väliseid komponente (3 diskreetset komponenti!) Ja uChip (väga väike Arduino ühilduv plaat)!

Materjalide nimekiri (ühe Tx-Rx seadme jaoks):

1 x kiip

1 x IR LED: heitgaasi tipp 950 nm juures

1 x TSOP-38238 (samaväärne)

1 x 1KOhm takisti

Riistvara

1 x leivalaud/protolaud

1 x must plasttoru: siseläbimõõt sama suur kui IR-LED, toru on vajalik TSOP-vastuvõtjaga ristkõne vältimiseks.

1 x alumiiniumfoolium (3 cm x 3 cm)

1 x lint

NÕUANNE. Kui vajate ühesuunalist sidet, saate luua ainult-TX- või ainult-RX-seadme, eemaldades vooluringist tarbetu RX/TX riistvara või lubades/keelates vastava koodi visandil.

Samm: juhtmestik

Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik

Ühendage komponendid vastavalt skeemile.

Mõned märkused lihtsa skeemi kohta. Kuna TSOP-38238 võimaldab toiteallikat vahemikus 2,5 V kuni 5 V ja neelab maksimaalselt 0,45 mA (andmelehe leiate SIIT), toidan vastuvõtjat kahe kontakti abil, mis tagab vastavalt maanduse ja toiteallika. See võimaldab vastuvõtjat vajadusel sisse/välja lülitada ja väga lihtsat riistvara juhtmestiku seadistamist. Lisaks, kui vajate ühesuunalist suhtlust, saate valida, kas teha ainult (Tx/Rx) seade, lihtsalt keelates/lubades TSOP-38238.

Kuidas vooluring töötab?

See on üsna lihtne. TSOP väljundnõel tõmmatakse madalale, kui andur tuvastab 38 impulsi sagedusel 6 impulsi või rohkem, teisest küljest tõmmatakse see kõrgele, kui sellist signaali pole. Seega, selleks, et jadaandmeid infrapuna kaudu edastada, kasutab vooluring LED -anoodi toiteks 38KHz PWM, mis on moduleeritud TX -jadasignaaliga, mis tõmbab LED -katoodi madalaks.

Järelikult ei ole seeria TX0 kõrgel tasemel LED eelpingestatud ega vastupidises asendis (impulsse pole) ja TSOP väljundtihvt tõmmatakse kõrgele. Edastab järjestikku madalat taset, LED töötab ja genereerib IR -impulsse vastavalt rakendatud PWM -signaalile; seetõttu tõmmatakse TSOP väljund madalale.

Kuna ülekanne on otsene (0-> 0 ja 1-> 1), pole vastuvõtja poolel vaja invertereid ega muud loogikat.

Ma reguleerin LED -optilist väljundvõimsust, valides PWM -i töötsükli vastavalt rakendusele. Mida suurem on töötsükkel, seda suurem on optiline väljundvõimsus ja seetõttu edastate oma sõnumi edasi.

Pidage meeles, et meil on veel vaja impulsse genereerida! Seega ei tohiks te ületada töötsüklit üle 90%, vastasel juhul ei tuvasta TSOP signaali impulssidena.

Kas vajate rohkem jõudu?

Kas voolu suurendamiseks saame lihtsalt 1kOhm takisti väärtust vähendada?

Võib -olla lihtsalt ära ole liiga nõudlik! Maksimaalne vool, mille saate MCU tihvtilt, on piiratud 7 mA -ga, kui juhtite pordi tihvti tavalisest tugevamalt (PINCFG. DRVSTR = 1 ja VDD> 3V), nagu on märgitud SAMD21 andmelehel.

Kuid standardkonfiguratsioon (mille Arduino IDE teegid vaikimisi vastu võtavad) piirab voolu 2 mA -ni. Seetõttu annab 1kOhm kasutamine juba vaikeseadetega praeguse piiri!

Voolu suurendamine ei ole ainult elektrikomponentide küsimus. Lühidalt:

  • Vahetage takisti (mille minimaalne väärtus on piiratud ligikaudu 470Ohm -> VDD/470 ~ 7mA);
  • Seadke vastavalt PORT-> PINCFG-> DRVSTR väärtuseks 1;

Esitan selle funktsiooni sisaldava koodi tulevases värskenduses.

Kuid pidage meeles, et voolu uputamine ja tühjendamine MCU tihvtidest selle piiride lähedal ei ole nii hea lähenemine. Tõepoolest, see vähendab MCU eluiga ja töökindlust. Seetõttu soovitan pikaajalisel kasutamisel säilitada normaalse ajami tugevuse.

2. samm: programmeerimine

Laadige visand „IRSerial.ino” uChipi (või teie kasutatavasse Arduino ühilduvasse plaati).

Kui teil on vaja muuta PWM -i genereerivat tihvti, veenduge, et kasutate TCC -taimeriga ühendatud tihvti, kuna see koodi versioon töötab ainult TCC -taimeritega (selle teabe saamiseks vaadake oma tahvli varianti c)). Lisan koodi, et kasutada tulevastes värskendustes ka TC taimerit.

Kood on üsna lihtne. Pärast PIN_5 madala (sätestab TSOP GND) ja PIN_6 kõrge (TSOP -i toiteallika) seadistamist käivitab MCU PWM -i PIN_1 -l, määrates taimeriperioodi ja salvestuse võrdluse vastavalt vajaliku sagedusmodulatsiooniga (minu puhul on see 38KHz) ja töövõimega tsükkel (vaikimisi 12,5%). Seda tehakse, kasutades PWM-i tihvtide standardfunktsiooni analogWrite () ja muutes ainult registrit PER_REG (perioodiregister) ja CC (püüdmise võrdlemine) (kirjutatud kood on lihtsalt väljalõikamine ja kleepimine teegist wiring_analog). Vajaliku sageduse saate seadistada vastavalt TSOP anduri muutmisele PER_REG (mis on taimeriloenduri lähtestamise ülemine piir), seades samal ajal CC proportsionaalselt perioodi väärtusega soovitud töötsükli protsendini.

Järgmisena määrab kood jadapordi, kasutades õiget edastuskiirust, mis on 2400 bps. Miks nii madal edastuskiirus ?! Vastus on TSOP -i andmelehel, mille leiate SIIT. Kuna TSOP -l on soovimatu ümberlülitumise vältimiseks kõrge müratasemega filtrid, tuleb TSOP -väljundtihvti alla tõmbamiseks saata mitme impulsi rong (impulsside arv sõltub TSOP -versioonist, tüüpiline väärtus on 6). Samamoodi tõmmatakse TSOP väljund kõrgele pärast minimaalset ajavahemikku, mis võrdub 10 või enama impulsiga. Järelikult on TSOP -väljundi seadistamiseks moduleerivaks TX0 -signaaliks vaja seadistada edastuskiirus, võttes arvesse järgmist võrrandit:

Seeriabaud <PWM_sagedus/10

Kasutades 38KHz, on selle edastuskiirus väiksem kui 3800bps, mis tähendab, et kõrgem lubatud standardkiirus on 2400pbs, nagu varem oodatud.

Kas soovite suurendada edastuskiirust? On kaks võimalust.

Lihtsaim võimalus on muuta TSOP kõrgema sagedusega versiooniks (nagu TSOP38256), mis võimaldab teil kahekordistada edastuskiirust (4800 bps)

Mitte piisavalt?! Seejärel peate lihtsa IR LED+fotodioodi ja võimendusskeemi abil looma oma optilise lingi. See lahendus nõuab aga palju kodeerimise ja elektroonikaalaseid teadmisi, et vältida müra mõjutamist edastatavatele andmetele ja seetõttu pole selle rakendamine sugugi lihtne! Kui aga tunnete end piisavalt enesekindlalt, olete teretulnud proovima oma TSOP -süsteemi!:)

Lõpuks seadistasin SerialUSB pordi (2400bps), mida kasutan jaemonitoril andmete saatmiseks ja vastuvõtmiseks.

Funktsioon loop () sisaldab koodi, mis on vajalik andmete edastamiseks kahe seerianumbri vahel, ja see kopeeritakse otse SerialPassthrough visandi näitest, muutes ainult seerianumbreid.

3. samm: varjestus IR LED

Varjestatud IR -LED
Varjestatud IR -LED
Varjestatud IR -LED
Varjestatud IR -LED

Kui lülitate ülaltoodud vooluringi sisse pärast koodi „IRSerial.ino” laadimist, kontrollige Arduino IDE jadamonitori ja proovige string saata. Tõenäoliselt näete, et uChip võtab vastu täpselt seda, mida see edastab! Infrapuna LED-i ja sama seadme TSOP-i vahelise optilise side tõttu on vooluringis ristkõne!

Siit tuleb selle projekti raske osa, mis takistab ristkõnesid! Kahepoolse jadaühenduse loomiseks infrapuna kaudu tuleb tsükkel katkestada.

Kuidas me silmuse katkestame?

Esimese võimalusena vähendate PWM -töötsüklit, vähendades seega LED -i optilist väljundvõimsust. Kuid see lähenemisviis vähendab ka kaugust, mille jooksul saate usaldusväärse jada IR -kanali. Teine võimalus on infrapuna -LED -i varjestamine, tehes seega suunaga IR -kiirguse. See on katse ja eksituse küsimus; lõpuks, kasutades alumiiniumfooliumisse ja teibi (elektriisolatsiooni pakkuvat) musta pneumaatilist õhuvoolikut, suutsin ristkõne katkestada. Edastava IR -valgusdioodi panemine torusse takistab sama seadme TX ja RX vahelist suhtlust.

Vaadake minu lahenduse nägemiseks pilti, kuid proovige julgelt teisi meetodeid ja/või soovitage oma! Sellele probleemile pole absoluutset lahendust (kui teil pole vaja lihtsat ühesuunalist kanalit) ja tõenäoliselt peate vastavalt oma vajadustele häälestama vooluahela paigutuse, PWM-töötsükli ja IR-kilbi.

Kui olete risti kõne katkestanud, saate kontrollida, kas teie seade töötab endiselt, luues seadmele Tx-Rx silmuse, kasutades ära IR-lainepikkuse peegeldumist IR-peegeldavatel pindadel.

4. samm: suhtle

Suhtle!
Suhtle!
Suhtle!
Suhtle!

See on kõik

Teie jadaühendusega IR -seade on valmis suhtlemiseks, kasutage neid andmete edastamiseks infrapuna kaudu, lülitage sisse/välja kõik, mis teile meeldib, või kontrollige salaja peidetud anduri olekut!

Kaugus, millelt side on usaldusväärne, ei ole nii suur kui WiFi- või BT -seadme puhul. Kuid see on suunatud (sõltuvalt LED -ava ja rakendatud IR -varjestussüsteemist), mis võib mõnes rakenduses olla väga kasulik!

Varsti laadin üles video, kus näete vähe näiteid minu tehtud rakendustest. Nautige!

Soovitan: