RF Mòduls amb AT89C51 i protocol de comunicació serial

M

Maverickmax

Guest
Hola

Puc utilitzar comunicació serial per transmetre simples bits de dades 8 amb inici i bits de parada.

En el circuit transmissor, es veuen dos botons que li permeten prémer un.Quan un d'ells s'ha pressionat, jo estava esperant veure un LED per al swtich al circuit receptor.Però la meva circuit receptor en algun moment canviar el LED sense mi prement els botons.

Així que vaig tenir d'identificar el problema, desconnecti la potència en el circuit de transmissor per veure una mica si afecta al meu circuit receptor i no vaig veure cap error en el meu circuit receptor, i que ambdós LED no s'encén mentre el TX s'ha desactivat.

Després connectar el poder de la meva transmissor i el LED va començar a canviar amb el prémer una tecla.Em vaig adonar que hi havia un problema en el meu circuit transmissor.

Fins ara jo no podia identificar qualsevol problema en el meu circuit TX i ha de ser els meus codis:Transmissor de codiCodi:/ / Arxius de capçalera

# Include "main.h"

# Include "port.h"

# Include "delay_loop.h"/ / Prototips de funcionsserial_init buit ();

send_serial buit (sense signe char * s);serial_init buit ()

(

Scone = 0x50; / / Configuració de dades de 8 bits

TMOD = 0x20; / / comptador de temps d'instal lació 1 per auto-reload

TH1 = 0xF3; / / Configuració de 2400 baudis

TR1 = 1; / / Activar temporitzador 1

TI = 1; / / Indiqueu llest per transmetre

)send_serial buit (sense signe char * s)

(

while (* s! = 0x00)

(

SBUF =* s;

while (! TI)

()

TI = 0;s ;

)

)void main (void)

(serial_init ();

/ / Send_serial ('1 ');while (1)

(

/ / SECOND_LED = 0;

/ / FIRST_LED = 0;si (== FIRST_BUTTON premut)

(

send_serial ('1 ');while (1)

(

si (== FIRST_BUTTON NOT_PRESSED)

(

FIRST_BUTTON = NOT_PRESSED;

break;

)

)

)si (== SECOND_BUTTON premut)

(

send_serial ('2 ');

while (1)

(

si (== SECOND_BUTTON NOT_PRESSED)

(

SECOND_BUTTON = NOT_PRESSED;

break;

)

)

)

Delay_Loop (5);

))
 
He oblidat esmentar els mòduls RF.Actualment estic fent servir TLP-434A i mòduls RLP434A i cada un està connectat a AT89C51 xip.

Si vostè sap per què passa açò, si us plau recorda res del que pot passar per alt una cosa important?

Gràcies

Capacitat màxima de Maverick

 
Hola!

Fins on jo sé, la majoria dels sistemes de RF només pot transmetre un «equilibrada» del senyal DC, amb cap dels components de CC.Ets transmetent sèrie estàndard (inici, byte, parada) que té un biaix DC, quan el seu inactivitat de la línia és alta.

No obstant això, pel fet que el TX / RX no pot transmetre el «component de DC del senyal, al seu Rx, el senyal ociós només es reduirà a zero, enganyant al teu recived micro en el pensament d'això és un bit d'arrencada, de manera que llegeix polz Però, és clar, quan en la tracta de bit de parada, no hi ha '1 ', així que el seu xip abandona l'paquet i busca un de nou.

A més, en general, el PLL en el mòdul receptor necessita temps per adaptar-se a la senyal modulat d'entrada, de manera que, depenent de la velocitat de símbol, dels bits primer probablement serà ilegible, mentre que el Rx s'adapta.
!

Finalment, el rendiment d'un típic RX 433Mhz mòdul és sorollós!Diverses fonts de RF són recollits i pot desencadenar un canvi d'estat a la sortida.Es podria desencadenar un "bit d'arrencada 'i després el soroll aleatori constitueix el thats byte de lectura i, després, potser el soroll també provoca un' bit de parada.- Sona poc probable, però al 2.4Kb / s del seu obligat a passar en algun moment.

Aquí està la meva solució:
Jo personalment no crec que simple "start-stop" paquet una és prou resistent, però si tens curiositat, pots intentar invertir el senyal del micro Tx abans d'entrar en el mòdul Tx, i fer el mateix en el receptor finals.D'aquesta manera, un bit d'arrencada és un 1, i la línia és "0" quan està inactiu.Estic bastant segur que encara tindrà la confusa i no els paquets, però mai se sap ...

