Taula de continguts:
Vídeo: UChip: sèrie per IR: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
La comunicació sense fils s’ha convertit en una característica clau en els nostres projectes actualment i parlant de connexió sense fils, el primer que em ve al cap és el Wi-Fi o BT, però manejar els protocols de comunicació Wi-Fi o BT no és una tasca fàcil i consumeix molt de recursos MCU, deixant poc espai per codificar la meva aplicació. Per tant, normalment opto per un mòdul Wi-Fi / BT extern connectat en sèrie al microcontrolador per tal de dividir els rols i obtenir més llibertat.
No obstant això, de vegades el Wi-Fi i el BT són “excessius” per a algunes aplicacions que requereixen una taxa de bits baixa i una distància de comunicació curta. A més, utilitzar Wi-Fi o BT implica la necessitat de connectar el vostre telèfon intel·ligent o dispositiu amb l’autenticació adequada.
Imagineu que simplement heu d’encendre / apagar una llum externa o canviar la intensitat de la làmpada o obrir una porta elèctrica. Val la pena utilitzar Wi-Fi o BT?
Depenent de l’entorn i les aplicacions, la comunicació sense fils per longitud d’ona IR (infrarojos) pot ser útil. Un Serial over IR, implementat amb pocs components externs (3 components discrets!), I uChip (una petita placa compatible amb Arduino) poden ser la solució que buscàveu.
Nombre de materials (per a un dispositiu Tx-Rx):
1 x xip
1 x LED IR: amb el pic d’emissió a 950 nm
1 x TSOP-38238 (d'equivalent)
Resistència 1 x 1KOhm
Maquinari
1 x tauler de protecció / tauler de protecció
1 x tub de plàstic negre: diàmetre interior de la mateixa mida que el LED IR, el tub és necessari per evitar converses creuades amb el receptor TSOP.
1 x paper d'alumini (3 cm x 3 cm)
1 x cinta
SUGGERIMENT: Podeu crear un dispositiu només TX o només RX en cas que necessiteu una comunicació en una direcció eliminant el maquinari innecessari RX / TX del circuit o activant / desactivant el codi relacionat a l'esbós.
Pas 1: cablejat
Connecteu els components junts segons l’esquema.
Algunes notes sobre l'esquema senzill. Com que el TSOP-38238 permet una font d'alimentació de 2,5V a 5V i absorbeix 0,45mA com a màxim (trobareu la fitxa AQUÍ), alimentaré el receptor mitjançant dos pins, que proporcionaran terra i font d'alimentació respectivament. Això permet encendre / apagar el receptor a petició i configurar un cablejat de maquinari molt senzill. A més, en cas que necessiteu una comunicació unidireccional, podeu triar si voleu crear un dispositiu (Tx / Rx) només desactivant / habilitant el TSOP-38238.
Com funciona el circuit?
És bastant senzill. El pin de sortida TSOP s’estira baix quan el sensor detecta un tren de 6 impulsos o més a 38 KHz, en canvi, s’estén quan no hi ha un senyal d’aquest tipus. Per tant, per transmetre les dades serials per IR, el que fa el circuit és alimentar l’ànode LED amb un PWM de 38 KHz modulat amb el senyal sèrie TX que fa baixar el càtode LED.
En conseqüència, en un nivell alt de la sèrie TX0, el LED no està esbiaixat ni esbiaixat a la inversa (sense polsos) i el pin de sortida TSOP s’eleva. Transmetent un nivell baix a la sèrie, el LED s’alimenta i genera polsos IR segons el senyal PWM aplicat; per tant, la sortida de TSOP és baixa.
Com que la transmissió és directa (0-> 0 i 1-> 1) no hi ha necessitat d'inversors ni cap altra lògica al costat del receptor.
Regulo la potència de sortida òptica del LED seleccionant el cicle de treball PWM segons l’aplicació. Com més gran sigui el cicle de treball, més gran serà la potència de sortida òptica i, per tant, més transmetreu el vostre missatge.
Tingueu en compte que encara hem de generar impulsos. Per tant, no hauríeu de superar el 90% del cicle de treball, en cas contrari, el TSOP no detectarà el senyal com a impulsos.
Necessiteu més energia?
Per augmentar el corrent, podem simplement reduir el valor de la resistència d’1 kOhm?
Potser, no sigueu massa exigents! El corrent màxim que obteniu d'un pin de la MCU està limitat a 7 mA quan conduïu el pin de port més fort del normal (PINCFG. DRVSTR = 1 i VDD> 3V) tal com s'indica a la fitxa tècnica SAMD21.
No obstant això, la configuració estàndard (que és la que adopten les biblioteques IDE Arduino com a predeterminada) limita el corrent a 2 mA. Per tant, utilitzar 1kOhm ja proporciona el límit actual amb la configuració predeterminada.
L’augment del corrent no és només una qüestió de components elèctrics. Breument:
- Canvieu la resistència (el valor mínim del qual està limitat a aproximadament 470 Ohm -> VDD / 470 ~ 7 mA);
- Establiu el PORT-> PINCFG-> DRVSTR corresponent a 1;
Proporcionaré el codi que inclou aquesta funció en una futura actualització.
Però recordeu, enfonsar i drenar el corrent dels passadors MCU propers als seus límits no és un enfocament tan bo. De fet, redueix la vida útil i la fiabilitat de la MCU. Per tant, suggereixo mantenir la força normal de la unitat per a un ús a llarg termini.
Pas 2: programació
Carregueu l'esbós "IRSerial.ino" a uChip (o a la placa compatible Arduino que utilitzeu).
En cas que necessiteu canviar el pin que genera el PWM, assegureu-vos que utilitzeu un pin connectat a un temporitzador TCC, ja que aquesta versió del codi només funciona amb temporitzadors TCC (consulteu la "variant.c" del vostre tauler per obtenir aquesta informació). Afegiré el codi per utilitzar també temporitzadors TC en futures actualitzacions.
El codi és bastant senzill. Després d’establir el PIN_5 baix (proporciona TSOP GND) i el PIN_6 alt (alimentar el TSOP), l’MCU inicia el PWM a PIN_1, estableix el període del temporitzador i fa la comparació en funció de la modulació de freqüència necessària (en el meu cas és de 38 KHz) i de servei cicle (12,5% per defecte). Això es fa aprofitant la funció estàndard analogWrite () dels pins PWM i canviant només el registre PER_REG (registre de període) i el registre CC (comparació de captures) (el codi escrit és simplement un tallar i enganxar de la biblioteca wiring_analog). Podeu configurar la freqüència necessària en conseqüència amb el canvi de PER_REG del sensor TSOP (que és el límit superior per restablir el comptador del temporitzador), mentre que configureu CC proporcionalment al valor del període al percentatge desitjat del cicle de treball.
A continuació, el codi estableix el port sèrie mitjançant la velocitat de transmissió correcta que és de 2400 bps. Per què una taxa de transmissions tan baixa ?! La resposta es troba al full de dades TSOP que podeu trobar AQUÍ. Com que el TSOP compta amb filtres de rebuig de soroll elevats per evitar commutacions no desitjades, és necessari enviar un tren de polsos múltiples per tirar cap avall el pin de sortida TSOP (el nombre de polsos depèn de la versió de TSOP, 6 és el valor típic). De la mateixa manera, la sortida TSOP s'eleva després d'un temps mínim equivalent a 10 polsos o més. En conseqüència, per establir la sortida TSOP com a senyal modulador TX0, és necessari establir la velocitat en bauds tenint en compte la següent equació:
Baud sèrie <freqüència_PWM / 10
Si s'utilitza 38 KHz, es produeix una velocitat de transmissió inferior a 3800 bps, el que significa que la velocitat de transmissió "estàndard" més elevada és de 2400 pbs, tal com s'havia previst anteriorment.
Voleu augmentar la velocitat en bauds? Hi ha dues opcions.
L'opció més senzilla és canviar el TSOP a una versió de freqüència superior (com el TSOP38256), que us permetria duplicar la velocitat en bauds (4800bps)
No és suficient?! A continuació, heu de fer el vostre propi enllaç òptic mitjançant un senzill LED IR + fotodiode i circuits d'amplificació. No obstant això, aquesta solució requereix molta experiència en codificació i electrònica per evitar que el soroll afecti les dades transmeses i, per tant, la seva implementació no és gens fàcil. Tanmateix, si us sentiu prou segur, esteu benvingut a provar de crear el vostre propi sistema TSOP.:)
Finalment, he configurat el port SerialUSB (2400bps) que faig servir per enviar i rebre dades al monitor sèrie.
La funció loop () inclou el codi necessari per passar dades a les dues sèries i es copia directament de l'esbós d'exemple SerialPassthrough canviant només els noms de les sèries.
Pas 3: blindatge del LED IR
Si enceneu els circuits anteriors després de carregar el codi "IRSerial.ino", comproveu el monitor de sèrie a l'IDE Arduino i intenteu enviar una cadena. Probablement veureu que uChip rep exactament el que transmet. Hi ha una conversa creuada als circuits a causa de la comunicació òptica entre el LED IR i el TSOP del mateix dispositiu.
Aquí ve la part més difícil d’aquest projecte, evitant les converses creuades. El bucle s’ha de trencar per fer una comunicació sèrie bidireccional per IR.
Com trenquem el bucle?
La primera opció és reduir el cicle de treball PWM, reduint així la potència òptica de sortida del LED. Tot i això, aquest enfocament també redueix la distància a la qual s’obté un canal IR fiable. La segona opció és protegir el LED IR, fent així un "feix" direccional IR. És una qüestió d’intents i errors; finalment, amb un tros de mànega d’aire pneumàtic negre embolicat amb paper d'alumini i cinta adhesiva (proporcionant aïllament elèctric), vaig aconseguir trencar la conversa. Si col·loqueu el LED IR transmissor a l’interior del tub s’evita la comunicació entre el TX i l’RX del mateix dispositiu.
Mireu la imatge per veure la meva solució, però no dubteu a provar altres mètodes i / o suggerir-vos la vostra. No hi ha cap solució absoluta a aquest problema (tret que necessiteu un canal senzill d’una sola direcció) i probablement haureu d’ajustar el disseny del circuit, el cicle de treball PWM i l’escut IR segons les vostres necessitats.
Un cop interrupteu la conversa creuada, podeu verificar que el dispositiu segueix funcionant creant un bucle al dispositiu Tx-Rx que exploti el reflex de la longitud d'ona IR a les superfícies reflectants IR.
Pas 4: comuniqueu-vos
Això és tot
La vostra sèrie per dispositiu IR està preparada per comunicar-se, utilitzeu-les per enviar dades per IR, activar / desactivar qualsevol cosa que vulgueu o comprovar l’estat d’un sensor que amagueu en secret.
La distància a la qual la comunicació és fiable no és tant com per a un dispositiu WiFi o BT. No obstant això, és direccional (depenent de l'obertura del LED i del sistema de protecció IR implementat), cosa que pot ser molt útil en algunes aplicacions.
Aviat penjaré un vídeo on podreu veure alguns exemples de les aplicacions que he fet. Gaudeix-ne!
Recomanat:
Configuració sèrie HC-05 per Bluetooth: 10 passos
Configuració sèrie HC-05 mitjançant Bluetooth: mentre utilitzava dispositius Android i mòduls SPC Bluetooth HC-05 per a alguns projectes Arduino, volia comprovar i canviar les velocitats de transmissió HC-05 i altres paràmetres sense connectar-me a un port USB del PC. Això es va convertir en this.HC-05 mòduls connectar sèrie i Blu
Sèrie de PCB universals per a fabricació d'amplis de tubs: 5 passos
Sèrie de PCB universals per a la fabricació d’amplis de tubs: els circuits de tubs van ser un pas crucial en el desenvolupament de l’electrònica. En la majoria de les àrees van quedar completament obsoletes en comparació amb tecnologies d'estat sòlid més barates, més petites i més eficients. A excepció de l'àudio, tant de reproducció com de
Porta d’entrada UDP / IP de sèrie per a Arduino basada en l’escut ESP8266: 8 passos
Passarel·la UDP / IP de sèrie per a Arduino basat en l’escut ESP8266: ja vaig publicar el 2016 aquest instructiu "Com crear la vostra pròpia passarel·la Wifi per connectar el vostre Arduino a la xarxa IP". Des que he fet algunes millores de codi i segueixo utilitzant aquesta solució. No obstant això, ara hi ha alguns escuts ESP8266 t
UChip: esbós senzill per a motors i / o servidors de control remot mitjançant ràdio Tx-Rx a 2,4 GHz !: 3 passos
UChip: esbós senzill per a motors i / o servidors de control remot mitjançant ràdio Tx-Rx a 2,4 GHz !: M'agrada molt el món de RC. L'ús d'una joguina RC us dóna la sensació que teniu el control d'alguna cosa extraordinària, tot i ser un vaixell petit, un cotxe o un dron. Tot i això, no és fàcil personalitzar les vostres joguines i fer-les fer el que vulgueu
Taula Node IoT (A) de la sèrie DockerPi per a Raspberry Pi 4B: 4 passos
Taula IoT Node (A) de la sèrie DockerPi per a Raspberry Pi 4B: Descripcions: El node IoT (A) és un dels mòduls de la sèrie DockerP. Node IOT (A) = GPS / BDS + GSM + Lora. I2C controla directament Lora, envia i rep dades, controla el mòdul GSM / GPS / BDS mitjançant SC16IS752, la placa principal només necessita suport I2C. Suport Raspbe