Está en la página 1de 220

InstitutoPolitcnicoNacional

EscuelaSuperiordeIngenieraMecnicayElctrica
Zacatenco

Sistemadecontrolymonitoreode
dispositivosatravsdeInternetcon
USB

T E S I S

QUE PARA OBTENER EL TTULO DE:

INGENIERO EN COMUNICACIONES Y ELECTRNICA

Edgar Moreno Segura

Jess Jovanni Victoria Corona

Asesores:
Ing. Armando Mancilla Len
M. en C. Roberto Galicia Galicia
MXICO,
D.F.
IngenieraenComunicacionesyElectrnicaIPN

2009

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Agradecimientos

AmispadresJessyCeciliaporelgranapoyoquesiempremehanproporcionado,enlasbuenasyenlas
malas.Gracias,portodossusesfuerzosyconsejosloscualesmehanguiadohaciaestecaminoenelque
he logrado el primer gran paso de mi vida. Espero que este logro tambin lo consideren de ustedes.
Gracias paps por tener todas esas actitudes que me dan el nimo de continuar superndome, y
resolvercualquierproblemaquesemepresente.
AlosprofesoreselM.enC.RobertoGaliciaGaliciayelIng.ArmandoMancillaLen,porsuconstante
asesorayapoyoenlarealizacindeestetrabajo.

JessJovanniVictoriaCorona

Amispadres,porquegraciasasuincondicionalapoyologrrealizarunodemisgrandessueos.
Al profesor M. en C. Roberto Galicia Galicia y el Ing. Armando Mancilla Len que no dudaron en
ofrecernostodossusconocimientosalahoraderealizarestetrabajo.

EdgarMorenoSegura

Agradecimientos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ndice
Objetivos.......................................................................................................................................................v
Descripcingeneral.....................................................................................................................................vi
Justificacin.................................................................................................................................................vii
Panoramageneraldeltrabajo...................................................................................................................viii
Captulo1Controldeperifricos..................................................................................................................1
1.1Conexindeperifricos......................................................................................................................1
1.1.1Interfazserie................................................................................................................................2
1.2Microcontroladores..........................................................................................................................10
Captulo2Envodedatosatravsdelared...............................................................................................12
2.1IntroduccinaInternet.....................................................................................................................12
2.2Protocolosdecomunicacin.............................................................................................................13
2.2.1ModelodereferenciaOSI..........................................................................................................13
2.2.2ProtocoloTCP/IP........................................................................................................................15
2.2.3ProtocoloUDP............................................................................................................................17
2.3Puertos..............................................................................................................................................18
2.4DireccionesIP....................................................................................................................................19
2.4.1DireccionesIPpblicasyprivadas.............................................................................................22
2.4.2AsignacinestticaydinmicadeunadireccinIP..................................................................23
i
ndice

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2.5DominiosyDNS.................................................................................................................................24
2.6ParadigmaClienteServidor............................................................................................................25
2.7Sockets..............................................................................................................................................25
2.8ControlWinsock...............................................................................................................................28
2.8.1Propiedades...............................................................................................................................28
2.8.2Mtodos.....................................................................................................................................30
2.8.3Eventos.......................................................................................................................................30
Captulo3Materiales..................................................................................................................................32
3.1Softwarededesarrollo......................................................................................................................32
3.1.1VisualStudioC#2008.................................................................................................................32
3.1.2CompiladorCCS..........................................................................................................................32
3.1.3WinPic800..................................................................................................................................33
3.1.4LiveWireyPCBWizard...............................................................................................................33
3.2Hardwarededesarrollo....................................................................................................................33
3.2.1ProgramadorGTPUSBLite........................................................................................................33
3.3

MicrocontroladorPIC18F2550...................................................................................................34

3.4

CmaraIP....................................................................................................................................35

Captulo4DesarrollodelasaplicacionesClienteyServidor......................................................................36
4.1InstalacindelServidor.....................................................................................................................37
4.2Comunicacinentrenuestrasaplicaciones......................................................................................39
ii
ndice

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

4.3DescripcindelaaplicacinCliente..................................................................................................41
4.3.1Paneldeconexin......................................................................................................................43
4.3.2Paneldecontroles.....................................................................................................................44
4.3.3Paneldeubicacindedispositivos............................................................................................51
4.4ClaseAplicacionCliente,................................................................................................................52
4.5DescripcindelaaplicacinServidor...............................................................................................54
4.5.1

PaneldedatosdelServidor................................................................................................55

4.5.2PaneldeMensajes.....................................................................................................................56
4.5.3Estadodelaconexin................................................................................................................57
4.5.4PaneldeConexin.....................................................................................................................58
4.6ComunicacinUSB............................................................................................................................59
4.6ConexinconelServidor..................................................................................................................64
4.7Envodedatos...................................................................................................................................66
4.8Recepcindedatos...........................................................................................................................68
Captulo5....................................................................................................................................................70
Sistemaelectrnicodecomunicaciones.....................................................................................................70
5.1Introduccin......................................................................................................................................70
5.2Sistemaelectrnicodecomunicaciones...........................................................................................74
5.2.1Comandosdecontrolycomandosdemonitoreo.....................................................................76
5.2.2Mdulodecontrol.....................................................................................................................80
iii
ndice

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

5.2.3Mdulodemonitoreo..............................................................................................................131
5.2.4Diseodelasantenasutilizadasenlascomunicacionesinalmbricas....................................153
Estudioeconmico..................................................................................................................................156
Pruebasyresultados.................................................................................................................................161
Conclusiones.............................................................................................................................................163
ApndiceA.LibreraparaUSB:MPUSBAPI.DLL.......................................................................................167
ApndiceB.Cdigos,aplicacionesClienteyServidor..............................................................................172
ApndiceC.Circuitosimpresos................................................................................................................192
BIBLIOGRAFA........................................................................................................................................199
ndicedefiguras..................................................................................................................................2000
Glosario...................................................................................................................................................2055

iv
ndice

Objetivos

General:
Desarrollarunsistemaquepermitaaunusuariocontrolarymonitoreardispositivosadistancia.

Particulares:

Enviarinformacindecontrolentredosequipos(ClienteyServidor)atravsde
Internet,quepermitamanipulardispositivos.

Explotar las funciones de un microcontrolador para lograr transmitir y recibir


datosatravsdelainterfazUSB.

Lograrlacomunicacininalmbrica(RF)
controladosymonitoreados.

HacerusodelprogramaVisualStudio2008paradesarrollaraplicacionescapaces
decomunicarseatravsdeunared.

entre el Servidor y los dispositivos

v
Objetivos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Descripcingeneral.
Elproyectoconsiste,enunsistemaquepermitirelcontrolymonitoreodedispositivos,atravsdeuna
red,pormediodeunaaplicacinparaWindows.Esdecir,comosemuestraenlafigura1.1,elcliente
podrcontrolardispositivos,comodemostracin,enesteproyectonicamenteseutilizaronfocos,sin
embargo, pueden controlarse diversos dispositivos. Tambin el usuario, a travs de una aplicacin
Windows llamada Cliente, podr saber cul es el estado de los dispositivos que est controlando, si
stos se encuentran encendidos o apagados. Por otra parte, tambin se podrn monitorear ciertos
dispositivos,comopuedeobservarseenlafigura1.1,endondeseilustranalgunostiposdedetectores,
sin embargo en nuestro proyecto, no se implementaron estos dispositivos, sino que stos, sern
solamentesimulados,pormediodeinterruptores.

Figura1Diagramadelgeneraldelproyecto

vi
Descripcingeneral

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Justificacin
Sedecidirealizaresteproyecto,puesdaconda,crecemslanecesidaddetenerelcontrola
distanciadealgnsistema,porejemploenelreadedomtica,enelreaindustrial,enrobots,
etctera. As el sistema que desarrollamos, puede ser implementado en varios sistemas,
particularmente enfocamos el proyecto al rea de domtica, pues en la actualidad, debido a
quelaspersonasestnmenostiempoenelhogar,yaseaporqueseencuentradeviajeopor
cuestiones de trabajo, surge la necesidad de tener un control sobre ciertos dispositivos, sin
tenerqueestarpresentes.
Sitenemosuncontroladistanciadeiluminacin,porejemplo,sepodrdarlaimpresindeque
ennuestrohogarseencuentraalguien,yasnuestrohogarnosertanvulnerableaunrobo.Un
ejemploquepodemosdaraplicadoalmonitoreodedispositivoses,quecuandoseactivelade
intrusin,seleindiquealusuarioinmediatamenteyseactiveunaalarma,estopuedeayudar,a
prevenirrobos.
Asesposibledarvariosejemplos,delasdistintasaplicacionesqueselepuedendaralsistema
desarrolladoparaesteproyecto,loqueledagranversatilidad,yaquepuedeserajustadosegn
lasnecesidadesquesetengan.

vii
Justificacin

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Panoramageneraldeltrabajo
A continuacin, se presenta un resumen de cada uno de los captulos que conforman el presente
trabajo,conelfindetenerunpanoramageneraldelsistemaquesepretendedesarrollar.

Captulo1Controldeperifricos
Estecaptulosirvedeintroduccintericaalosdispositivosperifricos,sehablasobrelainterfazserial,
elmodoenquesetransmitelainformacinhacialosperifricos,sedescribenlascaractersticasdelBus
SerieUniversalUSByporltimosonmencionadaslascaractersticasdelosmicrocontroladoresycomo
stossirvenparaconectarperifricosalaPC.

Captulo2Envodedatosatravsdelared
Las dos aplicaciones Windows (Cliente y Servidor) desarrolladas en este proyecto bajo el paradigma
ClienteServidor,transmitendatosatravsdeunaredtrabajandoconelprotocoloTCP.Estecaptulo
tiene la intencin de dar las bases tericas para comprender la forma en cmo la informacin es
transmitida a travs de la red y los protocolos que son utilizados segn los requerimientos de los
sistemas. Adems se habla de lossockets y el control Winsock (que es utilizado para el desarrollo del
proyecto), dos herramientas que los programadores utilizan para el desarrollo de aplicaciones que
intercambiendatosenunared.

Captulo3Materiales
Sedaunadescripcindelmaterialtantodesoftwarecomodehardwarequeesutilizadopararealizarel
proyecto,estecaptuloesporlotanto,divididoen:softwarededesarrollo,endondesedescribenlos
paquetessoftwareusadosparaelproyecto,hardwarededesarrollo,quehablasobrelasherramientas
fsicas, el microcontrolador PIC 18F2550 junto con sus caractersticas y la cmara IP utilizada para el
monitoreodelosdispositivos.

viii
Panoramageneraldeltrabajo

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo4DesarrollodelasaplicacionesClienteyServidor
En este captulo se describen las dos aplicaciones Windows desarrolladas para transmitir los datos, la
programacin utilizada para su elaboracin, cmo es transmitida la informacin entre ellas, las
interfacesdecadaunadeellasylaformaencmoelusuariopodrinteractuarconlasaplicaciones.

Captulo5Sistemaelectrnicodecomunicaciones
Aqusehaceunacompletadescripcindelfuncionamientodeloscircuitosdetransmisinyrecepcin
inalmbrica. Los microcontroladores son usados como codificadores y decodificadores de seales y al
mismotiempoparaelcontrolymonitoreodelosdispositivos.

ix
Panoramageneraldeltrabajo

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo1
Controldeperifricos

Enestecaptulo,seexpondrnlasbasestericasrelativasalosdispositivosperifricos.Sehablarsobre
los estndares ms importantes utilizados, para conectar dispositivos perifricos a un equipo, de la
importanciaquetienenlosmicrocontroladoreseneldesarrollodeperifricos,yademsdelautilizacin
desensoresparalaadquisicindedatos.

1.1Conexindeperifricos
Unequipodecmputo,debetenerunacomunicacinconelmundoexterior,paraaspoderinterpretar
yprocesardatosqueprovengandel.Esporello,quelosequiposcuentanconunsistemaformadopor
varios dispositivos perifricos, conocido como subsistema de Entrada/Salida. Este subsistema, hace
posibleelintercambiodedatosconelexterior,comunicndoseconelprocesadoratravsdeunaserie
de mdulos, llamados de E/S. Estos mdulos cuentan con controladores, que se encargan del
funcionamientodelosdispositivosperifricos.
LosmdulosdeE/Snoconectandirectamentealperifricoconelbusdelsistema,sinoquelohacena
travsdeunconjuntodereglasqueseconocencomointerfaces,quepermitenconectarseconelCPUy
lamemoria,atravsdelbusdelsistemayalavezconectarseconlosdispositivosperifricos,mediante
deenlacesdedicadosparadatos.
LasrazonesporlasquelosmdulosE/Snoconectandirectamentealperifricoconelbus,son:
1. Notodoslosdispositivosperifricosutilizanelmismomtododeoperacin,yseraunproblema
para el CPU el tener que manejar cada uno de los modos de operacin, de la infinidad de
dispositivosqueexisten.
1
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2. Enlamayoradeloscasos,lavelocidaddetransferenciaqueutilizanlosdispositivosperifricos,
esmenorquelaquetieneelprocesadorparacomunicarseconlamemoria,poresto,nosera
conveniente usarelbusdelsistemadealtavelocidad,paracomunicarsedirectamenteconlos
dispositivos.
3. Losperifricospuedenutilizarformatosylongitudesdepalabradedatos,diferentesalosque
utilizaelprocesador.
Comosemencionanteriormente,seutilizaninterfacesparacomunicaralperifricoconelprocesador,
estasinterfacespuedenserdedostipos,principalmente:

Interfaz serie: En este tipo de interfaz, slo se utiliza una sola lnea para la transmisin de
datos.

Interfaz paralela: Con esta interfaz se pueden trasmitir mltiples bits de forma simultnea,
debidoaqueseusanvariaslneasdedatosparalatransmisin.

A continuacin, se describir ms a fondo a la interfaz serie, ya que es con la que se trabaja en el


proyectoysevernejemplosdelosestndaresquehacenusodeella.
1.1.1Interfazserie
Este tipo de interfaz es utilizada en los equipos, para conectar mltiples dispositivos como mdems,
ratones,impresoras,etc.
Latransmisindelosdatossedaatravsdeunsolocanalyesbitporbit,estopuedeserdemanera
sncronaoasncrona.
Siseutilizansealesadicionales(relojosealesdepeticinyreconocimiento),paraindicarcundoelbit
siguienteesvlido,entoncessedicequelatransmisinserealizadeformasncrona.Laprincipalventaja
deestetipodetransferencias,esqueelreceptorpuedefuncionaravariasfrecuenciasdereloj(siempre
que no sobrepase su frecuencia mxima de funcionamiento). En las transferencias asncronas, por el
contrario,tantoelreceptorcomoeltransmisordebenfuncionaralamismafrecuencia.Enestecaso,se
enva tambin informacin de sincronizacin a travs de la lnea de datos, un bit de comienzo (bit de
2
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

start), que indica el comienzo de una unidad de datos, un bit de fin (bit de stop), indicando su
finalizaciny,opcionalmente,unbitdeparidadparacontrolarlosposibleserrores.

1.1.1.1InterfazRS232
RS232,eselnombredelinterfazdecomunicacinseriemsutilizadodelmundo.Lanormaserieest
disponibleenprcticamenteel99%delosordenadores.LanormaRS232,fueoriginalmentediseada
paraconectarterminalesdedatoscondispositivosdecomunicacin,comomdems.Desdeunprincipio,
fue tambin utilizada para conectar casi cualquier dispositivo imaginable. Los usos de la RS232 en el
entornodomsticosonmuchosyampliamenteconocidos.Desdelaconexindelratn,elmdem/fax,
agendaselectrnicasdebolsillo,impresorasserie,grabadoresdememoria,etc.
Elestndardefinevoltajesqueoscilanentre+[315]Vparaelnivelaltoy[315]Vparaelnivelbajo.
Debido a la gran diferencia de voltaje que existe entre los niveles altos y bajos, se permiten tasas de
transferenciadehasta115.200baudiossilalongituddelcableesdeunaspocasdecenasdemetros.
1.1.1.2BusSerieUniversal:USB
Para entender el funcionamiento del USB, es necesario estudiar la especificacin de este bus. Los
fabricantesinvolucradosenlanorma,crearonun documentoqueconstituyelareferencia.Aunqueen
estosmomentosseestcreandolaversin3.0delbus,enelpresentecaptulosevaatratarlaversin
2.0,yaqueeslamsrpidayeslaqueposeelafamiliadePICs18Fxx5x.
El USB se trata de un estndar (1995), que define un bus utilizado para la conexin de perifricos al
ordenador.Laconexinesmuysencilla,yaqueseutilizaunnicoconectorparaconectaratravsdeun
busserietodoslosdispositivos.Seimplementaunatopologaespecialtipoestrellaparaconectarhasta
127dispositivos,eimplementaprotocolosquepermitenladeteccinyconfiguracinautomticadelos
dispositivosquesonconectados.

3
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

USB1.0puedetrabajarcondostasasdetransferenciadiferentes,unabajade1.5Mbpsparalaconexin
dedispositivoslentos(joysticks,ratones),yotraaltadehasta12Mbps,paradispositivosquerequieren
unmayoranchodebanda(DiscosDurosoCDROMS).
Laespecificacindeesteestndar,hasidorespaldadaporlasempresaslderesmundialesenelcampo
delainformtica:Intel,IBM,DEC,Microsoft,CompacyNEC,empresasquegarantizansucontinuidady
utilizacin.
Amediadosdelao2000,aparecelaversin2.0,stafuecreadaporunconjuntodecompaas,entre
ellas y adems de las arriba mencionadas, se encuentran: Hewlett Packard, Lucent y Philips. USB 2.0,
multiplicalavelocidaddelbusporunfactorde30o40,estohacequepuedaalcanzarunavelocidadde
480Mbps.Estaversin,escompatibleconsuantecesorayutilizaelmimotipodecableyconectores,
nicamentesenecesitannuevoshubsquesoporteestaversin.Estoshubs,sonmscomplejosquelos
anteriores, ya que tienen que manejar el trfico de datos de tres velocidades diferentes, sin ser
excluyentesentreellas.
Anteriormente los perifricos, se conectaban mapeados directamente en direcciones de E/S, se les
asignaba una direccin especfica y en algunos casos un canal DMA (Acceso Directo a Memoria). Esta
situacincausabaconflictosalahoradelaasignacindeestosrecursos.Adems,cadadispositivopoda
tener su propio puerto de conexin y usaba cables especficos, esto incrementaba el costo de los
mismos. Debido a que a cada dispositivo se le tenan que asignar ciertos recursos, la deteccin del
mismo,debahacersealahoradearrancarelsistemaynuncasepodaincorporarunnuevodispositivo,
cuandoelsistemayaestabatrabajando.
Los dos aspectos fundamentales que motivaron la creacin del estndar USB, fueron la necesidad de
que la configuracin de los perifricos fuese ms sencilla, y la necesidad de aumentar el nmero de
puertosdisponibles.
Comosemencionanteriormente,elestndarUSBdefineunatopologadeconexinenestrella,enla
figura 1.1 se muestra por medio de la incorporacin de varios concentradores (hubs), conectados en

4
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

serieestaconexin.Estatopologapermiteamuchosdispositivos,conectarseaunnicobuslgico,sin
quelosdispositivosqueseencuentranmsabajoenlapirmidesufranretardo.

Figura1.1TopologadelaconexinUSB

ElsistemaUSBconstadetrescomponentes,principalmente:
1. Controlador
ElControladorresidedentrodelPCyesresponsabledelascomunicacionesentrelosperifricosUSByla
CPUdelPC.Estambinresponsabledelaadmisindelosperifricosdentrodelbus,tantosisedetecta
unaconexin,comounadesconexin.Paracadaperifricoaadido,elcontroladordeterminasutipoy
le asigna una direccin lgica, para utilizarla siempre con el mismo perifrico. Si se producen errores
durantelaconexin,elcontroladorlocomunicaalaCPU,queasuvez,lotransmitealusuario.Unavez
que la conexin se ha realizado correctamente, el controlador asigna al perifrico, los recursos del
sistemaquestepreciseparasufuncionamiento.
Elcontroladortambinesresponsable,delcontroldeflujodedatosentreelperifricoylaCPU.
2. Concentradoresohubs

5
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Cada concentrador se conecta por un lado al equipo y por el otro se conecta a un dispositivo o a un
concentrador. Es posible encontrar dispositivos perifricos que vengan con conectores USB
incorporados, para as aadir nuevos dispositivos, en total se pueden tener hasta 127 dispositivos
conectadosytodospuedenfuncionaralmismotiempo.Lafuncinprincipaldelosconcentradores,esla
de permitir ampliar el nmero de dispositivos conectados a un equipo. El concentrador tiene la
capacidad de detectar, cuando un dispositivo es conectado o desconectado de uno de sus puertos, y
esto lo notifica al controlador de USB. Igualmente un concentrador, sirve de acoplamiento entre
dispositivosquenotenganlamismavelocidad.
3. Perifricos
USBsoportaperifricosdebajaymediavelocidad.Empleandodosvelocidadesparalatransmisinde
datos,quepuedenserde1.5y12Mbps.Losperifricosdebajavelocidadtalescomoteclados,ratones,
joysticks, y otros perifricos para juegos, no requieren 12 Mbps, empleando para ellos 1.5 Mbps, con
esto se pueden dedicar ms recursos del sistema a perifricos, tales como monitores, impresoras,
mdems,scanner,equiposdeaudio,etc.,queprecisandevelocidadesmsaltasparatransmitirmayor
volumendedatos.
Anivelelctrico,elcableUSBtransfierelasealylaalimentacinsobrecuatrohilos.Doslneasparala
transmisindedatosyotrasdosparatransmitirpotencia(verfigura1.2).Loscablesdedatos(D+yD)
sonunpartrenzadoparareducirelruidoylasinterferencias.

Figura1.2LneasencableUSB

A nivel de seal, se trata de un par tranzado con una impedancia caracterstica de 90. La velocidad
puedeserde480Mbps,12Mbps1.5Mbps.Lasealsetransmitedemaneracodificada,paraestose
utilizauncdigoautorelojdenoretornoaceroinvertido(NRZI),loquepermitetransmitirjuntoconlos
datos,lainformacindesincronizacin.
6
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

A nivel de alimentacin, el cable proporciona la tensin nominal de 5V. Es necesario definir bien el
dimetrodelhilo,conelfindequenoseproduzcaunacadadetensindemasiadoimportanteenel
cable. Una resistencia de terminacin instalada en la lnea de datos, permite detectar el puerto y
conocersuconfiguracin(1.5Mbps12Mbps),sinollevaresistencia,indica480Mbps.
Existendostiposdeconectores(AyB),conelfindeevitarlaconfiguracinenbucle.EltipoAesplanoy
rectangular,mientrasqueeltipoBescuadrado.LabaseparaeltipoAseencuentraenelPCohubyen
elperifrico,unabasedetipoB.LoscablessondetipoAB.Enlafigura1.3semuestranestosdostipos
deconectores,juntoconsuconfiguracin.

Figura1.3TiposdeconectorUSB

Para comenzar la transferencia, el controlador USB enva un paquete que identifica al dispositivo. El
protocolosoportacuatrotiposdetransferencia:

TipoControl

Los datos de control, sirven para configurar al perifrico en el momento en que ste es conectado al
USB. Algunos drivers especficos, pueden utilizar este enlace para transmitir su propia informacin de
control.

TipoBulk

Estemodoseutilizaparalatransmisindecantidadesimportantesdeinformacin.Labandadepaso
otorgadaaestetipodetransmisin,dependedelosdemsperifricos,siendolamenosprioritaria.Este
tipodetransferenciaesutilizadaporscannerseimpresoras.
7
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

TipoInterrupcin

Este tipo de transmisin, garantiza la transferencia de pequeas cantidades de datos. El tiempo de


respuestanopuedeserinferioralvalorespecificadoporlainterfaz.Elratnocualquierotrodispositivo
apuntador,esunaaplicacintpicadeestemododetransmisin.

TipoIscrona

Utilizadoparalatransmisindeinformacinconanchodebandaylatenciagrantizados,necesariopara
aplicaciones como audio, telefona y video. Permite una comunicacin peridica y continua entre el
sistemayeldispositivo.
1.1.1.3FireWire,estndarIEEE1394
Apple y Sony inventaron el FireWire a mediados de los 90, y lo desarrollaron hasta convertirlo en el
estndarmultiplataformaIEEE1394.FireWire,esunatecnologaparalaentrada/salidadedatosenserie
a alta velocidad, y la conexin de dispositivos digitales como videocmaras o cmaras fotogrficas
digitales,quehasidoampliamenteadoptadoporfabricantesdeperifricosdigitalescomoSony,Canon,
JVCyKodak.

FireWire es uno de los estndares de perifricos ms rpidos que se han desarrollado, caracterstica
quelohaceidealparasuusoconperifricosdelsectormultimedia(comocmarasdevdeo),yotros
dispositivosdealtavelocidadcomo,porejemplo,loltimoenunidadesdediscoduroeimpresoras.Se
haconvertidoenlainterfazpreferidadelossectoresdeaudioyvdeodigital,yaquerenenumerosas
ventajas,entrelasqueseencuentranlaelevadavelocidad,laflexibilidaddelaconexinylacapacidad
deconectarunmximode63dispositivos.Ademsdecmarasyequipodevdeodigital,laampliagama
de productos FireWire, comprende reproductores de vdeo digital, sistemas domsticos para el ocio,
sintetizadoresdemsica,escneresyunidadesdediscoduro.

8
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Conunanchodebanda30vecesmayorqueelconocidoestndardeperifricosUSB1.1,elFireWire400
sehaconvertidoenelestndarmsrespetadoparalatransferenciadedatosaaltavelocidad.Applefue
elprimerfabricantedeordenadores,queincluyFireWireentodasugamadeproductos.Unavezms,
Apple ha vuelto a subir las apuestas, duplicando la velocidad de transferencia con su implementacin
delestndarIEEE1394boFireWire800.

LavelocidadsobresalientedelFireWire800,frentealUSB2.0,conviertealprimeroenunmediomucho
msadecuado,paraaplicacionesque necesitanmuchoanchodebanda,comolasdegrficosyvdeo,
queamenudoconsumencientosoinclusomilesdemegabytesdedatosporarchivo.

AlgunasdelascaractersticasmsimportantesdelFireWire,son:

Flexiblesopcionesdeconexin.Admiteunmximode63dispositivosconcablesdehasta4.25
metros.

Distribucin en el momento. Fundamental para aplicaciones de audio y vdeo, donde un


fotogramaqueseretrasaopierdelasincronizacin,arruinauntrabajo.

Alimentacinporelbus.MientraselUSB2.0permitelaalimentacindedispositivossencillos
que consumen un mximo de 2.5 W, como un ratn, los dispositivos FireWire pueden
proporcionaroconsumirhasta45W,msquesuficienteparadiscosdurosdealtorendimiento
ybaterasdecargarpida.

Es conectable/desconectable en uso. Lo que significa que no se necesita desactivar un


dispositivoparaconectarloodesconectarlo,yquenoesnecesarioreiniciarelordenador.

FuncionatantoconMaccomoconPC.Loquegarantizalacompatibilidadconunalargalistade
productosconFireWire,apreciosrazonables

9
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

1.2Microcontroladores
Un microcontrolador, es un circuito integrado programable, que se utiliza para el gobierno de uno o
varios procesos. Una vez programado y configurado el microcontrolador, ste solamente sirve para
controlarlatarea,paralaquefueprogramado.
Dentro de un microcontrolador, se tienen encapsulados todos los componentes que hay en una
computadora: procesador, memoria de datos y memoria de instrucciones, oscilador de reloj interno,
mdulos de entrada/salida. Las lneas de entrada/salida, soportan la conexin de los sensores y
actuadoresdeldispositivoquesedeseacontrolar.
Ademsdeloselementosquesemencionaronanteriormente,existenunaseriederecursosespeciales
quelosfabricantesalgunasvecesofrecen,porejemplo:ampliarlascapacidadesdelasmemorias,otros
incorporan nuevos recursos y hay quienes reducen las prestaciones al mnimo, para aplicaciones muy
simples.Algunosdelosprincipalesrecursos,queunfabricantepuedeofrecer,son:
ConversoresADyDA.
Comparadoresanalgicos.
Estadodebajoconsumo.
PuertosdeE/Sdigital.
Temporizadores(Timers).
Proteccinfrenteafallodealimentacin(Brownout).
Perroguardin(Watchdog).
ModuladordeanchuradepulsosPWM.
Puertosdecomunicacin:serie,USB,I2C,UART,etc.
Enlaactualidad,elusodelmicrocontroladorcadavezsehahechomspopular,puessonutilizadosen
teclados, ratones, electrodomsticos, sistemas de alarmas, en sistemas de comunicaciones, en la
industria,enautomviles,telfonoscelulares,etc.Enlafigura1.4semuestraunagrficacomparativa
delusodelmicrocontroladorendiversasreas.

10
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Principales usos del


microcontrolador
10%
Perifricos

33%

16%

Electrodomsticos
Comunicaciones
Industria

16%
Automviles

25%

Figura1.4Principalesusosdelmicrocontrolador

Losprincipalesfabricantesde microcontroladores,son:Microchip,Motorola,NacionalSemiconductor,
Atmel,Siemens,Philips,Intel,Hitachi,entreotros.Enesteproyecto,seutilizarnmicrocontroladores,de
lafamiliaPIC,deMicrochip.

11
Captulo1:Controldeperifricos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo2
Envodedatosatravsdelared

Para nuestro proyecto, pretendemos realizar un software de comunicacin que constar de dos
aplicaciones Windows, una que actuar como Servidor y la otra que ser el Cliente, por lo tanto es
importantequesecomprendanaspectostericos,comolosprotocolosdecomunicacinTCP/IPyUDP,
lo que son las direcciones IP, el concepto de dominio, el servicio DNS, cmo se da la comunicacin a
travs de Internet y por ltimo los mtodos utilizados por los programadores para implementar
aplicacionesquesecomuniquenatravsdeunared,comolosonlossocketsyelcontrolWinsock.
Entonces,estecaptulonosayudaracomprenderlaformaenquelospaquetesviajandeunequipoa
otro,yaseaatravsdeunaredlocaloatravsdelaredderedes,queesInternet.
El conjunto de conceptos que a continuacin se explican, es muy importante manejarlos para
comprender la comunicacin, que pretendemos hacer entre un equipo que est en nuestro hogar, y
otroqueselocaliceencualquierpartedelmundo.

2.1IntroduccinaInternet
Internet,sepuedevercomounaredgiganteformadaporredesmspequeas,queestnconectadas
unasconotras,estaconexinpermitelacomunicacinagrandesdistancias,yaqueactualmenteexisten
redesdistribuidasentodoelmundo.Encadaunadeestasredes,hayunacomputadoraqueelusuario
utilizaparaintroducirseaesegigantescomundoqueesInternet.
UnaconexinaInternetdependedeotrosparmetros,tantopararealizarlacomoparamantenerla,si
algunodeestosparmetrosdejaradefuncionar,laconexinnoseracorrecta,estosparmetrosson:

12
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

1. Laconexinfsica.NosreferimosconestoalaconexinquelaPCtieneconlared,medianteun
cableylatarjetaderedounmdem.
2. Laconexinlgica.Aquentranlosprotocolos,quesonreglasestablecidasparalacomunicacin
entre dispositivos dentro de una red. Para Internet, el protocolo usado es TCP/IP, del cual
hablaremosmsadelante.
3. Aplicaciones.Esatravsdelasaplicaciones,queelusuariopuedevisualizarlainformacinque
fue procesada, y trabajan junto con los protocolos, para lograr la transmisin y recepcin de
datosatravsdeInternet.

2.2Protocolosdecomunicacin
Hablando especficamente en trminos de Tecnologas de la Informacin (IT), un protocolo1 es un
conjunto de reglas que determina los procedimientos que deben seguirse, para transmitir o recibir
informacin.Sepuededecirqueunprotocoloesunlenguajeusado,paralograrquedoscomputadoras
puedan entenderse una con otra. Haciendo una analoga con el mundo real, es como cuando dos
personasdediferentespasestratandecomunicarse,sinohablanelmismoidioma,entoncesnopodrn
entenderseyporlotanto,nohabrintercambiodeinformacin.
Para poder entender cmo es que trabajan los protocolos, hay que hablar un poco de lo que es el
modeloOSI,estoasuveznosguiaralconjuntodeprotocolosTCP/IP,quetienengranrelacinconel
modeloOSI.
2.2.1ModelodereferenciaOSI
Si queremos saber cmo es que trabajan las comunicaciones en las redes, debemos comenzar por
entenderestetema.Elproblemaesquemuchaspersonasnosabenelporqudelaexistenciadeeste
modelo,nicmoesquetrabaja.

Del griego protocollon, que era una hoja de papel que describa el contenido de un manuscrito al cual vena
pegado.

13
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Cuando las redes de computadoras comenzaban a surgir, slo una compaa se encargaba de
manufacturar toda la tecnologa para las redes. Esto impeda que equipos de diferentes marcas
pudierancomunicarseentres.
ParasolucionaresteproblemalaOrganizacinInternacionaldeEstndares(ISO),desarrollunmodelo
dereferenciallamadoOSI (OpenSystemsInterconnection),estemodelopermitiraatodoslosfabricantes
tenerunconjuntodeprotocolosaseguir,ycontarconunsololenguajeparalacomunicacinatravs
delasredes.
Estemodelopuedeusarseparavisualizar,cmolainformacin,opaquetesdedatos,viajandesdelas
aplicaciones(hojasdeclculo,documentos,etc.),porunmediodered(porejemploloscables),hasta
otras aplicaciones que estn ubicadas en otra computadora de la red, aunque el emisor y el receptor
tengandiferentestiposdemediosdered.
Dos aplicaciones diferentes pueden ser compatibles, siempre y cuando sigan el modelo de referencia
OSI,haciendolosprocesoscorrespondientesenelmismoorden.Estopermitealosdesarrolladoresde
software,comprendermsfcilmentecmoesquetrabajan.
El modelo OSI est formado por siete capas, cada una ilustrando una funcin de red en particular. La
ideabsicadelmodelodereferenciaOSI,essta:cadacapaestencargadadehacerciertoproceso,y
slopuedecomunicarseconlascapasinmediatamentesuperioreinferior,porejemplo,lacapacuatro
solosepuedecomunicarconlascapascincoytres.
Paraquelospaquetesdedatosviajendesdeunorigenhastaeldestino,cadacapadelmodeloOSIdel
origen,debecomunicarseconlamismacapadeldestino.Aestemecanismodecomunicacinselellama
comunicacin de igual a igual (peertopeer). La informacin que es intercambiada durante este
proceso,recibeelnombredeunidaddedatosdelprotocolo(PDU,ProtocolDataUnit).
Cuandounacomputadoratransmitedatosatravsdelared,lacapacorrespondienterecibelosdatos
de una capa superior, los procesa, le agrega informacin de comunicacin, y enva el paquete con la
nuevainformacinaadidaalacapadeabajo.

14
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Cuandolacomputadorarecibedatos,ocurreelprocesocontrario:lacaparecibirlosdatosdeunacapa
inferior,procesaloqueestrecibiendo,eliminaelcontroldeinformacinquelecorresponde,yenvael
nuevopaquetealacapasuperior.
Enlafigura2.1,seobservalaposicindelascapasdelmodelodereferenciaOSI.Losprogramasslose
comunican con la sptima capa, la capa de aplicacin, es la capa ms cercana al usuario. En nuestro
proyecto, estos programas sern las aplicaciones cliente y servidor, mediante las cuales el usuario
controlarlosperifricos.

Figura2.1CapasdelmodeloOSI

2.2.2ProtocoloTCP/IP
Paralarealizacindenuestroproyecto,debemostomarencuentaunconjuntodereglasparanuestro
programadecomunicacin,esteconjuntodereglasformanaunprotocolo.Elprotocoloqueeslabase
deInternetesTCP/IP(TransmissionControlProtocol/InternetProtocol),esteprotocologarantizaque
una PC que emplea un programa de comunicaciones bajo TCP/IP, se pueda comunicar con otro
ordenadordediferentemarcaquetambinlohaga.
Internetesunaredinformticaestructurada,loquequieredecirquelacomunicacinatravsdeella,
requieredevariascapas,yencadapartedelacomunicacinseempleaunprotocolodistinto.ATCP/IP
lointegrandosprotocolosdistintos:
15
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

TCP (Protocolo de control de Transmisin), es el protocolo de transporte, y su funcin es


mantenerlaconexinentrelosordenadores,demaneraquestanosepierda,todoestoanivel
fsico.

IP (Protocolo de Internet), es el protocolo de encaminamiento, encargado de depositar los


paquetes de datos en las direcciones correspondientes, de la manera ms eficiente posible.
Tambin se ocupa de segmentar y reagrupar los datos que componen cada paquete
transmitido2.