Llegiu sobre la codificació de canal a RF.I DC-equilibri '.
.

Probablement la cosa més fàcil per a vostè de fer és utilitzar la codificació Manchester.

Es rectifica el problema DC bastant bé, encara que la meitat el datarate disponibles.
Theres una pila d'informació en google, i en aquest fòrum (algunes escrits per mi) sobre la forma de fer.La bona notícia és que tot es pot fer en programari, i fins i tot es pot utilitzar el seu UART, (si en teniu en el xip).Li he explicat que aquest fòrum un parell de vegades, només la recerca així que per als meus missatges (i 'manchester').

Si encara teniu problemes, hi ha moltes solucions, i alternatives a la codificació Manchester, que varien en complexitat i eficiència.Jo realilse vostè només prova els mòduls de RF, només provar coses diferents fins que obtingui un vincle estable és bona, i llavors vostè pot usar-lo en futurs projectes.

Bona sort.

BuriedCode.

 
Hola

Ja que esmenta la codificació Manchester, vaig aprendre a comprendre la codificació Manchester codificador i descodificador, però hi ha dues coses que jo no estic segur sobre:

[1] Vull utilitzar UART en RX i TX amb A89C51 i he de demanar el Manchester codificada en bits els bits de dades?Així que he de afegir al meu codi codificador i descodificador de TX en el meu codi RX?Hi ha alguna cosa que he de modificar el meu codi?Comunicació de sèrie?

[2] Algú ha fet la codificació manchester amb UART en AT89C51 en C abans?Capacitat màxima de Maverick

Alta després de 48 minuts:Ara estic molt confós perquè algú acaba de dir-me que no puc aplicar UART i he de fer servir poc del cop codis i em aconsellen que modificar el meu esquema, així

Capacitat màxima de Maverick

 
Hola de nou

Estic molt frustrat amb el meu projecte sense fils perquè no podia arribar tan lluny en aquest moment.
tell me how to send the data from transmitter to receiver?

Des meus codis no podien transmetre dades molt bé a través del canal de RF, si
us plau dir-me com enviar les dades des del transmissor al receptor?

Recordeu que vaig a implment manchester codificació i descodificació en el transmissor al receptor.Aleshores, quina és la millor manera de transmetre els bits codificats i en com el receptor de captura de les dades en sèrie?

El que aconsegueix respondre la meva pregunta, serà recompensat amb el punt d'ajuda.

Capacitat màxima de Maverick

 
MaverickMax,

Ho sento pel retard, ha estat una mica ocupada.

Bé, si vostè va marcar el fòrum, que s'han trobat fragments de codi i vincles a manchester codificació en un micro, ho reconec tot el meu treball era al microcontrolador PIC, i escrites en assemblador.Però estic segur que es pot convertir pseudo-codi per C.

Cita:

Recordeu que vaig a implment manchester codificació i descodificació en el transmissor al receptor.
Aleshores, quina és la millor manera de transmetre els bits codificats i com el receptor de captura de les dades en sèrie?
 
Hola Buriedcode

Gràcies per la seva informació més ....

Pots si us plau donar-me més informació sobre "esmorteir" que requereixen per connectar entre el mòdul de RF i el microcontrolador perquè no estic familiaritzat amb ell.

Entenc que

Bit d'inici necessita d'un 0

Bits de dades requereix d'1 o 0 bits

Stop bits requereix 1

Per què he de invertir amb inversor TTL?

Capacitat màxima de Maverick

 
Hola!

només una resposta ràpida aquí.
Jo sempre ús "buffers", la seva pràctica un bon disseny.El seu just per separar / netejar qualsevol senyal que passa d'un circuit a les anteres.Ja es tracti d'inversió de no.

Vaig suggerir un simple 'NO porta ", només perquè són més fàcils d'obtenir, i fer aquest treball.El fet que la seva inversió no realment fer una diferència, ja que tindrà un a la seva transmissor, i una al receptor.(1 -> 0 -> 1).

No obstant, no em cita en aquest, sinó perquè la línia en buit per la transmissió UART sol ser "alt" (5v) i perquè dels mòduls de RF no poden portar a un component de CC, el seu receptor no "veure" una línia d 'alta.Si no transmeten gens, es veurà 0V, que el receptor que és un bit d'arrencada, i llegeixi també a (no bit de parada, però, de manera que descarta el paquet).Ho farà per sempre.

