Tesis Final
Tesis Final
Tesis Final
SEMINARIO
PARA OBETENER EL TÍTULO DE:
PRESENTAN:
ASESOR:
1.7 Socket......................................................................................................................................................20
2.1.2 Java........................................................................................................................................23
2.2.3 UART......................................................................................................................................35
2.3 Dispositivos.............................................................................................................................................38
CONCLUSIONES………………………………………………………………………………………………….....71
BIBLIOGRAFIA…………………………………………………………………………………………………….....72
GLOSARIO....................................................................................................................................................73
ANEXO A.......................................................................................................................................................74
ANEXO B.......................................................................................................................................................75
ANEXO C.......................................................................................................................................................77
INSTITUTO POLITÉCNICO NACIONAL
SEMINARIO
PARA OBETENER EL TÍTULO DE:
PRESENTAN:
ASESOR:
i
hasta llegar a un máximo 17 horas luz al día, las cuales se mantendrán constantes
hasta el final de su vida productiva.
Además de la luz, otros factores importantes para un buen porcentaje de
producción es la medición de la temperatura y la humedad relativa, ya que dan la
pauta para saber si las aves están dentro de su ambiente de confort, lo que se
traduce como bienestar animal que a su vez nos da buenos resultados
productivos.
La temperatura dentro de la caseta es algo importante que si se puede, se debe
medir, ya que si la temperatura es muy alta, las aves comenzarán a jadear, se
echarán y bajarán su consumo de alimento, y si por el contrario la temperatura es
muy baja, las aves aumentarán su consumo de alimento y también permanecerán
echadas para no disipar su calor corporal, en ambos casos las aves ocuparán sus
nutrientes y energía para su termorregulación en lugar de ocuparlos para la
producción de huevo y/o carne.
ii
Objetivo
iii
Justificación
iv
Índice
CAPÍTULO I Conceptos Fundamentales de Redes……………………………………………………………….1
1.7 Socket......................................................................................................................................................20
2.1.2 Java........................................................................................................................................23
v
2.1.4 Python....................................................................................................................................31
2.2.3 UART......................................................................................................................................35
2.3 Dispositivos.............................................................................................................................................38
CONCLUSIONES………………………………………………………………………………………………….....71
BIBLIOGRAFIA…………………………………………………………………………………………………….....72
GLOSARIO....................................................................................................................................................73
vi
ANEXO A.......................................................................................................................................................74
ANEXO B.......................................................................................................................................................75
ANEXO C.......................................................................................................................................................77
vii
Capítulo 1. Conceptos Fundamentales de Redes
Así por ejemplo la fibra óptica no permite fácilmente conexiones multipunto y por el
contrario las conexiones inalámbricas son inherentemente multipunto. Hay
topologías como el anillo, que permiten conectar muchas máquinas a partir de una
serie de conexiones punto a punto.
Los servicios y los protocolos son conceptos distintos, aunque con frecuencia se
les confunde. Un servicio es un conjunto de (operaciones) primitivas que ofrece
una capa a la que está por encima de ella. El servicio define cuáles son las
1
Capítulo 1. Conceptos Fundamentales de Redes
2
Capítulo 1. Conceptos Fundamentales de Redes
3
Capítulo 1. Conceptos Fundamentales de Redes
La arquitectura del OSI consta de siete niveles o capas en las que se especifican
de la siguiente manera:
La capa física tiene que ver con la transmisión de bits por un canal de
comunicación. Define las especificaciones eléctricas, mecánicas, de
procedimientos funcionales para activar, mantener y desactivar el enlace físico
entre sistemas de redes de comunicaciones [4]. Las especificaciones de la capa
física definen características como niveles de voltaje, temporización de cambios
de voltaje, velocidades de transferencia de información, distancias máximas de
transmisión y conectores físicos [2]. Sus principales funciones se pueden resumir
como:
4
Capítulo 1. Conceptos Fundamentales de Redes
Control de flujo
Se usan protocolos que prohíben que el remitente pueda enviar tramas sin la
permisión implícita o explícita del recibidor. Por ejemplo, el remitente puede
mandar un número indeterminado de tramas, pero entonces tiene que esperar.
LLC y MAC
5
Capítulo 1. Conceptos Fundamentales de Redes
6
Capítulo 1. Conceptos Fundamentales de Redes
Por último, se encuentra la capa de aplicación que es la capa de OSI más cercana
al usuario final, lo cual significa que tanto la capa de aplicación de OSI como el
usuario interactúan de manera directa con la aplicación del software. Esta capa
interactúa con las aplicaciones de software que implementan un componente de
comunicación. Dichos programas de aplicación están fuera del alcance del modelo
OSI. Las funciones de la capa de aplicación incluyen identificación de socios de
comunicación, la determinación de la disponibilidad de recursos y la sincronización
de la comunicación [2].
También se encarga de ofrecer acceso general a la red. Esta capa suministra las
herramientas que el usuario ve. También ofrece los servicios de red relacionados
con estas aplicaciones de usuario, como la gestión de mensajes, la transferencia
de archivos y las consultas a base de datos. La capa de aplicación suministra
cada uno de estos servicios a los distintos programas de aplicación con los que
cuenta el usuario en su computadora. Entre los servicios de intercambio de
7
Capítulo 1. Conceptos Fundamentales de Redes
8
Capítulo 1. Conceptos Fundamentales de Redes
Al igual que en el modelo OSI, los datos descienden por la pila de protocolos en el
sistema emisor y la escalan en el extremo receptor. Cada capa de la pila añade a
los datos a enviar a la capa inferior, información de control para que el envío sea
correcto. Esta información de control se denomina cabecera, pues se coloca
precediendo a los datos. A la adición de esta información en cada capa se le
denomina encapsulación. Cuando los datos se reciben tiene lugar el proceso
inverso, es decir, según los datos ascienden por la pila, se van eliminando las
cabeceras correspondientes.
Cada capa de la pila tiene su propia forma de entender los datos y, normalmente,
una denominación específica que podemos ver en la tabla 1.1 siguiente. Sin
9
Capítulo 1. Conceptos Fundamentales de Redes
embargo, todos son datos a transmitir, y los términos solo nos indican la
interpretación que cada capa hace de los datos.
TCP UDP
Capa de Aplicación Flujo Mensaje
Capa de Transporte Segmento Paquete
Capa de Internet Datagrama Datagrama
Capa de Acceso a la Red Trama Trama
La arquitectura del TCP/IP consta de cinco niveles o capas en las que se agrupan
los protocolos, y que se relacionan con los niveles OSI de la siguiente manera.
La capa de internet define un formato de paquete y protocolo oficial llamado IP, así
como el mecanismo para reenviar paquetes del transmisor a sus destinos
correspondientes. Es utilizado con esta finalidad por los protocolos del nivel de
transporte [4], [5].
10
Capítulo 1. Conceptos Fundamentales de Redes
Dentro de TCP/IP se emplean una gran variedad de servicios y aún más una gran
cantidad de protocolos que se agrupan para formar familias y de esta forma
proporcionar él envió de datos a través de una red de comunicaciones.
TCP es uno de los protocolos fundamentales en Internet. Fue creado entre los
años 1973 - 1974 por Vint Cerf y Robert Kahn. Muchos programas dentro de una
red de datos compuesta por ordenadores pueden usar TCP para crear conexiones
entre ellos a través de las cuales enviarse un flujo de datos.
El protocolo garantiza que los datos serán entregados en su destino sin errores y
en el mismo orden en que se transmitieron. También proporciona un mecanismo
para distinguir distintas aplicaciones dentro de una misma máquina, a través del
concepto de puerto. TCP da soporte a muchas de las aplicaciones más populares
de Internet, incluidas HTTP, SMTP y SSH [3].
Funciones de TCP
11
Capítulo 1. Conceptos Fundamentales de Redes
Las aplicaciones envían flujos de bytes a la capa TCP para ser enviados a la red.
TCP divide el flujo de bytes llegado de la aplicación en segmentos de tamaño
apropiado; normalmente esta limitación viene impuesta por la unidad máxima de
transferencia (MTU), del nivel de enlace de datos de la red a la que la entidad está
asociada y le añade sus cabeceras. Entonces, TCP pasa el segmento resultante a
la capa IP, donde a través de la red, llega a la capa TCP de la entidad destino.
TCP comprueba que ningún segmento se ha perdido dando a cada uno un
número de secuencia, que es también usado para asegurarse de que los paquetes
han llegado a la entidad destino en el orden correcto. TCP devuelve un
asentimiento por bytes que han sido recibidos correctamente; un temporizador en
la entidad origen del envío causará un timeout si el asentimiento no es recibido en
un tiempo razonable, y el (presuntamente desaparecido) paquete será entonces
retransmitido. TCP revisa que no haya bytes dañados durante el envío usando un
checksum; este es calculado por el emisor antes de cada paquete sea enviado, y
comprobado por el receptor [3].
1.4.2 Protocolo IP
12
Capítulo 1. Conceptos Fundamentales de Redes
En la figura 1.6 se muestra la sección de Tipo de Servicio del protocolo IPv4 que
utiliza las indicaciones anteriormente descritas en la tabla 1.2 (a) que describe los
servicios solicitados para su transmisión y en la tabla 1.2 (b) define el trato de
estos mismos de los 3 primeros bits de precedencia.
13
Capítulo 1. Conceptos Fundamentales de Redes
Cabe aclarar que en la figura 1.5 solo se muestra la cabecera de IPv4 por lo que
para que sea un datagrama de IPv4 se agrega el campo Datos por debajo del de
Opciones, que tiene una longitud de hasta 32 bits.
14
Capítulo 1. Conceptos Fundamentales de Redes
1.4.2.1 Funciones de IP
1.4.5 Direccionamiento IP
Las redes TCP/IP utilizan una dirección de 32 bits para identificar una
computadora anfitriona y la red a la que esa computadora está conectada. La
estructura de la dirección IP es [1]:
El orden más alto, o el que está más a la izquierda, componen los bits que
especifican a la red.
El orden más bajo; o el que está más a la derecha, componen los bits que
especifican el host.
Cada LAN o VLAN tiene una dirección que la especifica de las demás; al igual los
hosts que pertenecen a la red también tienen bits que lo identifican dentro de la
red. Estos números son únicos. Las direcciones IP se dividen en clases para
definir las redes de tamaño pequeño, mediano y grande. Hay tres clases de
direcciones IP que una organización puede recibir de parte de la Internet: clase A,
clase B y clase C. En la actualidad, Internet reserva las direcciones de clase A
para los gobiernos de todo el mundo y las direcciones de clase B para las
medianas empresas. Se otorgan direcciones de clase C para todos los demás
solicitantes. Cada clase de red permite una cantidad fija de equipos (hosts).
Todos los hosts con TCP/IP tienen una dirección IP única que se utiliza para la
comunicación con otros equipos de la red. Una computadora trabaja fácilmente
con direcciones IP, pero no las personas; los usuarios suelen identificar los
sistemas por un nombre [7].
El Servicio de Nombres de Dominio DNS es una base de datos distribuida y
jerárquica que almacena información asociada a nombres de dominio enredes
como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes
tipos de información a cada nombre, los usos más comunes son la asignación de
nombres de dominio a direcciones IP y la localización de los servidores de correo
electrónico de cada dominio.
16
Capítulo 1. Conceptos Fundamentales de Redes
Por ejemplo, en dcc.uchile.ci, el dominio más alto es ci. Para que exista una raíz
del árbol, se puede ver como si existiera un punto al final del nombre:
dcc.uchile.ci.
y todos los dominios están bajo esa raíz (también llamada punto). Cada
componente del dominio (y también la raíz) tiene un servidor primario y varios
servidores secundarios. Todos estos servidores tienen la misma autoridad para
responder por ese dominio, pero el primario es el único con derecho para hacer
modificaciones en él. Por ello, el primario tiene la copia maestra y los secundarios
copian la información desde él. El servidor de nombres es un programa que
típicamente es una versión de BIND.
17
Capítulo 1. Conceptos Fundamentales de Redes
18
Capítulo 1. Conceptos Fundamentales de Redes
Figura 1.8 Diagrama de una red típica que usa una DMZ con un cortafuego
19
Capítulo 1. Conceptos Fundamentales de Redes
1.7 Socket
Los Socket aparecieron a principios de los 80 con el sistema UNIX de Berkeley,
para proporcionar un medio de comunicación a los procesos, con el fin de
proporcionar un medio de comunicación entre ellos. Los sockets, si hacemos un
símil, tienen la misma función que la que pudiera tener la comunicación por correo
o por teléfono (de un buzón se extraen mensajes completos, mientras que el
teléfono permite el envío de flujos de información que no tienen una estructura
claramente definida; esta dualidad se encuentra en los sockets). El socket, por
tanto, ofrece dos puntos de contacto entre distintas aplicaciones, a través de los
cuales estas se comunican. Otra característica importante de los puntos de
comunicación concierne al conjunto de otros puntos que permite acceder. La
noción de dominio de un socket permite definir el conjunto de sockets con los
cuales se podrá establecer una comunicación por medio de él [5], [6], [11].
20
Capítulo 1. Conceptos Fundamentales de Redes
21
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
Capítulo 2: Requerimientos de Hardware, dispositivos de estado
sólido y herramientas de programación.
2.1 Herramientas de programación
Cuando hablamos de desarrollo y manejo de hardware, hablamos de forma
implícita de la utilización de diferentes herramientas o lenguajes de programación
con los cuales es posible la comunicación humano-máquina que ordena y crea las
diferentes funcionalidades que ofrecen los diferentes dispositivos o controladores.
A continuación, se da una breve explicación de las herramientas de programación
empleadas para la realización de este trabajo.
2.1.1 Sistema Operativo ANDROID
Los teléfonos móviles, como cualquier aparato electrónico tienen dos partes:
el hardware y el software.
Aunque las funciones eran más o menos comunes, cada móvil era distinto, ya que
se manejaba con el software propio de cada fabricante, que podía ser muy distinto
al de otro. Más tarde los móviles nos permitieron instalar pequeñas aplicaciones,
sobre todo juego en Java. Ahí se comenzaba a diferenciar entre software propio
del móvil y lo que podíamos instalar. Aunque como el sistema operativo del móvil
aún dependía del fabricante, se debería asegurar de que lo que pretendíamos
instalar iba a funcionar en nuestro terminal.
Los primeros sistemas operativos para móviles fueron Symbian (de Panasonic,
Siemens AG, Nokia, Sony-Ericsson entre otras), Palm (sobre todo para PDAs),
BlackBerry y Windows Mobile (de Microsoft). Apple revoluciono el mundo de la
telefonía móvil con el lanzamiento de su familia iPhone, con el sistema operativo
iPhone OS, y su pantalla multitáctil. Posteriormente apareció Android. Microsoft ha
lanzado recientemente el Windows 8 que sirve tanto para PCs como para móviles
y tablets. Android nació inicialmente para teléfonos, en septiembre de 2008, luego
22
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
en febrero de 2011 apareció Android 3.0 para tablets, y en octubre de 2011
apareció Android 4.0 que unificó los dos sistemas (teléfonos y tablets) en uno sólo.
La versión en noviembre de 2012 es Android 4.2. La principal ventaja de utilizar
uno de estos sistemas operativos es que disponemos de una gran cantidad de
aplicaciones. Además, como pasa con los ordenadores, dos dispositivos con el
mismo sistema operativo se manejarán igual, aunque puede que tengan distinta
pantalla, cámara, que uno no integre GPS, o que sean de distinto fabricante.
Aunque puede haber pequeñas diferencias ya que cada fabricante puede
modificar algunos aspectos de Android.
La principal empresa que hay detrás del desarrollo de Android es Google, quien
lidera la Open Handset Alliance, un consorcio de empresas que se comprometen a
seguir los estándares abiertos y libres.
2.1.2 Java
El lenguaje para la programación en Java, es un lenguaje orientado a objetos, de
una plataforma independiente. El lenguaje para la programación en Java, fue
desarrollado por la compañía Sun Microsystems, con la idea original de usarlo
para la creación de páginas WEB.
Con la programación en Java, se pueden realizar distintos aplicativos, como son
applets, que son aplicaciones especiales, que se ejecutan dentro de un navegador
al ser cargada una página HTML en un servidor WEB. Por lo general los applets
son programas pequeños y de propósitos específicos. Otra de las utilidades de la
programación en Java es el desarrollo de aplicaciones, que son programas que se
ejecutan en forma independiente, es decir con la programación Java, se pueden
realizar aplicaciones como un procesador de palabras, una hoja que sirva para
cálculos, una aplicación gráfica, etc. en resumen cualquier tipo de aplicación se
puede realizar con ella. Java permite la modularidad por lo que se pueden hacer
rutinas individuales que sean usadas por más de una aplicación, por ejemplo,
tenemos una rutina de impresión que puede servir para el procesador de palabras,
como para la hoja de cálculo.
La programación en Java, permite el desarrollo de aplicaciones bajo el esquema
de Cliente/Servidor, como de aplicaciones distribuidas, lo que lo hace capaz de
conectar dos o más computadoras u ordenadores, ejecutando tareas
simultáneamente, y de esta forma logra distribuir el trabajo a realizar.
23
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
Diferencias con C++
1. En Java no es posible crear variables globales. Solo las variables estáticas
y publicas de algunas clases pueden considerarse como tales, pero esto
generalmente, y como en el caso de las variables globales en C++son
síntoma de un mal diseño.
2. Java no dispone de sentencia goto lo cual permite crear un código más
robusto y seguro, así como más optimizado. Para cubrir esta falta Java
proporciona un tratamiento muy optimizado de excepciones, poderoso y
bien definido.
3. Los punteros son una característica poderosa y peligrosa del C + +, en si
evitan que ninguna variable sea privada de verdad, ya que es fácil acceder
a la misma a través de punteros, los cuales son fuente de problemas y mal
funcionamiento. Java no dispone de tratamiento de punteros. Los vectores
o arrays lo son de modo cierto, lo cual evita sobrepasar el mismo o salirse
de sus límites.
4. El manejo de memoria en C se realiza de forma peligrosa a través de
punteros obtenidos con la función malloc(), y que se libera explícitamente
con free(), esto puede causar errores si el programador no controla
perfectamente los pasos en que estas operaciones se realizan. Otro error
es el olvido frecuente de liberar memoria, lo cual termina consumiendo los
recursos del sistema. Java no dispone de punteros y todos los objetos se
crean con el operador new, el cual asigna espacio en el montículo de
memoria a cada objeto. Lo que se obtiene con new es un descriptor del
objeto (no una dirección) la dirección real es manejada por el sistema el
cual la puede mover o recolocar según su necesidad, pero el programador
no ha de preocuparse por ello. Lo importante es que el objeto tiene
memoria asignada mientras le interese al programa, quedando esta
memoria disponible en cuanto este interés cese. No hará falta llamar a free
o delete ya que el recolector de basura realizará esta labor. Este recolector
o reciclador de basura se ejecutará cuando el sistema esté libre o una
asignación no encuentre lugar disponible.
5. C y C + + disponen de tipos de datos frágiles cuyos límites y características
dependen de la implementación y máquina del compilador. Java
implementa límites de tamaños sensatos y válidos para todo tipo de
máquinas y entornos (independientes del Hardware) por lo que es
totalmente reproducibles en cualquier plataforma.
6. En C es posible la realización de casting o conversión de tipos en tiempo de
ejecución. En C++ esta operación es peligrosa ya que los objetos son
referencias a zonas de memoria y no es posible tener información sobre sí
la conversión en posible. En Java los descriptores de los objetos contienen
información completa acerca de la clase a la que pertenece el objeto, por lo
que pueden realizarse comprobaciones en tiempo de ejecución sobre la
compatibilidad de tipos y emitir la excepción correspondiente si no es
aplicable la conversión.
24
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
7. En Java no se dispone de archivos de cabecera con los prototipos delas
clases. Esto, en principio es una desventaja, hasta que se comprueba que
esta habilidad del C + + ha llevado a entornos de compilación
prácticamente inmanejables, ya que cada compilación puede tratar estos
archivos de formas un tanto complejas. Java no dispone de esta habilidad
de archivos de cabecera, el tipo y la visibilidad de la clase se compila en el
propio archivo de la clase, siendo tarea del intérprete de Java realizar el
acceso.
8. Java no tiene struct ni unión, ambos sistemas de encapsulamiento y
polimorfismo un tanto crípticos e inseguros del C ++, unificando todo en un
solo concepto de class.
9. La programación de entornos reales de C y C++ implica un buen
conocimiento del manejo del preprocesador y sus trucos, lo cual no es una
manera limpia de controlar lo que se compila. Java no dispone de este
sistema, pero tienen medios (como la declaración final para constantes) que
permiten igual potencia.
Descripción de atributos en Java
1. Applets programas elementales incluidos en páginas HTML a través de la
etiqueta app y que se despliega en el visualizador tras cargarse la página.
2. Aplicaciones programas escritos en Java y que se ejecutan de forma
independiente de los visualizadores. Esto se realiza llamando a los
interpretes Java con el programa como opción.
3. Manipuladores de protocolo programas que se cargan en el visualizador
e interpretan un protocolo (como pueda ser HTTP).
4. Manipuladores de contenido un programa cargado en el visualizador y
que interpreta el contenido de determinado tipo de ficheros.
5. Métodos nativos métodos que se declaran en una cierta clase Java pero
que se implementan en C.
manifest
Contiene los archivos AndroidManifest:xml
Java
Contiene los archivos de Código fuente de Java separados por nombres
de paquete.
Res
Contiene todos los recursos de non-Code, tales como capas de XML,
cadenas UI, imágenes divididas dentro de los subdirectorios
correspondientes.
26
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
proyecto. Para cada factor de forma se puede seleccionar el nivel de API
para esa aplicación.
27
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
28
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
contiene dicha actividad y finalmente se concluye el proceso de creación
del proyecto dando click en Finish.
4. Desarrollar la Aplicación
Android Studio crea por default la estructura del proyecto y abre el entorno
de desarrollo. Si la aplicación soporta más de un factor de forma, Android
Studio crea una carpeta con archivos de código fuente para cada uno de los
factores de forma como se muestra en la Figura: 2.5.
29
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
saber que componentes existen y bajo qué condiciones son
inicializados.
Determina que procesos serán los anfitriones de los componentes de la
aplicación.
Declara los permisos que la aplicación debe tener a n de acceder a las
partes protegidas de la API e interactuar con otras aplicaciones.
Declara también los permisos que los elementos externos están
obligados a tener con el fin de interactuar con los componentes de la
aplicación.
Declara el nivel API mínimo requerido por la aplicación.
30
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.1.4 Python
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié
en una sintaxis que favorezca un código legible. Es un lenguaje de programación
similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible.
Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente
tipado, multiplataforma y orientado a objetos. Significa que el intérprete de Python
está disponible en multitud de plataformas (UNIX; Solaris; Linux; DOS; Windows;
OS/2; MacOS; etc.) por lo que si no utilizamos librerías específicas de cada
plataforma nuestro programa podrá correr en todos estos sistemas sin grandes
cambios [11].
31
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.1.5 Servicio no – IP
El servicio de DNS dinámica de No-IP permite identificar tu PC con un nombre de
dominio fácil de recordar, como TuNombre.no-ip.com en lugar de con un número
extraño del tipo 213.171.218.201 y poder montar un servidor sin complicaciones
independientemente de si tenemos ó no una IP estática. Una dirección IP es un
conjunto de 4 números de 0 a 255 separados por puntos, que identifica a una
computadora en una red (un conjunto de computadores conectados entre sí). Un
mismo computador tendrá asignada una IP por cada red a la que esté conectado.
Independientemente de su tamaño Internet no deja de ser otra red, por lo que es
evidente según la definición anterior que toda computadora, por el hecho de estar
conectada a ésta, contará con una IP por la que es conocida y referenciada por los
demás equipos de la red. Esta IP, al contrario de las
IP’s de una red local que podemos asignar nosotros mismos, viene dada por el
proveedor de acceso a internet.
Un símil útil para entender las direcciones IP sería un número de teléfono que
marcamos para hablar con otra persona. A la persona que solicita la comunicación
se le conoce con el nombre de cliente, y podría ser, por ejemplo, un navegador
web como Firefox o un cliente de FTP como SmartFTP. La persona al otro lado de
la línea, el PC al que llamamos y del cual requerimos un servicio, se conoce con el
nombre de servidor. Esta comunicación cliente-servidor se lleva a cabo, por
ejemplo, cada vez que visitamos una página web. Tomemos por ejemplo el caso
de Google. La IP del computador dónde se aloja su web es 216.239.37.99. Este
computador ejecuta de forma continuada una aplicación llamada servidor web, que
no es más que un programa que espera a que un cliente realice una petición y
contesta entonces de forma adecuada, enviando al cliente la web solicitada o un
mensaje de error si procede.
2.1.5.1 Dyn DNS
Existen servicios alternativos como No-IP ó DynDNS que nos ofrecen subdominios
(tendremos URLs de la forma miweb.dominio, como por ejemplo miweb.no-ip.com)
de forma gratuita y sin publicidad. Dyndns es una compañía en la red que ofrece
IP gratuitas, o, dicho de otra manera, nosotros lo conocemos como "dominios 2
"subdominios". De esta manera nos ofrecen la oportunidad de que cualquier
persona posea un servidor en internet por ejemplo:teamasm.dyndns.org
Normalmente gran variedad de las IP son dinámicas, estoy quiere decir que
nosotros podemos trabajar muy bien en nuestra pc siempre y que la IP no cambie,
pero en caso de que se valla la luz, o se apague el equipo, al reiniciar el servicio
se perderá nuestra IP, entonces como haremos si paso esto. Teniendo en cuenta
lo anterior y que la IP es dinámica, nosotros no podríamos saber con exactitud la
32
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
IP de nuestra pc estando lejos de ella, y es en este caso que nos es funcional el
Dyndns porque él nos podrá proporcionarla.
2.2 Requerimientos de Hardware
En este apartado se explicará de forma breve las características de hardware y
algunas de sus funciones que nos ayudaran en la elaboración del sistema de
control y monitoreo.
2.2.1 Raspberry Pi
Es una tarjeta de desarrollo que soporta varios componentes necesarios en un
ordenador común, un pequeño ordenador de bajo costo, tan pequeño como una
tarjeta de crédito con un mínimo de consumo de energía. Puede ser utilizado por
muchas de las cosas que su PC de escritorio hace, como hojas de cálculo,
procesadores de texto y juegos, también reproduce vídeo de alta definición.
Una de las principales ventajas del Raspberry Pi es que podemos tener acceso al
hardware de bajo nivel, lo que permite utilizarlo en proyectos de integración con
hardware como el que estamos acostumbrados a ver en proyectos con Arduino.
El diseño incluye un System-on-a-chip Broadcom BCM2835, que contiene un
procesador central (CPU) ARM1176JZF-S a 700 MHz (el firmware incluye unos
modos – Turbo - para que el usuario pueda hacerle overclock de hasta 1 GHz sin
perder la garantía), un procesador gráfico (GPU) VideoCore IV, y 512 MB de
memoria RAM (aunque originalmente al ser lanzado eran 256 MB). El diseño no
incluye un disco duro ni unidad de estado sólido, ya que usa una tarjeta SD para el
almacenamiento permanente; tampoco incluye fuente de alimentación ni carcasa.
La fundación da soporte para las descargas de las distribuciones para arquitectura
ARM, Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivado de
Arch Linux) y Pidora (derivado de Fedora); y promueve principalmente el
aprendizaje del lenguaje de programación Python. Otros lenguajes también
soportados son Tiny BASIC, C, Perl y Ruby. A continuación, se muestra una
fotografía del ordenador Raspberry Pi Figura 2.7.
33
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.2.2 Microcontrolador MSP430G2553
Los microcontroladores de la serie MSP4304 de TexasInstruments, son
procesadores de señal combinada de 16 bits, basados en la arquitectura RISC5 ó
(Computador de Conjunto de Instrucciones Reducidas), diseñados para tener un
consumo ultra bajo. Además, disponen de una cantidad de periféricos muy variado
para realizar proyectos muy diversos. Por esta razón, y por ser un componente
bastante económico, se ha decidido utilizar este microcontrolador en nuestro
proyecto.
A continuación, se muestra una fotografía de la placa de desarrollo en la que viene
conectado el MSP430G2553. Figura 2.8.
34
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.2.3 UART
UART (Recepción-Transmisión Asíncrono Universal) es uno de los protocolos
serie más utilizados. La mayoría de los controladores disponen de hardware
UART. Usa una línea de datos simple para transmitir y otra para recibir datos.
Comúnmente, 8 bits de datos son transmitidos de la siguiente forma: un bit de
inicio, a nivel bajo, 8 bits de datos y un bit de parada a nivel alto. El bit de inicio a
nivel bajo y el de parada a nivel alto indican que siempre hay una transmisión de
alto a bajo para iniciar la transmisión. Eso es lo que describe a UART.
El UART toma bytes de datos y transmite los bits individuales de una manera
secuencial. En el destino, un segundo UART re-ensambla los bits en bytes
completos. Hay que tener en cuenta, que los microcontroladores que quieren
comunicarse vía UART tienen que fijar la velocidad de transmisión, la tasa de bits,
ya que sólo disponen del bit de flanco de bajada para sincronizar.
Esto es llamado comunicación asíncrona. Transmisión de serie es de uso común
con los modems y para la comunicación sin conexión a red entre ordenadores,
terminales y otros dispositivos.
Funciones de un UART
Convierte los datos de paralelo a serie y viceversa
Genera y checa la paridad de los datos
Genera bit de arranque (conexiones múltiples)
Inserta bit de parada
Controla el número de bits por carácter
Almacena temporalmente el mensaje
Controla la velocidad de transmisión
35
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
36
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.2.5 Arduino UNO
La tarjeta de desarrollo Arduino UNO REV 3 utiliza el microcontrolador de alto
rendimiento ATmega328P de 8 bits de la empresa ATMEL. Es ideal para
aplicaciones tanto estudiantiles como profesionales, esto en parte gracias a la
cantidad de librerías y tutoriales que explican su funcionamiento para diversos
aplicativos.
37
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.3 Dispositivos
Los dispositivos empleados en este trabajo fueron seleccionados según sus
características que dotan al proyecto de calidad y una alta fiabilidad de operación.
38
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
El rango de temperatura que detecta el DHT22 va de los -40° hasta 80°C con una
precisión de +/- 0.5 y +/- 1.
El rango de % de humedad relativa (%RH) es de hasta un 99.9% con una
precisión a los 25°C de +/- 2. Anexo A
En la figura 2.12 se muestran los pines y su descripción en la tabla 2.1.
Funcionamiento
El funcionamiento del DHT22 se caracteriza por su sistema de intercambio de
datos controlado por su única línea de datos de manera que este solo enviará o
responderá cuando el host se lo solicite creando una estructura maestro-esclavo,
pero para poder llevar acabo la comunicación con el sensor, el host deberá seguir
de una manera estricta la secuencia del único bus de datos.
39
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
40
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
proporciona un valor negativo o positivo, si es igual a 1 quiere decir que es
negativo; si es igual a 0 será positivo
El bit de paridad consta de 8 bits y es la suma de las cadenas de bits de
humedad y temperatura. A continuación, se explica la operación.
Ejemplo de los 40 bits de datos recibidos del DHT22 al microprocesador
Esto es:
0000 0010+1001 0010+0000 0001+0000 1101= 1010001 (Bit de Paridad)
Convirtiendo a decimal los siguientes bits:
Humedad: 0000 0010 1001 0010= 512+128+16+2= 658
Quiere decir que si es 10 veces mayor el valor
Humedad = 65.8%RH
Para la temperatura el procedimiento es similar:
Temperatura: 0000 0001 0000 1101= 256+8+4+1= 269
Por lo tanto
Temperatura = 26.9°C
En caso de que la temperatura sea menor a 0°C el bit 15 de temperatura tendrá un
estado alto 1, por ejemplo, si llegan los 16 bits de temperatura de esta forma:
Temperatura: 1000 0000 0110 0101 = (-) 64+32+4+1= 101 = -10.1°C
Otro caso durante la transmisión es él envió incorrecto de los datos y no coinciden
con el bit de paridad, por ejemplo:
0000 0010+1001 0010+0000 0001+0000 1101= 1010 0010 ≠ 1011 0010 (Error de
validación)
Si esto ocurre se reenviarán los datos.
41
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
2.3.2 Sensor de luminosidad BH1750
El BH1750 es un sensor de luminosidad ambiental digital que emplea la interfaz
𝐼 2 𝐶 que permite que pueda ser utilizado con casi cualquier microcontrolador y a la
vez puede ser empleado con otros sensores que miden diferentes parámetros,
todos conectados a un mismo microcontrolador, la interfaz 𝐼 2 𝐶 es un bus bastante
poderoso ya que logra la comunicación entre uno o varios dispositivos maestro a
uno o varios esclavos. En la figura 2.15 se muestra el BH1750.
42
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
43
Capítulo 2. Requerimientos de Hardware, dispositivos de estado sólido y
herramientas de programación
44
Capítulo 3. Arquitectura general del sistema y desarrollo
45
Capítulo 3. Arquitectura general del sistema y desarrollo
46
Capítulo 3. Arquitectura general del sistema y desarrollo
47
Capítulo 3. Arquitectura general del sistema y desarrollo
48
Capítulo 3. Arquitectura general del sistema y desarrollo
pantalla del teléfono para ser leídos correctamente por el usuario, si se excede el
tiempo de espera en la recepción o el paquete se pierde, el teléfono desplegará en
pantalla el valor de “-1” para indicar que el dato no llegó o no se recibió
correctamente, y pasará directamente a leer el siguiente dato que corresponde a
la temperatura y humedad relativa, con los cuales repite el proceso anterior. Toda
vez que la función de Recepción de datos sea completada el programa regresará
a comprobar el estado de la conexión para mantener una comunicación
permanente con el servidor, al ser tramas de datos bastante pequeñas apenas del
orden de los kilobits, el intercambio de información entre cliente y servidor no
requiere de un ancho de banda demasiado grande, lo cual agiliza el proceso de
intercambio de datos y permite al usuario economizar en gastos de datos de
internet móvil con la compañía de telefonía celular o internet de su preferencia.
50
Capítulo 3. Arquitectura general del sistema y desarrollo
completado, la app enviará al servidor los datos con un socket TCP para asegurar
su correcta emisión y recepción, la barra deslizable que controla la intensidad
luminosa quedará entonces inhabilitada impidiendo que cualquier persona pueda
alterar el programa de iluminación que se encuentra en ejecución. A partir de ese
momento la app ignorará cualquier tipo de intento de entrada manual y se
dedicará enteramente a recibir los datos de Temperatura, Humedad y luminosidad
para mostrarlas al usuario, pero estará siempre monitoreando la suspensión del
programa en cualquier momento para volver a obedecer las entradas manuales de
luminosidad.
3.2 Configuración DNS
Es importante explicar cómo es que se da el establecimiento de la conexión de
internet hacia nuestro servidor, y esto es posible con la obtención de una licencia
de nombre de dominio. Hecho que se realizó por medio de un proveedor NO-IP
para que a través de él se lleve a cabo la conectividad entre nuestros dispositivos
cliente/servidor de manera simple y remota, dicha licencia se compró por un
periodo de 5 años.
La licencia cuenta con un software que se instaló en nuestra Raspberry, cuya
función principal es la de recalcular la dirección IP pública de nuestro servidor
cada 5 minutos y que de esta manera los datos lleguen al servidor, aunque cambie
la IP. La función del DNS es traducir un conjunto de palabras o un nombre de
dominio en una dirección IP para que de esta manera pueda ser localizado
nuestro servidor desde internet.
En la siguiente imagen, figura 3.5, se puede ilustrar como se está ejecutando la
aplicación del DNS en la raspberry, además de indicar que existe un proceso de
No-IP ejecutándose, también se puede visualizar la cuenta de correo que se está
utilizando, que para este caso utilizamos armandohdzbal@hotmail.com. En el
quinto renglón se tiene la dirección IP que se está utilizando y en la parte inferior
aparece el tiempo que tarda en recalcular la dirección IP que es justamente de 5
minutos.
52
Capítulo 3. Arquitectura general del sistema y desarrollo
nuestro servidor Raspberry que funciona sin una IP fija, ya que por medio del
software se calcula cada 5 minutos que IP tiene asignado nuestro dominio y de
esta manera es posible dar de alta nuestro nombre de dominio sin ningún
inconveniente.
Para realizar la configuración de la DMZ solo se requiere entrar a la interfaz del
modem en el explorador y encontrar la opción que diga DMZ, al ingresar a esta
opción mostrara las opciones para añadir un dispositivo como se muestra en la
figura 3.7. Posteriormente se tendrá que abrir un puerto para que por medio de
este nuestro dispositivo tenga salida hacia el exterior. Finalmente seleccionaremos
el checkbox que habilitara la DMZ.
53
Capítulo 3. Arquitectura general del sistema y desarrollo
Figura 3.9 Diagrama de flujo del funcionamiento de Arduino con el sensor BH1750
54
Capítulo 3. Arquitectura general del sistema y desarrollo
255
𝐷𝑎𝑡𝑜 = = 8.5
30 𝑚𝑖𝑛𝑢𝑡𝑜𝑠
60000
𝑅𝑒𝑡𝑎𝑟𝑑𝑜 = ≈ 7059 ≈ 7.059 𝑠𝑒𝑔𝑢𝑛𝑑𝑜𝑠
8.5
Esto quiere decir que cada 7.059 segundos aproximadamente, aumentara una
unidad el PWM hasta llegar a 255 donde las luces encenderán gradualmente
hasta llegar a su máximo ciclo de trabajo.
55
Capítulo 3. Arquitectura general del sistema y desarrollo
56
Capítulo 3. Arquitectura general del sistema y desarrollo
57
Capítulo 3. Arquitectura general del sistema y desarrollo
58
Capítulo 3. Arquitectura general del sistema y desarrollo
59
Capítulo 3. Arquitectura general del sistema y desarrollo
Una de las partes más complejas de y desafiantes de este proyecto es el hilo que
se encarga de monitorear los datos enviados por el usuario. En principio se asume
que el programa de iluminación estará inactivo y en espera de que el usuario
introduzca los parámetros deseados para personalizar su propio programa de
iluminación, mientras tanto en usuario tiene la posibilidad de controlar la intensidad
de luz a su voluntad desde un punto remoto, con una barra deslizable en la
aplicación es la persona encargada del uso del sistema quien fija un valor a la
intensidad de los reflectores y en el modo manual este valor permanecerá hasta
que sea alterado nuevamente por el usuario.
El programa de iluminación sin embargo al ser un sistema autónomo considera
varias variables para su correcto funcionamiento, es la herramienta más práctica
de este proyecto y lo cual facilita al usuario algunos factores importantes en la
crianza de las gallinas productoras. Toda vez que un nuevo programa de
iluminación sea activado el usuario debe ingresar los parámetros iniciales por
medio de la App, estos datos una vez que sean completados serán enviados al
servidor mediante un Socket TCP para asegurar el correcto envío y recepción.
60
Capítulo 3. Arquitectura general del sistema y desarrollo
61
Capítulo 3. Arquitectura general del sistema y desarrollo
62
Capítulo 3. Arquitectura general del sistema y desarrollo
Para evitar que el agua se meta dentro del gabinete se emplearon conectores tipo
glándula que sirven como sello del interior al exterior al igual que también sujetan
a los cables evitando que se desconecten por movimientos bruscos. Figura 3.11
63
Capítulo 3. Arquitectura general del sistema y desarrollo
64
Capítulo 4. Pruebas realizadas, resultados y costos
65
Capítulo 4. Pruebas realizadas, resultados y costos
66
Capítulo 4. Pruebas realizadas, resultados y costos
Como se explicó en el diagrama de flujo (Figura 3.4) de la App, los datos al no ser
recibidos de forma correcta por una desconexión, el menú en el apartado de
luminosidad desplegara un “-1” indicando que no han llegado los datos de
monitoreo de luminosidad desde el servidor
Para comprobar la conectividad que existe de internet hacia nuestro servidor solo
se requiere ingresar al símbolo de sistema y mandar un ping al nombre de dominio
de nuestro servidor de la siguiente manera. Figura 4.5.
67
Capítulo 4. Pruebas realizadas, resultados y costos
68
Capítulo 4. Pruebas realizadas, resultados y costos
69
Capítulo 4. Pruebas realizadas, resultados y costos
70
CONCLUSIONES
Se requirió una gran labor para llevar a cabo este proyecto haciendo uso de
diferentes áreas de la ingeniería, tal es el caso de la electrónica, la programación y
las comunicaciones que al final fueron aplicadas más allá de lo que compete a
nuestra carrera dando lugar a un tema interdisciplinario, brindando esta tecnología
a la industria avícola. Gracias a la jugosa variedad de herramientas
proporcionadas por estas disciplinas se logró aplicar las técnicas pertinentes que
nos permitieron dar un mejor manejo y una mejor respuesta a los detalles que se
iban presentando.
Bajo la implementación de este sistema hemos comprobado que tanto los
sensores que se utilizaron han sido de las mejores opciones ya que brindan la
información necesaria para este proyecto, en conjunto con todos los dispositivos
que han potencializado este sistema, además es importante resaltar el buen
funcionamiento que está brindando la aplicación ya que se puede comprobar que
el control de la intensidad de luminosidad está siendo muy efectiva para nuestros
fines.
71
Bibliografía
[1] Black, U. Tecnologías Emergentes Para Redes de Computadoras, páginas419-
432. Prentice Hall Hispanoamericana, USA, segunda edición, 1999.
[2] Merilee Ford, S. S., H. Kim Lew y Stevenson, T. Tecnologías de
interconectividad de redes, páginas 37-50, 87-106, Prentice Hall, México, primera
edición, 1998.
[3] Raya, J. L. y Rodrígo, V. Domine TCP/IP, página 495. Universidad de
Cantabria, Espana, primera edición, 1998.
[4] Tanenbaum, A. S. Redes de Computadoras, páginas 521_543. PrenticeHall
Hispanoamericana, USA, tercera edición, 1996.
[5] Comer, D. E. Redes de Computadoras, Internet e Interredes, páginas 340_387.
Prentice Hall Hispanoamericana, USA, primera edición, 1997.
[6] Comer, D. E. Redes Globales de información con Internet y TCP/IP, páginas
337_361. Prentice Hall Hispanoamericana, USA, tercera edición,1996.
[7] Lee, T. y Davies, J. Microsoft Windows 2000 TCP/IP Protocolos y Servicios.
Referencia Técnica, páginas 89, 341-356, McGraw Hill, USA, primera edición,
2000.
[8] Internet Engineering Task Force, 2018, https://tools.ietf.org/html/rfc791
[9] Stallings William Comunicaciones y redes de computadores, 6ta edicion
[10] Institute of Electrical and Electronics Engineers, 2018,
https://ieeexplore.ieee.org/document/6012487/
[11] Duque, R. G. Python para todos, páginas 92_96. Creative Commons
Reconocimiento 2.5e, España, versión 1 edición, 2008.
[12] Hirzel, Timothy. 2018, PWM, http://energia.nu/guide/tutorial_pwm/
[13] 2018, ARDUINO UNO REV3, https://store.arduino.cc/usa/arduino-uno-rev3
[14] Into the world, 2018, http://inworldconnect.blogspot.com/2011/06/el-
encabezado-en-el-modelo-osi.html
72
Glosario
1. OSI (Interconexión de Sistemas Abiertos)
2. IEEE (Instituto de Ingenieros en Electrónica y Electricidad)
3. LLC (Control de Enlace Logico)
4. MAC (Control de Acceso al Medio)
5. IEEE 802.2 (Define el control de enlace logico LLC)
6. IEEE MAC (Estandar que define direcciones mac)
7. PDU (Unidad de Datos de Protocolo)
8. Firewalls (Es una parte de un sistema o una red que está diseñada para
bloquear el acceso no autorizado)
9. TCP (Protocolo de Control de Transmision)
10. UDP (Protocolo de Datagramas de Usuario)
11. EBCDIC (Código de Intercambio Decimal de Código Binario Extendido)
12. ASCII (Código Estándar Estadounidense para el Intercambio de
Información)
13. Software (Equipamiento lógico e intangible de un ordenador)
14. SMTP (Protocolo Simple de Transferencia de Correo)
15. HTTP (Protocolo de Transferencia de Hiper Texto)
16. FTP (Protocolo de Transferencia de Archivos)
17. FTAM (Gestión y Acceso de Transferencia de Ficheros)
18. POP (Protocolo de Oficina Postal)
19. IMAP (Protocolo de Acceso a Mensajes de Internet)
20. SSH (Secure SHell)
21. Telnet (Red de Telecomunicacion)
22. UNIX (Sistema operativo portable, multitarea y multiusuario)
23. TCP/IP (Protocolo de Control de Transmision/Protocolo de Internet)
24. DARPA (Agencia de Proyectos de Investigación Avanzados de Defensa)
25. PC (Computadora Personal)
26. ARPANET (Red de la Agencia de Proyectos de Investigación
Avanzados)
27. CSMA/CD (Acceso Múltiple con Escucha de Portadora y Detección de
Colisiones)
28. MTU (Unidades de transmisión máxima)
29. TFTP (Protocolo de Transferencia de Archivos Trivial)
30. IETF (Grupo de Trabajo de Ingeniería de Internet)
31. DNS (Sistema de Nombres de Dominio)
32. BIND (Dominio de nombre de Internet de Berkeley)
33. Hardware (Es la parte física de un ordenador o sistema informático)
34. DMZ (Zona Desmilitarizada)
73
Anexo A
74
Anexo B
75
76
Anexo C
77
78