Enlafigura2.2,secomparanlasarquitecturasdelmodeloOSIyladeTCP/IP,comopodemosver,TCP/IP
solocuentaconcuatrocapas.EnlacapadeAplicacinpodemosencontrarvariosprotocolos,comoson:
SMTP(paraemail),FTP(paratransferenciadedatos)yHTTP(parabuscadoresweb).Cadaprogramase
comunicaconunprotocolodiferente,yaquenotodosrealizanlamismafuncin.

Figura2.2ComparacinentremodeloOSIyTCP/IP

Unavezquelainformacinesprocesada,elprotocolousadoenlacapadeAplicacinsecomunicacon
lasiguientecapa,queesladeTransporte,especficamenteconelprotocoloTCP.Enestacapaseforman

Internet,LaBibliaEdicin2006,OscarRodrguezFernndezEtAl.Ed.ANAYA

16
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

paquetesdeinformacinquesonenviadosalacapadeInternet,osiseestrecibiendo,seencargade
ordenarlospaquetesyverificarquenotenganerrores.
ElprotocolodeInternet(IP),seencuentraenlacapadeInternet,endondealospaquetesselesagregan
las direcciones virtuales de la computadora que enva, y de la que recibir la informacin, estas
direccionessonconocidascomodireccionesIP,delascualeshablaremosennuestrosiguientetema.Los
paquetes formados son enviados a la siguiente capa, la capa de red, en donde los paquetes ya son
llamadosdatagramas.
Lacapaderedenvalospaquetesatravsdelared,olosrecibeenelcasodequelacomputadoraseala
receptora.Loquehaydentrodeestacapa,vaadependerdeltipoderedqueseestusando,eltipode
redquemsseutilizahoyenda,esEthernet.
Internetcuentaademsconunacapaensunivelmsalto,queeslacapadeAplicacin,enellaestn
definidoslosserviciosquelehandadolaimportanciaquetienelared:HTTP,FTP,WWW,EMail,etc.
Cuando se quiere revisar un email, se hace una peticin al servidor que los almacena, esta tarea es
llevadaacaboporlacapadeAplicacin,especficamenteusandoelprotocoloSMTP.Cuandoennuestro
navegador escribimos www, para buscar alguna pgina, el navegador (Internet Explorer, Fire Fox,
GoogleChrome,etc.),dejastatareaalacapadeaplicacin,endondeseharusodelprotocoloHTTP.
Hablemos un poco ms de la capa de Aplicacin, ya que en ella se llevan a cabo muchas tareas que
tienenestrecharelacinconnuestroproyecto,yquenosayudarnacomprendermejor,conceptosque
semanejanduranteeldesarrollodenuestrosoftwaredecomunicacin.
2.2.3ProtocoloUDP
HayotroprotocolollamadoUDP(UserDataProtocol,protocolodedatosdeusuario),queigualmente
trabajaenlacapadeTransporte,peroqueadiferenciadeTCP,stenoestableceunaconexinprevia
conelotroextremoparatransmitir,lospaquetespuedenllegardesordenados,duplicadoseinclusocon
errores, por tales motivos, las aplicaciones deben ser programadas de manera que acten como el
protocoloTCP,yaquelospaquetespuedenllegarenformaincorrecta.
17
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

AligualqueTCP,lospuertosenUDPsirvenparaidentificarlospuntosterminalesdelasmquinasorigen
ydestino.MuchasaplicacionesutilizanUD,paraevitarseelestablecer yluegoliberarunaconexincon
esto,latransmisinesmsrpida.UDPslotrabajaconlasfuncionesbsicas,debidoaquesepreocupa
msporquelosdatossetransfieranrpidamente.Tieneladesventajadequecarecedemecanismosde
seguridad, como los del protocolo TCP, poniendo en riesgo la transmisin de paquetes entre origen y
destino.

2.3Puertos
La capa de aplicacin, se va a comunicar con la capa de transporte a travs de un puerto. Ciertas
aplicaciones utilizan siempre un mismo puerto para comunicarse, por ejemplo, el protocolo SMTP
siempreutilizaelpuerto25,HTTPutilizasiempreelpuerto80yFTPel20paralatransmisindedatosy
el 21 para control. En el siguiente captulo, en el que se habla del desarrollo de nuestras aplicaciones
clienteyservidor,sevolveratocarestetema,yaquenuestrasaplicacionestambinutilizanunpuerto
paracomunicarse.
Pero,porquesnecesarioelusodepuertos?,puesesgraciasaellosqueelprotocolodetransporte
TCP, sabe el tipo de contenido del paquete que se est enviando y as determinar, del lado de la
recepcin, cul protocolo de Aplicacin se va a utilizar. Por ejemplo, si se recibe un paquete por el
puerto 25, el protocolo TCP sabr que se trata de informacin que debe ser manejada utilizando el
protocoloSMTP,queasuvezentregarlosdatosalprogramaquelorequiera,enestecasoelprograma
quemanejaemail.

18
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura2.3Aplicacionesysuspuertos

AnteriormentesemencionqueelprotocoloTCPenlacapadeTransporte,cuandoseestnrecibiendo
datos, ste ordena los paquetes provenientes de la capa de Internet (ya que pueden venir fuera de
orden),yademsverificaqueelcontenidodelpaquetenotengaerrores,unavezhechoesto,envauna
sealaltransmisor,paraquestesepaqueelpaquetefuerecibidosatisfactoriamente,encasodeque
estasealnoseaenviada,yaseaporqueelpaquetenollegasudestinooporqueTCPencontrerrores
enlainformacin,eltransmisordeberreenviarelpaquete.

2.4DireccionesIP
EnunaredTCP/IP,cadacomputadoradebetenerunidentificadornico,paraquepuedacomunicarse
con el resto de las computadoras de la red. Este identificador es conocido como direccin IP. Una
direccinIPesunasecuenciade32bits,compuestaporunosyceros,paranosotroslossereshumanos
seradifciltrabajardemaneradirectaconestetipodesecuencias,asqueparafacilitarlascosas,son
escritascomocuatronmerosdecimalesentreceroy255,separadosporunpunto.
LosnmerosqueconformanaladireccinIPsonconocidoscomooctetos,ylaformaderepresentarlos
seconocecomoformatodecimalconpuntos.Enlafigura2.4semuestraunadireccinIP(192.168.1.8)
representadaenformabinariayenformadecimal.
19
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura2.4FormatodeunadireccinIP

UnadireccinIPestcompuestadedospartes,unapartenosdiceladireccinderedyotraladireccin
host,enlafigura2.5semuestraunadireccinIPquetendracomodireccinderedlosdosprimeros
bytesylosdosbytesrestantesparaladireccinhost.

Figura2.5EstructuradeunadireccinIP

LasdireccionesIPestndivididasencincoclases,laclasealaqueperteneceunadeterminadaIP,vaa
dependerdelbitosecuenciadebitalprincipiodecadadireccin.

DireccionesClaseA
Estetipodedirecciones,sonusadasparacuandosetienenmuypocassubredesyunagrancantidadde
host,estodebidoaquesloelprimeroctetoesutilizadoparasubred,ylostresrestantescomoparte
delhost.
Cualquierdireccinquecomienceconunnmeroentre1y126,esunadireccinClaseA.Enlafigura2.6
semuestraelformatodeunadireccindeestetipo.

20
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura2.6DireccinIPdeClaseA

DireccionesClaseB
LasdireccionesClaseB,seutilizanpararedesdetamaomoderadoagrande.Losdosprimerosbitsde
estetipodedireccionessiempreson10,porlotanto,elnmeromspequeosera128yelmsgrande
191.Cualquier direccin que comience con un nmero que est entre 128 y 191, es de Clase B. En la
figura2.7semuestrasuformato.

Figura2.7DireccinIPClaseB

DireccionesClaseC
Son utilizadas para muchas subredes con pocos equipos y son las que ms se usan actualmente. Una
direccinClaseCtienecomoprimerostresbitsa110,estoquieredecir,quesiunadireccincomienza
conunnmeroentre192,queseraelmspequeoquepodrarepresentarsey223queseraelms
grande,entoncesperteneceaestaClase.Enlafigura2.8semuestrasuformato.

Figura2.8DireccinIPClaseD

DireccionesClaseDyClaseE
LasdireccionesdeclaseDsonungrupoespecialqueseutilizaparadirigirseagruposdemquinas.Estas
direccionessonmuypocoutilizadas.LoscuatroprimerosbitsdeunadireccindeclaseD,son1110.

21
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Las direcciones Clase E estn reservadas por el Grupo de Ingeniera de Internet (IETF), para
investigaciones, por lo que no pueden ser utilizadas para Internet. Los primeros cuatro bits de estas
direcciones siempre son unos, por lo que su primer octeto siempre es un nmero entre 11110000 y
11111111,oentre240y255.
2.4.1DireccionesIPpblicasyprivadas
ElorganismoencargadodeasignarlasdireccionesIPpblicas,necesariasparacomunicarseenInternet,
es la Autoridad de Nmeros Asignados de Internet (IANA, Internet Assigned Numbers Authority). Una
empresapuedesolicitarunaovariasdireccionespblicasconunproveedordeserviciosInternet(ISP),a
quienlefueasignadociertointervalodedireccionesIP.Lasdireccionespblicassonnicas,globalesy
estnnormalizadas.
ElnmerodedireccionesIPpblicasnoesinfinito,ydebidoaquestetipodedireccionessonusadas
para poder comunicarse a travs de Internet, resultara un problema tener que asignar una direccin
por cada equipo conectado. Una de las soluciones a este problema, son las direcciones privadas, las
cualessonutilizadaspararedesprivadasquenoestnconectadasaInternet(estonosignificaquenolo
puedanhacer).LasdireccionesIPprivadasestnestablecidasenlaRFC1918,enlaquesereservantres
bloquesdedireccionesIP,unadireccinClaseA,unintervalodedireccionesClaseByotrointervalode
direccionesClaseC.

10.0.0.0conlamscaradesubred255.0.0.0

172.16.0.0conlamscaradesubred255.240.0.0

192.168.0.0conlamscaradesubred255.255.0.0

UnaIPprivadapuedeutilizarseporejemplo,paraunaredcasera,yencasodequestaredseconectea
Internet, estas direcciones privadas deben convertirse en pblicas, esta conversin se denomina
Conversindedireccionesdered(NAT,NetworkAddressTranslation),yesejecutadanormalmentepor
unrouter.

22
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2.4.2AsignacinestticaydinmicadeunadireccinIP
Hay dos mtodo bsicos para poder asignar la direccin IP a un equipo: direccionamiento esttico y
direccionamientodinmico.
Cuando el administrador de la red asigna a cada dispositivo una direccin nica para que sea
identificado, se habla de un direccionamiento esttico, ya que sta direccin asignada nunca cambia
paraesedispositivo.Unejemploseraunservidorweb,elcual debemantenersumismadireccinIP,
paraquelaspginasquealojaestndisponiblestodoeltiempo,yaquesiestadireccincambiaracada
vezqueelservidorfueseencendido,losusuariosnopodranaccederal.
Otrosejemplosdedispositivosquedebenmantenerunadireccinesttica,sonlasimpresorasdered,
losservidoresdeaplicacionesylosrouters.
SiladireccindeIPdeundispositivocambiacadadeterminadotiempo,entonceseltipodeasignacin
es dinmico. El Protocolo de configuracin dinmica del host (DHCP), permite al host obtener una
direccindinmicamente.ParapoderusarDHCPsenecesitaunservidorDHCP,elcualdebecontenerun
ciertorangodedireccionesaasignar.Cuandounhostdeseaconectarse,haceunapeticinalservidor
DHCP,paraqueseleasigneunadireccinIPqueloidentifique,elservidorseleccionaunadireccinyla
asignaaesehost.
Un ejemplo de DHCP lo podemos encontrar en nuestro hogar, cada vez que encendemos nuestra
mquinaeintentamosconectarnosaInternet,puedeserquenuestradireccinIPnosealamismaque
tenamos un da anterior, esto se debe a que el proveedor de Internet para no utilizar una IP fija por
cada cliente, realiza una asignacin dinmica, lo que hace que se cuente con una IP durante cierto
tiempo y cambie despus, sucede lo mismo, si apagamos el router (que es el dispositivo que
generalmentetenemosennuestroshogares)yloencendemos,laIPcambiar.

23
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2.5DominiosyDNS
LosdispositivosoequiposqueseconectanaInternet,debenseridentificadoscomoyadijimosporuna
direccinIP,sinembargo,memorizarestetipodedirecciones,resultaracomplicadoparalaspersonas.
UndominiodeInternetesunrepresentantedeunadireccinIP,quefacilitaalusuarioelpodertener
accesoaalgnrecursodentrodeInternet.
Para una persona es mucho ms fcil recordar la direccin www.google.com y teclearla en su
navegador, que aprenderse la direccin 74.125.45.147. Es posible comprobar lo anterior haciendo un
pingaladireccinweb,estonosregresarsuequivalenteendireccinIP.
EnInternet,hayunagrancantidaddedominios(msde200),comoporejemplo:

.gt,paraserviciosdeGuatemala

.mx,paraserviciosdeMxico

.cl,paraserviciosdeChile

.co,paraserviciosdeColombia

.cn,paraserviciosdeChina

.edu,paraserviciosdeEducacin

.eu,laregindeEuropa

.gob,paraGobiernoyEntidadesPblicas

.info,paraInformacin

.net,paraInfraestructuradered

.org,paraorganizaciones

DNSesunsistemautilizadoen Internetparaasociarnombres dedominoadirecciones IP.Cuandoun


cliente en una red introduce un nombre de domino, el servidor DNS responde a la peticin y traduce
estedominioensucorrespondientedireccinIP,unavezquehaceesto,regresaelresultadoalcliente.

24
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2.6ParadigmaClienteServidor
Enunaredclienteservidor,hayunequipoespecialendondesealmacenantodoslosserviciosdela
red, este equipo atiende las solicitudes de otros equipos, que pueden ser archivos, impresiones,
aplicacionesyotrosservicios,losprimerossonllamadosservidores,ylosquehacenlaspeticionesson
losclientes.
Unservidordebeestarcontinuamenteesperandoporsolicitudesdelosclientes,porloquesedebede
tratar con un equipo con caractersticas especiales, como ms poder de procesamiento, memoria y
softwareespecializado,estotambindependedelosprocesosquerealice,puespodemoscontarconun
servidor con caractersticas no tan poderosas, pero que puede servir como un servidor web, por
ejemplo.
Para que haya una comunicacin, los servidores deben contar con una IP fija y deben estar
escuchandoatravsdesuspuertos,paraqueelclientesabiendoestosparmetros,sepuedaconectar
al.Unavezqueelclientehacelapeticinatravsdeunpuertodelservidor,sterealizaelservicio
requeridoydevuelvelosresultadosenformadeunarespuesta(Figura2.9).

Figura2.9InteraccinClienteServidor

2.7Sockets
JuntoconInternet,surgilanecesidaddecomunicaraplicacionesatravsdeestared,estanecesidad
dio origen a los sockets. Un socket es el punto final de una conexin. Un socket se utiliza como un
25
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

mtododecomunicacinentrelasaplicacionesclienteyunservidor,queintercambiandatosenforma
fiableyordenada,sonuncomponentebsicodecomunicacin,yaqueproporcionanunacomunicacin
dedosvas,puntoapuntoentredosprocesos.
Serequierentreselementosparapodercrearunsocket:
1. Unprotocolodecomunicaciones
2. UnadireccinIP
3. Unnmerodepuerto

Funcionamiento
Unaaplicacinservidorutilizaunsocketconunnmerodepuertoespecfico.Laaplicacinclientedebe
conocer el nombre del equipo servidor (hostname) o direccin IP, y el puerto a travs del cual est
escuchandolaaplicacinservidor.
Cuando la aplicacin cliente hace una peticin al servidor para conectarse y ste acepta, la aplicacin
servidor debe abrir un nuevo socket con un puerto diferente, para poder atender otras peticiones
mientras atiende al cliente actual. Una vez conectados, las dos aplicaciones pueden comunicarse
leyendooescribiendoensusrespectivossockets.
AcontinuacinsemostrarenformageneralcmoseranunprogramaclienteyunoservidorconTCPy
utilizandoellenguajeC#queeselqueserusadoparadisearnuestrasaplicacionesdelproyecto.
Para programar un servidor sencillo con sockets, se requieren cinco pasos. Primero hay que crear un
objetodelaclaseTcpListenerdelespaciodenombresSystem.Net.Sockets,estaclaseseusaparacrear
unsocketatravsdelcualnuestroservidorestarescuchandodeformaindefinidaporpeticionesdel
cliente,loanteriorseescribiracomosigue:
TcpListenerObjServidor=newTcpListener(direccinIP,puerto)

26
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Comosegundopasohayquehacerquenuestroobjetocreadoenelpasoanteriorempieceaescuchar,
esto se hace llamando al mtodo Start de TcpListener. Cuando el servidor recibe una peticin del
cliente, este crea una conexin mediante el mtodo AcceptSocket de la clase TcpListener el cual
devuelveunobjetoSocketalmomentodelaconexin.
SocketConexion=ObjServidor.AcceptSocket();
Eltercerpasoconsisteenestablecerelflujodelainformacinentreelclienteyelservidorutilizandoun
objeto NetworkStream que a su vez utiliza al objeto Conexion para realizar el envo y la recepcin de
datos.
ConelobjetoNetworkStreampodemoscrearunBinaryWriteryunBinaryReader,quesonusadospara
enviaryrecibirinformacinentrelosprogramasclienteyservidor.
El cuarto paso consiste en la comunicacin entre el cliente y el servidor mediante la conexin
establecidaenelpasoanterior.
El quinto paso es la terminacin de la conexin mediante la utilizacin del mtodo Close de
BinaryReader,BinaryWriter,NetworkStreamySocketparadarfinalaconexin.
Paralaprogramacindelclientesedebenseguircuatropasosbsicos.Elprimerodeellosescrearun
objetodelaclaseTcpClientyconesteobjetollamamosalmtodoConnectdeTcpClientparaestablecer
laconexin,estoseracomosigue:
TcpClientObjCliente=newTcpClient();
ObjCliente.Connect(disreccionServidor,puertoServidor);
ElSegundopasoconsisteusarelmtodoGetStreammedianteelusodelobjetoObjCliente,paraobtener
unobjetoNetworkStream,paraquepuedahaberoperacionesdelecturayescrituraconelservidor.Al
igual que del lado del cliente, debemos crear un objeto BinaryWriter y un objeto BinaryReader para
poderenviarinformacinhaciaelservidoryrecibirinformacindesdeelservidor.
27
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Eltercerpasoeseldeprocesamiento,endondeseutilizaelmtodoWritedeBinaryWriteryelmtodo
ReadString de BinaryReader para realizar la comunicacin. Por ltimo paso tenemos que cerrar la
conexinllamandoalmtodoClosedeBinaryReader,BinaryWriter,NetworkStreamyTcpClient.

2.8ControlWinsock
El control Winsock (su nombre proviene de Windows Sockets), permite conectar dos aplicaciones a
travs de una red, ya sea en una red LAN o como en nuestro caso, a travs de Internet. Este control
puede funcionar con el protocolo UDP o con TCP, ambos pueden ser usados para desarrollar
aplicacionesclienteservidor.
El control Winsock no tiene una interfaz visible en tiempo de ejecucin, esto es, cuando nuestras
aplicacionesseestnejecutando,elusuarionoverelconodelcontrol.
ElcontrolWinsock,aligualquecualquierotrocontrol,cuentaconunaseriedepropiedades,mtodosy
eventosquehacenmuchomsfcillaprogramacin,adiferenciadeprogramaraplicacionesutilizando
slosockets,yaquenoesnecesarioestablecereltamaodelospaquetesoformarlosencabezados.A
continuacinsedescribenlaspropiedades,mtodosyeventosmsimportantesdeestecontrol,ycon
loscualestrabajaremosparaprogramarnuestrasaplicacionesclienteyservidor.
2.8.1Propiedades

LocalIP
Esta propiedad nos devuelve la direccin IP de la mquina, en donde se est ejecutando nuestra
aplicacin.
LocalHostName
Muestra el nombre que tiene la mquina en donde se ejecuta la aplicacin, ya sea el nombre del
servidorodelcliente.

28
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

RemoteHost
Conestapropiedadseestableceelequiporemotoconelquesequierellevaracabounaconexin.
LocalPort
Establece el puerto a travs del cual se estarn escuchando peticiones entrantes, por lo tanto, esta
propiedadesutilizadaenlaaplicacinservidor.
RemotePort
Estapropiedadesprogramadadelladodelcliente,yaquemedianteellaseestableceelpuertoporel
cualelclienteseconectarelservidor.
LocalPortyRemotePortdebenserexactamenteiguales,puescomovimosenelcaptuloanterior,esa
travsdelpuerto,queelservidorsabeaquaplicacindirigirseluegoderecibirunapeticinatravsde
l.
State
NosinformadelestadodelcontrolWinsock,siesteestsiendoutilizadoono.
ParapoderhacerusodelaspropiedadesdelcontrolWinsock,debemoscrearunobjetodelmismo,ya
travs de ste acceder a la propiedad y por ltimo asignarle un valor. La sintaxis es mostrada a
continuacin:
Objeto.Propiedad=Valor
Nota:ELobjetopuedeserelnombredelcontrolWinsock,quesiempreesWinSock1,estenombreesel
queutilizamosennuestrasaplicaciones.
Por ejemplo, si quisiramos saber la IP de nuestra mquina y mostrarla en una etiqueta (Label1), en
nuestraaplicacin,elcdigoseraelsiguiente:
29
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Label1.Text=WinSock1.LocalIP
2.8.2Mtodos
Accept
Slo se utiliza para aplicaciones servidor que se basen en TCP, y es usada para aceptar una conexin
entranteenuneventoConnectionRequest.
GetData
Obtieneeldatoquefueenviadoalaaplicacin,yaseaalclienteoalservidor,estemtodonosesde
granutilidadennuestrasaplicaciones,puesnospermitirprocesarlosdatosqueenviemos.
Listen
Conestemtodoloquesehace,escrearunsocketqueestenmododeescucha,paraqueelservidor
sepongaaescucharporpeticionesdelosclientes.

SendData
Graciasaestemtodopodemosenviarnuestrosdatosalequiporemoto.
2.8.3Eventos
Ahorapasaremosadescribirloseventosmsimportantesqueutilizamosparanuestrasaplicaciones.
ConnectionRequest
Sinesteeventolacomunicacinentrenuestrasaplicacionesnosepodrallevaracabo,yaquestese
producecuandoelequiporemotosolicitaunaconexin.
Connect
30
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Seproducecuandoelequipolocalseconectaconelremoto,paraestablecerunacomunicacin.
Close
Seproducecuandoelequiporemotocierralaconexin.Esimportantequenuestrasaplicacionescierren
las conexiones TCP, una vez que dejan de transmitir informacin, para que posteriormente otras
conexionesseanhechas.
DataArrival
Este evento se produce cuando llegan datos nuevos y es importante, ya que aqu es donde vamos a
decidir qu hacer con la informacin que estamos recibiendo. En nuestro caso, esta informacin es
enviadaalainterfazUSBdelservidor,paraqueseaprocesadaporelMicrocontrolador.
Enlafigura2.10,semuestranlaspropiedades,mtodosyeventos,quedemanerageneralseutilizan
paraprogramaraplicacionesclienteyservidor,sinembargo,enelproyectohaymtodosyeventosque
seutilizan,tantodelladodelclientecomodelservidor.

Figura2.10Propiedades,MtodosyEventosdelcontrolWinsock

31
Captulo2:Envodedatosatravsdelared

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo3
Materiales

En este captulo, se describirn brevemente los materiales utilizados para el desarrollo del proyecto,
estoincluyetantoherramientasdesoftware,comomaterialhardware.

3.1Softwarededesarrollo
Lasherramientasdedesarrolloqueseutilizan,son:VisualStudioC#2008,elcompiladordeCparaPICs
PCW versin 4.65.4.13 de CCS, WinPic800, LiveWire y PCB Wizard. A continuacin, se dar una breve
explicacindelautilidaddeestasherramientas,ysusprincipalescaractersticas.
3.1.1VisualStudioC#2008
Microsoft Visual C# 2008, proporciona un editor de cdigo avanzado, permite disear interfaces de
usuariodeformarpidaysencilla,ademscuentaconundepuradorintegradoymuchasherramientas,
quehacen msfcileldesarrollodeaplicacionesbasadasenlaversin2.0dellenguajeC#,yen.NET
Framework.
Juntos, Visual Studio y .NET Framework reducen la necesidad de cdigo, los tiempos de desarrollo y
permitenaldesarrollador,concentrarseeneldiseodelaaplicacin.
3.1.2CompiladorCCS
EsuncompiladordelenguajeCquefuedesarrolladoporCCSInc.,parahacerposiblelareduccindel
tiempodedesarrollodealgnprograma,yaqueestesoftwarecuentaconbibliotecasymtodos,para
funciones especficas del microcontrolador PIC (conversin A/D, entrada y salida, configuracin de
timers,etc.).
32
Captulo3:Materiales

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Incluye tambin el cdigo fuente de numerosos programas de ejemplo, para mdulos LCD, teclados,
conversoresA/D,etc.
ElcompiladorCCS,soportaunagrancantidaddemicrocontroladores,unodeellosyelutilizadoeneste
proyecto, el PIC18F2550 de Microchip. Una caracterstica muy importante, que adems incluye, es la
funcin de crear un archivo del programa compilado, en formato HEX. Este archivo HEX, es utilizado
paraprogramarelmicrocontroladorusandoWinPic800.
3.1.3WinPic800
Se trata de un software gratuito de programacin de dispositivos. WinPic800 admite multitud de
circuitos programadores, e incluso permite fcilmente la configuracin de nuevos circuitos
programadores,aunqueserecomiendasuusocombinadoconelprogramadorGTPUSB,queeselque
seutilizaparaesteproyecto.
3.1.4LiveWireyPCBWizard
LiveWire, es una herramienta que permite el diseo de diagramas elctricos de circuitos, con una
funcinquepermitepasardeundiagramaelctricodeuncircuito,aldiseodeloquesersucircuito
impreso,estoselogra,enconjuntoconelprogramaPCBWizard.

3.2Hardwarededesarrollo.
Encuantoalhardwarequeserequiriparahacerposiblelarealizacindelproyecto,seutiliz,unaPC
conprocesadorIntelPentiumIVa2.2GHz,con760MbenmemoriaRAM,ysistemaoperativoWindows
XPHomeEdition.
3.2.1ProgramadorGTPUSBLite
GTP USB Lite, se trata de un programador que con ayuda de la herramienta WinPic800, hace posible
grabarprogramasdentrodeunmicrocontroladorPIC,einclusomemoriasEEprom.Esteprogramadorse

33
Captulo3:Materiales

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

comunica por medio del USB, a la PC, esto evita la necesidad de contar con alimentacin externa, y
aumentalavelocidaddegrabacin.

3.3 MicrocontroladorPIC18F2550
Este microcontrolador, se desprende de la familia de microcontroladores PIC, de Microchip, es un
microcontrolador que entra de la clasificacin de microcontroladores de 8 bits, pues realiza sus
operacionesconregistrosde8bits.
LaprincipalcaractersticaporlaqueelegimosusarestemicrocontroladorPIC18F2550,essufuncinde
conectividadconlainterfazUSB,quepuedefuncionarabajavelocidad(1.5Mbps),oaaltavelocidad(12
Mbps). Adems, este microcontrolador tiene las siguientes caractersticas que sern utilizadas en el
proyecto:
Tiene24terminalesquepuedenserconfiguradascomoterminalesdeEntrada/Salidadigital.
Posee3temporizadores(temporizador0,1y2).
Esposibleconfigurarhastade4manerasdistintassusfuentesdereloj

XT.Osciladorocristaldecuarzo(Crystal/Resonator)

HS.Osciladorocristaldecuarzodealtavelocidad(HighSpeedCrystal/Resonator),se
utilizacuandoelmicrocontroladornecesitadeunaaltafrecuencia.

EC.Relojexterno(ExternalClock).

INT.Osciladorinterno(InternalOscillator).

Las terminales de Entrada/Salida, sern utilizadas, para encender LEDs, para controlar los circuitos de
potencia, y as encender o apagar dispositivos controlados, o tambin, algunas de las terminales se
podran utilizar para codificar (generar seales banda base), o para decodificar (interpretar seales
bandabase).
Los temporizadores principalmente, sern utilizados de apoyo para codificar (generar seales banda
base),odecodificarinformacin(interpretarsealesbandabase).

34
Captulo3:Materiales

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

En los microcontroladores usados en el proyecto, se utilizan los modos de oscilador HS para el


microcontrolador que es conectado por USB, e INT, para el microcontrolador que no se conecta por
USB.

3.4 CmaraIP
UnacmaraIP,realizalasfuncionesdelacmaraanalgicayelservidordevdeo,enunasola
unidad, es decir, digitaliza y comprime el vdeo, para ser enviado a travs de un puerto
Ethernet, que comunica a una red IP. Entonces, el vdeo es transmitido desde la cmara IP,
hacia los conmutadores de red, para que finalmente llegue y se grabe en una PC, con el
softwaredegestindevdeo.Estesistemadevdeo,finalmenteestotalmentedigital,yofrece
lassiguientesventajas:

Cmarasdealtaresolucin(megapxel).

AlimentacinelctricaatravsdeEthernetyfuncionalidadinalmbrica

FuncionesdemovimientoVertical/HorizontalyZoom,transmisindeaudio,entradasy
salidasdigitalesatravsdeIP,juntoconelvdeo.

Flexibilidadyescalabilidadcompletas.

Figura3.1DiagramadeconexindeunacmaraIP

La cmara IP utilizada para este proyecto,es la IP606W, esta cmara puede ser usada de manera
almbricaoinalmbrica,tienemovimientomotorizadoyademspuedegrabarenlaoscuridad.Posee
todas las caractersticas de una cmara IP mencionadas anteriormente, y es una de las cmaras IP de
bajoprecioencontradasenelmercado.
35
Captulo3:Materiales

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo4

Desarrollodelasaplicaciones
ClienteyServidor

Con este captulo, entramos ya a lo que es el desarrollo de nuestro proyecto, y comenzamos por
describir las aplicaciones Cliente y Servidor, que son la base de nuestro trabajo, pues sern las
encargadasdelograrlacomunicacinatravsdeInternet.
Ellenguajedeprogramacinutilizadoparaeldesarrollodenuestrasaplicaciones,esVisualC#,quees
orientado a objetos y se utiliz Microsoft Visual Studio 2008 como entorno de desarrollo. Visual C#,
permitecrearaplicacionesqueseejecutanen.NETFrameworkparasistemasoperativosWindows.
Paraestablecerlacomunicacinentrenuestrasaplicaciones,utilizaremosuncontrolbasadoensockets,
este control es llamado Winsock, y es utilizado por los programadores para desarrollar aplicaciones
cliente servidor, ya que su implementacin es sencilla y ahorra mucho cdigo, a diferencia de los
sockets, adems puede trabajar utilizando el protocolo TCP, lo que asegura que nuestra informacin
llegarasudestinoenformacorrecta.
DebemosmencionarqueelprotocoloTCP/IP,hacetodoeltrabajoquetienequeverconlatransmisin
delainformacin,questalleguebienasudestinoyenformaordenada,sinembargo,esteprotocolo
no se encarga de decidir, cundo ni cmo es que se establece la comunicacin entre las aplicaciones
clienteyservidor,estatareaesobligacindelprogramadordelasaplicaciones.
Parapoderrealizarnuestrasaplicaciones,debemosbasarnosenelmodeloclienteservidor,entonces
disearemosunaaplicacin,queseejecuteyqueespereindefinidamenteatravsdeunpuerto,esta

36
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

aplicacinserelservidor,laotraaplicacinquedebemosdisear,eselcliente,ystasedebeconectar
conelservidor,utilizandounaIPyunpuerto.

4.1InstalacindelServidor
ParacomunicarnosatravsdelaInternetconlosdispositivosqueseencuentrenennuestrohogar,es
necesariocrearunservidorcasero.UnservidordebetenerunaIPesttica,yaqueseraunproblemasi
esta cambiara, pues no podramos tener acceso al servidor, y por lo tanto sera imposible controlar
nuestrosdispositivos.
Elprimerproblemaconelquenosencontramosalrealizarnuestroproyecto,esquenocontamoscon
una IP esttica, y es difcil que en algn hogar de Mxico se cuente con una. Nuestro proyecto es
enfocadoalcontroldedispositivosenelhogar,comosonlailuminacin,controldealarmas,controlde
cerrojos,etc.,porlotanto,eraimportantehallarunasolucinaesteproblema.
Nuestro proveedor de Internet no proporciona IPs estticas, a menos que paguemos por una, lo cual
aumentaraconsiderablementeelcostodenuestroproyecto.LamayoradelapoblacinenMxicoque
cuentaconserviciodeInternet,tieneunaIPdinmica,comonuestrocaso.Afortunadamenteennuestra
bsquedadesoluciones,encontramosquehayserviciosquepermitenasignarunsubdominioalequipo
que queremos convertir en servidor, quiere decir que aunque nuestra direccin IP cambie, nosotros
tendremos acceso a nuestro servidor por medio de este subdominio. Los servicios que encontramos
paraobtenerunsubdominio,sonNoIPyDynDNS.
Tanto el servicio de NoIP como el de DynDNS nos pueden servir, ya que ambos ofrecen dominios de
formagratuitaysinpublicidad.Paraelservidorqueusamosenelproyecto,optamosporelserviciode
noip,quecuentaconunprogramaqueinformacadaciertotiempodelasactualizacionesdenuestraIP,
deformaquelacorrespondencianombrededominiodireccinIPsealacorrecta.
Lo primero que debemos hacer, es dirigirnos a la pgina del servicio mencionado que es www.no
ip.com, para registrarnos en ella. Para poder crear nuestra cuenta, se nos pide que proporcionemos
ciertainformacin,comoemail,unacontrasea,nuestronombreycdigopostalentreotros.
37
Captulo4:DesarrollodelasaplicacionesClienteyServidor

2009

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

Una vez que creamos nuestra cuenta, recibiremos un email al correo especificado en el registro de la
cuenta,enelquevieneunenlaceparaactivarelservicio.Unavezqueterminamostodoesteproceso,ya
podemosentraralapginadenoipeingresaranuestracuenta,endondesenosmostrarunainterfaz,
desdelaquepodremosadministrarlacorrespondenciaentreelsubdominioquehayamoscreado,ysu
direccinIP.Aquigualmentepodemosagregarnuestronuevodominio,enlafigura4.1,semuestrauna
capturadepantallaparaesteproceso.

Figura4.1RegistrodeldominioenelservicioNoip

Yaqueintroducimosnuestrainformacin,damosclickalbotndecrearHostyelsistemanosinforma
queesperemosalrededorde5minutos,paraqueelsubdominioseaadaalservidorDNS,yporlotanto,
antesdequeelsubdominiopuedaserresueltoanuestraIP.
En nuestro caso, fue necesario descargar un cliente que se encarga de notificar al servicio de noip,
cuando nuestra IP cambie, pues recordemos que esta puede cambiar al momento de que apaguemos
nuestroequipo,ylovolvamosaencender.
En este punto, nos encontramos con el problema de que no podamos tener acceso an a nuestro
servidor, al momento de teclear el dominio en nuestro navegador, esto se deba a que no tenamos
habilitadounpuertoennuestroruteadorparanuestroservicio.

38
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Es claro que los pasos a seguir para abrir un puerto en el router, varan en funcin al router que las
compaasproveedorasdeInternetproporcionen,peroesnecesarioespecificarlealrouterelpuertoa
travsdelcualpuededejarpasarciertainformacin,yaquesielpuertonoeshabilitado,lainformacin
serrechazada.

4.2Comunicacinentrenuestrasaplicaciones
ParaquenuestrasaplicacionesClienteyServidorpuedancomunicarse,hicimosusodelcontrolWinsock,
trabajandoconelprotocoloTCP.Comoyadijimos,estecontroltambinsepuedeimplementarconel
protocoloUDP,sinembargo,nuestroproyectorequierequelosdatosqueenviamoslleguendeforma
correcta, sin error alguno, ya que una mala transmisin de los datos, podra provocar un mal
funcionamiento de los dispositivos que intentamos controlar, con TCP aseguramos una buena
transmisindenuestrosdatos.
Ahora se explicar de manera general, el procedimiento que seguirn nuestras aplicaciones para
establecer una conexin, y transmitir datos entre ellas utilizando los mtodos, propiedades y eventos
delcontrolWinsock,enlasiguienteseccinsevernaspectosmsparticularesdecadaunadeellas.
Como ya se mencion anteriormente, el proyecto est basado en el paradigma ClienteServidor,
entonces,debemostenerunaaplicacinClienteyunaaplicacinServidor.
Primeroquenada,debemosteneranuestraaplicacinServidor,escuchandoatravsdeunpuerto,lo
cual se logra usando la propiedad LocalPort y llamando al mtodo Listen, de este modo el Servidor
quedaalaesperadeunapeticindeconexinporpartedelCliente,cuandoestosucede,seproduceen
el Servidor el evento ConnectionRequest, en el que se hace una llamada al mtodo Accept para
completarlaconexin.
Ahora hablando del lado del Cliente, ste debe conocer la direccin IP o el dominio del Servidor y el
puerto por el cual est escuchando, ya que estos parmetros son establecidos, se debe hacer una
llamada al mtodo Connect, que requiere a estos dos parmetros. Es en este momento, en que el
ClientehacelapeticindeconexinalServidorysucedelodescritoenelprrafoanterior.
39
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