Però, si s'inverteix el senyal abans i després de l'enllaç de radiofreqüència, a continuació, la línia "inactiu" és 0.Un bit d'inici seria "1", i deixar un "0".Així que quan vostè no està transmetent res, el receptor 'veure' una línia d'alta (0V invertit és de 5V), que no és un bit d'arrencada, de manera que només espera per als canvis.Per descomptat, el receptor necessita la invrter per la qual cosa no impedeix que la comprovació d'un bit d'inici, sinó perquè vostè ha invertit en la Rx, vostè ha inversor al Tx.

No es pot experimentar, provar amb o sense inversió de la senyal, però estic disposat a apostar d'invertir farà el sistema més fiable.

Finalment, no sé per què em va suggerir utilitzar un UART en el receptor.La seva fina per al Tx, Rx, sinó perquè l'està rebent una gran quantitat d'interferències i soroll, s'activarà el UART per rebre.Així que comença a llegir en un paquet, i al mateix temps, la seva Tx podrien estar transmetent, però s'oblida de prendre les dades.Així que ..... estic africanes tindràs a poc-bang del receptor.No és del tot dolent, aquí hi ha una mica de peus-codi per ajudar al llarg.Creat per a la interrupció de temporitzador en bauds del seu transmissor.

quan es fa ping, fer-ho.
comprovar en quin estat està el passador de RF (pin 10 en el seu Scheme)
Shift això en un registre temporal.
Comproveu si el registre de temperatura és el seu "patró sync '(jo faig servir 00.011.101)
si no es torna a prog principal,
Si és així, continuar la lectura polzEl que fa és ignorar tot el que reps fins que tingui el "patró de sincronització.Tan aviat com el té, vostè sap que el següent bit, serà el 'bit d'inici "del seu primer paquet de dades, un 0.Comproveu si aquest és 0 no, si, llavors la seva flaixos una sincronització, si llavors vostè ha de llegir en els propers 8 bits, i guardar com una cosa semblant a (dat1h).

Per tant, si vostè ha utilitzat la seva UART en el transmissor, i després que vostè ha enviat 2 paquets, manchester codificats, de manera això és un sol byte de dades.I recordi, han d'inici i bits d'aturada, que no és necessari, però es poden utilitzar per a la comprovació d'errors.

dir que ha trobat el seu sincronització
paquet de RF: 0DDDDDDDDD10DDDDDDDD1

llegir en el D's, i després del seu primer byte, comproveu si hi ha un '1 ', a continuació, un '0'.Llegir al byte de connectar.Deseu-los.I descodificar.

El seu realment una mica més fàcil a 'C' per fer coses com aquesta que en el muntatge.Molts Theres exemple de registres de desplaçament al c /

Bona sort.

BuriedCode.

Pg.gràcies pels "punts d'ajuda.M'alegro que podia ajudar a algú.I, si vostè és 'encara té' problemes.Vaig a armar el meu propi sistema, amb el consentiment fonamentat previ i els mòduls de RF, he tingut la intenció de fer-ho de totes maneres.El meu codi serà en el muntatge, però anotat bé.

 
Una possible solució és que donen els països nòrdics (www.nvlsi.com) xip "nRF401".Vostè pot utilitzar un mòdul
FM-433-RXQ1 de Farnell o RXQ1 433,9, des Telecontrolli (www.telecontrolli.com).
L'últim és més barat (a màxim 20 euros).

Aquests mòduls es basen en nRF401 xip que és un transceptor de doble banda.El principal avantatge d'aquest
xip és la possibilitat de treballar no cap tipus de codificació Manchester (que jo sàpiga una codificació Manchester
reduir la taxa de dades dels dos).

Vostè pot trobar una gran quantitat d'arxius d'utilitat en el lloc nòrdics per al producte nRF401.

Puc utilitzar aquest mòdul des de 2002 i no tinc cap problema.

 
Hola Buriedcode

Gràcies Buriedcode i els punts d'una altra per a vostè.Hi ha una cosa que he d'estar segur abans d'escriure-colpejant algorisme de bits per al receptor.

Imagini el següent:

Puc obtenir els bits - 1111000

Quan la lògica passa a alta al principi, es queda allà per un temps.Com sé que el meu microcontrolador poc es mantenen alts en tres ocasions?

Perquè necessito per emmagatzemar cada bit en el meu buffer per a la posterior processament com la descodificació de Manchester.He aplicar interrompre o una altra cosa?