La direccin IP del Servidor, puede conocerse del lado del Cliente gracias a la propiedad RemoteHost,
tambinelpuertoporelcualestescuchandomediantelapropiedadRemotePort.
Ya que se ha establecido la conexin entre el Cliente y el Servidor, las aplicaciones pueden enviar y
recibirdatos.Paraenviardatos,seutilizaelmtodoSendData.Cuandoserecibealgndato,yaseadel
ladodelClienteodelServidor,seproduceeleventoDataArrival,dentrodelcualsehaceunallamadaal
mtodoGetData,pararecuperarlosdatosrecibidosyalmacenarlosenalgunavariable.
Elprocedimientoanteriormentedescrito,eselqueseseguirparaestablecerunacomunicacinentre
nuestras aplicaciones Cliente y Servidor programadas, sin embargo, cada una de ellas hace uso de
muchos ms recursos para su funcionamiento, en la figura 4.2, se presenta el diagrama de actividad
UMLdelprocedimientodescrito.

40
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.2DiagramadeactividadparalacomunicacinClienteServidor

4.3DescripcindelaaplicacinCliente
AhorasedescribirmsafondolaestructuraquetienelaaplicacinCliente.Nuestrasaplicacionesson
proyectos del tipo Windows Form, que es la tecnologa utilizada en Visual C# para crear aplicaciones
grficasbasadasenWindows,queseejecutanen.NETFramework.Paracrearunproyectodeestetipo,
se utiliza el diseador de Windows Form de Visual Studio, mediante el cual se crea la interfaz de
usuario,lacualpuedecontenerbotones,cuadrosdetexto,etiquetas,imgenes,etc.
Las dos aplicaciones deben contener al control Winsock, para poder hacer uso de sus mtodos,
propiedadesyeventos,estecontroleselcomponenteprincipalparanuestrasdosaplicaciones.
41
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Enlafigura4.3,sepuedeapreciarlainterfazdeusuarioparanuestraaplicacinCliente,lainterfazest
formadaporelementosgrficos,quefacilitanlainteraccinentrelaaplicacinyelusuario.

Figura4.3InterfazgrficadelaaplicacinCliente

Enlafigura4.4semuestraeldiagramadecasousoparalaaplicacinCliente.

42
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.4DiagramacasousodelaaplicacinCliente

El usuario, mediante la aplicacin Cliente, podr conectarse con el Servidor remoto, controlar los
dispositivos a distancia, como un foco, una bomba de agua, seguros de puertas, etc., monitorear el
estadodelosmismos,estoes,sabersielfocorealmenteestencendido,sialgunaalarmafueactivadao
sielsegurodelapuertaestpuesto,ypodrteneraccesoalacmaraIPutilizada,yaseaparavigilancia
oparacomplementarelmonitoreodedispositivos.
Se propusieron tres reas principalmente en la interfaz grfica de la aplicacin, con el fin de que el
usuariolocalizarademanerafcil,lasdiversastareasquesepuedenhacerconlaaplicacin,estasreas
son:
4.3.1Paneldeconexin
Es el panel, en el que el usuario introduce la IP y el puerto del Servidor al cual quiere conectarse. El
proceso de conexin es descrito completamente ms adelante, ya que se trata de un proceso
importanteenelproyecto.Enlafigura4.5semuestraestepanel.

43
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.5PaneldeconexindelaaplicacinCliente

4.3.2Paneldecontroles
Se trata de un tabControl, que es una coleccin de paneles, en los cuales se pueden colocar ms
controles.Comopuedeapreciarseenlafigura4.6,haytrespaneles:Controles,Estadodedispositivosy
Mensajes.

Figura4.6PaneldecontrolenlaaplicacinCliente

4.3.2.1Controles
Enlafigura4.7.SemuestraeldiagramacasousoparaelpaneldeControles,queasuvezcontieneotros
controlescomobotones,TextBox,contenedoresyetiquetas(Labels).

44
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.7DiagramacasousodelpaneldecontroldelaaplicacinCliente

Elusuariopodrestablecerunhorarioenelquequieraquelaslucesseanencendidas,opodratambin
utilizarseparaestablecerlahoraenqueciertodispositivodebedeaccionarse.Estaesunagranventaja,
ya que remotamente se pueden variar los periodos en que un dispositivo est en funcionamiento.
Pensemos, por ejemplo, que la persona que manipula algn dispositivo, debe hacer alguna otra tarea
queleconsumaciertotiempo,yestoleimpidaelpoderaccionaroapagareldispositivo,haciendouso
deestacapacidaddelaaplicacin,podraestablecerelperiododefuncionamientodeldispositivoyste
funcionaracuandotuviesequehacerlo.
En nuestro caso, lo que se controla es la iluminacin, el usuario puede establecer la hora en que se
debenencenderoapagarlaslucesdesucasa,porejemplo,antesdesalirdeltrabajo,puedeprogramar
estafuncinparaquecuandolleguealhogarseencuentrecontodoiluminado.Esto,ademsdeseruna
comodidad,resultaenunahorrodeenerga.
Para programar esta funcin, fue utilizado el control Timer de Visual Studio, que sirve para provocar
eventostemporales,esdecir,quesihabilitamosestecontrol,cadaciertointervalodetiempo,ocurrir
unevento,enesteeventopodemosponerinstruccionesdecontrol.
Laspropiedadesmsimportantesdeestecontrol,son:
Enabled:IndicasielTimerdebefuncionarono.(Envaeventosonolohace).
Interval:Eseltiempoquedebetranscurrirentreeventoyevento,estenmilisegundos.
45
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

El evento que se produce cada cierto tiempo, es el evento del Timer, Timer_Tick(), por ejemplo, si
quisiramosquelahoraactualsemostraraenunlabelllamadoHoraTxt,tendramosqueestablecerla
propiedad Enabled en True, y el intervalo a 1000 (1 segundo), el evento del Timer quedara de la
siguienteforma:
private void Hora_Tick(object sender, EventArgs e)
{
HoraTxt.Text = DateTime.Now.ToString("hh:mm:ss");
}

En nuestra aplicacin, lo que se hace es: comparar Hora.Txt.Text con el contenido de alguna de las
TextBox,en dondeelusuarioestableceunahora,ysisoniguales,seenvaeldatocorrespondienteal
Servidor,paraquesteactiveeldispositivo.Enlafigura4.8semuestraeldiagramadeactividadpara
esteproceso.

Figura4.8Diagramadeactividad,horariodeencendido

Enestemismopanelsepuedenobservarlosbotonessiguientes:

Encendidogeneral:dentrodeleventodeestebotn,sehabilitaunTimerllamadoRetardos3,en
eleventodeesteTimer,quesucedecadasegundo,sevaincrementandodeunoenunoelvalor
46
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

deunavariablellamadaconteo,quesirvedecontador,elvalordeestavariablesecomparacon
unaseriedenmeros(1,2,3,etc.),concadacondicincumplida,seenciendeunfoco,estoquiere
decir que, cada segundo un foco ser encendido, al terminar de encender todos los focos,
Retardos3 es deshabilitado. En la figura 4.9 se muestra el diagrama de actividad simplificado
paraesteproceso.

Figura4.9Diagramadeactividad,encendidogeneral

Larazndeimplementaresteprocedimientoesdebidoaqueletenemosquedarciertotiempoal
envodecadadatoparaquenuestromicrocontrolador,alahoraderecibirlosdatosdelServidor,
sea capaz de procesarlos en forma adecuada, ya que si enviamos todos los datos de manera
simultnea, el sistema no funciona adecuadamente pues el microcontrolador no sera capaz de
procesarlos. En el captulo 5 se habla ms ampliamente del microcontrolador, y se tocan temas
comoste.

Apagadogeneral:realizalamismafuncinqueelbotnanterior,peroenestecaso,seenvaun
datoalServidorparaquerealiceelprocesodeapagartodoslosfocos.

47
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Simular presencia: con este botn, se establece una secuencia de encendido y apagado de
luces,demaneraquedesdeelexteriorparezcaquehaygente dentrodela casa.Estafuncin
resultamuyimportantecuandosehabladeseguridadenelhogar.

CmaraIP:medianteestebotn,sepodrteneraccesoalaaplicacindelacmaraIP,atravs
delacualsemonitoreanlosdispositivos.

Reproductor:serutilizadoparaqueelusuariopuedavisualizarvideosgrabadosporlacmara
IP. Para este propsito, fue creada una aplicacin Windows dentro del mismo proyecto, esta
aplicacincontieneuncontrolWindowsMediaPlayer,yunbotnquepermiteabrirunarchivo
devideo,queestalmacenadoenelServidor.

Losdosbotonesrestantesqueseobservan,envanundatoalservidorparaactivarodesactivar
algndispositivoextra.

4.3.2.2Estadodelosdispositivos
ElsiguientepaneleseldeEstadoDispositivos,enlafigura4.10sepuedenobservarsudiagramade
casousoylainterfazgrfica.

Figura4.10DiagramacasousoeinterfazgrficadelpanelEstadodedispositivos

Este panel permite al usuario, asegurarse que el estado del dispositivo es el correcto, el
Microcontroladorserelqueenvedatos,atravsdelServidor,alClienteindicandosobreelestadoreal
de los dispositivos. El Microcontrolador encargado de encender o apagar los dispositivos, har un
48
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

barridoasupuertodesalida,paraconocerelestadodecadaunadesusterminales,silaterminalest
enalto,significaqueeldispositivoconectadoasta,estencendido;silaterminalestenbajo,significa
que el dispositivo est apagado. Conforme se va conociendo el estado de cada terminal, se enva un
datoalCliente,elcualactualizarelpaneldelqueestamoshablando,mostrandoas,sirealmenteest
funcionandoeldispositivo.AunquelaaplicacinClientepermitealusuarioverelestado,porejemplo,
de un foco, a travs de una imagen en su interfaz grfica, esto no asegurara que el estado real del
dispositivo es el mostrado, ya que estas imgenes cambian en funcin del evento que controla a ese
dispositivo,esporesoqueseimplement,elprocedimientodeconocerelestadodelasterminalesdel
puertodesalidadelMicrocontrolador,yaquepodrasucederquealgunaterminalnofuncionarabien,y
sinembargo,elusuarioveralocontrarioenlaaplicacin.ElClienteatravsdeleventoDataArrivaldel
controlWinsock,procesalosdatosquelellegandelServidor,esteprocesoesdescritoconmsdetalle
enlaseccin4.8yenelcaptulo5,sehablamssobreelbarridoquehaceelmicrocontrolador,para
conocerelestadodesusterminalesyenviarestainformacinalCliente.Enlafigura4.11Semuestrael
diagramadeactividaddeesteproceso.

Figura4.11Diagramadeactividad,estadodelosdispositivos

Adicionalmente,seimplementunsistemadealarmas,estoconelfindedetectarmediantesensores,
porejemplo,sialguienentranuestracasa,laaplicacinClientemostraraunasealdealerta(figura
49
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

4.12), avisando al usuario sobre alguna intrusin. Igualmente se podra implementar este mismo
mecanismo,paraavisarsialgndispositivodejdefuncionar,porejemplo,unamquinaenunafbrica,
elsupervisornotendraqueestarpresenteparadetectaralgunafalla,sinoqueelsistemaleavisaraen
elmomentoqueestoocurriera.

Figura4.12Sealdealarma

Elprocedimientoparaimplementarestafuncin,essimilaralquesesigueparaactualizarelestadode
los dispositivos, el Microcontrolador recibir una seal a la entrada de una de sus terminales cuando
algnsensorseaactivado,einmediatamenteenviarundatoalServidorporelpuertoUSB,paraque
ste a su vez enve este dato al Cliente, y el usuario visualice la seal de alarma. Igualmente, en el
captulo5,sehablarmssobreesteprocesoenelMicrocontrolador.
4.3.2.3Mensajes
Mediante este panel, el usuario podr consultar la informacin que se est intercambiando entre el
ClienteyelServidor.CadavezqueelClienteenveundatoalServidor,stesermostradoenelcuadro
de texto que se aprecia en la figura 4.13, de la misma manera, los datos recibidos provenientes del
Servidor,sernregistradosaqu.

50
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.13PaneldemensajedelaaplicacinCliente

Este panel permite, conocer realmente la informacin que se est intercambiando entre las
aplicaciones,yencasodealgnerrorenelfuncionamientodelsistema,poderdeterminarsilafallafue
producidaporlaaplicacinoelproblemaestenlaparteelectrnica.
4.3.3Paneldeubicacindedispositivos
EnestaseccindelaaplicacinCliente,elusuariopodrvisualizarlaubicacindelosdispositivosque
est controlando, en este proyecto, se utiliz el plano de una casa para ubicar los focos, para la
iluminacin, el cerrojo de la puerta y la cmara IP. Adems, se pueden controlar aqu mismo los
dispositivos, y visualizar inmediatamente el cambio de estado de los mismos. En la figura 4.14 Se
muestraestaseccin.

Figura4.14Paneldeubicacindelosdispositivos

51
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Como se puede observar, los focos, cerrojo y cmara IP, se representan mediante un botn con una
imagen,quedescribeelestadodecadaunodeellos(apagadooencendido),alpresionarunbotnque
representa un foco, un dato es enviado al Servidor para que ste indique al Microcontrolador,
dependiendo del estado del foco en que fue presionado el botn, si debe apagarlo o encenderlo.
Igualmente, si el botn querepresentaalcerrojoespresionado, stemanda undatoalServidorpara
indicarlequaccintomaryadems,secambialaimagendelbotnpararepresentarelnuevoestado
que tiene dicho dispositivo. En caso de que el botn de la cmara IP sea presionado, se abrir la
aplicacinquesirveparacontrolardichacmara.Enlafigura4.15Semuestranlosestadosquepueden
tomarcadaunodelosdispositivos.

Figura4.15Estadodelosdispositivos

4.4ClaseAplicacionCliente,
Para desarrollar la aplicacin Cliente, se cre una clase llamada AplicacionCliente, dentro de la cual
encontramos a todos los mtodos, eventos y propiedades necesarios para el funcionamiento de la
aplicacin.Enlafigura4.16,sepresentaeldiagramaUMLdeestaclase,estediagramaesgeneradopor
VisualStudioautomticamenteenelproyecto.

52
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.16ClaseAplicacionCliente

Comosepuedeobservarenlafigura4.16,laclasecreadaesmuycompleta,cumpliendoasconunade
las reglas de la programacin orientada a objetos, que dice que una clase es mucho ms rica entre
mayorestareassepuedanrealizarconella.

53
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

4.5DescripcindelaaplicacinServidor
LaaplicacinServidor,estdesarrolladaaligualquelaaplicacinClienteenlatecnologaVisualC#.Esta
aplicacintienefuncionesmuyimportantes,comoladetransmitirlosdatosenviadosdesdeelCliente
haciaelMicrocontrolador,atravsdelainterfazUSByladecomunicaralClientesobrelosestadosque
tienenlosdispositivos,queestamoscontrolando.
LainterfazgrficaquesedesarrollparalaaplicacinServidorsemuestraenlafigura4.17,seobserva
queesmssencillaquelainterfazdelCliente,estosedebeaquesufuncinseconcentranicamentea
esperarporpeticionesdeconexinporpartedelCliente,recibirlosdatosqueelClienteenvayenviar
datosalCliente.

Figura4.17InterfazdelaaplicacinServidor

Enlafigura4.18SemuestraeldiagramadecasousoparaelServidor.

54
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.18DiagramacasousoparalaaplicacinServidor

LainteraccinporpartedelusuarioconelServidoresmenorqueconlaaplicacinCliente,sinembargo,
internamente el Servidor es ms completo, ya que adems de tener control sobre la comunicacin
remotaatravsdelcontrolWinsock,debetransmitiryrecibirdatosatravsdelainterfazUSB,porlo
quecontienemscdigoquelepermiteinteractuarconsta.
LainterfazdelServidorestcompuestaporcuatropaneles,tresdeellosinformansobreelestadodela
conexin, datos del servidor y la informacin que se transmite, el otro panel es con el que el usuario
interactadirectamente.
4.5.1

PaneldedatosdelServidor

El usuario podr visualizar los datos del Servidor, que son: el nombre del equipo en el que se est
corriendolaaplicacinyladireccinIPdelmismo.Elqueelusuarioconozcaestosdatos,permitecorrer
laaplicacinencualquierred,yaquesielcontroldedispositivosseaplicaraenunaredlocal,serafcil
estableceralServidoryconocerrpidamenteladireccinIP,alaqueelClientetendraqueconectarse.
Enlafigura4.19,semuestraestepanel.

55
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.19Panel,datosdelServidor

ParaconocerelnombredelequipoendondeseestcorriendolaaplicacinServidor,sehaceusodela
propiedad LocalHostName del control Winsock, para esto se le asigna esta propiedad, a la propiedad
TextdeuncontrolLabel(etiqueta),comosigue:
lblHost.Text = axWinsock1.LocalHostName;

endondelblHosteselnombredelcontrolLabel.
LadireccinIPsepuedeconocerhaciendousodelapropiedadLocalIP:
lblIPlocal.Text = axWinsock1.LocalIP;

4.5.2PaneldeMensajes
Enestaseccin,sevisualizanlosdatosqueseestntransmitiendoentreelClienteyelServidor,estocon
elobjetivodevisualizarsilosdatosqueestnsiendointercambiadosentreambasaplicaciones,sonlos
correctos.Enlafigura4.20,semuestraestapartedelaaplicacin.

56
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.20PaneldemensajesdelaaplicacinServidor

Este panel fue de gran ayuda durante el desarrollo del proyecto, debido a que a la hora de hacer las
pruebasdecomunicacin,podamosvisualizarqudatosseestabantransmitiendo,osabersirealmente
seestabantransmitiendolosdatos.
Adems,elusuariopodrvisualizarlainformacinquesevaalmacenadoenestacajadetexto,unavez
quellegueallugarendondesehainstaladoelServidor,aspodrsaberqumovimientosseestuvieron
realizandoyaquhorafueronhechos.
4.5.3Estadodelaconexin
EstepanelsirveparaconocerenquestadoseencuentraelServidor,siestconectadoodesconectado.
Paraesto,seutilizarondosimgenesquecambiansegnelestadoyuncontrolLabel(etiqueta),para
especificar el puerto por el cual se est escuchando por peticiones. En la figura 4.21, se muestra la
apariencia de este panel, tanto en el estado de escucha como en el de desconectado. De manera
adicional,semuestralahoralocaldelServidor.

57
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.21EstadosdelServidor

4.5.4PaneldeConexin
El Servidor debe de saber por cul puerto escuchar las peticiones del Cliente, este parmetro, ser
asignadoporelusuarioalapropiedadLocalPortdelcontrolWinsock,atravsdeuncuadrodetextoen
dondeescribirelvalor.Paraloanterior,secreunpanelllamadoConexin,quesemuestraenlafigura
4.22.Enestepanel,elusuariodisponedeunacajadetextoydosbotones,unoparaponeraescuchara
la aplicacin Servidor, por el puerto especificado en la caja de texto, y el otro para desconectar al
Servidor.

Figura4.22PaneldeconexindelaaplicacinServidor

ParaqueelServidorcomienceaescucharporunpuerto,sehaceusodelmtodoListen,stecreaun
socketqueestenmododeescucha.Eldiagramadeactividadquesemuestraenlafigura4.23,muestra
elprocesodeconexindelServidor,unavez que elusuarioha especificado elpuertoypresionadoel
botnEscuchar,accinquenosllevaalmtododeestebotn.

58
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.23Diagramadeactividadparaelprocesodeconexin

4.6ComunicacinUSB
ParalograrquelaaplicacinServidorpudieraenviaryrecibirdatosatravsdelainterfazUSB,seutiliz
una API (Interfaz de Programacin de Aplicaciones) de Windows llamada mpusbapi.dll, proporcionada
porMicrochip(verApndice),quepermiteleeryescribirenundispositivoUSB.EstaDLLestescritaen
lenguajeC++,porestaraznsetuvoquecrearunaclasequeimportaralasfuncionesdempusbapi.dll,y
aspoderimplementarlasenleguajeC#,estoesloquepermitelainteroperabilidadenlossistemas.
LaclasePicUSBAPI,eslaencargadadeimportarlasfuncionesbsicascontenidasenlaDLLmpusbapi.dll,
lasfuncionesquesernutilizadassonlassiguientes:
_MPUSBOpen(DWORD

instance,

string

pVID_PID,

string

pEP,

DWORD

dwDir,

pLength,

DWORD

DWORD dwReserved)
_MPUSBRead(void*

handle,

void*

pData,

DWORD

dwLen,

DWORD*

dwMilliseconds)
_MPUSBClose(void* handle)

59
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

La primera funcin, permite establecer una tubera, pasndole como parmetros el identificador de
vendedorVIDyproductoPID,elpuntofinalconelquenosqueremoscomunicaryladireccin delos
datos.
VID y PID, son esenciales para todo dispositivo, VID es el identificador de la empresa, cada empresa
tieneunidentificador,elcualpuedevenderdiferentesproductosalosqueselesincluyeelID(PID).Por
estarazn,undispositivotendrunVIDyPIDfijosquelohacenico,yevitandoincompatibilidadcon
otrosdispositivos.
La segunda funcin lo que nos permite hacer, es leer los datos provenientes de la interfaz USB. Y la
tercerafuncincerrarlatubera.EnelApndiceA,sepuedenconsultarestasyotrasfuncionesconms
detalle, en este Apndice se hace una descripcin ms detallada de cada uno de los parmetros que
utilizanestasfunciones.
ParapoderdeclararunmtodoqueestdentrodeunaDLL,sehaceusodelatributoDLLImport,elcual
permiteespecificarelnombredelaDLLquecontieneelmtodo.Luego,sedebedeclararelmtodocon
las palabras clave static y extern de C#. Lo habitual es dar el mismo nombre al mtodo de C# que al
mtodo exportado. Por ejemplo, en nuestra clase PicUSBAPI, para poder importar la funcin
_MPUSBClose delaDLL,sehacelosiguiente:
[DllImport("mpusbapi.dll")]
private static extern bool _MPUSBClose(void* handle);

Lomismosehaceparaimportarlasotrasfuncionescontenidasdentrodelampusbapi.dll.
Enlafigura4.24,semuestraeldiagramadeClasedenuestraClasegenricaPicUSBAPI.

60
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.24DiagramaUMLdelaclasePicUSBAPI

Paratenermsclaroelsignificadodelasvariablesutilizadasenlaclase,serecomiendaleerelApndice
A, en el que se describen con ms detalle. A continuacin, nos enfocaremos a la descripcin de los
mtodos:

OpenPipes

ClosePipes

RecivePacket

SendPacket

Controles

DetectroAlarma

61
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

OpenPipe
Estemtodo,nospermitirabrirlaconexinconelmicrocontroladorPIC,acontinuacinsemuestrael
cdigoparaestemtodo:
public void OpenPipes()
{
DWORD selection = 0;
myOutPipe = _MPUSBOpen(selection, vid_pid_norm, out_pipe, 0, 0);
myInPipe = _MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
}

Observamos DWORD selection = 0, esto significa que estamos usando un solo microcontrolador,
entonces,situvisemosotromicrocontroladorenelproyecto,elsegundo steseraseleccionadocon
DWORDselection=1,tomandoen cuentaque,parausarelmpusbapi.dllcondosmicrocontroladores
PIC, tendramos que crear dos clases, una que contenga el PID&VID del primer PIC con el DWORD
selection=0,yotraclasequecontengaelotroPID&VIDdelsegundoPICconelDWORDselection=1.

ClosePipes
EstemtodocierralaconexinentrelaPCyelmicrocontrolador.

RecivePacketySendPacket
Estos mtodos, nos permiten enviar bytes desde la PC hacia el microcontrolador y recibir
bytes del microcontrolador a la PC.
RecivePacket, hace uso del mtodo _MPUSBRead,elcualpermiteleerlainformacinquellegaa

travsdelainterfzUSB,provenientedelmicrocontrolador.
SendPacket, utiliza el mtodo _MPUSBWrite,que permite enviar informacin a travs de la interfaz
USB,lacualllegaralmicrocontrolador.

62
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Controles
Este mtodo tiene como objetivo, enviar los cdigos que indican al microcontrolador qu dispositivo
debeencenderoapagar,segnseaelcaso.EstoscdigossonlosquelaaplicacinServidorrecibeensu
mtodoDataArrivaldelcontrolWinsock,queeselencargadoderecibirlosdatosqueenvaelCliente.
LosdatossonenviadosalmicrocontroladoratravsdeUSB,conayudadelmtodoSendPacket,como
sigue:
SendPacket(send_buf, 2);

En donde, send_buf, es un arreglo que contiene dos valores de un byte cada uno, el primer valor
(send_buf[0]), le indicar al microcontrolador, el modo al que debe ingresar (hay dos modos, el de
encendido 0 y el de apagado 1),y el segundo valor (send_buf[1]), indicar cul dispositivo debe ser
activado o desactivado. En el captulo 5, se trata ms a detalle este proceso del lado del
microcontrolador.
Para decidir el modo (encender o apagar), se implement un mtodo, mediante el cual, si queremos
encender algn dispositivo, se envan desde el Cliente, valores mayores a 100, y para apagar el
dispositivo se envan valores menores a 100. De esta forma, si queremos encender el dipositivo 1, se
envaelvalor101,perosiloquequeremosesapagarlo,enviamosel01.
Enlafigura4.25SemuestraeldiagramaUMLdeactividadparaestemtodo.

63
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.25DiagramadeactividadparaelmtodoControles

DetectorAlarma
Este mtodo realiza la funcin de leer los datos que llegan del microcontrolador, y que pueden
indicarnos el estado de los dipositivos perifricos, ya sea una alarma o para saber si un foco est
realmenteencendido.
Paraleerlosdatosquellegandelmicrocontrolador,estemtodohaceusodelmtodoReceivePacket,
sterecibeeldatoquellegaatravsdelaUSByguardaelvalorenunavariable.Cuandosehaceuna
llamadaalmtodoDetectorAlama,steregresaelvalorquerecibidelpaquetetransmitidoporUSB,y
estemismodatoeselqueseenvahacialaaplicacinCliente,parainformaralusuariosobreelestado
dealgndispositivo.

4.6ConexinconelServidor
Para que el usuario se conecte con el Servidor, se cre un panel llamado Conexin al Servidor
(mostradoenlafigura4.5),enelcualtenemosdoscajasdetextoydosbotones,estepanelsirvepara
queelusuarioescribaladireccinIP,yelpuertodelServidoralcualsevaaconectar.
64
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Una vez que estos dos parmetros son establecidos, se presiona el botn de Conectar (btnConectar),
conlocualsehaceunallamadaaleventodeestebotn(btnConectar_Click).
Demanerageneralloquehaceesteevento,eshacerlapeticindeconexinalServidor,medianteel
mtodoConnectdelcontrolWinsock,querequieredelosparmetrosIPypuertoestablecidos,enlas
doscajasdetextocorrespondientes(IPTxtyPuertoTextrespectivamente).Tambinseestableceelvalor
delavariabledeinstanciaisConnectedatrue,estavariablesirveparateneruncontrolsobreelestado
de la conexin entre Cliente y Servidor. Adems se utiliza un arreglo try catch, para el manejo de
excepcionesdurantelaejecucindelaaplicacin,siocurrealguna,stasemuestraenunacajadetexto
enelpaneldemensajesdentrodelaaplicacin.
ParaqueelClientesedesconectedelServidor,sehaceusodelbotnDesconectar(btnDesconec),cuyo
evento (btnDesconectar_Click), contiene a su vez al evento Close del control Winsock, para cerrar la
conexin.
Hay que mencionar, que se omiten instrucciones que tienen que ver con el comportamiento de los
componentes de la interfaz grfica, por ejemplo, el que aparezca una etiqueta que indique que se
realizconxitolaconexin,oquelaimagendeconexincambie.Loanteriordebidoaqueelpropsito
deltrabajo,esdescribirelprocesoprincipal,enestecasoeldeconexinynotantoelcomportamiento
deloscontroles,yaqueestopuedevariardeacuerdoalaaplicacinqueseestimplementando.

65
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.26Diagramadeactividadparalosprocesosdeconexinydesconexin

UnavezqueelClienteyelServidorsehanconectado,puedehaberintercambiodedatosentrelasdos
aplicaciones. Es mediante este intercambio de datos, que se logra tener un control sobre los
dispositivos, ya sea que el Cliente enve al Servidor un comando, que indique que determinado
dispositivo debe ser activado o desactivado, o que el Servidor enve al Cliente un comando que le
indiqueelestadodeldispositivo.

4.7Envodedatos
Para el envo de los datos, tanto del Cliente como del Servidor, fue creado un mtodo llamado
Envio_Dato, queesinvocadocadavezquesepresionaunbotnquecontrolaalgn dispositivo,este
mtodo requiere un parmetro de tipo entero llamado dato. Envio_Dato, se encarga de hacer una
llamada al mtodo SendData del control Winsock, mediante el cual se enva el valor asignado al
parmetrodatoalServidor.Enlafigura4.27,semuestraeldiagramadeactividad,endondesedescribe
elprocedimientoquesesigue,apartirdequeelusuariopresionaunbotndecontrol.

66
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.27Diagramadeactividadparaelenvodeundato

Porejemplo,unbotnpresionadopodraenviareldato101quesirveparaencenderalgndispositivo,
estoseharacomosigue:
Envio_Dato(101);
Envio_Dato,recibeesteparmetroylopasacomoargumentoalmtodoSendDatadelcontrolWinsock:
SendData(101);
Alrecibirestedato,elServidorpormediodecondiciones,sabrqudispositivoactivar.
Como ya se dijo anteriormente, adems de enviarse un cdigo, cuando un botn es presionado, se
modifican aspectos visuales de la interfaz grfica, ya que es importante que el usuario perciba los
cambiosquesehaceneneldispositivo,adems,sehaceunmanejodeexcepciones,paracontrolarlos
erroresquepuedanpresentarse.
67
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

4.8Recepcindedatos
Ahoraesmomentodedescribircmoesquelosdatossonrecibidos,esteprocesoeselmismotantoen
laaplicacinCliente,comoenlaaplicacinServidor,soloquelaformademanipularlosdatosquellegan
esdiferente.
Del lado de la aplicacin Cliente, lo que estaremos recibiendo, sern datos que tienen que ver con
alarmas activadas y el estado de los dispositivos, del lado de la aplicacin Servidor, se recibirn datos
queasuvezsernpasadosalMicrocontroladoratravsdeUSB,paracontrolaralosdispositivos.
Cuandoundatollegaalaaplicacin,eleventoDataArrivaldelcontrolWinsockseactivayrecibeeldato
enviado,estolohacemedianteelmtodoGetData,estemtodotrabajaconvariablesdetipoobject,lo
quelepermiterecibirvaloresdecualquiertipo,estonospermitetrabajartantoconvaloresdecarcter
(char),comovaloresenteros(int).
ElargumentodelmtodoGetData,estreferenciado,estoquieredecir,quecualquiercambioquesufra
el parmetro dentro del mtodo, se ver reflejado en la variable que haya sido referenciada a ese
parmetro, dentro del mtodo que realiz la llamada. El siguiente ejemplo, ayuda a comprender la
formaencmotrabajaelmtodoGetData.
Supongamoselsiguientemtodo:
static void Metodo(ref int i)
{
i = 44;
}

Veamosahoraqusucedecuandosehaceunallamadaaesemtodoconreferencia:
static void Main()
{

int valor = 0;
Metodo(ref valor);

}
68
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Lavariabledefinidacomovalor,tomaraelvalorde44.

69
Captulo4:DesarrollodelasaplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo5

Sistemaelectrnicode
comunicaciones

5.1Introduccin
Unsistemadecomunicacinsecomponededistintosdispositivos,queenconjuntonosvaa
permitir el intercambio de informacin de un punto a otro, en este caso hablamos de una
comunicacintipodigital,debidoaquelainformacinquevamosatransmitiryrecibir,ser
informacinbinaria,esdecir,1sy0s.
Enlafigura5.1.1semuestraeldiagramaabloquesdelsistemadecomunicacionesdigital,para
lograrlacomunicacininalmbrica.

Tabla5.1.1Diagramaabloquesdelsistemadecomunicacionesinalmbrica.

Esimportantemencionar,queestesistemadecomunicacionesinalmbricas,estcompuesto
de dos mdulos: mdulo de control y mdulo de monitoreo. Los dos mdulos, son los que
70
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

estarn utilizando comunicacin inalmbrica, la cual se lleva a cabo con mdulos de Radio
Frecuencia.Paraevitarinterferenciaentrelacomunicacindelmdulodecontrolyelmdulo
de monitoreo, stos se comunican a distintas frecuencias; es decir, la comunicacin
inalmbricaenelmdulodecontrol,sellevaracaboconunmdulodeRFtransmisoryun
mdulo de RF receptor, que transmiten a 433.92 MHz; la comunicacin inalmbrica en el
mdulodemonitoreo,tendrigualmenteunmdulodeRFtransmisoryunoreceptor,pero
stostransmitiendoa315MHz.
Enlafigura5.1.1,seobservanloselementosfuenteydestinodecadamdulo;esdecir,parael
mdulo de control (en amarillo), son: microcontrolador USB y dispositivos a monitorear,
respectivamente.Paraelmdulodemonitoreo,lafuentesonlosdispositivosamonitorear,y
el destino es el microcontrolador USB. Estos dos mdulos, posteriormente sern vistos de
formamsdetallada.
Acontinuacinsedescribirdemanerageneral,lafuncindecadaelementodelsistema.
Fuentesdeinformacin
Lasfuentesdeinformacindenuestrosistemadecomunicacionesinalmbricas,sonaquellas
queproporcionanlainformacinbinariaquedeseamosenviar.
La informacin a transmitir a travs del sistema de comunicaciones inalmbricas, sern
palabrasde 12 bits, ypuedenser de tres tipos:cdigodemando,palabra de estado de los
dispositivos a monitorear o palabra de estado de los dispositivos a controlar, cada una de
estaspalabrastienendistintafuncin,yseutilizanespecficamente,enunslomdulo.
Comoseobservaenlafigura5.1.1,lasfuentesdeinformacindelsistema,puedenserdos,ya
sea el microcontrolador USB en el mdulo de control, o los dispositivos a monitorear en el
mdulo de monitoreo. El destino de la informacin, de igual forma pueden ser dos: los
dispositivos a controlar en el mdulo de control, o el microcontrolador USB en mdulo de
monitoreo.(Vasefigura5.2.1).

71
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Transmisorinalmbrico
Esta parte del sistema, ser la encargada de codificar la informacin digital de la fuente, y
modularla,parasertransmitida,enestesistemadecomunicaciones,comoyasemencion,se
transmitirnpalabrasde12bits.

Tabla5.1.2Diagramaabloquesdeltransmisorinalmbricousado.

Elprocesodecodificacindenuestrosistema,serrealizadosiempreporunmicrocontrolador;
por lo tanto, a la salida de una de sus terminales digitales, se obtendr una seal en banda
base,alacualseleaplicuncdigodelnea.Elcdigodelnea,seutilizaparapasarvalores
digitales, en niveles de voltaje, es decir, representar el 1 y el 0 binario, con alguna seal
elctrica(vaseseccinProcesodecodificacin).
Unasealenbandabase,esunasealqueannoestmodulada,lassealesenbandabase,
queseestarngenerandoennuestrosistema,serndigitales,esdecir,tendrnamplitudesde
nivelbajodevoltajeydenivelaltodevoltaje.Endondeelnivelbajodevoltaje,sern0Volts,
yelnivelaltodevoltajesern5Volts.
Enlafigura5.1.3,seobservaunejemplodesealenbandabase,queserutilizadaennuestro
sistema,estasealcontienelainformacindeunapalabrade12bits.Unasealdeestetipo,
estlistaparasermoduladaytransmitida,poreltransmisor.

Tabla5.1.3Ejemplodesealdigitalenbandabase.

72
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Despus de tener la seal digital en banda base, se procede a modular y transmitir la


informacin.EsteprocesoesrealizadoporunmdulodeRF(RadioFrecuencia)transmisor.
Canal
El canal, es el medio por el cual se transmite una o ms seales, por lo tanto, como este
sistema,tienecomunicacininalmbrica,elcanalserelaire.
Receptor
Como su nombre lo dice, ste ser el encargado de recibir la informacin, y as obtener la
informacindigitalquefuetransmitida.

Tabla5.1.4Diagramaabloquesdelreceptorinalmbricousado.

Elprocesoderecepcin,esrealizadoprimeramenteporunmdulodeRF,receptor,quiense
encargaderecibirinalmbricamentelasealquefuetransmitida,ydespuslademodula,es
decir,recuperalasealdigitalenbandabase,estaseal,esenviadaaldecodificador,quiense
encargara de interpretarla, para obtener informacin binaria, recuperando la palabra de 12
bitsquesetransmiti.
Destino
Eldestino,eselelementodelsistemaquevaarecibirlainformacinbinaria,paraquepueda
ser utilizada por ste. Como se tienen dos mdulos (uno de control y uno de monitoreo)
comunicndose,setienentambindosdestinos;ycomoseobservaenlafigura5.1.1,parael
mdulodecontrol,eldestinosonlosdispositivosamonitorear(enamarillo);yparaelmdulo
demonitoreo,eldestinoeselmicrocontroladorUSB(enazul).

73
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

5.2Sistemaelectrnicodecomunicaciones
Antes de comenzar a hablar acerca del funcionamiento de los dispositivos electrnicos,
debemosconocer,cmoestintegradoelsistemadecomunicaciones,esdecir,pormediode
qu dispositivos setransmitela informacin,y enqu direccin seenva.En la Fig. 5.2.1,se
puedeapreciareltrayectoquesiguelainformacin,tantoparaelmdulodecontrol(flechas
naranja),comoparaelmdulodemonitoreo(flechasazules);estostrayectossemencionarn
msadetalleenseccionesposteriores.

Figura 5.2.1 Diagrama a bloques del sistema de control a distancia y el sistema de comunicaciones. Las
direcciones del flujo de lainformacinestn indicadaspor la flechanaranja,para el mdulo de control y azul,
paraelmdulodemonitoreo.

Enlafigura5.2.1,seobservaeldiagramaabloquesdelsistemadecontroladistanciaatravs
deinternet,endondenuestrosistemaelectrnicodecomunicaciones,estcompuestopor:el
mdulo de control, el mdulo de monitoreo y el microcontrolador USB. Si recordamos los
objetivosdestesistema,estnenfocadoshaciaelcontroldedispositivos,talescomofocos,
74
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

bombasdeagua,cerrojoselctricos,puertaselctricas,etctera;tambinsedeseamonitorear
dispositivos,comosonsensoresdepresencia,sensoresdehumo,sensoresdegas,etctera.
Cadaelementodelsistemacompleto,tienesufuncinespecfica.

Cliente: Es el ordenador desde donde se estarn controlando y monitoreando los


dispositivos, a travs de lo que llamamos aplicacin cliente, el control se realizar,
enviando lo que denominamos comandos de control, y el monitoreo se har,
recibiendoloscomandosdemonitoreo,queposteriormente,sehablarmsadetalle
destos.

Internet: Es la red, por la cual se van a comunicar el servidor y el cliente. Cabe


mencionar, que no necesariamente se debe utilizar el internet, ya que el control y
monitoreodedispositivos,sepuederealizaratravsdealgunaredlocal.

Servidor: Es el ordenador, que recibe los comandos de control generados por la


aplicacin cliente, y se los enva al microcontrolador USB. Y tambin enva hacia el
clienteloscomandosdemonitoreo,querecibedelmicrocontroladorUSB.

MduloUSB:EstcompuestoporelmicrocontroladorUSB,ylosmdulosdeRF(Radio
Frecuencia)transmisoryreceptor.Enlafigura5.2.1,sepuedeobservarquesufuncin
eslograrlacomunicacinentrelosdispositivos,yqueademselmduloUSB,esparte
tambin,delosmdulosdecontrolydemonitoreo.

Microcontrolador USB: Su funcin principal, es la de tener comunicacin entre los


mdulosdecontrolymonitoreo,yaquesterecibeloscomandosdecontrolygenera
comandosdemonitoreo.Estemicrocontrolador,formapartedelmdulodecontroly
delmdulodemonitoreo.

Mdulos de control: Se encarga de llevar a cabo la comunicacin desde el


microcontroladorUSB,hastalograrencenderoapagarlosdispositivosacontrolar,los
cualespuedenserfocos,bombasdeagua,cerrojoselctricos,puertas,etc.
75
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Mdulodemonitoreo:SufuncinesladeinformaralmicrocontroladorUSB,cules
el estado de los dispositivos a monitorear, que pueden ser sensores de presencia,
sensores de humo, sensores de gas, etctera; de igual forma, este mdulo, ser el
encargadodeverificarelestadodelosdispositivosacontrolar(encendidooapagado),
locualselogra,conlacomunicacinexistenteentreelmdulodecontrolyelmdulo
demonitoreo,atravsdesusmicrocontroladorescorrespondientes(vasefig.5.2.1);
estcomunicacinesdetipoparalela,terminalaterminaldelosmicrocontroladores,y
el microcontrolador decodificador enviar hacia el microcontrolador codificador, un
nivelde0Volts,paraindicarquealgndispositivoacontrolarestapagado,yunnivel
de5Volts,paraindicarquealgndispositivoestencendido.

5.2.1Comandosdecontrolycomandosdemonitoreo
La informacin que se maneja fuera y dentro de lo que es nuestro sistema electrnico de
comunicaciones, son los comandos de control y los comandos de monitoreo, que viajan en
direccionesdistintas,ysonoriginadosdedistintasmaneras(vasefig.5.2.1).
Los comandos de control, son utilizados, para encender o apagar algn dispositivo, y son
enviados desde el cliente, hasta el servidor (vase fig. 5.2.2). Estos comandos son nmeros
enteros(de1byte),quesongeneradosporlaaplicacincliente,yrecibidosporlaaplicacin
servidor, la cual tambin es encargada de enviar el comando de control hacia el
microcontrolador,atravsdelUSB.
Setienendostiposdecomandosdecontrol:
Comandosdeencendidodedispositivo:Soncomandosenviadosdesdeelcliente,hacia
elservidor,conelfindeindicar,queundispositivosedebeencender.
Comandosdeapagadodedispositivo:Estoscomandosigualmentesonenviadosdesde
elcliente,haciaelservidor,pero,estosindicanqueundispositivodebeserapagado.

76
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Una vez, que el comando de control es recibido por el servidor, ste lo enva al
microcontrolador USB, quien a su vez se encargar de codificarlo, y generar una seal en
banda base, para ser enviada a travs del mdulo de RF transmisor, hacia el mdulo de RF
receptordelmicrocontroladordecodificador.
Loscomandosdecontrolquesernutilizados,aparecenenlatabla5.2.1.

Comandosdecontrol
Dispositivo

Comandode Comandode
Comandode
encendido
apagado
actualizacindeestados

100*

Dispositivo1 101

Dispositivo2 102

Dispositivo3 103

Dispositivo4 104

Dispositivo5 105

Dispositivo6 106

Dispositivo7 107

Dispositivo8 108

Dispositivo9 109

Dispositivo10 110

10

Tabla5.2.1Tabladecomandosdecontrolconocidos,usadosenelsistema.

En donde porejemplo, el comando 101,enciendeel Dispositivo 1,y elcomando1, apaga el


mismodispositivo.

77
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Comandodecontrol
Porejemplo:101

Microcontrolador
USB

Servidor

Internet

Cliente

Figura5.2.2Ejemplodecomandodecontrol.

En la figura 5.2.2, se observa que el comando de control 101, es enviado desde el cliente,
hastaelmicrocontroladorUSB.Estecomandodecontrol,esgeneradoenlaaplicacincliente,
al dar clic al botn de encendido del dispositivo 1; posteriormente este comando ser
codificado por el microcontrolador USB, y se enviar inalmbricamente, por el mdulo de
control,hastaquefinalmenteseenciendaeldispositivo1(vaseseccin5.2.2).
Enelcasoparticulardelcomandodeactualizacindeestados,stenovaaencenderoapagar
algn dispositivo, si no que por medio de ste, ser posible, la actualizacin manual de los
estados de los dispositivos, es decir, manualmente, ser pedido al microcontrolador USB,
enviarculesdetectoresestnactivoseinactivos,yqudispositivosacontrolarseencuentran
encendidosyapagados.
Los comandos de monitoreo, son enviados desde el servidor hacia el cliente (vase figura
5.2.3),tienenlafuncindeindicarculeselestadodelosdispositivosamonitorear(activoo
inactivo), y de los dispositivos a controlar (encendido o apagado); igualmente, son nmeros
enteros(de1byte),peroestoscomandossernoriginadosporelmicrocontroladorUSB,segn
elestadodelosdispositivosmonitoreados.
ElmicrocontroladorUSB,podrtenerinformacindelestadodelosdispositivosmonitoreados
y de los dispositivos a controlar, ya que el mdulo de monitoreo, ser el encargado de
transmitirleestainformacin.
Loscomandosdemonitoreo,sedividenysesubdividendelasiguientemanera:
Comandosdealarmas:Utilizadosexclusivamenteparalosdispositivosamonitorear,es
decir,losdetectores.Estoscomandosasuvezsesubdividenen:
78
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Comandosdealarmaactiva:stosindicanquealgnsensorhadetectadocambios
enelmedio,porejemplo,queunsensordehumo,hadetectadohumo.

Comandos de alarma inactiva: Estos comandos, indican que algn sensor no


detectacambiosenelmedio,oyadejededetectarlos(encasodequehayaestado
activo).

Comandosdeestadodedispositivos:stossonutilizadosparaindicarelestadodelos
dispositivos a controlar, es decir, s estn encendidos, o s estn apagados, y se
subdividenen:

Comando de dispositivo encendido: Indican que algn dispositivo a controlar, est


encendido.

Comando de dispositivo apagado: Indican que algn dispositivo a monitorear, est


apagado.

Loscomandosdemonitoreoquesernutilizadosenelsistema,sonlossiguientes:

Comandosdealarma
DISPOSITIVO Comandode Comandode
alarmaactiva alarmainactiva
Sensor1
31
21
Sensor2

32

22

Sensor3

33

23

Sensor4

34

24

Tabla5.2.2Tabladecomandosdealarmausadosenelsistema.

79
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Endonde,porejemplos elcomando 31,esenviadodelmicrocontroladoralservidor,ydel


servidorhaciaelcliente,elclienteinterpretarqueelsensor1estactivo,ysielclienterecibe
elcomando21,steinterpretarqueelsensor1notieneactividad.

Microcontrolador
USB

Servidor

Internet

Cliente

Comandodemonitoreo
Porejemplo:31

Figura5.2.3Ejemplodecomandodemonitoreo.

La figura 5.2.3, muestra el ejemplo del comando 31 generado por el microcontrolador USB,
quienloenvaalservidor,ysteasuvezloenvaalcliente.Recordemosqueestecomandode
alarma, fue recibido de manera inalmbrica a travs del mdulo de monitoreo y del
microcontroladorUSB(vaseseccin5.2.2).

5.2.2Mdulodecontrol
Enlaseccinanteriorsemencionagrandesrasgos,elfuncionamientodelmdulodecontrol;
sinembargo,ahorasevercmoestintegrado,yelfuncionamientodecadaelementoquelo
compone.
Enlafigura5.2.4,sepuedeobservareldiagramaabloquesdelmdulodecontrol,elcualse
encargardetenerlacomunicacinentreelservidorylosdispositivosacontrolar.Lasflechas
colornaranja,indicanelsentidoenelqueviajalainformacin.
Elmdulodecontrol,secomponedelossiguienteselementos:
Microcontrolador USB: En este mdulo, el microcontrolador es utilizado para recibir
los comandos de control que le enva el servidor, y despus los codifica. La
codificacindeuncomando,sehacedetalformaquesegeneraunasealenbanda
80
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

base, la cual lleva una palabra de 12 bits llamada cdigo de mando (vase seccin
5.2.2.5Procesodecodificacin).

MdulodeRF,transmisor:EsunmdulodeRadioFrecuencia,quemodularlaseal
enbandabase,generadaporelmicrocontroladorUSB,aplicndolelamodulacinASK
(modulacin por desplazamiento de amplitud), y transmitiendo a una frecuencia de
433.92MHz.
Mdulo de RF, receptor: Este mdulo de RF, se encarga de recibir y demodular la
seal emitida por el transmisor que trabaja a su misma frecuencia (433.92 MHz), de
esta manera, obtenemos la seal en banda base, que fue generada por el
microcontrolador USB, logrando as la obtencin de la palabra de 12 bits (cdigo de
mando).

Microcontrolador decodificador: Es el encargado de interpretar la seal en banda


base, obtenida del receptor de RF; de esta forma el microcontrolador, encender o
apagar algn dispositivo, segn el cdigo de mando recibido. Para encender un
dispositivo, el microcontrolador en sus terminales de salidas digitales, enva un nivel
de voltaje a los circuitos de electrnica de potencia, manda 0 Volts para apagar un
dispositivo,y5Voltsparaencenderundispositivo.

Dispositivos a controlar: Como ya se mencion, los dispositivos a controlar, pueden


serfocos,bombasdeagua,cerrojoselctricos,puertaselctricas,etc.Sinembargoen
nuestrosistema,sesimularquelosdispositivosacontrolar,sonlosmostradosenla
tabla5.2.3.

81
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Aplicacin

Dispositivo1

Iluminacin

Dispositivo2

Iluminacin

Dispositivo3

Iluminacin

Dispositivo4

Iluminacin

Dispositivo5

Iluminacin

Dispositivo6

Iluminacin

Dispositivo7

Iluminacin

Dispositivo8

Bombadeagua

Dispositivo9

Cerrojoelctrico

Dispositivo10 Puertaelctrica
Tabla5.2.3Tabladedispositivosacontrolar

Figura5.2.4Diagramaabloquesdelmdulodecontrol.

Enlassiguientessecciones,setratartodoloquecorrespondealacomunicacininalmbrica
enelmdulodecontrol.

82
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Primeramente,seexplicarquesuncdigodemando,culessonsusfunciones,ycmoson
utilizados en el mdulo de control; todo esto se hace, debido a que estos cdigos son muy
utilizadosenstemdulo.

5.2.2.2Cdigosdemando
Un cdigo de mando es una palabra de 12 bits, que ser utilizada en el mdulo de control,
paraencenderoapagaralgndispositivodeseado;cadadispositivotieneasignadouncdigo
demandoparaencender,yuncdigodemandoparaapagar,estoscdigosestnrelacionados
con los comandos de control de encendido y los comandos de control de apagado,
respectivamente.
Loscdigosdemandodeencendidoydeapagado,llegarnalmicrocontroladordecodificador
(vase fig. 5.2.5). Cuando un cdigo de mando de encendido llega al microcontrolador
decodificador, ste interpreta el cdigo, manteniendo un nivel de voltaje alto (5 V), en la
terminaldondesetieneconectadoelcircuitodepotenciadeldispositivoaencender.Cuando
un cdigo de mando de apagado llega al microcontrolador decodificador, ste mantiene un
nivelbajodevoltaje(0V),enlaterminaldondesetieneconectadoelcircuitodepotenciadel
dispositivoaapagar.
Enlatabla5.2.4,seobservanloscdigosdemando(enbasehexadecimal),quetieneasignado
cadadispositivoparaquesteseaencendido,astambinsetienesucomandodecontrolcon
elqueserelaciona.
Sedicequeexisteunarelacinentreuncdigodemandoyuncomandodecontrol,yaqueel
cdigodemandoesgeneradoporelmicrocontroladorUSB,enrespuestaalapeticindeque
elcliente quiereencenderoapagaralgndispositivo.As,cuandoelclientequiereencender
algn dispositivo, ste enva hacia el servidor un comando de control de encendido de
dispositivo,elservidorenvaestecomandoalmicrocontroladorUSB.

83
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Cdigosdemandoparaencenderdispositivos
Dispositivo

Cdigodemando Comando de control


relacionado

Dispositivo1

0x801h

101

Dispositivo2

0x802h

102

Dispositivo3

0x803h

103

Dispositivo4

0x804h

104

Dispositivo5

0x805h

105

Dispositivo6

0x806h

106

Dispositivo7

0x807h

107

Dispositivo8

0x808h

108

Dispositivo9

0x809h

109

Dispositivo10 0x80Ah

110

Tabla5.2.4Relacindecdigosdemandoparaencenderdispositivos;quesernutilizadosenelsistema,ysus
comandosdecontrolrelacionados.

ElmicrocontroladorUSB,recibeelcomandodecontrolyloconvierteenuncdigodemando
(palabra de 12 bits), despus el mismo microcontrolador, crea una seal banda base, que
contiene el cdigo de mando; la seal banda base es creada con el fin de ser transmitida
inalmbricamente, y as pueda ser recibida por el mdulo de RF receptor, quien finalmente
entregalasealbandabasealmicrocontroladordecodificador,ysteasuvez,eselencargado
dedecodificarlasealbandabase,paraobtenerelcdigodemando,alreconocerelcdigode
mando, el microcontrolador decodificador, mantendr un nivel de voltaje (0 Volts 5 Volts)
poralgunasalidadigital,enlaqueestconectadoeldispositivoacontrolar.Todoesteproceso
descrito,puedeobservarseenlafigura5.2.5.
Como ya se mencion, los cdigos de mando para apagar los dispositivos, tambin tienen
asignadosciertoscomandosdecontrol,laraznes,porqueestoscdigospasanporelmismo
procesoquesemencionanteriormente,esdecir,elquesemuestraenlafigura5.2.5.

84
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Larelacinentredispositivos,cdigosycomandosparaapagaralgndispositivo,semuestra
enlatabla5.2.5.
Cdigosdemandoparaapagardispositivos
Dispositivo

Cdigodemando Comando de control


relacionado

Dispositivo1

0x811h

Dispositivo2

0x812h

Dispositivo3

0x813h

Dispositivo4

0x814h

Dispositivo5

0x815h

Dispositivo6

0x816h

Dispositivo7

0x817h

Dispositivo8

0x818h

Dispositivo9

0x819h

Dispositivo10 0x81Ah

10

Tabla 5.2.5 Relacin de cdigos de mando para apagar dispositivos; que sern utilizados en el sistema, y sus
comandosdecontrolrelacionados.

5.2.2.3Procesodecomunicacinenelmdulodecontrol
Debidoaqueelclienteserquienmanipulelosdispositivos;steserquientendrqueenviar
ciertos comandos, hacia el enlace de control, estos comandos o instrucciones son los que
llamamoscomandosdecontrol.
Para poder llevar a cabo el proceso de control de los dispositivos, primeramente, se debe
tenerestablecidalaconexinentreelservidoryelcliente;deestamaneravaaserposiblela
comunicacin entre el mdulo de control y el cliente, que como ya se mencion, ste ser
quienenveloscomandosdecontrolparamanipularlosdispositivos.
1. Elclientedeberdarclicalbotndeencendidooapagadodeldispositivoacontrolar;
aslaaplicacinclienteenviaruncomandoatravsdeInternet,haciaelservidor.
85
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

2. Elservidorrecibirestecomandopormediodelaaplicacinservidor,quienasuvezlo
enviarhaciaelmicrocontroladorUSB,atravsdeUSB.

3. ElmicrocontroladorUSBrecibirelcomandodecontrolylointerpretar,generando
uncdigodemando,esdecir,unapalabrade12bits(cdigoparaencenderoapagar
dispositivo). Cada comando de control, tiene un correspondiente cdigo de mando
(vasetablas5.2.4y5.2.5).

4. Elcdigodemandosercodificadoporelmicrocontrolador,creandounasealdigital
enbandabase;estasealsaldrporunaterminaldesalidadigital,yserenviadaal
mdulodeRF,transmisor.

5. La seal en banda base, recibida por el mdulo transmisor de RF, es modulada y


transmitidaa433.92MHz,porestemdulodeRF.

6. LasealdeRF,esrecibidademanerainalmbrica,porelmdulodeRF,receptor,yes
demoduladaporstemismo,obteniendoaslasealenbandabasemencionadaenel
paso4;esdecir,lasealquesegenerenbasealos12bitsquecomponenelcdigo
demando.

7. Laseal banda base quefueobtenidapor elmdulo receptorde RF,esenviadapor


estemdulo,haciaelmicrocontroladordecodificador.

8. Lasealbandabaseesrecibidaydecodificadaporelmicrocontroladordecodificador,
reconociendoas,elcdigodemandoquefueenviado.Existeunarelacindeloque
debe hacer el microcontrolador decodificador, de acuerdo al cdigo de mando que
haya recibido; esta relacin, se puede observar en las tablas 5.2.4 y 5.2.5. La accin
quepuedetomarelmicrocontroladordecodificador,alreconocerelcdigodemando,
esmantenerunniveldevoltajeenalgunadesusterminalesdesalidadigital,estenivel
devoltajepuedeser:alto(paraencenderdispositivo)obajo(paraapagardispositivo).
Enlaterminaldesalida,enlaquemantendrelniveldevoltajemencionado,setendr
86
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

conectadouncircuitodepotencia,dealgndispositivo.Parasaberculeselcircuito
depotencia,alqueseleestarsuministrandoelvoltaje,setienelainformacinenlas
tablas5.2.4y5.2.5.

9. El circuito de potencia, ser quien suministre la alimentacin del dispositivo que se


deseeencenderoapagar.Paraencendereldispositivo,deberestarentrandounnivel
alto de voltaje (5 Volts), al circuito de potencia, y para apagar el dispositivo, deber
estarentrandounnivelbajodevoltaje(0Volts).
Con el fin de reafirmar el proceso que se mencion en los puntos anteriores, veamos un
ejemploreal,queutilizamosennuestrosistema.Unavezestablecidalaconexinentrecliente
yservidor,serealizaelprocesomostradoenlafigura5.2.5.

87
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.5Ejemplodecomunicacinenelenlacedecontrol.

88
Captulo5:Sistemaelectrnicodecomunicaciones

Sistemaadecontroly
ymonitoreodedispositiv
vosatravsdeInternetcconUSB

2009

2.4Transmissorinalmbricoparaelmdulodeccontrol
5.2.2
Eltransmisorinalm
mbricoutilizadoparaelen
nlacedeconttrol,fsicamente,estform
madoporel
microccontrolador USB
U y el md
dulo de RF TWSBS3(Rad
T
dio Frecuenccia). El microcontrolador
USB,esselencargadodegenerarrycodificarlaainformacin
n,paraasenvviarlaalmdu
uloTWSBS
3.Elm
mdulodeRFTTWSBS3,seeencargadettransmitirinaalmbricamen
ntelainformaacin,auna
frecuencia de 433.92 MHz, y en modulaccin ASK (de
esplazamientto de amplittud), a una
velocid
daddetransm
misindedato
osde4Kbps(Kilobitsporrsegundo);esstemdulodeRF,puede
seralim
mentadodesde3V,hastaa12V;laven
ntajaquesetienealalimeentaraunmaayorvoltaje,
esque
eseincremen
ntaelalcancee;ennuestro caso,loalim
mentaremoscconelmismo voltajeque
nospro
oporcionaelUSB,estoes,5Volts.

Figura5.2.6DiagraamaelctricodeelmduloUSBcconTxyRxinalmbricos.

89
Captulo5
5:Sistemaelectrnicodeccomunicacion
nes

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

En la figura 5.2.6, se muestra el diagrama elctrico de lo que llamaremos mdulo USB, este
mdulo es el que conectamos al puerto USB del servidor. El mdulo USB, permite la
comunicacin entre Servidor/microcontrolador USB, y tambin incluye el mdulo de RF,
transmisor,TWSBS3yelmdulodeRF,receptor,RWS3743,quienseencargaderecibirla
seal, demodularla y enviarla al microcontrolador USB, para su decodificacin, sin embargo,
por el momento no prestaremos mucha importancia a la recepcin de informacin, ya que
servista,enlaseccinReceptorinalmbrico,paraelmdulodecontrol.
Las figuras 5.2.7, 5.2.8 y 5.2.9, muestran los diagramas de flujo del programa principal del
microcontroladorUSB;dentrodeesteprograma,sedeclaraelvectorrecibe[2],seconfigurael
oscilador el oscilador que va a ser utilizado, en este caso, el microcontrolador USB, usar el
osciladorinterno,aunafrecuenciade8MHz,sinembargo,paralograrlacomunicacinconel
USB,utilizaunafrecuenciade48MHz,quelogra,conapoyodelcristaldecuarzo.
Despus de configurar el oscilador a utilizar, se configuran las terminales digitales de
entrada/salidadigital,paradecidircualessernentradas,ycualessalidasdigitales;despusse
inicializan las salidas digitales, generalmente todas en nivel de voltaje bajo; se inicializa y se
configuraelUSB.
Posteriormente, se verifica que el oscilador interno se encuentre funcionando de manera
estable,estosehacepormediodeunbloquededecisin(if),yseverificaquesetengaun1
lgicoenelbit2delregistroOSCCON(elcualseencuentraenladireccin0x0FD3h);entonces
hasta que se tenga un 1 lgico en ste bit, el oscilador interno se encontrar estable, de lo
contrario,elosciladorinterno,estarinestable.Unavezquesehayaverificadoqueeloscilador
interno se encuentra estable, se podr proseguir, a habilitar las interrupciones que se
utilizarn, es decir, la interrupcin externa y las interrupciones del temporizador 2. La
interrupcin externa ser activada por flanco de elevacin, es decir cuando exista una
transicindeniveldevoltajebajoaalto.
El bucle de la estructura while (TRUE), se estar ejecutando continuamente. Por lo tanto,
continuamente, el microcontrolador USB, estar comprobando si est numerado por el
ordenador al que est conectado (en este caso, el servidor), esto lo hace por medio de la
funcinusb_enumerated(),quedevuelveuncero,cuandonoestnumerado.
90
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Nota: El microcontrolador USB estar numerado, cuando haya sido reconocido por el
ordenador,alqueseencuentraconectado.
Adems,pormediodelafuncinusb_kbhit(1),elmicrocontroladorestarverificandosisele
haenviadoalgndatodesdeelservidor,porelUSB;lafuncinusb_kbhit(1),devuelveuncero,
cuandonosehamandadoalgndato.
En caso, de que se haya enviado algn dato del servidor, al microcontrolador, entonces se
procedeainvocarlafuncinusb_get_packet(1,recibe,3),quienseencargaderecibireldato,y
loguardaenelvectorrecibe.Lascomponentesdelvectorrecibe,enelprogramasonllamados:
modo,pararecibe[0]yparam1,pararecibe[1].Estosedeclaraalprincipiodelprogramapor
mediode:
#definemodorecibe[0]
#defineparam1recibe[1].
Recordandoloyavistoenlaseccin5.2.2.3Procesodecomunicacinenelmdulodecontrol.
Enelprocesodecomunicacindelmdulodecontrol,elclienteenvauncomandodecontrol,
quellegahastaelmicrocontroladorUSB,elmicrocontroladorUSBsedacuentaquelellegan
datos, debido a que continuamente se encuentra verificando si le ha llegado informacin.
Entonces, cuando llega informacin al microcontrolador, sta es almacenada en el vector
recibe;queeslomismoqueguardarlainformacinenlasvariablesmodo,yparam1.
Como ya se mencion, la aplicacin servidor, se encarga de enviar el comando de control
haciaelmicrocontroladorUSB,yloenvadelasiguientemanera:
Sielcomandodecontrol,esmayoroiguala100;entoncesmodo=0,delocontrario,
modo=1. Cuando modo=0, se tiene un comando de control de encendido de
dispositivo, y cuando modo=1, se tiene un comando de control de apagado de
dispositivo.
El valor que toma param1, est dado de la siguiente manera: Si el comando de
control,esmayoroiguala100,param1=comandodecontrol100;delocontrario,el
comandodecontrolserlamismacantidadqueesstesea.
91
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Por ejemplo, si se recibi el comando de control 3; por lo tanto modo=1, y param1=3. Si


observamoslatabla5.2.6,elcomando3,esuncomandodecontrolparaapagareldispositivo
3.Enotroejemplo;siserecibeelcomandodecontrol103;porlotantomodo=0,yparam1=3.
Si observamos la tabla 5.2.6, el comando 3, es un comando de control para encender el
dispositivo3.
Unavezobtenidos,losvaloresdemodoyparam1,elmicrocontroladorUSBprosiguea,realizar
unaseriedecomparaciones,pormediodelainstruccinif,ydeestaforma,slohastaquese
cumplanlascondicionesquesetienen,sesabrquerealizar,segnlosvalorescontenidosen
modoyparam1.
Enlatabla5.2.6,setienelarelacindelasaccionesquevaarealizarelmicrocontroladorUSB,
alrecibirdeterminadovalordemodoyparam1,tambinseobserva,elcomandodecontrol,
que el cliente enva al servidor, para que este ltimo enve los correspondientes valores de
modoyparam1.Porejemplo,sielclienteenvaalservidorelcomandodecontrol110,segn
la tabla, el microcontrolador estar recibiendo los valores de: modo=0 y param1=10, y
posteriormente, cuando se cumpla la condicin modo=0 y param1=10, el microcontrolador
USBiniciarlacodificacindelcdigodemando,paraencendereldispositivo10(vasefigura
5.2.5).
Elcasoespecial,enelqueserecibenlosvaloresdemodo=0yparam1=0(vasetabla5.2.6),
sucedecuandoenlaaplicacinclientesediclic,albotndeActualizarmanualmente,de
esta manera, la aplicacin cliente, enva hacia el servidor, el comando de control 100; el
servidorrecibeestecomando,yenvaestainformacin,almicrocontroladorUSB,delamanera
en que ya fue explicada; es decir, se tiene el comando 100, por lo tanto modo=0, y
param1=comando de contol100, as obtenernos param1=0. Teniendo estas condiciones de
modo=0 y param1=0, lo que hace el programa, es inicializar en cero, las cuatro variables
comando_alarmaX_a (donde X es 1,2,3,4), y tambin inicializa las diez variables
comando_dispY_a(dondeYes1,2,3,4,5,6,7,8,9,10),estopuedeobservarseeneldiagramade
flujo que muestra la figuras 5.2.7, 5.2.8 y 5.2.9. De esta manera se lograr actualizar
manualmente,losestadosdelasalarmasylosestadosdelosdispositivoscontrolados(vase
seccinVerifica).
92
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Valordelas

Cdigo de mando

variables

que fue enviado

modo

desdeelcliente

param1
0

100

Inicializavariablesparaqueseactualicenlosestadosdelosdispositivos.

101

Inicialacodificacindelcdigodemandoparaencendereldispositivo1.

102

Inicialacodificacindelcdigodemandoparaencendereldispositivo2.

103

Inicialacodificacindelcdigodemandoparaencendereldispositivo3.

104

Inicialacodificacindelcdigodemandoparaencendereldispositivo5.

105

Inicialacodificacindelcdigodemandoparaencendereldispositivo4.

106

Inicialacodificacindelcdigodemandoparaencendereldispositivo6.

107

Inicialacodificacindelcdigodemandoparaencendereldispositivo7.

108

Inicialacodificacindelcdigodemandoparaencendereldispositivo8.

109

Inicialacodificacindelcdigodemandoparaencendereldispositivo9.

10

110

Inicialacodificacindelcdigodemandoparaencendereldispositivo10.

Accinqueelmicrocontroladorrealiza

Inicialacodificacindelcdigodemandoparaapagareldispositivo1.

Inicialacodificacindelcdigodemandoparaapagareldispositivo2.

Inicialacodificacindelcdigodemandoparaapagareldispositivo3.

Inicialacodificacindelcdigodemandoparaapagareldispositivo4.

Inicialacodificacindelcdigodemandoparaapagareldispositivo5.

Inicialacodificacindelcdigodemandoparaapagareldispositivo6.

Inicialacodificacindelcdigodemandoparaapagareldispositivo7.

Inicialacodificacindelcdigodemandoparaapagareldispositivo8.

Inicialacodificacindelcdigodemandoparaapagareldispositivo9.

10

10

Inicialacodificacindelcdigodemandoparaapagareldispositivo10.

Tabla5.2.6RelacindelasaccionesqueelmicrocontroladorUSBrealiza,deacuerdoalosvaloresdelasvariables
modoyparam1.

93
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Comoseobservaeneldiagramadeflujodelasfiguras5.2.7y5.2.8,todoslosdemscasos,
quesetienenenlascomparaciones,yasonmuysimilares;yloquehacecadauno,esiniciarel
procesodecodificacin.(Vaseseccin5.2.2.5Procesodecodificacin)
El microcontrolador USB, continuamente se encuentra decodificando la informacin recibida
del mdulo RF, receptor. El microcontrolador no va a decodificar y codificar informacin al
mismotiempo.Porlotantoparacodificar,esnecesariodetenerelprocesodedecodificacin
en el microcontrolador. De esta manera, el microcontrolador ser capaz de dedicarse
nicamentealprocesodecodificacin.
CondicionesdecodificacinparaelmicrocontroladorUSB
Todosloscasos,endondeseiniciealgnprocesodecodificacin(vasetabla5.2.6),detienen
elprocesodedecodificacin,yponenlascondicionesparaquelainformacindeseada,pueda
ser codificada. Lo que se menciona en este prrafo, se logra teniendo las siguientes
condicionesdecodificacin,quepuedenobservarseencadacasodeldiagramadeflujodelas
figuras5.2.7,5.2.8y5.2.9:
9 Deshabilitar las interrupciones externas. Debido a que stas son utilizadas para
decodificarlainformacin,ynuestrosistema,solamenteescapazdehacerunacosaa
lavez,esdecir,ocodifica,odecodifica.Porlotantodeestamanera,seevitaelhecho
deestardecodificandolassealesproporcionadasporelmdulodeRFreceptor.

9 Limpiar la bandera INT0IF. La bandera INT0IF, se pone en 1, cuando sucede una


interrupcinexterna(ennuestrocasoporflancodeelevacin),estabanderadebeser
limpiada (puesta a cero) manualmente, y lo hacemos, para que posteriormente, las
interrupciones externas, estn listas para ejecutarse. Se logra limpiar la bandera
INT0IF,conlainstruccinbit_clear(*0x0FF2,1);lacualponeenceroelbit1delregistro
queestaenladireccin0x0FF2h,queeslacorrespondientealregistroINTCON.

9 Poner en 1 la variable tx_pend. Esta variable, es utilizada, para indicar que se tiene
una transmisin pendiente, es decir, que se requiere codificar informacin; cuando

94
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

tx_pend=1, las interrupciones del temporizador 2, no son utilizadas para decodificar,


sinoparacodificar(vaseseccinInterrupcindeltemporizador2).

9 Guardar el cdigo de mando en la variable info_tx. Se deber guardar el cdigo de


mando (de encendido o de apagado), el cual es una palabra de 12 bits. La variable
info_tx,siempretendrlainformacinquevaasercodificada.

9 Indicar el nmero de palabras que van a ser enviadas. Es decir, debemos indicar el
nmerodeveces,quesevaacodificarlapalabrade12bitscontenidaeninfo.Enel
programa,seasignadelasiguientemanera:npalabras_tx=tpalabras;ysehacedeesta
manera,yaquelavariabletpalabras,nuncacambiadevalor,yestinicializadaconel
valorde28.En esteprograma se codificar28veceslamismapalabra, conel fin de
enviar redundancia, y as, si existi algn error en la transmisin, el receptor podr
corregirloserroresdetectados,(vaseseccinVerifica).

9 Inicializarvariablesnciclos,nbitsyperiodo_osc.Estasvariablessonvistasconmayor
profundidadenlaseccin5.2.2.5Procesodecodificacin.

9 Configurar el temporizador 2. El temporizador 2, debe ser ajustado para lograr, la


frecuenciaalaqueestaremoscodificando,enestecasoesde3.5Khz.Porlotantoel
temporizador2,deberestarproduciendointerrupcionescada1/3.5Khz285.71s;
obtenerestevalorexactamente,noselogra,elvalormascercanoesde286s,yse
consigueconlainstruccin:setup_timer_2(T2_DIV_BY_4,143,1).

9 Habilitar las interrupciones del temporizador 2. Finalmente se habilitan las


interrupcionesdeltemporizador2,esdecir,cada286s,seestarejecutandolarutina
de servicio del temporizador 2, por medio de esta rutina, se estar codificando la
informacin.

95
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.7DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.

96
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.8DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.

97
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.9DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.

Entonces,porejemplo,sielclienteenvaalservidor,elcomandodecontrol101;elservidor,
enviaralmicrocontroladorUSBlosvaloresde:modo=0yparam1=1(vasetabla5.2.6),quesi
verificamos, en el diagrama de flujo de la figura 5.2.7 y 5.2.8; se iniciar la codificacin del
cdigodemando0x0801h,elcualenciendeeldispositivo1(vasetabla5.2.4).
Como ya se mencion, se inicia el proceso de codificacin, cuando se habilitan las
interrupciones del temporizador 2, esta ltima accin va a permitir que cada vez que el
temporizadorllegueasutiempoprogramado,seejecutelarutinadeserviciodeltemporizador
2, que realizar el proceso de codificacin. Como resultado de esta codificacin, vamos a
obteneruntrendepulsos(sealenbandabase),quevaatenerundeterminadoformato;la
seal codificada, saldr por la terminal RA0 (del microcontrolador USB), hacia la entrada de
98
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