Pots si us plau em proporcioni un altre pseudo-codi per això?

Capacitat màxima de Maverick

 
Maverick Max,

vell fil de llarga això no és

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Molt feliç" border="0" />Cita:

Imagini el següent:puc obtenir els bits - 1111000Quan la lògica passa a alta al principi, es queda allà per un temps.
Com sé que el meu microcontrolador poc es mantenen alts en tres ocasions?
 
Buriedcode escriure:Finalment, no sé per què em va suggerir utilitzar un UART en el receptor.
La seva fina per al Tx, Rx, sinó perquè l'està rebent una gran quantitat d'interferències i soroll, s'activarà el UART per rebre.
 
Yin-Yang va escriure:Hola BuriedcodeDe curosity, ha experimentat aquest problema en el projecte anterior?He trobat els seus missatges molt interessants sobre manchester codificació atacs i a poc.
Però li estalviaria molt de temps si vostè compra de xips de ràdio amb les característiques com codificació lineal i RS-232?
Això podria accelerar el procés per a mi, màx inconformista i la gent en EDAboard.Si és possible aconseguir una, saps alguna cosa bona xip de radiofreqüència?
Yin-Yang
 
Hola a tots,

Hi ha diversos mòduls de RF que són "transparents", aquests presten els seus correcció d'errors propis, l'espectre de difusió i de moltes altres campanes i xiulets.Jo no ho he utilitzat una

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Trist" border="0" />

Sempre m'ha agradat provar i dissenyar les coses des de zero, m'ajuda a aprendre, i això significa que tinc el control total sobre totes les coses.A més, les compres fetes mòduls pre és el camí més fàcil

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Molt feliç" border="0" />Dit això, encara que algunes són molt cares (com els mòduls dels països nòrdics i els de microlínies), que són 2,4 GHz, 500 m, comsuption de baixa potència, alta velocitat, FHSS) en els anys recents, alguns barats els realment han sortit, que no són tan de luxe, però que sigui molt més fàcil de configurar un enllaç.

http://www.lprs.co.uk/main/product.info.php?productid=152
http://www.lprs.co.uk/main/product.info.php?productid=153 de 433Mhz

http://www.lprs.co.uk/main/product.info.php?productid=155
http://www.lprs.co.uk/main/product.info.php?productid=156 per 868/900Mhz.

Tant les anteriors són enllaços simple (només anada) i la interfície de RS232 (donat el nivell adequat desplaçament).Però pot connectar directament a un UART en un micro, sense cap tipus de codificació, sdince el micro en el mòdul ho fa per tu.Bàsicament Maverick, que microcontrolador hi és ja.

A més, si la seva aplicació es limita a exigir "control", com un control de porta, alarmes, seguretat, etc ..Hi ha munts d'envasat, etc que són de terra barata i fer tot el xifrat, la codificació de canal, ASIC.Encara que aquests generalment no poden enviar reals "dades", només uns interruptors d'encesa / apagat.

http://www.rentron.com/PicBasic/RemoteControl.htm

Aquest lloc té un munt de coses per a la venda, tot i que potser una mica cars en comparació amb comprar a un distribuïdor (Farnell).

chips.

Jo mirava als xips Holtek.Alguns són per a uns interruptors (probablement utilitzats en l'automòbil de tot el món alarmes) i alguns poden ser configurats per enviar dades de l'usuari.Una vegada més, tot el complicat és fet per tu.
Maverick, aquests recomanem que utilitzeu la RF que els mòduls han

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Molt feliç" border="0" />Espero que això ajudi.I com ja he dit, m'agrada dissenyar coses des de zero, jo faig servir molts dels xips de mòdul esmentat anteriorment, però el meu últim projecte s'executa a 4 Mb / s, amb una latència baixa, i encara he de trobar un xip que fa el Codificació de canal per a mi.

BuriedCode.

 
Hola

http://www.rentron.com/ruf-bot.htm

Aquest enllaç mostrarà aquest tipus han fet el projecte similar com el meu, però ell no va fer ús de la codificació Manchester, el seu preàmbul o comporta NOT.Ell acaba d'utilitzar la comunicació sèrie.

Fins ara sé que ell està utilitzant PIC 16F84 i Langauge base, mentre que jo faig servir i l'idioma AT89C51 C.Què més?

Capacitat màxima de Maverick

 

Welcome to EDABoard.com

Sponsor

Back
Top