datos del mdulo TWSBS3, como se muestra en la figura 5.2.5; de esta manera estaremos
transmitiendounaseal,demanerainalmbrica.
5.2.2.5Procesodecodificacin
Hastaahora,solamentehemoshabladodedatosbinarios,esdecir,semencioncmoesque
elmicrocontroladorUSBreconoceuncomandodecontrol.Tambinsevio,cmoesqueeste
microcontrolador interpreta estos datos binarios, asignando a la variable info, el cdigo de
mando de 12 bits, es decir, un cdigo de mando de encendido, o apagado, del dispositivo
correspondiente.Comopodemosobservareneldiagramaabloquesdeltransmisor,antesde
modularlainformacin,tenemosuncdigodelnea.(Vasefig.5.1.2).
El cdigo de lnea ser necesario aplicarlo a la informacin, ya que su funcin de este, es
convertir informacin binaria, en este caso, 12 bits (cdigo de mando de encendido o
apagado), en niveles de voltaje o corriente, con el objetivo de generar una seal en banda
base, lista para ser enviada al mdulo TWSBS3 (vase fig. 5.2.5), a este procedimiento le
llamaremosprocesodecodificacin,elmicrocontroladorUSBserquienrealiceestafuncin
decodificacin,pormediodelarutinadeserviciodeltemporizador.
UnavezqueelcomandodecontrolhayasidoreconocidoporelmicrocontroladorUSB(como
yasemencionenlaseccinanterior),entoncesseconsiguenlascondiciones,paracomenzar
el proceso de codificacin, y por medio de las interrupciones producidas cada determinado
tiempo,sevaallevaracaboesteproceso.
Para comprender cmo se lleva a caso este proceso de codificacin, primero debemos
entenderloquesequiererealizarenlacodificacin,ydequemanerasevaahacer.
La codificacin utilizada en este proceso, est basada en la codificacin que realiza el
dispositivoHT12E,elcualesuncodificadordelamarcaHoltek.

99
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.10EstructuradelainformacincodificadaporelHT12E.

En lafigura5.2.10, semuestracomoestcompuesta lainformacin ya codificada. Se puede


observarqueantesdelapalabrade12bits(8bitsdedirecciny4bitsdedatos),tenemosun
tiempo en el que no se enva informacin, este tiempo existe entre cada palabra de 12 bits
codificada, con ayuda de este tiempo sin transmisin, ser ms fcil de identificar cuando
empieza la palabra. La duracin del periodo sin transmisin, equivale al tiempo que
tardaramos en transmitir 12 bits, es decir, 12 bits x 3 ciclos (1/3.5KHz) = 10.285 ms
(posteriormenteserexplicadocomoseobtienenestosvalores).
Enestamismafiguravemostambin,elpulsodesincronizacin,quecomosunombrelodice,
permitiraldispositivoreceptor,sincronizarse,esdecir,ajustarsusealdereloj,paraqueest
enfaseconlafrecuenciadelosciladordeltransmisor.Estepulsodesincronizacintieneuna
duracindeunperiododelafOSC,esdecir,(1/3.5KHz)=285.714s.
La manera en que est codificada la palabra de 12 bits, se puede observar en la siguiente
figura.

Figura5.2.11Codificacindedatosbinarios.

100
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

En la figura 5.2.11, podemos observar que para codificar, se utiliza un oscilador, que en
nuestrosistema,utilizamosunafrecuenciadeoscilador(fOSC)de3.5KHz,tambinnotamosque
para codificar cada bit, se requieren 3 periodos de la seal del oscilador; por lo tanto, el
tiempoqueseutilizaparatransmitirunbit,esde:

1
3.5

857.142

Encuantoalamaneradecodificarlosdatos(vaseFig.5.2.11),sehacedelasiguientemanera:
paraelcasodelbitunocodificado,losdosprimerosperiodosestnennivelbajoyeltercero
estennivelalto;enelcasodelbitcerocodificado,elprimerperiododelasealdeloscilador
estennivelbajo,ylosltimosdosperiodos,estnenalto.Deestamanera,vamosadistinguir
bitunodelbitcero.
Veamoselejemplodelaestructuradeunapalabracodificada,listaparaserenviadaalmdulo
TWSBS3.Lapalabraacodificadapuedeserutilizadaeneltransmisorinalmbricodelenlace
decontrol,oeneldelenlacedemonitoreo.
Para elenlacede control,puedeser uncdigode encendido o uncdigode apagado;en el
enlacedecontrol,serauncdigodeactivacin.
La palabra a codificar es 0xAAAh, es decir, 101010101010 en binario; en el programa
codificador del microcontrolador USB, esta palabra sera guardada en la variable info. El
microcontrolador USB, cuando codifique esta informacin, estara saliendo por la terminal
RA4,ylasealobtenidaenestaseal,seracomolamostradaenlafigura5.2.12.

101
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.12Ejemplodeunapalabraenbandabaseparatransmisininalmbrica.

Es importante recordar, que cuando se quiera enviar inalmbricamente algn cdigo de


mando (cdigo de encendido o apagado), el microcontrolador USB estar enviando 28
palabras de 12 bits, iguales (cdigos de mando), una tras otra, con una separacin de
aproximadamente10.28ms,comosemuestraenlafiguraanterior.Lafinalidaddeenviar28
palabras,esladeagregarredundancia,yasreducirlaprobabilidaddeteneralgnbiterrneo.
Estas28palabras,sonlasquesernenviadashacialaentradadedatosdelmduloTWSBS3,
quienseencargardemodularyamplificarlasealparasertransmitidaatravsdelaantena.

5.2.2.6Programacodificador
Cabe mencionar, que tanto en el mdulo de control, como en el mdulo de monitoreo, la
partedecodificacinessimilar;lanicadiferencia,radica,enelorigendelosdatos,yaqueen
el mdulo de control, los datos a codificar, se eligen a partir de los datos enviados por el
servidor,yenelmdulodecontrol,losdatosacodificar,seeligenapartirdelestadodelos
dispositivosamonitorear(detectores),ydelestadodelosdispositivoscontrolados.
En esta seccin se explicar el funcionamiento del programa que realiza el proceso de
codificacin,enelmdulodecontrol.Ysevaapartir,dequeyasesabeelfuncionamientodel
programaquerepresentanlosdiagramasdeflujodelasfiguras5.2.7,5.2.8y5.2.9(programa
102
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

principal del microcontrolador USB). En este programa, continuamente se verifica, si el


servidor ha enviado algn comando de control. Cuando algn comando de control, fue
reconocido, se consiguen las condiciones de codificacin (vase seccin 5.2.2.4 Transmisor
inalmbricoparaelmdulodecontrol),stasson:
9 Deshabilitarlasinterrupcionesexternas.
9 LimpiarlabanderaINT0IF.
9 Poneren1lavariabletx_pend.
9 Guardarelcdigodemandoenlavariableinfo_tx.
9 Indicarelnmerodepalabrasquevanaserenviadas.
9 Inicializarvariablesnciclos,nbitsyperiodo_osc.
9 Configurareltemporizador2.
9 Habilitarlasinterrupcionesdeltemporizador2.
Antesde continuar,conlafuncinquetienenlasinterrupcionesdeltemporizador2,sevaa
explicar cmo se configura el temporizador 2, y cmo se habilitan y deshabilitan las
interrupcionesdeltemporizador2.
Configuracindeltemporizador2.
Paraconfigurareltemporizador2,setienelainstruccinsetup_timer_2(T2_DIV_BY_4,143,1),
pormediodeestainstruccin,elosciladorseajustaaunafrecuenciacercanaaladeloscilador
usadoenelprocesodecodificacin,esdecir,fosc 3.5KHz(vasefig.5.2.11fig.5.2.12).
Cuandoseconfiguraeltemporizador,seajustaellapsodetiempoquedebetranscurrirpara
queseproduzcaunainterrupcindeltemporizador2,yenconsecuenciadeestainterrupcin,
seejecutarlarutinadeserviciodelainterrupcindeltemporizador2.
Nota:Eltemporizador2,funcionaenbaseaFosc/4,endondeFosc,eslafrecuenciadeloscilador
queestutilizandoelmicrocontrolador;nuestrosistema,estarutilizandoelosciladorinterno
a8MHz,porlotantoFosc/4=2MHz.
Lainstruccinparaconfigurareltemporizador2,tienelasiguienteestructura:

103
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

setup_timer_2(mode,period,postscale)
Endonde:
mode:Indicaentrequevalorqueremosdividirlafrecuenciaqueutilizaeltemporizador2,
es decir, mode, indica el valor entre el que deseamos sea dividido Fosc/4. As el
temporizador, va a funcionar en base a la frecuencia indicada; por ejemplo se us
T2_DIV_BY_4;de esta forma indicamosque la frecuencia queseestarutilizandopara el
temporizador2,esf=2MHz/4=500KHz.
period: Es un nmero comprendido entre 1 y 255, que indica el valor en el que el
temporizador,seinicializaencero.Estoes,porquecadavezqueeltemporizadorempiecea
funcionar, tiene con contador interno que iniciar en cero, e incrementar su valor cada
que haya transcurrido un periodo de la frecuencia ajustada en mode. En nuestro caso
entonces tenemos el nmero 223, porlo tanto, cada vez que la cuenta del temporizador
lleguea223,steseinicializarencero.
postscale:Esunnmeroquepuedetenervaloresde115,ynosindicaelnmerodeveces
queeltemporizadorseinicializaencero,antesdelainterrupcin.Entoncesporejemplo,si
tenemos el nmero 1, quiere decir que slo habr una cuenta de 0 a 223 en el
temporizador,yentoncesexistirunainterrupcin.
Conloqueyaseexplic,sepuedeprocederarealizarelclculodellapsodetiempoquedebe
transcurrir,paraqueexistaunainterrupcin.
500KHz,entoncessecalculasuperiodo:

Comonosbasaremosenunaf

500KHz

1.25s

Comoelperiod=223,serealizarncuentasdesde0hasta223.Eltiempoquetardaenhacer
estacuentaentonces,esde:
T

143

500KHz

286s

104
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Finalmentepostscale=1,porlotantosloexistirunacuentade0a223.Yellapsodetiempo
que existe desde que el temporizador se inicializa en cero y se produce la interrupcin del
temporizador,esde:

143
1
500KHz

286s

Deloanterior,sepuedeobtenerlafrmulaparaelclculodecualquier

period postscale
f /4 /T2_DIV_BY_X

4 period postscale T2_DIV_BY_X

Ecuacin51
Hasta ahora, ya hemos configurado el temporizador, para que produzca interrupciones cada
286s,elcual,sicalculamossufrecuencia,tenemoselsiguientevalor:

1
286

3.496

Y se observa que logramos una frecuencia muy prxima a los 3.5 KHz, requeridos para
codificar.Hastaahora,solamentelogramosajustaralafrecuenciadeseada;sinembargo,para
que el temporizador comience a funcionar, es necesario permitir todas las interrupciones y
ademshabilitarlainterrupcindeltemporizador2.
Parapermitirtodaslasinterrupciones,seutilizalainstruccinenable_interrupts(GLOBAL).Ya
con el permiso de que existan interrupciones, ser necesario habilitar las interrupciones
requeridas,demaneraindividual.Entonces,parahabilitarlasinterrupcionesdeltemporizador
2,seusalainstruccinenable_interrupts(INT_TIMER2).
Rutinadeserviciodeltemporizador2.
Ahoraseverquesloquehacelarutinadeservicioqueejecutadacadavezqueseproduce
una interrupcin del temporizador 2, ya que por medio de esta rutina se va a codificar la
informacin.Eldiagramadeflujomostradoenlafigura5.2.12,muestralarutinadeserviciodel
temporizador2,queseejecutacada286s.
105
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.13Diagramadeflujodelarutinadeserviciodeltemporizador2,delmicrocontroladorUSB.

Por medio la variable tx_pend, se elige la utilidad del temporizador 2 del microcontrolador
USB, que puede ser: para codificar o para decodificar. Cuando tx_pend=1, por medio del
temporizador2,secodifica,enotrocasopormediodeltemporizador2,sedecodifica(vase
figura 5.2.13). tx_pend=1, indica que existe una transmisin pendiente, por lo tanto es
necesariocodificar;porlotantotx_pend=0,indicaquenoexistetransmisinpendiente,yno
esnecesariocodificar.
Supongamos que el microcontrolador ha recibido un comando de control conocido (vase
tabla5.2.1Tabladecomandosdecontrolconocidos,usadosenelsistema),porlotanto,el
microcontrolador proceder a lograr tener las condiciones de codificacin. De estas
condiciones, retomemos que se inician las interrupciones del temporizador 2, y que
tx_pend=1,porlotantomientrastx_pendmantengaelvalorde1,cadavezqueseproduzca
unainterrupcin:

SevaallamaralafuncinCODIFICA.

SelimpiarlabanderaTMR2F(eselbit1delregistroPIR1,localizadoenladireccin
0xF9Eh), que se pone a uno, cada vez que es producida una interrupcin del
temporizador2.

SeapagarelledconectadoenlaterminalRA3.
106
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

FuncinCODIFICA
EldiagramadeflujodelafuncinCODIFICA,semuestraenlafigura5.2.14.

Figura5.2.14Diagramadeflujodelafuncinquecodificapalabrasde12bits,paragenerarunasealenbanda
base.

Nota:Lasealbandabasecodificada,saleporlaterminalRA4delmicrocontrolador.
Loquerealizaestafuncin,esladecodificar28veceslamismapalabrade12bits,queest
almacenadaenlavariableinfo_tx.

107
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

LaterminalA2,esutilizadacomosalidadigital,ysetieneconectadounLED,aestaterminal,
pormediodeesteled,seindicarcuandoseiniciaycuandoseterminalatransmisindelas28
palabrasde12bits,quedeseamoscodificar.
LasvariablesyconstantesusadasenlafuncinCODIFICA,sonnbits,tpalabras,npalabras_tx,
info_tx,info_tempo_tx,acontinuacinsemencionaagrandesrasgossuuso:
nbits:Estavariable,vaatomarvaloresentre0y13,estoesdebidoaqueindicarel
nmero del bit de la palabra (de 12 bits) en que nos encontramos; de esta forma,
cuando nbits tiene un valor de 0, se estar indicando que estamos en el inicio de la
codificacindeunapalabra,locualesunpulsodesincronizacin(vasefigura5.2.12),
unavezcreadoelpulsodesincronizacin,nbitsseincrementa,ytomaelvalorde1,
esto indica que nos encontramos en el bit D0 (primer bit) de la palabra, una vez
codificado este bit, se incrementa nbits tomando el valor de 2, ahora indicando que
estamosenelbitD1(bit2)delapalabra;yassucesivamenteseindicaenqubitde
lapalabra,nosencontramos;finalmente,cuandonbitstomeelvalorde13,yahemos
codificado una palabra, por lo tanto es necesario, dejar de codificar informacin
durante untiempodeaproximadamente 10.296 ms, lo cualserealiza conlafuncin
T_12BITS(),(vaseseccinFuncinT_12BITS).
tpalabras: Es una constante utilizada, para que su valor sea asignado a la variable
npalabras_tx. La variable tpalabras, es inicializada fuera del programa principal del
microcontrolador(main),ysuvalorconstantees28.
npalabras_tx: Esta variable indica el nmero de palabras que se han enviado
codificadas, por esta razn, toma valores de 3 a 0, cuando tiene valor de 3, se est
codificandolaprimerpalabra,cuandotomaelvalorde2,secodificalasegunda,yas
sucesivamente, hasta que toma el valor de 0, que es cuando se indica que ya se
transmitieronlas3palabras.
info_tx:Comoyasehabamencionado,lavariableinfo_txtendralmacenadoslos12
bits que deseamos codificar y transmitir, por facilidad de uso, se asignan valores a
info_tx,deformahexadecimal.

108
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

info_tempo_tx: Va a ser una variable auxiliar, ya que cuando se est realizando la


codificacin, se va a utilizar un desplazamiento hacia la izquierda de un bit,
modificandoelvalordestavariable.
Dentro de la funcin CODIFICA, se tienen tres funciones: COD_BIT_UNO, COD_BIT_CERO y
T_12BITS. Cabe mencionar, que la funcin CODIFICA, es la misma funcin que la rutina de
servicio,paraelmicrocontroladorcodificador,delmdulodemonitoreo.
UsodelavariablencicloenlasfuncionesCOD_BIT_UNO,COD_BIT_CERO.
Tanto en la funcin COD_BIT_UNO, como en la funcin COD_BIT_CERO, se utiliza la variable
nciclo,lacualesutilizadaparacontarelnmerodeperiodosdelosciladorusadoparacodificar,
dentro del periododebit (vase Fig.5.2.15),es decir, suvalorestarcambiando idealmente
cadaT

1/3.5KHz

285.71sytomarvaloresde1,23ciclos,segnelperiododel

oscilador en el que se encuentre. El tiempo real en el que los valores de nciclo estarn
cambiando,ser,eltiempoexistenteentrecadainterrupcin(vaseseccinConfiguracindel
temporizador 2), es decir cada 286 s, por lo tanto, estaremos considerando que:
3.496

Enlafigura5.2.15,seejemplifica,cmoesquenciclollevalacuenta,delnmerodecicloenel
queseencuentre.

Figura5.2.15Ejemplodelfuncionamientodelavariablenciclo.

109
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

FuncinCOD_BIT_UNO.
La funcin COD_BIT_UNO, es llamada, cuando en la funcin CODIFICA encuentra que es
necesariocodificarununolgico,esdecir,cuandoesverdaderalacondicininfo_tempo_tx&
0x800; la cual hace la operacin AND, del valor de la variable info_tempo_tx, con el valor
hexadecimal0x800,esdecir,0x800enbinarioes10000000000.
Para aclarar esta operacin, veamos el ejemplo, en el que se tiene que el valor de
info_tempo_tx=0x0AAA.

INFORMACINHEXADECIMAL INFORMACINBINARIA

info_tempo_tx

0AAAh

0000101010101010

800h

0000100000000000

info_tempo_tx&0x800 0AAA&0800=0800h

0000100000000000

Tabla5.2.7Ejemploenelqueserequierecodificarunbitdevalor1lgico.

Siobservamoselresultado,enlaparteinferiorderecha,delatabla5.2.7,setieneunvalorque
noescero,porlotanto,lacondicinsevuelveverdadera,yesnecesariocodificar,unbitde
valor1lgico.
LafuncinCOD_BIT_UNO,sacalasealcorrespondienteaunbituno,codificado,atravsdela
terminalRA4delmicrocontrolador.Pararecordarlamaneraenquesecodificaelbitdevalor1
lgico,vaselafigura5.2.115.2.15,yaqueesteprocesolorealizalafuncinCOD_BIT_UNO,
quesemuestraendiagramadeflujo,enlafigura5.2.16.

110
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.16DiagramadeflujodelafuncinCOD_BIT_UNO.

Nota:Lafuncininfo_tempo_tx<<=1,haceundesplazamientodeunbithacialaizquierda,ala
variableinfo_tempo_tx.
Nota:Losciclosderelojsonreferidos,alosciclosquetranscurrentomandoencuentaquese
estcodificandoconunosciladorde3.496

(configuracindeltemporizador2).

FuncinCOD_BIT_CERO.
La funcin COD_BIT_CERO, es invocada, cuando la funcin CODIFICA, encuentra, que es
necesario codificar un bit de valor 0 lgico, es decir, cuando es falsa la condicin
info_tempo_tx&0x800;lacualhacelaoperacinAND,delvalordelavariableinfo_tempo_tx
conelvalorhexadecimal0x800,esdecir,0x800enbinarioes10000000000.
Paraaclararestoperacin,tomemoscomoreferenciaelejemploqueseveenlatabla5.2.7,
enelquesetenaqueelvalordeinfo_tempo_tx=0x0AAAh;peroahoravamosasuponerque
a la variable info_tempo_tx, se le hizo un desplazamiento hacia la izquierda de un bit, es
decir, se le aplic la operacin info_tempo_tx<<=1, por lo tanto despus del corrimiento,
111
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

info_tempo_tx=0x1555h.Porlotanto,laoperacindeinfo_tempo_tx&0x800,queda,dela
siguientemanera:

INFORMACINHEXADECIMAL INFORMACINBINARIA

info_tempo_tx

1555h

0001010101010101

800h

0000100000000000

info_tempo_tx&0x800 0AAA&0800=0800h

0000000000000000

Tabla5.2.8Ejemploenelqueserequierecodificarunbitdevalor0lgico.

Observandoelresultado,enlaparteinferiorderecha,delatabla5.2.8,setieneunvaloriguala
cero,porlotanto,lacondicinesfalsa,yesnecesariocodificar,unbitdevalor0lgico.
LafuncinCOD_BIT_CERO,sacalasealdelbitcerocodificado,atravsdelaterminalRA4del
microcontrolador.Pararecordarlamaneraenquesecodificaelbitdevalor0lgico,vasela
figura5.2.115.2.15,yaqueesteprocesolorealizalafuncinCOD_BIT_CERO,mostradaen
diagramadeflujo,enlafigura5.2.17.

Figura5.2.17DiagramadeflujodelafuncinCOD_BIT_CERO.

112
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Nota:Lafuncininfo_tempo_tx<<=1,haceundesplazamientodeunbithacialaizquierda,ala
variableinfo_tempo_tx.
Nota:Losciclosderelojsonreferidos,alosciclosquetranscurrentomandoencuentaquese
estcodificandoconunosciladorde3.496

(configuracindeltemporizador2).

FuncinT_12BITS.
La funcin T_12BITS, es la encargada de mantener en nivel bajo (sin transmisin), por un
tiempoequivalenteatransmitir12bits,alaterminalRA4delmicrocontrolador.
Para obtener el valor del tiempo equivalente a transmitir 12 bits, es necesario recordar que
por cada bit codificado, se requieren tres ciclos del oscilador (vase fig. 5.2.15), entonces el
periododebit=3(286s)=858s;perosequiereencontrareltiempoenquesetransmiten12
bits,porlotanto,periodode12bits=12*periododebit=10.296ms.
Deunamaneramuysimilaralaanterior,podemosobtenerelvalorde10.296ms,ystaes,
realizando la siguiente operacin: periodo de 12 bits=12*3*286 s =36*286 s=10.296 ms ;
recordemosque286s,eseltiempoqueexisteentrecadainterrupcindeltemporizador2.
Por lo tanto, la funcin T_12BITS, va a mantener en nivel bajo 10.296 ms; y este tiempo sin
transmisinesgeneradoentrepalabraypalabrade12bits,vasefiguras5.2.10y5.2.12.
Cabemencionarquelavariableperiodo_osctomavaloresde0a36;esutilizadanicamente
enlafuncinT_12BITS,ysevaaencargardellevarlacuentadelosperiodosdeloscilador,que
hantranscurridoduranteeltiempode10.296ms(tiempoenquenosecodificainformacin).
Elvalorperiodo_osc=0,indicaquenosencontramosenelprimerperiododelosciladorusado
paracodificar(tiempoentrecadainterrupcindeltemporizador2),cuandoperiodo_oscvale1,
se indica que ha transcurrido solo un periodo, y as sucesivamente, hasta que periodo_osc
tenga el valor de 36, es entonces, cuando ya transcurrieron 10.296 ms, y se proceder a
codificar otra vez la palabra, o terminar de codificar, si ya se terminaron de codificar las 28
palabras(npalabras_tx=0),queyahansidomencionadas.
113
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Enlafigura5.2.18,seobservaeldiagramadeflujodelafuncinT_12BITS.

Figura5.2.18DiagramadeflujodelafuncinT_12BITS.

5.2.2.7Receptorinalmbricousadoenelmdulodecontrol.
Elreceptorinalmbricousadoenelmdulodecontrol,eselencargadoderecibireinterpretar
lassealesdeRadioFrecuencia,quefuerontransmitidasporelmdulodeRFtransmisorTWS
BS3.Eldiagramaabloquesdeestereceptorinalmbrico,semuestraenlafigura5.2.19,como
puede observarse, el receptor inalmbrico se compone nicamente del modulo de RF
Receptoryunmicrocontrolador.
ElmdulodeRFutilizado,eselRWS3746,elcualesuncircuitoquepuededemodularseales
que estn a una frecuencia de 433.92 MHz y moduladas por medio de ASK. Este mdulo se
alimentacon5Volts,ylavelocidaddedatosalaquerecibe,esde4800bps.

114
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.19Diagramaabloquesdelreceptorinalmbricoutilizadoparaelmdulodecontrol.

Eldiagramaelctrico,delreceptorinalmbrico,semuestraenlafigura5.2.20.
Eneldiagramadelafigura5.2.20,sepuedenobservarlasterminalesendondeserconectado
algncircuitodepotenciadeundispositivoacontrolar.Parasaberlarelacindelaterminaly
elcircuitodepotenciaquedebeserconectadoasta,semuestralainformacinenlatabla
5.2.9.

115
Captulo5:Sistemaelectrnicodecomunicaciones

Sistemaadecontroly
ymonitoreodedispositiv
vosatravsdeInternetcconUSB

2009

Figura5.2.20
0Diagramaelcttricodelrecepto
orinalmbrico,utilizadoenelm
mdulodecontrol.

Circcuitodepotenciadel: Terminalde
elmicroconttrolador
decodificad
dor
Disp
positivo1
Disp
positivo2
Disp
positivo3
Disp
positivo4
Disp
positivo5
Disp
positivo6
Disp
positivo7
Disp
positivo8
Disp
positivo9
Disp
positivo10

RA2
RA3
RA4
RA5
RA6
RC0
RC1
RC2
RC4
RC5

Tabla5.2.9Relacin
ndeterminalesycircuitosdepo
otenciacorrespo
ondientes.

116
Captulo5
5:Sistemaelectrnicodeccomunicacion
nes

Sistemaadecontroly
ymonitoreodedispositiv
vosatravsdeInternetcconUSB

2009

2.8Circuitod
depotencia.
5.2.2
Nuestrrocircuitodepotencia,eslainterfazexxistente,entreeelmicrocon
ntroladordecodificadory
los disspositivos a controlar, yaa que por m
medio de esste circuito d
de potencia,, podr ser
encend
didoalgndispositivo,contansolo5 Volts,yserapagado,en
nausenciadeevoltaje,es
decir0
0Volts.Eluso
odeestecircuitodepoten
ncia,sehace conlafinalid
dadtambin deproteger
almicrrocontrolador,ya que porrmediodelM
MOC3011,el microcontro
oladorqueda totalmente
aislado
ofsicamentedelacarga,e
enestecaso,lacargasonlosdispositivosacontrolar,loscuales
sonalimentadospo
or120Voltsdecorrientealterna.

Figura5.2..21Diagramaellctricodelcircu
uitodepotenciaa.

ncia, es mosstrado en la figura 5.2.21, como se


El diaggrama elctrico del circuito de poten
observva, la entradaa de voltaje se encuentraa en el MOC
C3011, esto ees porque ell MOC3011,
internaamentetiene
eunLEDinfraarrojoyunfottotransistor,detalmaneraquecuand
doelLED,se
encuen
ntrefuncionaando,stele vaahacerin
ncidirrayosin
nfrarrojosalffototransistorr,quiencon
estosrrayos,produccirunapequ
ueacorriente,queserccapazdedispararalTRIAC
C.Cuandoel
TRIAC es disparado
o, este cierra el circuito q
que alimenta al dispositivo controlado
o, y provoca
queeldispositivoco
ontroladoenccienda.
Observvamoseneld
diagramade lafigura5.2.21,unaresistenciaqueseeencuentracconectadaa
laentradadelMOC
C3011,stasirveparadivid
direlvoltajedesalidadel microcontrolador,entre
ella y el
e LED infrarrojo del MOC
C3011, de essta manera este LED, pod
dr ser alimen
ntado a sus
valoresstpicos,mosstradosensu
uhojadeesp
pecificaciones.Losvalores tpicosdealimentacin,
son1.2
2Va5mA.Po
orlotanto,elvalordelaresistenciaqu
uesemencion
n,ser:
117
Captulo5
5:Sistemaelectrnicodeccomunicacion
nes

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

1.2
5

760

ElvalordeunaR=760,seraparaobtenerlosvaloresdealimentacintpicosparaelLED,
peroste tiene valoresde alimentacinmximos,que son 1.5V a 10mA,si calculamos una
resistencia,paraobtenerestosvaloresdealimentacin,obtendremosunvalorderesistencia
mnimayser:
5

1.5
10

350

De los dos valores calculados anteriormente, se observa que R puede tomar valores que se
encuentrenenelrangodeRmnima<R<Rtpica,esdecir,350<R<760.
5.2.2.9Procesodedecodificacin
El proceso de decodificacin, en nuestro sistema de comunicaciones, es realizado por algn
microcontrolador, para el caso del mdulo de control, este proceso es realizado por el
microcontroladordecodificador,vasefigura5.2.5.
Elprocesodedecodificacin,consisteeninterpretarlasealenbandabasequeprovienedel
mdulo de RF receptor, es decir, recuperar la informacin binaria que est codificada en la
sealenbandabase.Esteproceso,sucededemanerainversa,alprocesodecodificacin,para
sabercmolohacenuestrosistema,veamosunejemplodesealenbandabase(palabrade
12bitscodificada),yelprocesoquesellevaacaboconestetrendepulsos.
Observemoslafigura5.2.15,quemuestradosseales,unaeslasealdelosciladorutilizado,
yaquecadaciclodeloscilador,esunainterrucindeltemporizador2.Laotraseal,esuna
palabrade12bitscodificadaenunasealenbandabase,enellaseobserva,loqueeselpulso
desincronizacinaliniciodeltrendepulsos,ydespusseobservanlos12bitscodificados,de
lamaneraenquesemuestraenlafigura5.2.15.
5.2.2.10Programadecodificador
EnelmicrocontroladorUSB,ladecodificacinseestarrealizandocontinuamente,mientrasno
exista informacin que deba ser transmitida, es decir, mientras se mantenga la condicin
118
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

tx_pend!=1. Encambioenelmicrocontroladordecodificador,seestarrealizandoelproceso
dedecodificacincontinuamentesininterrupcin.
Rutinadeserviciodelainterrupcinexterna0.
Elprocesodedecodificacin,seiniciaconladeteccindeunflancodeelevacinproducidoen
la terminal de entrada digital RB0, se hace a partir de detectar este flanco, debido a que es
necesariotenersincronizado,elreloj(temporizador2)delreceptor(microcontrolador),con
lasealqueseestrecibiendo.
A partir de detectar el flanco de elevacin, se produce una interrupcin provocada por el
flancodeelevacin,loqueocasionaqueseaejecutadalarutinadeserviciocorrespondiente,a
loqueesllamadainterrupcinexterna0,pueseslaquelecorrespondealaterminalRB0.
Enlafigura5.2.22,seobservaeldiagramadeflujodelarutinadeserviciodelainterrupcin
externa0,queseestarejecutandomientrasseencuentrenhabilitadasestasinterrupciones.
Esdecir,pormediodeestarutinadeservicio,seencuentraeliniciodeunapalabrade12bits
codificada.

Figura5.2.22Rutinadeserviciodelainterrupcinexterna0.

Comoseobserva,eneldiagramadeflujodelarutinadeserviciodelainterrupcinexterna0,
lo que realiza es deshabilitar estas interrupciones, y tambin configura y habilita las
interrupcionesdeltemporizador2,porlotanto,loqueproceder,esqueseejecutelarutina
119
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

deserviciodeltemporizador2,altranscurrir142s,paraencontrarestetiempo,recurrimosa
laecuacin51,delaseccinConfiguracindeltemporizador2,sustituyendolosvaloresde
lainstruccinsetup_timer_2(T2_DIV_BY_4,71,1),tenemos:

4 period postscale T2_DIV_BY_X


f

4 71 1 4
8MHz

142

Larutinadeserviciodeltemporizador2,yafuevistaenlaseccindenominadaInterrupciones
deltemporizador2,siobservamossucorrespondientediagramadeflujoenlafigura5.2.13,
sepuedeobservarqueparaelcasodequesecumplatx_pend!=1,entonces,serejecutadala
funcinDECODIFICA.
FuncinDECODIFICA.
Recordemosquenicamentelacondicintx_pend==1,secumple,cuandoserequierecodificar
y transmitir informacin, por lo tanto, la funcin DECODIFICA, continuamente se estar
ejecutando, mientras no se codifique informacin. La informacin que el microcontrolador
USBestardecodificando,ser,laprovenientedelmicrocontroladorcodificadordelmdulode
monitoreo,(vasefigura5.2.325.2.33).
En las figuras 5.2.23 y 5.2.24, se puede observar el diagrama de flujo correspondiente a la
funcindecodifica.
A grandes rasgos, la funcin DECODIFICA, interpreta la seal banda base codificada recibida
porelmoduloRFreceptor,yalmacena7veceslamismapalabra,paraquealfinalcomparen
todaslaspalabrasysepuedancorregiralgunosposibleserroresquepuedanexistir.

120
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.23DiagramadeflujodelafuncinDECODIFICA(parte1).

121
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.24DiagramadeflujodelafuncinDECODIFICA(parte2).

122
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ElfuncionamientodelafuncinDECODIFICA,sebasaenlaverificacindelosnivelesdevoltaje
(tomarmuestras) enciertos puntos, quenosdaninformacin, acercade la palabra queest
codificadaenlasealbandabasequeseestrecibiendo.Enlaprimeravezqueseejecutala
funcinDECODIFICA,elvalordenmuestraescero,estevalorsevaincrementando,cadavez
queseaproducidaunainterrupcindeltemporizador2,esdecir,cada286s,yaquecuando
nmuestra=0, el temporizador 2, es configurado para que las interrupciones sean producidas
cada286s,esto,sehacepormediodelainstruccinsetup_timer_2(T2_DIV_BY_4,143,1).
Lavariablenmuestratendrelvalorde37,cuandoyasehayantomadotodaslasmuestrasque
serequierenparadecodificarlapalabra,estoseilustraenlafigura5.2.27.
Ahora veamos cul es el comportamiento de la variable nsubmuestra, cuando se encuentra
decodificandolasealbandabasecorrespondientedeunapalabrade12bitscodificada.Enla
figura 5.2.25, se ilustra que un periodo de bit, nsubmuestra, toma valores de 0,1 y2; y esto
mismosucedeparatodoslos12periodosdebit,correspondientesdelapalabrade12bit.
Paraqueelmicrocontroladorreconozcaloquerepresentalasealbandabase,sevanatomar
muestrasunicamente,cuandonsubmuestratienevalorde1ycuandonsubmuestratienevalor
de2;cuandonsubmuestratieneelvalorde0,nosetomaunamuestradebidoaque,porla
maneraenqueestcodificadalainformacin,sesabequeelniveldevoltaje,siemprevaaser
nivelbajo.

Figura5.2.25Comportamientodelasvariablensubmuestra,cuandoseestdecodificando.

123
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

La variable n_alto se encargar de contar los niveles de voltaje altos, que existen en un
periodo, tomando en cuenta que se tomarn dos muestras en cada periodo de bit (cuando
nsubmuestra=1,ycuandonsubmuesta=2).Estoes,porejemploparaunbitdevalor0lgico,
n_altos,debertenerelvalorde2,yaquesiobservamoslafigura5.2.25,cuandosetomanlas
dosmuestras,enlasdosmuestras,setienendosnivelesaltosdevoltaje.Peroahorasisetiene
un bit de valor 1 lgico, se tendra entonces que n_altos=1, pues, si verificamos en la figura
5.2.25,cuandosetomanlasdosmuestras,solamentetenemosunnivelalto.
En la figura 5.2.27, se observan, los lugares de la seal banda base en donde se toman las
muestras; estos lugares, estn indicados, por flechas que apuntan hacia arriba, y son los
lugares,endondelavariablensubmuestra,tomalosvaloresde1y2.
Yesasi,quecuandonsumbuestra=2,elmicrocontrolador,yapuedesaber,quvalorlgicoes
el bit que representa una porcin de la seal que est se examinando; de manera que va
guardandoyrecorriendoelvalordeestebit,aunavariable,hastaencontrarelvalordelos12
bits.
Alfinal,cuandolavariablenmuestratomaelvalorde37,sehantomadotodaslasmuestras,
para reconocer el valor de la palabra de 12 bits, y es en este momento, cuando las
interrupcionesdeltemporizador2sondetenidas,puesyaseharecibidounapalabracompleta.
Entonces,elvalordelapalabraesasignadoaunelementodelvectorinfo,empezandoporel
elementoinfo[1].
Despus,sevuelveahabilitarlainterrupcinexterna,conloqueestesperandorecibirotra
palabra,ypasarporelmismoproceso,ysealmacenarenelelementodelvectorinfo[2],y
as sucesivamente, hastallegara almacenar la palabra enel vectorinfo[7]. Entonces,alfinal
tendremoslamismapalabra,almacenada7veces,esdecir,unapalabraencadaelementodel
arregloinfo,desdeelelementoinfo[1],alelementoinfo[7].
FuncinVERIFICA.
Unavezquesetienenalmacenadaslas7palabras,enelarregloinfo,seprocedeallamarala
funcinVERIFICA,lacualseencargardecorregirposibleserroresquesehayantenidoenla
124
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

transmisin, almacenando la palabra de 12 bits corregida, en el elemento info[0], con este


elemento, se harn una serie de comparaciones, para encontrar qu es lo que el
microcontrolador debe de hacer, de acuerdo a la informacin contenida, en la palabra
recibida.
Las acciones que debe realizar el microcontrolador USB, son, enviar comandos de control,
cuandoseanecesario,veseeldiagramadeflujodelafuncinVERIFICA,queesmostradoen
lafigura5.2.26.
Correccindeerrores
LafuncinVERIFICA,comienzainicializandoloselementosbits_info[1]albits_info[12],despus
severificaelnmerodebitsdevalor1lgico,encadaelementodelvectorinfo;paraentender
esto,veamosunejemplo,enelquevamosasuponerquesetienenalmacenadoslosvalores
mostradosenlatabla5.2.10,lacualmuestraunasimulacin,endondesetransmitilapalabra
0xC07h,ysehanrecibidopalabrasconalgunoserrores.
Palabraalmacenada
Elemento
arreglo

del

Hexadecimal Binario

D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

info[1]

0x061

info[2]

0x816

info[3]

0xC07

info[4]

0xD09

info[5]

0x863

info[6]

0xC07

info[7]

0xC07

Tabla5.2.10Simulacindepalabrasquesehanrecibidoconerrores.

Entonces en la funcin VERIFICA, se va a contar el nmero de bits de valor 1 lgico, de


acuerdo a la posicin de cada bit, es decir, se van a contar el nmero de 1s, que hay en la
posicindeD0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11;elvalordeestacuenta,esalmacenado
125
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

en cada elemento del arreglo bits_info, desde el bits_info[1] hasta el bits_info[12],


respectivamente.
Entoncesloselementosdelarreglobits_info,tendrnalmacenadalainformacin,mostradaen
latabla5.2.11.

Valoralmacenadoenel
elementodelarreglo
bits_info
bits_info[1] 6
bits_info[2] 5
bits_info[3] 4
bits_info[4] 1
bits_info[5] 1
bits_info[6] 2
bits_info[7] 2
bits_info[8] 0
bits_info[9] 1
bits_info[10] 0
bits_info[11] 4
bits_info[12] 6

Elemento

Palabra

info[0]

Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
Bit8
Bit9
Bit10
Bit11

Valordelbit,de
acuerdoasu
posicin
1
1
1
0
0
0
0
0
0
0
1
1

110000000111

Posicindebit
correspondiente

obtenida
Tabla5.2.11Valoresdeloselementosdelarreglobits_info,paraelejemplodelatabla5.2.10.

Deacuerdoalvalorquesetengaalmacenadoencadaelementodelarreglobits_info;serel
valorqueserasignadoalbitcorrespondiente,decadaelemento.Estosehaceprimeramente
basndonos,enqueelnmerodepalabrasquesetienenalmacenadas(enelarregloinfo),son
7,detalforma,quesiseencontraronenunaposicindebit,lacantidadde4omsbitscon
valor1lgico,albitlocalizadoenesaposicin,lecorrespondeelvalorde1lgico,encasode
que se encontrarn menos de 4 bits con valor 1 lgico, al bit localizado en esa posicin, le
corresponde un valor de 0 lgico. Siguiendo estas reglas, veamos los resultados del ejemplo
quesevienedescribiendo,vaseenlatabla5.2.11.

126
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Deestamanera,selograncorregircorrectamente,hasta3erroresporposicindebit,esdecir,
sepuedencorregircorrectamente,hasta12x3=36errores,yaquesetienen12posicionesde
bit.

Figura5.2.26DiagramadeflujodelafuncinVERIFICA.

Identificacindecdigos.
La identificacin de cdigos, tambin se realiza, en la funcin VERIFICA, en el diagrama de
flujo,comienzaapartirdelnmero1.
Primeramente,severificaladireccinquetienelapalabraqueserecibi,ysepuedentener
dosdireccionesla0x0C00h,la0x0800h.Ladireccinde0x0C00h,esutilizadaexclusivamente
para los palabra de estado de los dispositivos controlados (Vase seccin 5.2.3.2), es decir,
como su nombre lo dice, nos van a proporcionar informacin acerca de los estados de los
dispositivoscontrolados(siestnencendidosoapagados).

127
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

La direccin 0x0800h, se utiliza nicamente para los palabras de estadode los dispositivos
monitoreados(Vaseseccin5.2.3.1),yestoscdigos,proporcionaninformacinacercadelos
estadosdelosdispositivosmonitoreados,esdecir,silosdetectoresestnactivos,oinactivos.
Una vez identificada, el tipo de direccin recibida, si se recibi una direccin de palabra de
estadodelosdispositivoscontrolados(0x0C00h),severificaelvalordelosbits0,1,2,3,4,5,
6,7,8y9.Cadabitestasignadoalestadodeundispositivoenespecfico,estoseexplicaenla
seccin 5.2.3.2. Si el valor del bit verificado, es un 1 lgico, quiere decir que el dispositivo
controlado est encendido, y si es un 0 lgico, entonces, el dispositivo controlado est
apagado.Despusdeverificarcadabit,elmicrocontrolador,decidesienviarono,uncomando
demonitoreo,yaqueestecomando,esnicamenteenviado,cuandoelestadodeldispositivo
ha cambiado, es decir, si estaba apagado, y el dispositivo fue encendido, entonces enva un
comando de monitoreo, indicando al cliente que el dispositivo fue encendido, y sucede algo
similar,cuandoeldispositivoseencontrabaencendidoyfueapagado.Porejemplo,entoncessi
serecibelapalabra0xE6Fh=1110011011112;elmicrocontroladorprimeroidentificaqueesta
palabra tiene la direccin 0xC00, que pertenece a la direccin de palabras de estado de los
dispositivosmonitoreados.Unavezquesesabequeseharecibidounpalabradeestadode
los dispositivos monitoreados, se procede a verificar el estado de los dispositivos
monitoreados,esdecir,verificarelvalorlgicodelosbits0,1,2,3,4,5,6,7,8y9.Entoncesel
microcontrolador,sedarcuentaquelosdispositivosqueseencuentranencendidos,sonlos
dispositivos:1,2,3,4,6,7y10,yporlotanto,losdispositivosqueseencuentranapagados,
sonlosdispositivos:5,8y9.
Enelotrocaso,esdecir,cuandosehayarecibidounadireccindepalabradeestadodelos
dispositivos monitoreados (0x0800h), se verifica el valor de los bits 0, 1, 2 y 3. Sucede algo
similarqueenelcasoanteriorparaestoscdigos,puestambincadabitesasignadoalestado
de cada dispositivo a monitorear, y de igual forma, si el valor de cada bit verificado es un 1
lgico,eldispositivomonitoreado,estactivo,ysisetieneun0lgico,entonceseldispositivo
monitoreado,estinactivo.Deigualformadespusdeverificarcadabit,elmicrocontrolador,
decide si es necesario enviar un comando de monitoreo al cliente, pues slo es enviado,
cuando el estado del dispositivo monitoreado cambia, como se explic para el caso de los
estados de los dispositivos controlados. Entonces por ejemplo, cuando se reciba la palabra
128
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

0x803h=100000000011,elmicrocontroladoridentificaquelosdetectoresqueestnactivos,
sonlosdetectores1y2.
Ejemplodepalabradecodificada.
Finalmente,enlafigura5.2.27,setieneunejemplodesealenbandabase,conlosvalores
quetomanalgunasvariables,cuandoseestdecodificandoestaseal;tambin,enestafigura
se muestran los puntos, en donde se verifica el nivel de voltaje que se tiene, estos puntos
estnindicadosconlasflechasqueapuntanhaciaarriba;siseobservalafigura5.2.27,cuando
setomaunamuestra,yelniveldevoltajeesalto,lavariablen_altoseincrementaenuno,es
decir,lavariablen_alto,cuentaelnmerodenivelesdevoltajealto,quehayencadaperiodo
debit.

129
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Periododebit

Figura5.2.27Ejemplodepalabracodificadaenbandabase,ylospuntosendondesetomanmuestrasparasudecodificacin.

130
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

5.2.3Mdulodemonitoreo
El mdulo de monitoreo, como ya se mencion, es el encargado, de informar al
microcontroladorUSB,acercadelestadodelosdispositivosamonitorear(activooinactivo)y
del estado de los dispositivos a controlar (encendido o apagado), este informe se hace
inalmbricamente, como se muestra en la figura 5.2.28. El proceso de informar acerca del
estado delosdispositivosmonitoreados, yel estadode los dispositivos controlados, se hace
enviando alternadamente e inalmbricamente, desde el microcontrolador codificador, una
palabra de estado de los dispositivos monitoreados, y una palabra de estado de los
dispositivos controlados, el mismo microcontrolador codificador, ser el encargado de
codificarestaspalabrasde12bits,ygenerarsussealesenbandabasecorrespondientes.
En la figura 5.2.28, se tiene el diagrama a bloques del mdulo de monitoreo, y las flechas
indican el sentido en el que viaja la informacin, en la seccin 5.2.3.3 Proceso de
comunicacin en el mdulo de monitoreo, se darn ms detalles acerca del recorrido que
hacelainformacin.

Figura5.2.28Diagramaabloquesdelmdulodemonitoreo.

131
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Elmdulodemonitoreosecomponedelossiguienteselementos:
Microcontrolador decodificador: Su nica funcin de ste, es la de informar al
microcontroladorcodificador,culeselestadodelosdispositivosacontrolar(apagado
oencendido),paraelloseutilizaunacomunicacinparalelaesdecir,queseutilizaun
cable para cada dispositivo a controlar. Las terminales de salidas digitales, del
microcontrolador decodificador proporcionan al microcontrolador codificador, un
niveldevoltajede0Volts,paraindicarundispositivoapagado,yunniveldevoltajede
5Voltsparaundispositivoencendido.

Dispositivos a monitorear: Son circuitos detectores, tales como detectores de


presencia,dehumo,degas,etctera.Estoscircuitos,proporcionarnindividualmente,
unniveldevoltajeaalgunaterminaldelmicrocontrolador(configuradacomoentrada
digital) de 0 Volts, para indicar que el detector no tiene actividad alguna (no esta
activo),ounnivelde5Volts,paraindicarqueeldetectorestactivo(sehadetectado
algncambioenelmedio).

Microcontrolador codificador: Su funcin es la de verificar, el estado de los


dispositivos a monitorear (sensores), y el estado de los dispositivos a controlar. Una
vezqueelmicrocontroladorverificelestadodelosdispositivosmencionados,estva
acodificarestainformacinendospalabrasdiferentes,de12bits.Unapalabrade12
bits, ser utilizada para transmitir la informacin del estado de los dispositivos a
monitorear, esta palabra la llamaremos palabra de estado de los dispositivos a
monitorear.Laotrapalabrade12bits,serutilizadaparatransmitirlainformacindel
estado de los dispositivos a controlar, y la llamaremos palabra de estado de los
dispositivos a controlar. Una vez que codifica alguna de estas dos palabras, ste
mismo microcontrolador, tambin genera la seal en banda base, que tiene sta
informacin(palabrade12bits).

Mdulo de RF, transmisor: ste mdulo de Radio Frecuencia, es un circuito de


matricula TWSBS6, el cual se encargar de modular y transmitir, la seal en banda
basequefuegeneradaporelmicrocontroladorcodificador.ModulandoenASK,auna
132
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

frecuencia de 315 MHz; con el fin de que la comunicacin no se interfiera, con la


comunicacinquesetieneenelmdulodecontrol.

MdulodeRF,receptor:Sufuncinesladerecibirydemodularlasealemitidaporel
transmisor, y de esta manera, obtener la seal en banda base que gener el
microcontrolador codificador. Este modulo de RF, trabaja a una frecuencia de 315
MHz.

MicrocontroladorUSB:stemicrocontroladortienelafuncindeinterpretarlaseal
enbandabaseprovenientedelreceptordeRF,deestamanera,obtienelapalabrade
12bitsgeneradaporelmicrocontrloladorcodificador.stapalabrade12bits,puede
serelpalabradeestadodelosdispositivosamonitorear,oelpalabradeestadode
losdispositivosacontrolar.UnavezqueelmicrocontroladorUSBreconocelapalabra
12 bits, ste, puede interpretar la informacin, identificando el estado de los
dispositivos (a monitorear o a controlar), y as comunicarle al servidor, cul es el
estado de estos dispositivos. Para informar, al servidor, cul es el estado de los
dispositivos, el microcontrolador USB, enviar algn comando de monitoreo, segn
seanecesario.

133
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

5.2.3.1Palabradeestadodelosdispositivosamonitorear.
Lapalabrasdeestadodelosdispositivosamonitorear,esunapalabrade12bits,utilizadaen
elmdulodemonitoreo,sufuncinesladeindicaralmicrocontroladorUSB,culeselestado
delosdispositivosamonitorear,esdecir,salgndetectorsehaactivado,ono.
Estaspalabrassongeneradasporelmicrocontroladorcodificador,enfuncindelestadodelos
dispositivosdetectores,puescadadetectortieneasignadaunaterminaldeentradadigitaldel
microcontrolador,comosemuestraenlatabla5.2.12.

Detector al que se Terminaldelmicrocontrolador


verificasuestado

codificador

Detector1

RB0

Detector2

RB1

Detector3

RB2

Detector4

RB3

Tabla5.2.12Asignacindelasterminalesdelmicrocontroladorcodificador,deacuerdoaldetector,delquecada
unaverificasuestado.

De acuerdo al nivel de voltaje que entra a su terminal, el microcontrolador codificador, lo


interpretardelasiguientemanera:
1. Mientrasestentrando un nivelde voltajebajo enla terminaldel microcontrolador,
steinterpreta,queeldetectorseencuentraactivo(detectaalgo).
2. Mientras est entrando un nivel de voltaje alto en la terminal del microcontrolador,
steinterpreta,queeldetectorseencuentrainactivo(nodetectaalgo).
Es decir, que si entra un nivel de voltaje bajo a la terminal RB3, el microcontrolador
interpretarqueelDetector4seencuentraactivo,ylosdemsestninactivos.
Sedicequeundetectorestaactivo,cuandohayadetectadoalgncambioenelmedio,como
puedeserqueeldetectordepresenciaporejemplo,hayadetectadolapresenciadealguien;

134
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

en consecuencia, se dice que el detector esta inactivo, cuando no haya detectado algn
cambioenelmedio.
Laestructuradelaspalabrasdeestadodelosdispositivosamonitorear,eslamostradaenla
figura5.2.29.

Figura5.2.29Estructuradelapalabradeestadodelosdispositivosamonitorear

Observandolafigura5.2.29,sepuedenotarqueelbit11contieneunbit1lgicoyqueelbit
10 contiene un 0 lgico, estos valores, son utilizados como direccin, por lo tanto, todas las
palabrasenelmdulodemonitoreo,quecontenganestadireccin,sernpalabrasdeestado
delosdispositivosamonitorear.
Tambin en la figura 5.2.29, se observa que los bits 0, 1, 2, 3, muestran el estado de los
detectores,y no tienen unvalorasignado, sinouna X, locual nosindica quepuede tomar
cualquiervalorlgico(01lgico);un0lgicoindicaqueeldetectorestinactivo,esdecir,
quenohaypresenciadealgo;encambioun1lgicoindicaqueeldetectorhaencontradoalgo
(presencia,humo,gas,etc.).Losbitsrestantesdelbit4,albit9,nosonutilizados,sinembargo
puedenserusadosparamsdispositivosdetectores.
5.2.3.2Palabradeestadodelosdispositivosacontrolar.
Lapalabradeestadodelosdispositivosacontrolar,esunapalabrade12bits,queseutiliza
enelmdulodemonitoreo,ysufuncinesladeindicaralmicrocontroladorUSB,culesel
estadodelosdispositivoscontrolados,esdecirsialgndispositivoseencuentraencendidoo
apagado.Comoyasevioenlaseccin5.2.2Mdulodecontrol,losdispositivoscontrolados,
puedenserdeiluminacin,bombasdeagua,cerrojoselctricos,etc.
La palabra de estado de los dispositivos a controlar, es generada por el microcontrolador
codificador, en funcin de los niveles de voltaje que el microcontrolador decodificador (del
135
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

mdulodecontrol)envaalmicrocontroladorcodificador,yaqueatravsdeestosnivelesde
voltaje,esposiblesaberculeselestadodelosdispositivoscontrolados.
Nota: Los niveles de voltaje que enva el microcontrolador decodificador, provienen de la
misma lnea que alimenta al circuito de potencia de los dispositivos a controlar, como se
observaenlafigura5.2.36.
Cada terminal del microcontrolador, tiene asignada verificar el estado de cierto dispositivo
controlado,estosehacecomolomuestralatabla5.2.13.

Dispositivoalquese
verificasuestado

Terminaldelmicrocontrolador
codificador

Dispositivo1
Dispositivo2
Dispositivo3
Dispositivo4
Dispositivo5
Dispositivo6
Dispositivo7
Dispositivo8
Dispositivo9
Dispositivo10

RA2
RA3
RA4
RA5
RC0
RC1
RC2
RC4
RC5
RC6

Tabla 5.2.13 Asignacin de las terminales del microcontrolador codificador, de acuerdo al dispositivo, del que
cadaunaverificasuestado.

El microcontrolador codificador, interpretar los niveles de voltaje que entran a estas


terminales,delasiguientemanera:
1. Mientras se est inyectando un nivel de voltaje bajo en la terminal del
microcontrolador,steinterpreta,queeldispositivoestapagado.
2. Mientras se est inyectando un nivel de voltaje alto, a la terminal del
microcontrolador,steinterpretaqueeldispositivoestencendido.
Entonces, si se recibe un nivel de voltaje alto en las terminales RC1 y RC6, y en las dems
terminales,serecibeunniveldevoltajebajo,elmicrocontroladorcodificador,interpretarque
losdispositivos6y10,seencuentranencendidos,ylosdemsestnapagados.
136
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

La estructura dela palabradeestadodelosdispositivosacontrolar, semuestraen lafigura


5.2.30.

Figura5.2.30Estructuradelapalabradeestadodelosdispositivosacontrolar.

Siobservamoslafigura5.2.30,nosdaremoscuentaquelosbits10y11,sonbitsdedirecciny
tienenunvalorfijode1lgico,loculquieredecir,quetodaslaspalabrasenelmdulode
monitoreo, que empiecen con estos valores de bits, sern identificadas como palabra de
estadodelosdispositivosacontrolar.
Tambinenlafigura5.2.30,seobservaquelosbit0,1,2,3,4,5,6,7,8y9,sonutilizados,
paramostrarelestadodelosdispositivos1,2,3,4,5,6,7,8,9y10,respectivamente;yenla
figura5.2.30,nosetienealgnvalorlgicoasignado,sinoquesetieneunaX,locualquiere
decirqueestosbits,puedentomarcualquiervalorlgico,esdecir01;un0lgico,indicaque
el dispositivo, se encuentra apagado, y un 1 lgico, indica que el dispositivo se encuentra
encendido.
5.2.3.3Procesodecomunicacinenelmdulodemonitoreo
Elprocesodecomunicacininalmbricoenelmdulodemonitoreo,comienzadesdequeel
microcontrolador codificador, verifica los estados, de los detectores y de los dispositivos
controlados, como ya se mencion en la secciones 5.2.3.1 y 5.2.3.2. Despus de haber
verificado estos estados, el microcontrolador codificador, primeramente se crean y se
codificanensealesbandabase,28palabrasdeestadodelosdispositivosamonitorear,una
trasotra,yseenvanestassealesbandabase,haciaelmdulodeRFtransmisor.
Unaveztransmitidas,las28palabrasdeestadodelosdispositivosamonitorear,secreanyse
codifican28palabrasdeestadodelosdispositivosacontrolar,igualmente,estoserealizauna
tras otra, y as como van siendo codificadas en su seal banda base, son enviadas hacia el
mdulodeRFtransmisor.
137
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Entonces, el microcontrolador codificador, estar enviando alternadamente 28 palabras de


estado de los dispositivos a monitorear, y 28 palabras de estado de los dispositivos a
controlar.
Proceso de comunicacin para el envo de las palabras de estado de los
dispositivosamonitorear.
Anteriormentese mencionqueel microcontrolador codificador,es quiengeneralapalabra
deestadodelosdispositivosamonitorear,peroannosehadicho,culeselprocedimiento
para hacer esto. Este procedimiento, se muestra en la figura 5.2.32, y a continuacin se
describeelprocesoquesellevaacaboencadapaso.Losdetectoresindividualmentetendrn
quemantenerunniveldevoltajedependiendodesuestado,elniveldevoltajepuedeseralto
(5 V) bajo (0 V). Mientras no detectan algn cambio en el medio (humo, gas, presencia,
etctera),debernmantenerunniveldevoltajealto,ymientraslosdetectorespercibenalgn
cambio en el medio (humo, gas, presencia, etctera), debern mantener un nivel de voltaje
bajo.Enlafigura5.2.32,seobserva,quecadadetectorindividualmente,envastosnivelesde
voltaje,hacialasentradasdigitalesdelmicrocontroladorcodificador.

1. Debido a que se tienen cuatro detectores, se usan cuatro entradas digitales del
microcontrolador, es decir, una entrada digital para cada detector, y es en estas
terminales, en donde se va a inyectar el nivel de voltaje proporcionado por los
detectores.Deestamanera,elmicrocontroladorcodificador,podrreconocer,cules
detectoressehanactivado,ycualesannodetectancambiosenelmedio.

2. Una vez que el microcontrolador reconoce el estado de los detectores, es capaz de


generar la palabra de estado de los dispositivos a monitorear, la cual ya se vio su
estructura anteriormente. Y en la figura 5.2.32, se genera la palabra 0x803h, o su
equivalenteenbinario100000000011.Lapalabra0x803hesgenerada,constevalor,
yaqueseestsuponiendoquelosdetectores1y2,estnactivos(mantienenunnivel
devoltajebajoasusalida),losdetectores3y4,noestnenactivos,ylosvaloresde

138
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

losbits4al9,tienenvaloresdecerolgico,debidoaquenosetieneasignadoestos
bits,alestadodealgndetector.

Figura5.2.31Ejemplodepalabradeestadodelosdispositivosamonitorear

3. Ahora que el microcontrolador ya sabe, el valor de la palabra de estado de los


dispositivosamonitorear,estvaacodificarla,generandounasealenbandabase,
queserenviadaporunaterminaldesalidadigitalhaciaelmdulodeRFtransmisor.
Estacodificacin,sehace,enbasealoquesemenciona,enlaseccin5.2.2.5Proceso
decodificacin.

4. La seal en banda base que fue enviada por el microcontrolador, es inyectada a la


entradadelmdulodeRFtransmisor,quinseencargademodularytransmitiresta
sealpormediodeRadioFrecuencia.

5. La seal de Radio Frecuencia que fue transmitida, es recibida y demodulada por el


mdulodeRFreceptor,deestamanera,elmdulodeRF,recuperalasealenbanda
base,quesemencionaenelpaso4.

6. La seal en banda base, es enviada desde el mdulo de RF, hacia una terminal
configuradacomoentradadigital,delmicrocontroladorUSB.

7. El microcontrolador USB, decodifica la seal banda base, y la interpreta como la


palabradeestadodelosdispositivosamonitorear,quefueenviada,esdecir0x803h.
Este proceso de decodificacin, funciona de manera similar, al visto en la seccin
5.2.2.9Procesodedecodificacin.

139
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

8. Ya que se obtuvo la palabra de estado de los dispositivos a monitorear, el


microcontrolador USB, podr identificar cul es el estado de los detectores y as
decidir,culessonloscomandosdealarmaquedebeenviarhaciaelservidor.Unavez
identificadosculessonloscomandosdealarmaquevanaserenviados,stossern
enviadosunotrasotro,atravsdelUSB.Sinembargo,esimportantemencionar,que
no siempre se van a enviar los comandos de alarma; solamente sern enviados,
cuando algn dispositivo monitoreado haya cambiado de estado, es decir, cuando
pasadeunestadoinactivoaunestadoactivo,ocuandoeldetectorhayapasadodeun
estadoactivoaunestadoinactivo.

9. Laaplicacinservidorrecibeel(los)comando(s)dealarmaylo(s)reenvaalcliente,a
travsdeinternet.

10. Laaplicacin cliente recibe el(los)comando(s) dealarmaenviadosporelservidor, y


lo(s),atravsdestaaplicacinsepodrsaber,culeselestadodelosdispositivos
monitoreados.
Proceso de comunicacin para el envo de las palabras de estado de los
dispositivosacontrolar.
Elprocesoquesellevaacabo,paralageneracinycodificacinensealesbandabase,delas
palabrasdeestadodelosdispositivosacontrolar,semuestraenlafigura5.2.33,elproceso
es muy similar al que se menciona en la seccin 5.2.3.3, en el subtema Proceso de
comunicacin para el envo de las palabras de estado de los dispositivos a monitorear. La
nicadiferencia,esqueahorasernverificadoslosestadosdelosdispositivosacontrolar.

140
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.32Ejemplodecomunicacinparaelmonitoreodelosdetectores,desdelaaplicacincliente.

141
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.33Ejemplodecomunicacinparaelmonitoreodelosdispositivosacontrolar,desdelaaplicacincliente.

142
Captulo5:Sistemaelectrnicodecomunicaciones

Sistemadeecontrolym
monitoreodedispositivossatravsdeInternetcon
nUSB

200
09

5.2.3.4Transmisorrinalmbriccousadoeneelenlacedemonitoreo.
misor inalmb
brico, ser el encargado enviar
e
inalm
mbricamente las palabras de estado de
d los
El transm
dispositivvosamonitorrearylaspalaabrasdeestaadodelosdisspositivoscon
ntrolados;esstaspalabrassern
enviadas, hacia el recceptor de RFF, del mdu
ulo USB. Est seccin, seer enfocada nicamentee a la
estructuraafsicadeltraansmisorinalmbricoparaaelenlacedeemonitoreo.
Comosemuestraene
eldiagramaelctricodelafigura5.2.34
4,eltransmisorinalmbriccoestcompuesto
or,yunmdu
ulodeRF,tran
nsmisor.
deunmiccrocontrolado

Figura5.2.34
4Diagramaael
ctricodeltranssmisorinalmbrricousadoenelmdulodemon
nitoreo.

Nota: las terminales DD1,


D
DD2, DD
D3, DD4 de la figura 5.2.3
34, estn con
nectadas a lo
os terminales DD1,
3, DD4, respe
ectivamente, de la figura 5.2.35. Y las terminales RA2,
R
RA3, RA
A4, RA5, RA6,, RC0,
DD2, DD3
143
Captulo
o5:Sistemaeelectrnicodeecomunicacio
ones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

RC1,RC2,RC4,RC5delafigura5.2.34,estnconectadasalasterminalesRA2,RA3,RA4,RA5,RA6,RC0,
RC1,RC2,RC4,RC5,respectivamente,delafigura5.2.20.
La funcin del microcontrolador codificador, es la de verificar los niveles de voltaje que son enviados
desde los detectores y desde el microcontrolador decodificador, de esta manera, el microcontrolador
codificadorpodrgenerarycodificarlaspalabrasde12bits,ensealesbandabase.Almismotiempo
queseestngenerandolassealesenbandabase,stassonenviadasalmdulotransmisordeRF,que
eselcircuitoTWSBS6,cuyafuncineslademodularytransmitirlasealbandabase,aunafrecuencia
de315MHz,moduladapormediodeASK.
Nota: Cabe recordar, que el microcontrolador decodificador, estar enviando por cada cable (vase
figura5.2.36),elestadodesusdispositivoscontrolados(vaseseccin5.2.2Mdulodecontrol)
ElcircuitoTWSBS6,sepuedealimentardesde1.5Vhasta12V,proporcionandounmayoralcance,a
mayorvoltajedealimentacin.
Comosepuedeobservar,estetransmisor,esmssimplequeelusadoenelenlacedecontrol(vase
figura 5.2.6), ya que ahora no se tiene conexin USB, y por lo tanto, tampoco necesitamos de un
osciladorexterno,quenosayudabaaalcanzarlos48MHz,necesariosparalograrlaconexinUSB;ser
suficienteconusarelosciladorinterno,quepuedeserconfiguradodesde32KHzhasta8MHz.Parael
microcontroladorcodificador,seutilizarlafrecuenciade8MHz,aselmicrocontroladorfuncionarde
unamanerarpidayadems,estonospermitirlograrfrecuenciasmscercanasalasdeseadas,pues
paracodificarseutilizaraneltemporizador1y2.
El funcionamiento de este transmisor, es muy similar al que ya se describi en la seccin 5.2.2.4
Transmisor inalmbrico para el mdulo de control, pero ahora al microcontrolador utilizado en el
mdulo de monitoreo, no le llegarn comandos de control, sino que ahora, la informacin ser
producida,apartirdelosnivelesdevoltajeenviadosporlosdispositivosdemonitoreo(detectores),y
por los niveles de voltaje enviados desde el microcontrolador decodificador (del mdulo de control).
Comoyasemencionpuedenser2nivelesdevoltajedistintos:nivelalto(5V)ynivelbajo(0V).

144
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Estas seales de voltaje, sern inyectadas en las terminales de entrada de informacin digital del
microcontroladorcodificador(vansefiguras5.2.32y5.2.32).Cadaterminalestasignadaparaverificar
el estado de un dispositivo de monitoreo, o para verificar el estado de un dispositivo a controlar, es
decir, para nuestro sistema, se estn utilizando 14 entradas digitales, 4 son asignadas para los
dispositivos a monitorear (detectores), y las otras 10, para verificar el estado de los dispositivos
controlados.
Entonces,laconexindelosdispositivosamonitorearquevamosasimular,eslaquesemuestraenla
figura5.2.35.

Figura5.2.35Diagramadeconexinsupuesta,entredispositivosamonitorearylasterminalesDD.

Nota:Porrazoneseconmicas,elsistemarealizadonocuentaconlosdetectoresmostradosenlafigura
5.2.35, en lugar de estos detectores, se colocaron interruptores tipo push button, para as simular la
activacindeundetector,cadavezquesepresionaelbotn.
La conexin para verificar el estado de los dispositivos a controlar, es la que se muestra en la figura
5.2.36.

145
Captulo5:Sistemaelectrnicodecomunicaciones

madecontrolymonitoreodediispositivosatrav
vsdeInternetcconUSB
Sistem

200
09

Figura5
5.2.36Diagramadelaconexinentreelm
microcontroladorde
ecodificadoryelmiccrocontroladorcodifiicador,paraelmonittoreodedispositivo
os.

146
Cap
ptulo5:Sistemaelectrnicodeco
omunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

5.2.3.5Programadelmicrocontroladorcodificador.
Eldiagramadeflujodelprogramadelmicrocontroladorcodificador,semuestraenlafigura5.2.37,se
puedeobservaralfinaldeestafigura,quesetieneuncicloenelquesiempreestarentrando(unbucle
while(TRUE)), por medio de este ciclo, alternadamente (aprox. cada 1.04 s) se estarn realizando, las
acciones1y2,quesemuestranacontinuacin.
1. Verificarelestadodelosdispositivosmonitoreados(verificarnivelesdevoltajeenlasterminales
correspondientes), guardar la palabra de estado de los dispositivos monitoreados, en la
variable info. Finalmente activar el temporizador 2, para que comience la codificacin de la
palabraguardadaeninfo.Pormediodelarutinadeserviciodeltemporizador2,serrealizada
28 veces la codificacin de la palabra info, generando seales en banda base, listas para ser
transmitidasporelmdulodeRFtransmisor.
2. Verificarelestadodelos dispositivosacontrolar (verificarnivelesdevoltajeenlas terminales
correspondientes),guardarlapalabradeestadodelosdispositivosacontrolar,enlavariable
info. Finalmente activar el temporizador 2, para que comience la codificacin de la palabra
guardadaeninfo.Pormediodelarutinadeserviciodeltemporizador2,serrealizada28veces
lacodificacindelapalabrainfo,generandosealesenbandabase,listasparasertransmitidas
porelmdulodeRFtransmisor.
De esta manera, cada 1.04 s, primero se codificarn 28 palabras de estado de los dispositivos
monitoreado,ydespusde1.04s,seenviarn28palabradeestadodelosdispositivosacontrolar.El
tiempode1.04segundos,sedebeaquecada1.04segundosexistepermisodetransmitir,estepermiso,
esdadoporlarutinadeserviciodeltemporizador1.

147
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.37Diagramadeflujodelprogramadelmicrocontroladorcodificador.

Rutinadeserviciodeltemporizador1.
Larutinadeservicio,serejecutadacadavezqueocurraundesbordamientoeneltemporizador1,es
decir,eltemporizadorllevarunacuentaensusregistrosde8bitsTMR1LyTMR1H;TMR1Leslaparte
bajayTMR1Heslapartealta,porlotanto,sepuededecirquesetieneunregistrode16bitsparael
temporizador1.Cuandosehayallegadoalnmero0xFFhenTMR1L,y0xFFhenTMR1H,serquelos
148
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

registrosvuelvanainiciarenceros,yexistirundesbordamiento,porlotanto,serejecutadalarutina
de servicio del temporizador 1. Entonces el temporizador 1, estar llevando la cuenta desde 0x0000h
hasta0xFFFFh,loqueenbasedecimalesdesde0hasta65535.
Lacuentaenelregistrodeltemporizador1(suponiendoqueTMR1LyTMR1H,esunsoloregistrode16
bits),seincrementarenuno,cada1/250KHz=4s,yaqueasfueconfiguradoeltemporizador1enel
programa principal del microcontrolador decodificador. Por lo tanto, el tiempo que transcurre desde
queelregistrodeltemporizadorseiniciaen0hasta65535,es
65536

262.144

Nota:Sehaceelproducto,porelnmero65535+1,yaqueeldesbordamientosucedecuandoelregistro
deltemporizador1seincrementadelnmero65535+1,yelregistrodeltemporizador1,vuelveaceros.
Enlafigura5.2.38,seobservaeldiagramadeflujodelarutinadeserviciodeltemporizador1.

Figura5.2.38Diagramadeflujodelarutinadeserviciodeltemporizador1.

149
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Rutinadeserviciodeltemporizador2.
Larutinadeserviciodeltemporizador2,serlaencargadadegenerarlassealesenbandabase,que
tienen codificada, a la palabra de 12 bits, que se encuentre guardada en la variable info. Como ya se
mencion,estarutinadeservicio,codificar28palabrasiguales,yasean28palabrasdeestadodelos
dispositivosmonitoreado28palabrasdeestadodelosdispositivosacontrolar.Mientraslarutinade
servicio,seencuentreenelprocesodecodificacin,lavariableinfonovaasermodificadaymantendr
suvalor,paraquesehagaposible28veces,lacodificacindelapalabraalmacenada,enlavariableinfo.
El diagrama de flujo, de la rutina de servicio del temporizador 2, se muestra en la figura 5.2.39.
Realmente,estarutinadeserviciofuncionadeunamaneramuysimilaralafuncinCODIFICA,vistaenla
seccin5.2.2.6.

Figura5.2.39Diagramadeflujodelarutinadeserviciodeltemporizador2.

150
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Las funciones COD_BIT_UNO, COD_BIT_CERO y T_12BITS, son las mismas, que se ven en la seccin
5.2.2.6 Programa codificador, en los subtemas Funcin COD_BIT_UNO, Funcin COD_BIT_CERO,
FuncinT_12BITS.
5.2.3.6Receptorinalmbricousadoenelmdulodemonitoreo.
Comopuedeobservarseenlafigura5.2.40,elreceptorinalmbricoestintegradoporelmdulodeRF,
receptor,yelmicrocontroladorUSB.
ElmdulodeRFreceptorqueseutiliza,eselcircuitoRWS3743,queseencargaderecibirydemodular
sealesdeRF,queseencuentrenenlafrecuenciade315MHzymoduladaspormediodeASK;conuna
tasadevelocidaddedatosde4.8Kbps.
Al igual que el en el receptor inalmbrico usado en el mdulo de control, el microcontrolador USB
interpretarlassealesbandabasequeelmduloRWS3743leinyecta.

151
Captulo5:Sistemaelectrnicodecomunicaciones

Sistemadeecontrolym
monitoreodedispositivossatravsdeInternetcon
nUSB

200
09

Figura5.2.4
40Diagramaelctricodelmdu
uloUSB,elcualiincluyeelrecepttorinalmbricodelmdulodemonitoreo.

5.2.3.7P
Procesoded
decodificaci
nyprogram
madecodificador
El proceso
o de decodifficacin que se lleva a cabo, en el recceptor inalm
mbrico usado
o en el mdu
ulo de
monitoreo
o,eselmismoqueelvisto
oenlaseccin5.2.2.9Pro
ocesodedeco
odificacin.
Enestecaaso,ladecod
dificacin,laeestarrealizaandocontinuaamenteelmiicrocontrolad
dorUSB,siem
mprey
cuando,eelmicrocontroladorUSB,n
noseencuen
ntretransmitiiendoinformacin;estacondicinsep
puede
ver, en el diagrama de flujo de la rutina de seervicio del temporizador 2,
2 que se mu
uestra en la figura
f
5.2.41.

152
Captulo
o5:Sistemaeelectrnicodeecomunicacio
ones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.41Diagramadeflujodelarutinadeserviciodeltemporizador2,delmicrocontroladorUSB.

Ahorasevaasuponerentonces,queexisteunatransmisinpendiente,esdecir,quetx_pend=0,porlo
tantoserinvocadalafuncinDECODIFICA,queeslamismafuncinqueseveenlaelsubtemaFuncin
VERIFICAdelaseccin5.2.2.10Programadecodificador.Sinembargo,elprocesodedecodificacin
comienzadesdelarutinadeserviciodelainterrupcinexterna0,delmismomicrocontroladorUSB;se
sugiere,leerlaseccin5.2.2.10Programadecodificador,yaqueelprocesodedecodificacinesmuy
similar al que se menciona en esa seccin, con la diferencia de que en lugar de poner en alto alguna
terminaldelmicrocontrolador(encenderundispositivo),seenviarncomandosdemonitoreo,comose
muestraenlasfiguras5.2.32y5.2.33.
5.2.4Diseodelasantenasutilizadasenlascomunicacionesinalmbricas
Para lograr la comunicaciones inalmbricas, se estarn utilizando dos frecuencias distintas, una
frecuenciaparacadamdulo;esdecirenelmdulodecontrol,losdispositivossecomunicana433.92
MHz,yenelmdulodemonitoreolosdispositivossecomunicana315MHz,porestarazn,encada
mduloseestarnusandoantenasdedistintalongitud.

153
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Lasantenasquesernutilizadasenelsistema,sernantenastipomonopolode/4,esdecir,laantena
serunelementoconductor(alambredecobre)quetendrunalongitudde/4,dondeeslalongitud
deondadelasealpormediodelaqueseestncomunicandolosdispositivos.
Paraencontrarlalongituddeondadeunaseal,seutilizalaecuacin52,endondeceslaconstantede
lavelocidaddelaluz,queparausosprcticosutilizaremoselvalor
/

3 10 m/s.

Ecuacin52.Ecuacinparacalcularlalongituddeondadeunaseal.
Clculodelasantenasutilizadasenelmdulodecontrol
Primeramentesecalculalalongituddeonda,paralasealdefrecuenciade433.92MHz.
/

3 10
433.92 10

0.69137

Porlotantolaantenatendrunalongitud.
0.69137
4

0.17284

Elmonopolode/4usadoenelmdulodecontrol,serde17.28cm.
Clculodelasantenasutilizadasenelmdulodemonitoreo
En el mdulo de monitoreo, las seales transmitidas y recibidas tienen la frecuencia de 315 MHz, se
calculalalongituddeondaparaestaseal.
/

3 10
315 10

0.95238

Porlotantolaantenatendrunalongitud:
154
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

0.95238
4

0.23809

Elmonopolode/4usadoenelmdulodemonitoreo,serde23.8cm.

155
Captulo5:Sistemaelectrnicodecomunicaciones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Estudioeconmico
El presente apartado tiene por objetivo, el determinar el costo total del proyecto desarrollado, para
esto, se hace un desglose del material utilizado para la construccin de los circuitos construidos, del
materialsoftwareyelcostodelosrecursoshumanos.
Se seleccion como referencia un sistema de control, para una casa habitacin de tamao medio. El
escenariodetamaomedioesunareferenciaidealparaelestudioeconmico.
A continuacin se enumeran los componentes electrnicos utilizados, divididos en varios
mdulos que son los que conforman la parte electrnica del proyecto, para posteriormente
presentar su costo unitario y total.

EnelmduloUSB
>1microcontroladorPIC18F2550
>1Baseparacircuitointegradode28terminales.
>1cristaldecuarzode4MHz
>1capacitorde47F
>1capacitorde100nF
>2capacitoresde27pF
>1resistenciade10K
>4resistenciasde330
>5LEDs
>1mdulodeRFtransmisorTWS433
>1mdulodeRFreceptorRWS315
Paraelcontroldedispositivos
>1microcontroladorPIC18F2550
156
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

>1Baseparacircuitointegradode28terminales.
>1capacitorde0.1F
>1resistenciade10K
>5resistenciasde330
>2LEDs
>3focos
>3optoacopladoresMOC3011
>3TRIAC2N6071
>1mdulodeRFreceptorRWS433
>Fuentedealimentacinde5Vdecorrientedirectade

Paraelmonitoreodedispositivos
>1microcontroladorPIC18F2550
>1Baseparacircuitointegradode28terminales.
>1capacitorde0.1F
>1resistenciade10K
>2resistenciasde330
>2LEDs
>1mdulodeRFtransmisorTWS315
>4interruptorestipopushbutton.
>Fuentedealimentacinde5Vdecorrientedirectade
157
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Componentesextra
>1cmaraIP
>1Routerinalmbrico2wire
>CablesdedatosdecategoraCat5e
>Placasfenlicas
> Programador GTP USB Lite

Enlasiguientetablasemuestranloscostosdeloscomponentes,conestoobtendremoselcostototal
delproyectoenlacuestinelectrnica.
Componente

Cantidad Costounitario Costototal

Microcontroladores
BaseparaC.I.de18terminales
Capacitor
Resistencia
LED
MdulodeRFTWS433
MdulodeRFRWS433
MdulodeRFTWS315

3
3
6
14
9
1
1
1

$100
$3
$4
$0.5
$1.5
$95
$95
$95

$300
$9.00
$24.00
$7.00
$13.50
$95.00
$95.00
$95.00

MdulodeRFTWS315
CableCat.5
Focos
MOC3011
TRIAC2N6071

1
4
3
3
3

$95
$8.00p/metro
$30.00
$14
$7

$95.00
$32.00
$90.00
$42.00
$21.00

Interruptor tipo push-button

$2

$14.00

Placafenlica

$40.00

ProgramadorGTPUSBLite

$40
$450

$450.00

CmaraIP

$1800

$1800.00

PCServidor

$3000

$3000.00

TOTAL

$6222.50
158

Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Ahora se determinarn los costos que tienen que ver con las herramientas software as
como con los recursos humanos.

Licencias
Afortunadamente contamos con un convenio con la empresa Microsoft mediante el cual se nos
proporciona de manera gratuita las licencias del software que vamos a utilizar en nuestro proyecto
comoeselcasodeVisualStudio.Porloanteriorelcostoporlalicenciasesnuloynoafectaralclculo
del estudio econmico, sin embargo, a continuacin se presenta una tabla con los precios de los
paquetesdesoftwareutilizados.
Herramienta

Precio

VisualStudio2008EdicinEstndar $3931.85
CompiladorCCSv.3.235

$6750.00

WinPic800

gratuito

TOTAL

$10681.85

Lospreciosanterioresfueroncalculadostomandoelpreciodeldlara$13.50pesos.

Costosdeprogramacin
Segndatosinvestigados,unprogramadorcobraalrededorde$5000.00mensuales.Considerandoque
elproyectosedesarrollentresmeses,entonces,elcostopormanodeobraserade$15000.00.
Paralapartedelarmadoydiseodeloscircuitoselectrnicos,seconsideranecesarioauntcnicoen
electrnicaconunsueldomensualde$8000.00,entonces,considerandoigualmentequeelproyectose
desarrollaentresmeses,entotalselepagara$24000.00.
Podemos calcular entonces, que el costo total por concepto de mano de obra sera de:
$39000.00

159
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Costo total del proyecto


Para determinar el costo total del proyecto sumamos los costos totales obtenidos
anteriormente.

Concepto

Costo

Componenteselectrnicos $6222.50
Licenciassoftware

$10681.85

Manodeobra

$39000.00

TOTAL

$55904.35

160
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Pruebasyresultados
El servicio de Internet que fue utilizado tanto en el ordenador que funciona como servidor, y en el
ordenador del usuario, es un servicio Internet de banda ancha, que utiliza la tecnologa ADSL, cuya
velocidad de conexin entrante es de 2048 Kbps y la velocidad de conexin saliente es de 384Kbps
(segnelproveedordeservicios).
ParalograrlacomunicacinentreClienteServidor,atravsdeInternet,primeramente,seconfigurel
ordenadorenelqueserejecutadalaaplicacinServidor,recordemosqueesteordenadorseencuentra
conectadoaunrouter,enelcualfuenecesarioabriralgnpuertoqueestarescuchando,esdecir,se
estar esperando una peticin de conexin en ese puerto; para que despus pueda ser establecida la
conexin.Enlaspruebasquefueronrealizadas,seutilizelpuerto5050paralaconexin,debidoaque
ste puerto no est destinado a un uso en especfico. Una vez abierto el puerto 5050, se ejecut la
aplicacinServidor,yseingreselpuertoquefueabierto(5050),posteriormentesepresionelbotn
Escuchar, de esta manera la aplicacin Servidor estar esperando una conexin entrante al puerto
5050.
Unavezqueseconfigurelservidor;enelordenadordelusuarioquevaacontrolarymonitorearlos
dispositivos, se ejecut la aplicacin Cliente y se ingres la direccin IP de Internet, del servidor, as
como tambin se ingres el puerto que se abri en el router del servidor; y para realizar la conexin
entreClienteServidor,sepresionelbotnConectar.
Se comprob la comunicacin entre Cliente y Servidor, pues cuando se dio clic en algn botn de
encendidooapagadodealgndispositivo,uncomandodecontrol,eraenviadohaciaelservidor.Para
visualizarfcilmentequesehayaenviadoyrecibidoestecomando,lasaplicaciones(ClienteyServidor),
cuentan con una pequea ventana en la que se pueden ver todos los comandos que se han enviado
(para aplicacin Cliente) recibido (para aplicacin Servidor). Como se mencion, las aplicaciones
ClienteyServidor,secomunicangraciasalcontrolWinsock,ylasprimeraspruebasfueronhechascon
unasimplecomunicacinentreaplicaciones,lascualesintercambiabanmensajesdetexto,unavezque
estacomunicacinselogr,esdecir,queserecibieranyenviaranmensajesentrelasdosaplicaciones,
161
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

seadaptelcdigocorrespondienteparaqueesosmensajesfuesenlasinstruccionesdecontrolparalos
dispositivos.
En el Servidor, tambin pudo probarse la comunicacin USB, pues cuando se pulsa el botn de
encendido o apagado de algn dispositivo comenzaba la transmisin inalmbrica, y un LED, en el
mdulo USB, indica que se est transmitiendo informacin. Cuando se transmite sta informacin de
manerainalmbrica,enelladodelreceptor,sepuedeobservarcmoseenciendeoapaga,eldispositivo
alqueseordenhacerlo.
Con la comunicacin inalmbrica exitosa, se logr corroborar que los microcontroladores, estaban
funcionando de manera adecuada, por una parte en el transmisor, el microcontrolador es un buen
codificador,yporotraparte,enelreceptor,elmicrocontroladoresunbuendecodificador.
El circuito utilizado en la etapa de potencia, funcion de una manera muy adecuada, pues no hubo
problemaalgunoparaencenderoapagaralgndispositivo,pormediodelcircuitodepotencia.
Para poder utilizar la cmara IP, se abri otro puerto en el router que est del lado del servidor, fue
posibleestablecercomunicacinconlaaplicacinquehaceposiblelamanipulacindelacmara,para
estepropsito,seagregunbotnalaaplicacinClientecuyoeventoseencargadeabrirelexplorador
WebconladireccinIPcorrespondientealaaplicacindelacmara.Primero,laspruebasconlacmara
fueron hechas en una red local, logrando establecer comunicacin de manera fcil, una vez que
entendimoselfuncionamientodelaaplicacindelacmara,haciendopruebaslocalmente,seprocedi
aprobarlaconexinatravsdeInternet.

162
Estudioeconmico

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Conclusiones
Se logr disear, desarrollar e implementar, un sistema de control a distancia que cumple con el
objetivodefacilitarlamanipulacindedispositivossintenerqueestarfrentealosmismosyquehace
uso de los beneficios que la tecnologa ofrece actualmente como los son el Internet y la velocidad de
transmisindedatosadispositivosmediantelainterfazUSB.
El proyecto desarrollado en este trabajo puede tener diversas aplicaciones para el hogar, podra ser
adaptado para: activar electrodomsticos, activar bombas de agua, controlar seguros de puertas,
controlar y verificar la temperatura, realizar vigilancia, monitorear el funcionamiento de dispositivos,
verificarlascondicionesdealgunosdispositivosydiversasaplicacionesmsquerequieranelcontroly
monitoreoadistancia.Elproyecto,seenfocaasatisfacerlanecesidadquetienenlaspersonasdecontar
condispositivosquelefacilitenlavida.
Secumpliconelobjetivogeneralpropuestoaliniciodelpresentetrabajo,elcualera:Implementarun
sistema de control de dispositivos a travs de Internet, usando la interfaz USB, la parte de control a
distanciaatravsdeInternet,fueresueltaconeldesarrollodenuestrasaplicacionesClienteyServidory
paraelcontroldelosdispositivosatravsdelainterfazUSB,seutilizunmicrocontroladorqueposeela
caractersticaprecisamentedetrasmitirdatosatravsdeestainterfaz.Enconjunto,nuestrosistema,es
capazdecontrolarundispositivoadistancia,puesseconsiguitransmitirinformacindecontroltanto
dentrodeunaredlocalcomoatravsdeInternet.
Laspruebasquesellevaronacaboduranteeldesarrollodelsistema,nospermitieronirmejorandoel
diseo del mismo. En un principio, por ejemplo, se tena pensado utilizar la interfaz paralela de la
computadora para enviar informacin al microcontrolador o recibir informacin de l, sin embargo,
actualmente son pocos los equipos que cuentan con este puerto, al grado de haberse vuelto casi
obsoleto, por esta razn, se decidi utilizar la interfaz USB, pues sta ha evolucionado bastante y
cualquier equipo cuenta con una o varias de estas interfaces, aunque su implementacin es ms
compleja,debidoaqueserequieredeundriverparaeldispositivoqueesconectadoylasrutinaspara
transmitiryrecibirinformacinsonmselaboradas,elfabricantedelmicrocontroladorutilizadoeneste
proyecto proporciona el controlador correspondiente y es necesario el uso de una biblioteca para
trasmitir y recibir informacin a travs de USB, agregada a la aplicacin Servidor. Debido a que nos
enfocamosmsaldiseodelsistematantodehardwarecomodesoftware,nosetuvoeltiempoyapara
personalizarelcontrolador,estoes,laedicindeldriversuministradoporMicrochipdetalformaque
aparecieraenelAdministradordeDispositivosunanuevaclaseconuniconopersonalizado.Paraesto
era necesario crear una DLL que exportara ese icono y despus compilarla con ayuda de la DDK
(DevelopmentDriverKit)deMicrosoft.
163
Visinfutura

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Elsistematienelacapacidaddeinformarelestadodelosdispositivoscontroladosmedianteelchequeo
delniveldevoltajeenlasterminalesdelmicrocontroladorencargadodemanipularlos,estonoasegura
queeldispositivoseencuentrarealmenteencendidoyaquestepuedepresentaralgunafallasinqueel
sistemalodetecte,porejemplo,unfoco,podraestarfundidoperoelsistemadetectaraquelaterminal
del microcontrolador correspondiente al control de ese foco est activa y mostrara un estado de
funcionamientoadecuado.
Parasimularelmonitoreodedispositivos,fueronutilizadosinterruptores,peroalsistemaselepueden
conectardetectoresdepresencia,dehumo,degas,etc.
Paralacomunicacindenuestrasaplicacionesatravsdelared,seutilizelcontrolWinsock,estonos
ahorr mucho cdigo y tiempo de programacin, ya que la otra forma de hacerlo era con sockets. La
implementacinenelproyectodeestecontrol,sefacilitdebidoalagrancantidaddeinformacinque
hay en Internet, la comunicacin entre nuestras aplicaciones, tiene sus bases en uno de los ejemplos
mscomunesquesepuedenencontrarsobrelautilizacindelWinsock,setratadedosaplicacionesque
intercambianmensajesdetexto(chat),fuegraciasaesteejemploquesepudoestudiarelprocesode
intercambiodeinformacinentredosaplicaciones,yunavezqueselogrimplementaresteejemploen
unaredlocal,seleadaptaroninstruccionesalcdigo,quepermitieranenviaryrecibirlasinstrucciones
decontrolparalosdispositivos.

Visinfutura
Son muchas las aplicaciones que se le pueden dar a nuestro sistema, as como las mejoras que se le
pueden hacer, a continuacin se enuncian algunas propuestas, que creemos son importantes para
implementacionesfuturas:
1. NuestraaplicacinServidorsloatiendeaunClientealavez,sepodradesarrollarunServidor
que sea capaz de atender a varios Clientes a la vez, mediante la implementacin de
subprocesamiento mltiple. As, un dispositivo que posea varios mdulos de funcionamiento,
podrasercontroladopordiferentesusuarios,localizadosendistintoslugares.

2. PodraseragregadoalasaplicacionesClienteyServidor,unmdulodemensajesinstantneos,
estoconelobjetivodepermitir,queoperadoresendiferenteslugarespuedancomunicarse,por
ejemplo,paradaruninformedelestadodealgndispositivo.

3. La parte de monitoreo de los dispositivos con la cmara IP, no se desarroll del todo en el
proyecto, por lo que se propone un sistema que trabaje con una base de datos, en la que se

164
Visinfutura

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

vayan almacenando los eventos que van sucediendo, la fecha en que ocurren, el identificador
delvideocorrespondienteyunadescripcindelosucedido.

4. Enelproyectofueronutilizadostresmicrocontroladoresparalacomunicacininalmbrica,un
microcontrolador(conectadoalServidor)ayudaalatransmisinyrecepcin,otro(colocadoen
el mdulo de control) ayuda nicamente a la recepcin y un tercero ayuda a transmitir las
palabras de monitoreo. Sin embargo, es posible reducir el nmero de microcontroladores
utilizadosaslodos,unoconectadoenelServidorqueayudealatransmisinyrecepcinyotro
paratransmitiryrecibirinformacindemonitoreoycontrol.

165
Visinfutura

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

166
Conclusiones

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ApndiceA.LibreraparaUSB:MPUSBAPI.DLL
ParaunamayorfacilidaddedesarrollodeaplicacionesbasadasenelbusUSB,Microchiphacreadoun
archivodllenelqueproporcionalasfuncionesdeaccesoalpuertoUSBconunmicrocontroladordela
familiaPIC18Fxx5x.
Paraunfuncionamientocorrecto,senecesitaeldrivermchpusb.sys.
FUNCIONES
1.1.MPUSBGETDLLVERSION(VOID)
LeeelnivelderevisindelMPUSAPI.dll.Esunnivelderevisinde32bits.Estafuncinnodevuelvela
versindelcdigo,norealizanadaconelUSB.Devuelvelaversindeladllenformatohexadecimalde
32bits.
MPUSBGetDLLVersion()
1.2.MPUSBGETDEVICECOUNT(PVID_PID)
DevuelveelnmerodedispositivoconVID_PIDasignado.
pVID_PID:Input:cadenadecaracteresdelnmerodeidentificacinasignado.
MPUSBGetDeviceCount(vid_pid)DocumentocreadoporSlalenparaElectronicsStrangeWorld
1.3.MPUSBOPEN(INSTANCE,PVID_PID,PEP,DWDIR,DWRESERVED)
DevuelveelaccesoalpipedelEndpointconelVID_PIDasignado.
Todas las pipes se abren con el atributo FILE_FLAG_OVERLAPPED. Esto permite que MPUSBRead,
MPUSBWriteyMPUSBReadInttenganunvalordetimeout.
Nota:elvalordeltimeoutnotienesentidoenunapipesncrona.
instance: Input: Un nmero de dispositivo para abrir. Normalmente, se utiliza primero la llamada de
MPUSBGetDeviceCountparasabercuantosdispositivoshay.

167
ApndiceA

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Es importante entender que el driver lo comparten distintos dispositivos. El nmero devuelto por el
MPUSBGetDeviceCount tiene que ser igual o menor que el nmero de todos los dispositivos
actualmenteconectadosyusandoeldrivergenrico.
Ejemplo:
SihaytresdispositivosconlossiguientesPID_VIDconectados:
Dispositivotipo0,VID0x04d8,PID0x0001
Dispositivotipo1,VID0x04d8,PID0x0002
Dispositivotipo2,VID0x04d8,PID0x0003
SieldispositivoquenosinteresatieneVID=0x04d8yPID=0x0002elMPUSBGetDeviceCountdevolver
un1.
Al llamar la funcin tiene que haber un mecanismo que intente llamar MPUSOpen() desde 0 hasta
MAX_NUM_MPUSB_DEV.Setienequecontarelnmerodellamadasexitosas.Cuandoestenmerosea
igual al nmero devuelto por MPUSBGetDeviceCount, hay que dejar de hacer las llamadas porque no
puedehabermsdispositivosconelmismoVID_PID.
pVID_PID: Input: String que contiene el PID&VID del dispositivo objetivo. El formato es
vid_xxxx&pid_yyyy.DondexxxxeselvalordelVIDyelyyyyeldelPID,losdosenhexadecimal.
Ejemplo:
Si un dispositivo tiene un VID=0x04d8 y un PID=0x000b, el string de entrada es:
vid_0x04d8&pid_0x000b.
pEP: Input: String con el nmero del Endpoint que se va a abrir. El formato es \\MCHP_EPz o
\MCHP_EPz dependiendo del lenguaje de programacin. Donde z es el nmero del Endpoint en
decimal.
Ejemplo:
\\MCHP_EP1o\MCHP_EP1

168
ApndiceA

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

EsteargumentopuedeserNULL(nulo)paracrearlazosconEndpointsdefuncionesnoespecficas.Las
funcionesespecficasson:MPUSBRead,MPUSBWrite,MPUSBReadInt.
1.4.MPUSBREAD(HANDLE,PDATA,DWLEN,PLENGTH,DWMILLISECONDS)
handle: Input: Identifica la pipe del Endpoint que se va a leer. La pipe unida tiene que crearse con el
atributodeaccesoMP_READ.
pData:Output:Punteroalbufferquerecibeeldatoledodelapipe.
dwLen:Input:Especificaelnmerodebytesquehayqueleerdelapipe.
pLenght: Output: Puntero al nmero de bytes ledos. MPUSBRead pone este valor a cero antes de
cualquierlecturaodechequearunerror.
dwMilliseconds: Input: Especifica el intervalo de timeout en milisegundos. La funcin vuelve si
transcurreelintervaloaunquenosecompletelaoperacin.SidwMilliseconds=0,lafuncincomprueba
los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de timeout
nuncatermina.
MPUSBRead(myInPipe,VarPtr(s(0)),DatosDeseados,Datos,1000)
1.5.MPUSBWRITE(HANDLE,PDATA,DWLEN,PLENGTH,DWMILLISECONDS)
handle:Input:IdentificalapipedelEndpointquesevaaescribir.Lapipeunidatienequecrearseconel
atributodeaccesoMP_WRITE.
pData:Output:Punteroalbufferquecontienelosdatosquesevanaescribirenlapipe.
dwLen:Input:Especificaelnmerodebytesquesevanaescribirenlapipe.
pLenght:Output:Punteroalnmerodebytesqueseescribenalllamarestafuncin.MPUSBWritepone
estevaloraceroantesdecualquierlecturaodechequearunerror.
dwMilliseconds: Input: Especifica el intervalo de timeout en milisegundos. La funcin vuelve si
transcurreelintervaloaunquenosecompletelaoperacin.SidwMilliseconds=0,lafuncincomprueba
los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de timeout
nuncatermina.

169
ApndiceA

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

MPUSBWrite(myOutPipe,VarPtr(SendData(0)),bytes,VarPtr(bytes),1000)
1.5.MPUSBREADINT(HANDLE,PDATA,DWLEN,PLENGTH,DWMILLISECONDS)
handle: Input: Identifica la pipe del Endpoint que se va a leer. La pipe unida tiene que crearse con el
atributodeaccesoMP_READ.
pData:Output:Punteroalbufferquerecibeeldatoledodelapipe.
dwLen:Input:Especificaelnmerodebytesquehayqueleerdelapipe.
pLenght: Output: Puntero al nmero de bytes ledos. MPUSBRead pone este valor a cero antes de
cualquierlecturaodechequearunerror.
dwMilliseconds: Input: Especifica el intervalo de timeout en milisegundos. La funcin vuelve si
transcurreelintervaloaunquenosecompletelaoperacin.SidwMilliseconds=0,lafuncincomprueba
los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de timeout
nuncatermina.
MPUSBReadInt(myOutPipe,VarPtr(SendData(0)),bytes,VarPtr(bytes),1000)
1.6.MPUSBCLOSE(HANDLE)
Cierraunadeterminadaunin.
handle:Input:IdentificalapipedelEndpointquesevaacerrar.
MPUSBClose(myOutPipe)
Interrupt:tipointerrupcin
Isochronous:tiposncrono
Nota:Inputyoutputserefierealosparmetrosdesignadosenlasllamadasaestasfunciones,que
sonloopuestoalossentidoscomunesdesdelaperspectivadeunaaplicacinhaciendollamadas.
1.7.DECLARACINDELASFUNCIONES
En el ltimo punto de la librera, se comenta como incluir las funiones en varios lenguajes de
programacin.
170
ApndiceA

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

1.7.1.C#
Sedeclaracon#include"_mpusbapi.h".Losdatosdevueltosson:
DWORD_MPUSBGetDLLVersion(void)
DWORD_MPUSBGetDeviceCount(PCHARpVID_PID)
HANDLE _MPUSBOpen(DWORD instance, PCHAR pVID_PID, PCHAR pEP, DWORD dwDir, DWORD
dwReserved);
BOOLEAN_MPUSBClose(HANDLEhandle);
DWORD _MPUSBRead(HANDLE handle, PVOID pData, DWORD dwLen, PDWORD pLength, DWORD
dwMilliseconds);
DWORD _MPUSBWrite(HANDLE handle, PVOID pData, DWORD dwLen, PDWORD pLength, DWORD
dwMilliseconds);
DWORD _MPUSBReadInt(HANDLE handle, PVOID pData, DWORD dwLen, PDWORD pLength, DWORD
dwMilliseconds);

171
ApndiceA

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ApndiceB.Cdigos,aplicacionesClientey
Servidor
En este apndice se presentan los cdigos de las aplicaciones Cliente y Servidor, las cuales fueron
programadasutilizandoellenguajeC#.Elcdigotienecomentariosparaunamejorcomprensindelas
funcionesquehayenelmismo.

AplicacinCliente
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;

namespace AplicacionCliente
{
public partial class AplicacionCliente : Form
{
bool isConnected = false;
static int conteo=0;
static int conteo2 = 0;
static int alarma = 0;
public AplicacionCliente()
{
InitializeComponent();
this.axWinsock1.Error += new
AxMSWinsockLib.DMSWinsockControlEvents_ErrorEventHandler(this.axWinsock1_Erro
r);
this.axWinsock1.ConnectEvent += new
System.EventHandler(this.axWinsock1_ConnectEvent_1);
this.axWinsock1.DataArrival += new
AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEventHandler(this.axWinsock
1_DataArrival);
}

172
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

public void btnConectar_Click(object sender, EventArgs e)


{
if (isConnected == false)
{
//Con try catch, controlamos los errores
try
{
//Se cierra el control si est abierto
axWinsock1.Close();
//Se llama al mtodo Connect
axWinsock1.Connect(txtIP.Text, txtPuerto.Text);
//Establece la variable isConnected a true
isConnected = true;
lblEstado.Visible = true;
lblEstado.Text = "Conectado por el puerto:" +
txtPuerto.Text;
lblEstado.ForeColor = Color.White;
imgDesconec.Visible = false;
imgConectado.Visible = true;
txtMensajes.ForeColor = Color.Green;
txtMensajes.Text = "Estas conectado";
btnConectar.Enabled = false;
btnDesconec.Enabled = true;
}
//Se muestran las Excepcines ocurridas
catch
(System.Windows.Forms.AxHost.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
imgDesconec.Visible = true;
imgConectado.Visible = false;
txtMensajes.ForeColor = Color.Red;
txtMensajes.Text = "Desconectado";
btnConectar.Enabled = true;
btnDesconec.Enabled = false;
isConnected = false;
}
catch (Exception exce)
{
ListBoxLog.Items.Add(exce.Message);
imgDesconec.Visible = true;
imgConectado.Visible = false;
txtMensajes.ForeColor = Color.Red;
txtMensajes.Text = "Desconectado";
btnConectar.Enabled = true;
btnDesconec.Enabled = false;
isConnected = false;
}
}
}
private void btnDesconec_Click(object sender, EventArgs e)

173
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

{
try
{
this.ListBoxLog.Items.Add("Desconectado...");
lblEstado.Visible = true;
lblEstado.ForeColor = Color.WhiteSmoke;
lblEstado.Text = "Desconectado";
imgDesconec.Visible = true;
imgConectado.Visible = false;
txtMensajes.ForeColor = Color.Red;
txtMensajes.Text = "Desconectado";
btnConectar.Enabled = true;
btnDesconec.Enabled = false;
isConnected = false;
axWinsock1.Close();
}
catch
{
MessageBox.Show("Ocurri un error,el puerto no esta abierto",
"ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//******************Funcion para enviar dato**************************
public void Envio_Dato(int dato)
{
try
{
//si esta conectado puede enviar informacin
if (isConnected)
{
//esto se enva la informacin que tenga
//textbox txtMsg hacia el servidor
axWinsock1.SendData(dato);
//con esto visualizamos en pantalla
//el mensaje que se acaba de enviar
ListBoxLog.Items.Add("Cliente- " + axWinsock1.LocalIP + ": " + dato);
}
else
MessageBox.Show("No se esta conectado con el servidor");
}
catch (AxMSWinsockLib.AxWinsock.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
}
catch (Exception ex)
{
ListBoxLog.Items.Add(ex.Message); } }

174
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

void axWinsock1_Error(object sender,


AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent e)
{
ListBoxLog.Items.Add("Error : " + e.description);
isConnected = false;
imgDesconec.Visible = true;
imgConectado.Visible = false;
txtMensajes.ForeColor = Color.Red;
txtMensajes.Text = "Desconectado";
btnConectar.Enabled = true;
btnDesconec.Enabled = false;
isConnected = false;
}
//Evento DataArrival del control Winsock
public void axWinsock1_DataArrival(object sender,
AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
//creamos una variable para obtener
//los datos que llegaron
int data = 0;
//creamos otra variable tipo object
//porque el mtodo que se utiliza para
//recibir datos es object
object dat = (object)data;
//obtenemos la informacin que envi
//el servidor en forma de object
axWinsock1.GetData(ref dat);
//hacemos un cast a esa variable
//y la guardamos en la variable data
data = (int)dat;
Estados(data);
}
//Mtodo para conocer cul alarma fue activada
private void Estados(int alarma)
{
ListBoxLog.Items.Add("Servidor - " + axWinsock1.RemoteHostIP + ":
" + alarma);
if (alarma == 14)
{
MessageBox.Show("ALARMA ACTIVADA", "Alarma",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
timerAlarmas.Enabled = true;
}
if (alarma == 31)
{
MessageBox.Show("ALARMA 1 ACTIVADA", "Alarma",
MessageBoxButtons.OK, MessageBoxIcon.Warning);

175
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

}
if (alarma == 32)
{
MessageBox.Show("ALARMA 2 ACTIVADA", "Alarma",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
if (alarma == 33)
{
MessageBox.Show("ALARMA 3 ACTIVADA", "Alarma",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
//********Estado de los dispositivos (Encendidos)************
if (alarma == 61)
{
btnRecamara1ON.Visible = true;
btnRecamara1OFF.Visible = false;
lblRec1.Text = "Recamara 1: Encendido";
}
if (alarma == 62)
{
btnRecamara2ON.Visible = true;
btnRecamara2OFF.Visible = false;
lblRec2.Text = "Recamara 2: Encendiddo";
}
if (alarma == 63)
{
btnRecamara3ON.Visible = true;
btnRecamara3OFF.Visible = false;
lblRec3.Text = "Recamara 3: Encendido";
}
if (alarma == 64)
{
btnSalaOff.Visible = false;
btnSalaOn.Visible = true;
lblSala.Text = "Sala: Encendido";
}
if (alarma == 65)
{
btnPasilloOn.Visible = true;
btnPasilloOff.Visible = false;
lblPasillo.Text = "Pasillo: Encendido";
}
if (alarma == 66)
{
btnCocinaOn.Visible = true;
btnCocinaOff.Visible = false;
lblCocina.Text = "Cocina: Encendido";
}
if (alarma == 67)

176
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

{
btnExteriorOn.Visible = true;
btnExteriorOff.Visible = false;
lblComedor.Text = "Comedor: Encendido";
}
if (alarma == 68)
{
btnCerraduraOn.Visible = true;
btnCerraduraOff.Visible = false;
label11.Text = "Cerradura: Abierta";
}
if (alarma == 69)
{
btnBombaAgua.Text = "Apagar";
lblBomba2.Text = "Bomba: Encendida";
}
if (alarma == 70)
{
btnBoiler.Text = "Apagar";
lblBoiler2.Text = "Boiler: Encendido";
}
//********Estado de los dispositivos (Apagados)*****************
if (alarma == 41)
{
btnRecamara1ON.Visible = false;
btnRecamara1OFF.Visible = true;
lblRec1.Text = "Recamara 1: Apagado";
}
if (alarma == 42)
{
btnRecamara2ON.Visible = false;
btnRecamara2OFF.Visible = true;
lblRec2.Text = "Recamara 2: Apagado";
}
if (alarma == 43)
{
btnRecamara3ON.Visible = false;
btnRecamara3OFF.Visible = true;
lblRec3.Text = "Recamara 3: Apagado";
}
if (alarma == 44)
{
btnSalaOff.Visible = true;
btnSalaOn.Visible = false;
lblSala.Text = "Sala: Apagado";
}
if (alarma == 45)
{
btnPasilloOn.Visible = false;
btnPasilloOff.Visible = true;
lblPasillo.Text = "Pasillo: Apagado";

177
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

}
if (alarma == 46)
{
btnCocinaOn.Visible = false;
btnCocinaOff.Visible = true;
lblCocina.Text = "Cocina: Apagado";
}
if (alarma == 47)
{
btnExteriorOn.Visible = false;
btnExteriorOff.Visible = true;
lblComedor.Text = "Comedor: Apagado";
}
if (alarma == 48)
{
btnCerraduraOn.Visible = false;
btnCerraduraOff.Visible = true;
label11.Text = "Cerradura: Cerrada";
}
if (alarma == 49)
{
btnBombaAgua.Text = "Encender";
lblBomba2.Text = "Bomba: Apagada";
}
if (alarma == 50)
{
btnBoiler.Text = "Encender";
lblBoiler2.Text = "Boiler: Apagado";
}
}
public void axWinsock1_ConnectEvent_1(object sender, EventArgs e)
{
ListBoxLog.Items.Add("Conectado con el servidor en: " +
axWinsock1.RemoteHostIP);
isConnected = true;
}

//Eventos de los botones en la interfaz grfica


private void Recamara1OFF_Click(object sender, EventArgs e)
{
Envio_Dato(101);
btnRecamara1ON.Visible = true;
btnRecamara1OFF.Visible = false;
}
private void Recamara1ON_Click(object sender, EventArgs e)
{
Envio_Dato(01);

178
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

btnRecamara1OFF.Visible = true;
btnRecamara1ON.Visible = false;
}
private void Recamara2ON_Click(object sender, EventArgs e)
{
Envio_Dato(02);
btnRecamara2ON.Visible = false;
btnRecamara2OFF.Visible = true;
}
private void Recamara2OFF_Click(object sender, EventArgs e)
{
Envio_Dato(102);
btnRecamara2OFF.Visible = false;
btnRecamara2ON.Visible = true;
}
private void CocinaOff_Click(object sender, EventArgs e)
{
Envio_Dato(106);
btnCocinaOff.Visible = false;
btnCocinaOn.Visible = true;
}
private void CocinaOn_Click(object sender, EventArgs e)
{
Envio_Dato(06);
btnCocinaOn.Visible = false;
btnCocinaOff.Visible = true;
}
private void PasilloOff_Click(object sender, EventArgs e)
{
Envio_Dato(105);
btnPasilloOff.Visible = false;
btnPasilloOn.Visible = true;
}
private void PasilloOn_Click(object sender, EventArgs e)
{
Envio_Dato(05);
btnPasilloOn.Visible = false;
btnPasilloOff.Visible = true;
}
private void SalaOff_Click(object sender, EventArgs e)
{
Envio_Dato(104);
btnSalaOff.Visible = false;
btnSalaOn.Visible = true;
}

179
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

private void SalaOn_Click(object sender, EventArgs e)


{
Envio_Dato(04);
btnSalaOn.Visible = false;
btnSalaOff.Visible = true;
}
private void Recamara3ON_Click(object sender, EventArgs e)
{
Envio_Dato(03);
btnRecamara3ON.Visible = false;
btnRecamara3OFF.Visible = true;
}
private void Recamara3OFF_Click(object sender, EventArgs e)
{
Envio_Dato(103);
btnRecamara3OFF.Visible = false;
btnRecamara3ON.Visible = true;
}
private void ExteriorOff_Click(object sender, EventArgs e)
{
Envio_Dato(107);
btnExteriorOff.Visible = false;
btnExteriorOn.Visible = true;
}
private void ExteriorOn_Click(object sender, EventArgs e)
{
Envio_Dato(07);
btnExteriorOn.Visible = false;
btnExteriorOff.Visible = true;
}
private void Hora_Tick(object sender, EventArgs e)
{
txtHora.Text = DateTime.Now.ToString("hh:mm:ss");
if (Hora1.Text == txtHora.Text)
{
Retardos.Enabled = true;
}
if (Hora2.Text == txtHora.Text)
{
Retardos2.Enabled = true;
}
}

180
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

private void Encendido_General_Click(object sender, EventArgs e)


{
Retardos3.Enabled = false;
Retardos2.Enabled = false;
Retardos.Enabled = true;
}
private void Apagado_General_Click(object sender, EventArgs e)
{
Retardos3.Enabled = false;
Retardos.Enabled = false;
Retardos2.Enabled = true;
}
//Eventos de los controles Timer para generar retardos
private void Retardos_Tick(object sender, EventArgs e)
{
Retardos2.Enabled = false;
Retardos3.Enabled = false;
conteo = 1 + conteo;
label4.Text = conteo.ToString();
if (conteo == 1) { btnSalaOff.Visible = false; btnSalaOn.Visible
= true; Envio_Dato(04); }
if (conteo == 2) { btnExteriorOn.Visible = true;
btnExteriorOff.Visible = false; Envio_Dato(07); }
if (conteo == 3) { btnRecamara3ON.Visible = true;
btnRecamara3OFF.Visible = false; Envio_Dato(03); }
if (conteo == 4) { btnRecamara1ON.Visible = true;
btnRecamara1OFF.Visible = false; Envio_Dato(01); }
if (conteo == 5) { btnRecamara2ON.Visible = true;
btnRecamara2OFF.Visible = false; Envio_Dato(02); }
if (conteo == 6) { btnCocinaOn.Visible = true;
btnCocinaOff.Visible = false; Envio_Dato(06); }
if (conteo == 7) { btnPasilloOn.Visible = true;
btnPasilloOff.Visible = false; Envio_Dato(05); }
if (conteo == 8) { Retardos.Enabled = false; conteo = 0; }
}
private void Retardos2_Tick(object sender, EventArgs e)
{
Retardos3.Enabled = false;
Retardos.Enabled = false;
conteo2 = conteo2 + 1;
label4.Text = conteo2.ToString();
if (conteo2 == 1) { btnSalaOff.Visible = true; btnSalaOn.Visible
= false; Envio_Dato(104); }
if (conteo2 == 2) { btnExteriorOn.Visible = false;
btnExteriorOff.Visible = true; Envio_Dato(107); }
if (conteo2 == 3) { btnRecamara3ON.Visible = false;
btnRecamara3OFF.Visible = true; Envio_Dato(103); }
if (conteo2 == 4) { btnRecamara1ON.Visible = false;
btnRecamara1OFF.Visible = true; Envio_Dato(101); }

181
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

if (conteo2 == 5) { btnRecamara2ON.Visible = false;


btnRecamara2OFF.Visible = true; Envio_Dato(102); }
if (conteo2 == 6) { btnCocinaOn.Visible = false;
btnCocinaOff.Visible = true; Envio_Dato(106); }
if (conteo2 == 7) { btnPasilloOn.Visible = false;
btnPasilloOff.Visible = true; Envio_Dato(105); }
if (conteo2 == 8) { Retardos2.Enabled = false; conteo2 = 0; }

}
private void Retardos3_Tick(object sender, EventArgs e)
{
conteo = conteo + 1;
if (conteo == 1) { btnSalaOn.Visible = true; btnSalaOff.Visible =
false; Envio_Dato(04); }
if (conteo == 2) { btnPasilloOn.Visible = true;
btnPasilloOff.Visible = false; Envio_Dato(05); }
if (conteo == 3) { btnCocinaOn.Visible = true;
btnCocinaOff.Visible = false; Envio_Dato(06); }
if (conteo == 4) { btnRecamara2ON.Visible = true;
btnRecamara2OFF.Visible = false; Envio_Dato(02); }
if (conteo == 5) { btnRecamara3ON.Visible = true;
btnRecamara3OFF.Visible = false; Envio_Dato(03); }
if (conteo == 6) { btnCocinaOn.Visible = false;
btnCocinaOff.Visible = true; Envio_Dato(106); }
if (conteo == 7) { btnSalaOn.Visible = false; btnSalaOff.Visible
= true; Envio_Dato(104); }
if (conteo == 8) { btnRecamara3ON.Visible = false;
btnRecamara3OFF.Visible = true; Envio_Dato(103); }
if (conteo == 9) { btnPasilloOn.Visible = false;
btnPasilloOff.Visible = true; Envio_Dato(105); }
if (conteo == 10) { btnRecamara2ON.Visible = false;
btnRecamara2OFF.Visible = true; Envio_Dato(102); }
if (conteo == 11) { conteo = 0; }

}
//Evento para el botn Simular Presencia
private void Simulacion_Presencia_Click(object sender, EventArgs e)
{
if (btnSimulacion_Presencia.Text == "Parar")
{
btnSimulacion_Presencia.Text = "Simular Presencia";
Retardos3.Enabled = false;
conteo = 0;
}

182
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

else
{
btnSimulacion_Presencia.Text = "Parar";
Retardos.Enabled = false;
Retardos2.Enabled = false;
Retardos3.Enabled = true;
conteo = 0;
}
}
private void CamaraIP_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.google.com/");
}
private void Camara_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.google.com/");
}
private void BombaAgua_Click(object sender, EventArgs e)
{
if (btnBombaAgua.Text == "Encender")
{
Envio_Dato(09);
btnBombaAgua.Text = "Apagar";
}
else
{
Envio_Dato(109);
btnBombaAgua.Text = "Encender";
}
}
private void Boiler_Click(object sender, EventArgs e)
{
if (btnBoiler.Text == "Encender")
{
Envio_Dato(10);
btnBombaAgua.Text = "Apagar";
}
else
{
Envio_Dato(110);
btnBoiler.Text = "Encender";
}
}
private void CerraduraOff_Click(object sender, EventArgs e)
{
Envio_Dato(108);
btnCerraduraOn.Visible = true;

183
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

btnCerraduraOff.Visible = false;
}
private void CerraduraOn_Click(object sender, EventArgs e)
{
Envio_Dato(08);
btnCerraduraOn.Visible = false;
btnCerraduraOff.Visible = true;
}
private void Reestablecer_Click(object sender, EventArgs e)
{
Envio_Dato(100);
}
private void BorrarMsg_Click(object sender, EventArgs e)
{
ListBoxLog.Items.Clear();
}
private void VerVideos_Click(object sender, EventArgs e)
{
ReproductorVideo ver = new ReproductorVideo();
ver.Show();
}
private void timerAlarmas_Tick(object sender, EventArgs e)
{
if (alarma == 0)
{
imgAlerta1.Visible = true;
imgAlerta2.Visible=false;
alarma=alarma+1;
}
else
{
imgAlerta2.Visible = true;
imgAlerta1.Visible = false;
alarma = 0;
}
}
private void Paro_Alarma_Click(object sender, EventArgs e)
{
alarma = 0;
timerAlarmas.Enabled = false;
imgAlerta2.Visible = false;
imgAlerta1.Visible = false;
}
}}

184
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

AplicacinServidor
using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
System.Threading;

namespace Servidor
{
public partial class Servidor : Form
{
PicUSBAPI usbapi = new PicUSBAPI();
bool isConnected = false;

public Servidor()
{
InitializeComponent();
lblHost.Text = axWinsock1.LocalHostName;
lblIPlocal.Text = axWinsock1.LocalIP;
this.axWinsock1.ConnectionRequest += new
AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEventHandler(this.axW
insock1_ConnectionRequest);
this.axWinsock1.DataArrival += new
AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEventHandler(this.axWinsock
1_DataArrival);
}
//ConnectionRequest:cuando se hace una peticin de conexin de parte
de un cliente
private void axWinsock1_ConnectionRequest(object sender,
AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent e)
{
if (isConnected == true)
{
axWinsock1.Close();
}
//este comando acepta la conexin con el cliente
axWinsock1.Accept(e.requestID);
isConnected = true;
ListBoxLog.Items.Add("Cliente Conectado: " +
axWinsock1.RemoteHostIP);
}

185
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

private void axWinsock1_DataArrival(object sender,


AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
//creamos una variable para obtener los
//datos que llegaron
int data = 0;
//creamos otra variable tipo object ya que
//el mtodo que se utiliza para recibir
//datos es tipo object
object dat = (object)data;
axWinsock1.GetData(ref dat);
data = (int)dat;
//Enviamos el dato recibido al microcontrolador
usbapi.Controles(data);
//mostraos la informacin
ListBoxLog.Items.Add("Cliente : " + data + " Hora: " +
lblHora.Text);
}
void axWinsock1_Error(object sender,
AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent e)
{
ListBoxLog.Items.Add("Error : " + e.description);
}
private void btnEscuchar_Click_1(object sender, EventArgs e)
{
try
{
int x = 0;
if (txtPuerto.Text != "" && int.TryParse(txtPuerto.Text, out
x))
{
//Se establece el puerto por el cul se escucha
axWinsock1.LocalPort = Int32.Parse(txtPuerto.Text);
isConnected = true;
//Mtodo Listen del control Winsock
axWinsock1.Listen();
lblEstado.ForeColor = Color.Green;
lblEstado.Text = "Escuchando, puerto:" + txtPuerto.Text;
imgConectado.Show();
imgDesconect.Hide();
ListBoxLog.Items.Add("Escuchando por el puerto: " +
txtPuerto.Text);
btnDesconectar.Enabled = true;
btnEscuchar.Enabled = false;
}
else

186
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

{
MessageBox.Show("Debe asignar un puerto para escuchar",
"ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch
{
MessageBox.Show("Ocurri un error, lo mas probable es que el
puerto seleccionado no este disponible");
}
}
//El siguiente mtodo permite al Servidor conectarse automticamente a un
puerto especfico al ejecutarse.
private void Conectar()
{
int puerto = 5061;
try
{
axWinsock1.LocalPort = puerto;
isConnected = true;
axWinsock1.Listen();
lblEstado.ForeColor = Color.Green;
lblEstado.Text = "Escuchando, puerto:" + puerto;
imgConectado.Show();
imgDesconect.Hide();
ListBoxLog.Items.Add("Escuchando por el puerto: " +
puerto);
btnDesconectar.Enabled = true;
btnEscuchar.Enabled = false;
}
catch
{
MessageBox.Show("Ocurri un error, lo mas probable es que el
puerto seleccionado no este disponible");
}
}
private void buttonDesconectar_Click_1(object sender, EventArgs e)
{
try
{
//cierra la conexin con el cliente
axWinsock1.Close();
this.ListBoxLog.Items.Add("Desconectado.........");
btnEscuchar.Enabled = true;
btnDesconectar.Enabled = false;
lblEstado.Text = "Sin Escuchar ningn puerto";
lblEstado.ForeColor = Color.Red; imgDesconect.Show();
imgConectado.Hide();

187
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

}
catch
{
MessageBox.Show("Ocurri un error, el puerto no esta
abierto", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//****************Funcion para enviar dato**************************
public void Envio_Dato(int dato)
{
try
{
//si esta conectado puede enviar informacin
if (isConnected)
{
//esto se enva la informacin que tenga
//textbox txtMsg hacia el Cliente
axWinsock1.SendData(dato);
}
}
catch (AxMSWinsockLib.AxWinsock.InvalidActiveXStateException g)
{
ListBoxLog.Items.Add(g.ToString());
}
catch (Exception ex)
{
ListBoxLog.Items.Add(ex.Message);
}
}
private void hora_Tick(object sender, EventArgs e)
{
int val = 0;
lblHora.Text = DateTime.Now.ToString("hh:mm:ss");
PicUSBAPI ir = new PicUSBAPI();
val = ir.DetectorAlarma();
Envio_Dato(val);
if (val == 31)
{
Envio_Dato(31);}
}
private void btnEnviar_Click(object sender, EventArgs e)
{
Envio_Dato(14);}
private void Servidor_Load(object sender, EventArgs e)
{
Conectar();}}}

188
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

PicUSBAPI
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Windows.Forms;
System.Runtime.InteropServices; // Clase para importar DLL
System.Threading;
PVOID = System.IntPtr;
DWORD = System.UInt32;

namespace Servidor
{
unsafe public class PicUSBAPI
{
#region Definicin de los Strings: EndPoint y VID_PID
string vid_pid_norm = "vid_04d8&pid_0011";
string out_pipe = "\\MCHP_EP1";
string in_pipe = "\\MCHP_EP1";
#endregion
#region Funciones importadas de la DLL: mpusbapi.dll
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBGetDLLVersion();
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBGetDeviceCount(string pVID_PID);
[DllImport("mpusbapi.dll")]
private static extern void* _MPUSBOpen(DWORD instance, string
pVID_PID, string pEP, DWORD dwDir, DWORD dwReserved);
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBRead(void* handle, void* pData,
DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds);
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBWrite(void* handle, void* pData,
DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds);
[DllImport("mpusbapi.dll")]
private static extern DWORD _MPUSBReadInt(void* handle, DWORD* pData,
DWORD dwLen, DWORD* pLength, DWORD dwMilliseconds);
[DllImport("mpusbapi.dll")]
private static extern bool _MPUSBClose(void* handle);
#endregion
void* myOutPipe;
void* myInPipe;
public void OpenPipes()
{
DWORD selection = 0;
myOutPipe = _MPUSBOpen(selection, vid_pid_norm, out_pipe, 0, 0);
myInPipe = _MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
}

189
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

public void ClosePipes()


{
_MPUSBClose(myOutPipe);
_MPUSBClose(myInPipe);
}
private void EnviarPaquete(byte* SendData, DWORD SendLength)
{
uint SendDelay = 1000;
DWORD SentDataLength;
OpenPipes();
_MPUSBWrite(myOutPipe, (void*)SendData, SendLength,
&SentDataLength, SendDelay);
ClosePipes();
}
private void RecibirPaquete(byte* ReceiveData, DWORD *ReceiveLength)
{
uint ReceiveDelay=1000;

DWORD ExpectedReceiveLength = *ReceiveLength;


OpenPipes();
_MPUSBRead(myInPipe, (void*)ReceiveData, ExpectedReceiveLength,
ReceiveLength, ReceiveDelay);
ClosePipes();

}
// Mtodo para recibir los datos del USB
public int DetectorAlarma()
{
int alarm = 0;
byte* receive_buf = stackalloc byte[1];
DWORD RecvLength = 1;
RecibirPaquete(receive_buf, &RecvLength);
alarm =receive_buf[0];
return alarm;
}

190
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

// Mtodo para Enviar los datos por USB


public void Controles(int dato)
{
byte* send_buf = stackalloc byte[2];
// Si es mayor o igual a 100, se trata de un comando de encendido
if (dato >= 100)
{
dato = dat - 100;
send_buf[0] = 0x00;
send_buf[1] = (byte)dato;
EnviarPaquete(send_buf, 2);
}
// Si es menor a 100, se trata de un comando de apagado
else
send_buf[0] = 0x01;
send_buf[1] = (byte)dato;
EnviarPaquete(send_buf, 2);
}
}
}

191
ApndiceB.Cdigos,aplicacionesClienteyServidor

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ApndiceC.Circuitosimpresos

En este apndice se tienen los circuitos impresos que se utilizaron en el sistema, estos circuitos
impresos,fuerondiseadosconlaayudadelaaplicacinPCBWizard.Cabemencionar,queloscircuitos
nosepudierondisearexactamentecomodebieranser,yaqueporejemplo,enalgunoscomponentes
sobranagujerosdelasterminales.Otraobservacinqueesimportantemencionar,esquenoselogrola
conexintotalentrelosdispositivos,porloquefuenecesariorealizarestasconexionesmanualmente,
conayudadecable.
Acontinuacinsemostrarntrespresentacionesdistintasdelmismocircuito,lasltimasdosmuestran
conunalneadelgada,unaconexinconcable,queserequiererealizar.

CircuitosparaelmduloUSB.
Circuitoimpreso

192
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Circuitoimpresoconconexionesextras

Vistasuperiordelcircuito

193
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Circuitosparaelmdulodecontrol.
Circuitoimpreso

Circuitoimpresoconconexionesextras

194
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Vistasuperiordelcircuito

Circuitosparaelmdulodemonitoreo.
Circuitoimpreso

195
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Circuitoimpresoconconexionesextras

Vistasuperiordelcircuito

196
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Circuitodepotencia.
Circuitoimpreso

Circuitoimpresoconconexionesextras

197
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Vistasuperiordelcircuito

198
ApndiceC.Circuitosimpresos

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

BIBLIOGRAFA
ClaytonMat.BasicUSBUsingMicrochipStackandC#.NetHardware.Publicadoel26deFebrerode
2006.http://www.piccoder.co.uk/content/view/42/26/.
Febian.WinsockwithC#.Publicadoel8deMarzode2007.
http://www.go4expert.com/forums/showthread.php?t=3312.
GiovanniZ.CmocrearunservidorWebconProdigyInfinitumyelmdemo2Wire.Publicadoel3de
Marzo de 2007. http://bola8.erestlax.com/2007/03/03/comocrearunservidorwebconprodigy
infinitumyelmodem2wire/.
HarveyM.Deitel,PaulJ.Deitel.C#Cmoprogramar,2daEdicin.Editorial:PrenticeHall.
HershBhasin.ASP.NET,ProyectosProfesionales.Editorial:ANAYA.
RodrguezFernndezOscar,TroncosoEgeaRoberto.Internet,LaBiblia.Editorial:ANAYA.
RoyBlake.Sistemasdeelectrnicosdecomunicaciones,2daEdicin.Editorial:Thomson.
TutorialdelcontrolWinsock.Publicadoel23deJuniode2005.
http://foro.elhacker.net/programacion_vb/tutorial_del_control_winsockt75832.0.html.
WayneTomasi.Sistemasdecomunicacioneselectrnicas,2daEdicin.Editorial:PearsonEducacin.
Frenzel. Electrnica aplicada a los sistemas de las comunicaciones, 3era Edicin. Editorial: Alfaomega

199
Bibliografa

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

ndicedefiguras
Captulo1
Figura1.1TopologadelaconexinUSB......................................................................................................................5
Figura1.2LneasencableUSB.....................................................................................................................................6
Figura1.3TiposdeconectorUSB.................................................................................................................................7
Figura1.4Principalesusosdelmicrocontrolador.......................................................................................................11

Captulo2
Figura2.1CapasdelmodeloOSI................................................................................................................................15
Figura2.2ComparacinentremodeloOSIyTCP/IP...................................................................................................16
Figura2.3Aplicacionesysuspuertos.........................................................................................................................19
Figura2.4FormatodeunadireccinIP......................................................................................................................20
Figura2.5EstructuradeunadireccinIP...................................................................................................................20
Figura2.6DireccinIPdeClaseA...............................................................................................................................21
Figura2.7DireccinIPClaseB....................................................................................................................................21
Figura2.8DireccinIPClaseD...................................................................................................................................21
Figura2.9InteraccinClienteServidor.....................................................................................................................25
Figura2.10Propiedades,MtodosyEventosdelcontrolWinsock............................................................................31

Captulo3
Figura3.1DiagramadeconexindeunacmaraIP..................................................................................................35

200
ndicedefiguras

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Captulo4
Figura4.1RegistrodeldominioenelservicioNoip...................................................................................................38
Figura4.2DiagramadeactividadparalacomunicacinClienteServidor...............................................................41
Figura4.3InterfazgrficadelaaplicacinCliente.....................................................................................................42
Figura4.4DiagramacasousodelaaplicacinCliente............................................................................................43
Figura4.5PaneldeconexindelaaplicacinCliente................................................................................................44
Figura4.6PaneldecontrolenlaaplicacinCliente...................................................................................................44
Figura4.7DiagramacasousodelpaneldecontroldelaaplicacinCliente..............................................................45
Figura4.8Diagramadeactividad,horariodeencendido...........................................................................................46
Figura4.9Diagramadeactividad,encendidogeneral...............................................................................................47
Figura4.10DiagramacasousoeinterfazgrficadelpanelEstadodedispositivos..................................................48
Figura4.11Diagramadeactividad,estadodelosdispositivos..................................................................................49
Figura4.12Sealdealarma.......................................................................................................................................50
Figura4.13PaneldemensajedelaaplicacinCliente...............................................................................................51
Figura4.14Paneldeubicacindelosdispositivos.....................................................................................................51
Figura4.15Estadodelosdispositivos........................................................................................................................52
Figura4.16ClaseAplicacionCliente............................................................................................................................53
Figura4.17InterfazdelaaplicacinServidor.............................................................................................................54
Figura4.18DiagramacasousoparalaaplicacinServidor.......................................................................................55
Figura4.19Panel,datosdelServidor.........................................................................................................................56
Figura4.20PaneldemensajesdelaaplicacinServidor...........................................................................................57

201
ndicedefiguras

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura4.21EstadosdelServidor.................................................................................................................................58
Figura4.22PaneldeconexindelaaplicacinServidor............................................................................................58
Figura4.23Diagramadeactividadparaelprocesodeconexin...............................................................................59
Figura4.24DiagramaUMLdelaclasePicUSBAPI......................................................................................................61
Figura4.25DiagramadeactividadparaelmtodoControles...................................................................................64
Figura4.26Diagramadeactividadparalosprocesosdeconexinydesconexin....................................................66
Figura4.27Diagramadeactividadparaelenvodeundato.....................................................................................67

Captulo5
Figura5.2.1Diagramaabloquesdelsistemadecontroladistanciayelsistemadecomunicaciones.Lasdirecciones
delflujodelainformacinestnindicadasporlaflechanaranja,paraelmdulodecontrolyazul,paraelmdulo
demonitoreo...............................................................................................................................................................74
Figura5.2.2Ejemplodecomandodecontrol..............................................................................................................78
Figura5.2.3Ejemplodecomandodemonitoreo.........................................................................................................80
Figura5.2.4Diagramaabloquesdelmdulodecontrol.............................................................................................82
Figura5.2.5Ejemplodecomunicacinenelenlacedecontrol...................................................................................88
Figura5.2.6DiagramaelctricodelmduloUSBconTxyRxinalmbricos................................................................89
Figura5.2.7DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.....................................................96
Figura5.2.8DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.....................................................97
Figura5.2.9DiagramadeflujodelprogramaprincipaldelmicrocontroladorUSB.....................................................98
Figura5.2.10EstructuradelainformacincodificadaporelHT12E.........................................................................100
Figura5.2.11Codificacindedatosbinarios.............................................................................................................100
Figura5.2.12Ejemplodeunapalabraenbandabaseparatransmisininalmbrica..............................................102

202
ndicedefiguras

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura5.2.13Diagramadeflujodelarutinadeserviciodeltemporizador2,delmicrocontroladorUSB.................106
Figura5.2.14Diagramadeflujodelafuncinquecodificapalabrasde12bits,paragenerarunasealenbanda
base...........................................................................................................................................................................107
Figura5.2.15Ejemplodelfuncionamientodelavariablenciclo...............................................................................109
Figura5.2.16DiagramadeflujodelafuncinCOD_BIT_UNO..................................................................................111
Figura5.2.17DiagramadeflujodelafuncinCOD_BIT_CERO.................................................................................112
Figura5.2.18DiagramadeflujodelafuncinT_12BITS...........................................................................................114
Figura5.2.19Diagramaabloquesdelreceptorinalmbricoutilizadoparaelmdulodecontrol...........................115
Figura5.2.20Diagramaelctricodelreceptorinalmbrico,utilizadoenelmdulodecontrol................................116
Figura5.2.21Diagramaelctricodelcircuitodepotencia........................................................................................117
Figura5.2.22Rutinadeserviciodelainterrupcinexterna0...................................................................................119
Figura5.2.23DiagramadeflujodelafuncinDECODIFICA(parte1).......................................................................121
Figura5.2.24DiagramadeflujodelafuncinDECODIFICA(parte2).......................................................................122
Figura5.2.25Comportamientodelasvariablensubmuestra,cuandoseestdecodificando..................................123
Figura5.2.26DiagramadeflujodelafuncinVERIFICA...........................................................................................127
Figura 5.2.27 Ejemplo de palabra codificada en banda base, y los puntos en donde se toman muestras para su
decodificacin............................................................................................................................................................130
Figura5.2.28Diagramaabloquesdelmdulodemonitoreo...................................................................................131
Figura5.2.29Estructuradelapalabradeestadodelosdispositivosamonitorear..................................................135
Figura5.2.30Estructuradelapalabradeestadodelosdispositivosacontrolar.....................................................137
Figura5.2.31Ejemplodepalabradeestadodelosdispositivosamonitorear.........................................................139
Figura5.2.32Ejemplodecomunicacinparaelmonitoreodelosdetectores,desdelaaplicacincliente..............141

203
ndicedefiguras

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Figura 5.2.33 Ejemplo de comunicacin para el monitoreo de los dispositivos a controlar, desde la aplicacin
cliente........................................................................................................................................................................142
Figura5.2.34Diagramaaelctricodeltransmisorinalmbricousadoenelmdulodemonitoreo.........................143
Figura5.2.35Diagramadeconexinsupuesta,entredispositivosamonitorearylasterminalesDD......................145
Figura5.2.36Diagramadelaconexinentreelmicrocontroladordecodificadoryelmicrocontroladorcodificador,
paraelmonitoreodedispositivos..............................................................................................................................146
Figura5.2.37Diagramadeflujodelprogramadelmicrocontroladorcodificador....................................................148
Figura5.2.38Diagramadeflujodelarutinadeserviciodeltemporizador1............................................................149
Figura5.2.39Diagramadeflujodelarutinadeserviciodeltemporizador2............................................................150
Figura5.2.40DiagramaelctricodelmduloUSB,elcualincluyeelreceptorinalmbricodelmdulodemonitoreo.
...................................................................................................................................................................................152
Figura5.2.41Diagramadeflujodelarutinadeserviciodeltemporizador2,delmicrocontroladorUSB.................153

204
ndicedefiguras

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Glosario
ADSL: Es una tecnologa de acceso a internet de banda ancha. ADSL son las siglas de
AsymmetricDigitalSubscriberLine("LneadeSuscripcinDigitalAsimtrica").ADSLesuntipo
de lnea DSL. Consiste en una transmisin de datos digitales (la transmisin es analgica),
apoyada en el par simtrico de cobre que lleva la lnea telefnica convencional o lnea de
abonado.
Aplicacin cliente: Es el programa desde el cual se va a llevar a cabo el control y monitoreo de los
dispositivos.
Aplicacinservidor:Esel programaquepermitelacomunicacinentreelmduloUSBylaaplicacin
cliente.
ASK:Modulacinpordesplazamientodeamplitud.

CablededatosdecategoraCat5e:esunadelascincoclasesdecableadoUTPquesedescriben
enelestndarTIA/EIA568B.Puedetransmitirdatosavelocidadesdehasta1000Mbps.
Cmara IP: Son videocmaras capaces de capturar y transmitir imgenes en tiempo real a
travs de una red IP, conectadas por medio de un router, switch, concentrador, etc., sin la
necesidaddealgnotrodispositivoextra.
Cdigo de activacin: En nuestro sistema, es un cdigo de 12 bits que identifica a un dispositivo de
monitoreo(sensor,detector,etc.)pormediodeestecdigoseinformaqueeldispositivodemonitoreo
hadetectadoalgncambioenelmedio(p.ej.humo),stecdigoesutilizadoenelenlacedemonitoreo.
(VaseFig.5.2.3)
Codigo de encendido: En nuestro sistema, es un cdigo de 12 bits que indica el encendido de algn
dispositivoacontrolar.(VaseFig.5.2.2)
Cdigodelnea:Loscdigosdelneaconsistenenrepresentarinformacindigital,conunasealdigital
transportada respecto a su amplitud y respecto al tiempo, esta seal debe estar perfectamente
sincronizada.
Cdigodemando:Ennuestrosistemallamamoscdigodemando,auncdigode12bits,quepuede
serelcdigodeencendido,cdigodeapagado,cdigodeactivacin.
205
Glosario

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Comandodealarma:Uncomandodealarma,esunnmeroenterode1byte,queesenviadodesdeel
servidor,haciaelcliente,paraavisarquealgndetectorsehaactivado.
Comando de control: Llamamos comando de control, a un nmero entero de 1 byte, que es enviado
desde la aplicacin cliente, hacia la aplicacin servidor, con el fin de encender o apagar algn
dispositivo.(Tambinvaseseccin5.2.1)
Comando de monitoreo: Llamamos comando de monitoreo, a un nmero entero de 1 byte, que es
enviadodesdelaaplicacinservidor,hacialaaplicacincliente,conelfindemonitorearlosdispositivos,
es decir informar a la aplicacin cliente, cules detectores se han activado, o cules dispositivos se
encuentranencendidos.

Concentradorohub:Esundispositivoquepermitecentralizarelcableadodeunaredypoder
ampliarla.Estosignificaquedichodispositivorecibeunaseal,yrepiteestasealemitindola
porsusdiferentespuertos.
Conmutadordered:Unconmutadoresundispositivoderedqueconectasegmentosdelared
yqueseleccionaunarutaparaenviarunaunidaddedatosasuprximodestino.Engeneral,un
conmutadoresunmecanismomssencilloyrpidoqueunrouter,querequiereconocimientos
acercadelaredydecmodeterminarlaruta. Algunosconmutadoresincluyenlafuncinde
router.
Demodulacin:Procesoopuestoamodulacin,esdecir,recuperarlainformacinquefuemodulada.
Desplazamientodebits:Esunaoperacinquenospermitemoverlosbits,yaseahacialaizquierda,o
hacialaderecha.Eldesplazamientopuedeserde1bit,odelosbitsqueserequieran.Eloperadorpara
desplazamiento y asignacin hacia la izquierda es <<=; y el operador para desplazamiento hacia la
derechaes>>=.Seutilizandelasiguientemanera:
variable<<=bits

variable>>=bits

Endondebits,eselnmerodebitsquesedeseandesplazar.Porejemplo,enlosprogramasseusun
desplazamientohacialaizquierdade1bit,estoesquesialavariableinfo_tempo=0x000B,seleaplica
un desplazamiento info_tempo<<=1. Entonces inicialmente info_tempo = 0000 0000 0000 1011;
despus de aplicarle el desplazamiento info_tempo<<=1, tenemos como resultado info_tempo=0000
000000010110.

206
Glosario

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Disco duro (o rgido): Es un dispositivo de almacenamiento no voltil, que conserva la


informacin aun con la prdida de energa, que emplea un sistema de grabacin magntica
digital;esdondeenlamayoradeloscasosseencuentraalmacenadoelsistemaoperativodela
computadora.
E/S:Entrada/Salida

EndpointoDeviceEndpoint:LaporcindireccionabledeundispositivoUSBqueeslafuenteo
ellugardellegadadelacomunicacinentreelhostyeldispositivo.
Flancodeelevacin:Unflancodeelevacinsucede,cuandoexisteuncambiodeniveldevoltaje,desde
unniveldevoltajebajo,aunniveldevoltajealto.
Int16:Pormediodeestainstruccin,declaramosunavariabletipoentera,de16bits.
Interrupcin externa 0: Esta interrupcin, en el PIC18F2550, es provocada por el cambio de nivel de
voltajeenlaterminalRB0(ennuestrosistemaporuncambiodeniveldevoltajedebajo,aalto).
LED:Provienedelacrnimodelingls,LightEmittingDiode,queenespaoles,DiodoEmisordeLuz.El
LEDesundispositivosemiconductorqueemiteluz.
Modulacin:Procesopormediodelcual,secambianparmetroscomoamplitud,frecuenciaofase,de
unasealenbandabaseosealdeinformacin.
Mdulodecontrol:Eslaunidadpormediodelacualsellevaacaboelcontroldedispositivos(tambin
vaseseccin5.2.3).
Mdulode monitoreo:Eslaunidadpormediodelacualsellevaacaboelmonitoreodedispositivos
(tambinvaseseccin5.2.2).
MduloUSB:EslaunidadquetieneconexinatravsdelUSB,conelservidor.Esuncircuitocompuesto
por el microcontrolador USB, mdulo de RF, transmisor TWS-BS-3 (433.92 MHz), y un mdulo de RF,
receptorRWS-374-3(315MHz).(Vasefigura5.2.6)

Multiplexor: Es un dispositivo que puede recibir varias entradas, y transmitirlas por un solo
medio de transmisin. Una seal que est multiplexada debe ser demultiplexada en el otro
extremo,paraserrecuperada.

207
Glosario

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

Palabradeestadodelosdispositivosacontrolar:Llamamosas,alaspalabrasde12bitsqueseutilizan
para informar acerca del estado de los detectores, estas palabras son las que se envan de manera
inalmbricaenelmdulodemonitoreo.
Palabra de estado de los dispositivos a monitorear: Llamamos as, a las palabras de 12 bits que son
utilizadas para informar acerca del estado de los detectores, estas palabras son las que se envan de
manerainalmbricaenelmdulodemonitoreo.
Periododebit:Llamamosperiododebit,altiemponecesarioparatransmitir,esdecirtresperiodosde
lasealderelojutilizadaparacodificar,cuyoperiodoesde286s,porlotantounperiododebit,dura
aproximadamente858s.(Tambinvasefigura5.2.15).
Perroguardin:Consisteenuntemporizadorque,cuandosedesbordaypasapor0,provocaunreset
automticamenteenelsistema,estosucedesiempreycuandoelprogramafalleosebloquee.

Pipe:UnauninabstractaentreelEndpointyelsoftwaredelhost.
Protocolo:Conjuntoespecficodereglas,procedimientosoconversacionesrelacionadasconel
formatoyeltiempodetransmisindedatosentredosdispositivos.
RF:ProvienedeRadioFrecuencia,ysta,esunaporcindelespectroelectromagnticoutilizadaenlas
comunicacionesinalmbricas.
Router: Dispositivo que determina el siguiente punto de red, al que se debe reenviar un paquete en
camino hacia su destino final. Un router crea y/o mantiene una tabla de enrutamiento especial, que
almacenainformacinsobrelamejormaneradellegaraciertosdestinos.Aveces,seincluyeunrouter
comopartedeunconmutadordered.
Rutina de servicio: Una rutina de servicio, es un programa que es ejecutado cuando haya ocurrido
algunainterrupcin(dealgntemporizador,interrupcinexterna,etc.).
Sealdigitalenbandabase:Esaquellasealdigitalqueanestasinmodular.
Seal en banda base: Es la seal de informacin, que an esta sin modular, tambin suele llamrsele
sealmoduladora.

Servidor:Unservidor,esunprogramainformticoqueproporcionaserviciosaotrosprogramas
informticos,queseencuentranenelmismoordenadoroenotrosordenadores.Tambinse
208
Glosario

SistemadecontrolymonitoreodedispositivosatravsdeInternetconUSB

2009

denominaamenudo"servidor",aunordenadorenelqueseejecuteunprogramadeservidor.
Enlaprctica,elservidorpuedecontenerunaseriedeprogramasdeservidorydecliente.
Sistema domtico: Es un sistema que integra distintas funciones desarrolladas, tanto en
hardwareysoftware,conelobjetivodeautomatizarlasinstalacioneshabitualesenunsistema
habitacionaloresidencial.
USB:ProvienedelassiglasUniversalSerialBus(busuniversalenserie),yesunpuertoquesirve
paraconectarperifricosaunacomputadora.
Webcam cmara web: Es una pequea cmara digital que necesita estar conectada a un
ordenador,parapodercapturarimgenesytransmitirlasatravsdeInternetendirecto.

209
Glosario