Está en la página 1de 75

IOT: Connecting Things

Cómo enseñamos

E-doing (práctica electrónica) es una filosofía diseñada que aplica el principio de que se aprende mejor a
través de la práctica. El currículo incluye actividades integradas y altamente interactivas de e-doing para
ayudar a estimular el aprendizaje, aumentar la retención de conocimientos y enriquecer mucho más la
experiencia integral de aprendizaje, lo que facilita aún más la comprensión de los contenidos.

Actividades interactivas

Las actividades interactivas están integradas en los capítulos para comprobar la comprensión. Algunos de
estos utilizan el “arrastrar y soltar” para completar la actividad (Figura 1). Otros utilizan un método de
“casilla de verificación” para completarlos (Figura 2). Puede consultar su puntuación de inmediato.
También puede restablecer y realizar la actividad la cantidad de veces que desee.

Prácticas de laboratorio

Los laboratorios son las actividades diseñadas para realizarse en equipos físicos (Figura 3). Algunos
laboratorios se diseñan como actividades de grupos pequeños o clase que pueden incluir o no equipos.
Es muy importante aprender y practicar las habilidades usando las prácticas de laboratorio de este curso
como preparación para una carrera en TI. El trabajo en los equipos físicos no solo desarrolla habilidades,
sino que también refuerza el conocimiento y genera confianza. Esto es muy importante al momento de
pasar al campo de TI.

Packet Tracer

En los capítulos de red, configurará una red simple con Packet Tracer, una herramienta de simulación de
red de Networking Academy (Figura 4). Haga clic aquí para descargar la versión más reciente de Packet
Tracer. Packet Tracer puede ser complicado a primera vista, pero es fácil de utilizar, y existen muchas
guías para ayudarlo a aprender a usarlo. Packet Tracer es una herramienta muy sólida que utilizará
regularmente en los cursos de redes más avanzados.

Evaluaciones

Cada capítulo de este curso tiene un cuestionario en línea. Estos se califican de manera automática y
muestra las áreas en las que usted se destaca, así como cualquier área en la que debería realizar un
estudio o una práctica adicionales. También hay un examen de final de curso en línea.
Descripción general del curso

El objetivo de este curso es explorar el campo de las cosas y su conexión con IoT. En este curso,
realizará lo siguiente:

 Analizar las cosas y las conexiones que componen IoT.

 Crear sistemas de sensores/accionadores mediante el microcontrolador de Arduino.

 Crear programas en Python que proporcionan la funcionalidad de IoT a la computadora de una


placa Raspberry Pi.

 Explorar el uso de la tecnología de la nube y la niebla en un sistema de IoT.

 Investigar los sistemas de IoT que pueden resolver problemas globales en manufactura, servicios
de salud o sistemas de energía.

 Diseñar y crear un prototipo de IoT.

Al finalizar este curso, usted será más consciente de cómo crear una solución de IoT con los prototipos
electrónicos o Packet Tracer 7.0.

Capitulo 1 Cosas y Conexiones


La presencia de IoT en el mundo actual
Internet de las cosas (IoT) se encuentra a nuestro alrededor y se expande con rapidez. Apenas estamos
comenzando a aprovechar los beneficios de IoT.

Constantemente se están desarrollando nuevas maneras de utilizar cosas conectadas. IoT ayuda a los
individuos a conectar cosas para mejorar la calidad de vida. Analice cuántas personas utilizan
actualmente un dispositivo portátil para realizar el seguimiento de sus actividades físicas. Haga
clic aquí para ver un ejemplo de una camisa inteligente diseñada para hacer el seguimiento de su nivel de
ejercicio físico.

IoT también ayuda a las organizaciones e industrias a mejorar la administración de recursos para ser más
eficientes. Analice de qué manera se utiliza IoT en las ciudades inteligentes. Haga clic aquí para ver un
panorama general de la manera en que las ciudades inteligentes mejoran las vidas de los ciudadanos.

Haga clic aquí para ver de qué manera Niza, una ciudad en Francia, ha adoptado IoT para transformarse
en una ciudad inteligente.

Soluciones de IoT de Cisco


IoT ayuda a distintos sectores, como fabricación, servicios públicos, petróleo y gas, transporte, minería, y
organizaciones públicas y privadas a aumentar la eficacia operativa.

Las empresas y las ciudades implementan cada vez más soluciones de IoT. Sin embargo, este rápido
aumento en el crecimiento también presenta nuevos desafíos, a saber:

 Cómo integrar millones de dispositivos de diversos proveedores que utilizan aplicaciones


personalizadas

 Cómo integrar cosas nuevas a la infraestructura de red existente

 Cómo proteger los dispositivos nuevos configurados con diversos niveles de seguridad
Para colaborar en el momento de hacer frente a estos desafíos y ayudar a las organizaciones e industrias
a implementar soluciones de IoT, Cisco presentó su propio Sistema de IoT.

Haga clic aquí para obtener más información sobre el Sistema de IoT de Cisco.

Los seis pilares del Sistema de IoT de Cisco


Específicamente, el Sistema de IoT de Cisco reduce la complejidad del proceso de digitalización para la
industria. Tal como se muestra en la figura, el Sistema de IoT de Cisco identifica seis pilares tecnológicos
que ayudan a simplificar y garantizar una implementación de IoT:

 Conectividad de redes

 Computación en la niebla

 Ciberseguridad y seguridad física

 Análisis de datos

 Administración y automatización

 Plataforma de habilitación de aplicaciones

Haga clic aquí para ver cómo Cisco desarrolla soluciones de digitalización para todos los tipos de
industrias.

Cisco Jasper Technologies es una empresa que proporciona una plataforma de nube de IoT que le
permite administrar la conectividad para todos sus dispositivos de IoT. Con Jasper, las empresas pueden
utilizar las redes celulares para conectar cualquier dispositivo, desde marcapasos hasta motores a
reacción. Las empresas pueden entonces administrar la conectividad de servicios de IoT a través de
plataformas de nube de IoT como una plataforma de servicio (SaaS).

Para obtener más información sobre Cisco Jasper Technologies, su plataforma de nube de IoT y las
historias de éxito de IoT del cliente, haga clic aquí.
Panorama general de un sistema controlado
Existen distintos tipos de dispositivos habilitados con IoT disponibles. Sin embargo, la mayoría de los
dispositivos de IoT utilizan sensores, controladores y actuadores para realizar funciones.

El bucle de retroalimentación es utilizado por el dispositivo de IoT para proporcionar información en


tiempo real a su controlador sobre el comportamiento actual del sistema. Un bucle cerrado existe cuando
el controlador recibe retroalimentación constante proveniente de sus sensores. El controlador analiza y
procesa la información, y, en caso de ser necesario, utiliza actuadores para modificar las condiciones.
Este proceso se repite y se ajusta constantemente.

Por ejemplo, en la figura se ilustran los componentes de IoT dentro de un termostato inteligente. Un
sensor (o varios sensores) envían continuamente lecturas de la temperatura a un controlador. El
controlador utiliza esta retroalimentación para monitorear las condiciones y ajustar la temperatura según lo
prestablecido por el usuario.

El controlador también puede comunicarse de manera inalámbrica con el usuario para mejorar la
experiencia de IoT.

Haga clic aquí para ver un ejemplo de cómo se puede utilizar un termostato inteligente para ayudar a
reducir los costos de energía en un hogar.

En las siguientes páginas, se proporciona más información sobre sensores, actuadores, controladores y
procesos.

Sensores
Un sensor es un dispositivo que puede usarse para medir una propiedad física mediante la detección de
algún tipo de información del mundo físico. Esta información puede ser luz, humedad, movimiento,
presión, temperatura, o cualquier otra condición ambiental.

Por ejemplo, en la figura 1, la granja de café mostrada podría usar sensores para recopilar una variedad
de información, como luz solar, temperatura y humedad del suelo. Estos datos luego pueden analizarse
para maximizar la producción y la calidad de los granos de café.
Existen distintos tipos de sensores. En la figura 2, se muestran ejemplos de sensores.

Un sensor puede conectarse a un controlador de forma directa o remota. Los sensores y controladores
generalmente son conectados a la red mediante circuitos digitales o analógicos. Los sensores envían
datos a un controlador. Ese controlador puede reaccionar ante los datos de sensores inmediatamente y
cambiar la configuración del accionador. Por ejemplo, una Red de Área de Controlador (CAN) es un
estándar utilizado en la mayoría de los automóviles modernos para permitir la comunicación entre los
sensores y los controladores sin la necesidad de utilizar computadoras host. La mayoría de los nuevos
automóviles están equipados con cámaras de respaldo o sensores anticolisión. Estas cámaras y sus
sensores pueden alertar a los microcontroladores de la presencia de un objeto en el camino y los
microcontroladores hacen que el auto emita una señal de advertencia o accione los frenos de manera
automática.

El controlador también puede actuar como gateway hacia una red IP y pasar los datos de sensores para
almacenarse o analizarse en servidores en la niebla o la nube. Los datos y los análisis recopilados se
pueden utilizar para activar acciones de una persona, sistemas o máquinas. A modo de ejemplo, la
cantidad de automóviles en la calle puede provocar un cambio en el sistema de semáforos. El análisis de
las tasas de natalidad en diferentes condados puede hacer que un gobierno construya una nueva escuela
en una ubicación diferente.

En la figura 3, se proporcionan ejemplos de cómo se utilizan los sensores en diversos sectores. Haga clic
en cada uno para ver lo que miden estos sensores.
Actuadores
Un actuador es un motor básico que se puede usar para mover o controlar un mecanismo o un sistema,
sobre la base de un conjunto específico de instrucciones.

Generalmente, en IoT industrial, hay tres tipos de actuadores:

• Eléctrico: se alimenta de un motor que convierte la energía eléctrica en funcionamiento mecánico

• Hidráulico: utiliza presión de fluidos para realizar movimientos mecánicos

• Neumático: utiliza aire comprimido para habilitar operaciones mecánicas

En el ejemplo de la figura, se muestra un actuador industrial compuesto por un solenoide eléctrico


utilizado para controlar la hidráulica.

En otras áreas, el actuador será responsable de transformar una señal eléctrica en resultado físico. Este
resultado físico puede proporcionar información a un usuario mediante el LED o modificar otro dispositivo
o entorno. Por ejemplo, un calentador ubicado en el bucle de retroalimentación de un sistema funge como
actuador porque modifica el estado del entorno controlado (temperatura) en respuesta a una señal
eléctrica.

Más allá de la forma en que el actuador provoca movimiento, la función básica de este dispositivo es
recibir una señal del controlador y, según esa señal, realizar una acción establecida.

Controladores
Los controladores son responsables de recopilar datos de los sensores y proporcionar conectividad hacia
la red o Internet. Los controladores pueden tener la capacidad de tomar decisiones inmediatas o de enviar
datos a una computadora más potente para su análisis. Esta computadora más potente puede estar en la
misma LAN que el controlador, o bien puede ser accesible únicamente por medio de una conexión a
Internet.
La figura 1 muestra un ejemplo de una topología de IoT que incluye sensores, controladores, routers y
centros de datos. Para llegar a las computadoras más potentes en el centro de datos, el controlador
primero envía datos a un router local. Este router es la interfaz entre la red local e Internet. Puede enviar
datos hacia atrás y adelante entre ellos.
La figura 2 muestra un ejemplo de una topología de IoT en la que se destaca la manera en que se utilizan
los controladores en la computación en la niebla. Imagine semáforos inteligentes que tengan sensores y
actuadores. Los sensores detectan e informan la actividad del tránsito al controlador. El controlador puede
procesar estos datos de manera local y determinar los patrones de tráfico óptimos. Con esta información,
el controlador envía señales a los actuadores en los semáforos para ajustar los flujos de tráfico. Este es
un ejemplo de la comunicación máquina a máquina (M2M). En esta situación, los sensores, los
actuadores y el controlador coexisten en la niebla. Esto significa que la información no se reenvía más allá
de la red local donde se encuentran los dispositivos finales.

En la figura 3, se muestra un ejemplo de controladores con IP habilitada. El controlador con IP habilitada


reenvía la información a través de una red IP y permite que las personas accedan al controlador de
manera remota. Además de reenviar la información básica en una configuración M2M, algunos
controladores pueden realizar operaciones más complejas. Algunos controladores pueden consolidar la
información de varios sensores o realizar un análisis básico de los datos recibidos.

El microcontrolador Arduino, ilustrado en la figura 4, y el Raspberry Pi (RaPi), que se muestra en la figura


5, son los dos tipos de controladores. Los dos dispositivos pueden funcionar sin Internet y son utilizados
tanto por aficionados como por profesionales. La diferencia clave entre ambos es el tamaño físico, la
potencia de procesamiento disponible, la memoria y el sistema operativo. Arduino suele requerir menos
energía que RaPi y es más conveniente para manejar señales analógicas de entrada. La aplicación debe
determinar qué controlador es mejor usar.
Los dos controladores suelen utilizarse en conjunto. Por ejemplo, puede adquirir datos con Arduino y
luego procesar los datos con Raspberry Pi. En un capítulo posterior, encontrará información detallada
sobre los controladores de Arduino y Raspberry Pi.

Flujo de proceso de IoT


Los componentes clave de algunos de los sistemas más simples de IoT incluyen sensores que se
conectan, a través de un enlace inalámbrico o cableado, a los actuadores o controladores. Al igual que
con varios componentes en cualquier sistema, algunos dispositivos pueden tener más de una
función. Este es el caso para el controlador en un sistema de IoT. Un controlador puede recopilar datos
de los sensores sin intervención humana o conectividad de red. A modo de ejemplo, un sensor determina
que la temperatura de un apartamento ha descendido por debajo de un nivel preestablecido. El
controlador procesará los datos y enviará el resultado para que el calentador (el actuador) se encienda.

Un controlador también puede actuar como gateway hacia la red local. En el ejemplo anterior, si el
sistema de IoT está diseñado para capturar los cambios de temperatura dentro de cada departamento del
edificio, el controlador puede transmitir los datos para su almacenamiento o análisis en servidores de la
red local o perimetral. El lugar en el que se procesan los datos afecta la velocidad a la que el cambio
puede ocurrir en el sistema. Los datos se pueden almacenar y procesar en los dispositivos que están
cerca del perímetro de la red o, incluso, más cerca de los sensores. Este tipo de procesamiento se
denomina computación en la niebla. Los nodos de niebla a partir de los cuales se crean áreas de
procesamiento forman parte de este sistema.

Un controlador también puede ser un gateway hacia una red en la nube. Si el sistema de IoT de nuestro
ejemplo inicial ha sido diseñado para agregar los datos de los termostatos de diversas edificios de
apartamentos de propiedad de la misma empresa, los controladores y dispositivos múltiples pueden
almacenar y procesar los datos de los sensores en distintos nodos de niebla. Los datos de distintos nodos
de la niebla se almacenarían, agregarían y analizarían. Estos datos analizados se pueden utilizar para
tomar decisiones comerciales informadas.
1.1.3.1 Procesos
Como se muestra en la figura 1, un proceso utiliza entradas para ejecutar las acciones correctas y
alcanzar el resultado deseado. Más formalmente, un proceso es una serie de pasos o acciones adoptados
para lograr el resultado deseado por el consumidor del proceso. Un sistema es un conjunto de reglas que
rige la serie de pasos o de acciones en el proceso.

Conducir un automóvil es un ejemplo de un proceso. Los ejemplos de entradas son la velocidad, la


dirección y la cercanía a otros automóviles. Los ejemplos de acción incluyen la aceleración, el frenado y la
dirección del automóvil. Todas estas acciones crean un sistema, conocido como conducción. Los
ejemplos de salidas serían la velocidad correcta, la dirección y la cercanía a otros automóviles y
obstáculos, como se destaca en la figura. 2.

Retroalimentación
Los retroalimentación son cuando el resultado de un sistema, o proceso, influye en la entrada.

Para ilustrarlo, piense cómo se utilizaron los retroalimentación para llegar con seguridad en la Luna (figura
1). La computadora recibió mediciones de retroalimentación de la altitud y velocidad e indicó
continuamente esta información al astronauta y a los sistemas incorporados. El astronauta utilizó el
comentario para controlar la nave espacial y ajustar la altitud, el motor y los niveles de aceleración para
aterrizar correctamente en la Luna.
Los retroalimentación comúnmente se conocen como bucle de comentarios. Esto se debe a que la
entrada deriva en la salida que se toma como ejemplo una y otra vez se manera permanente, y se utiliza
como nueva entrada, tal como se muestra en la figura 2. El bucle de comentarios representa la idea de un
ciclo de causa y efecto, o de circuito, donde los resultados ajustan continuamente las acciones.

Muchos procesos del sistema tienen normalmente algún tipo de mecanismo de bucle de comentarios. Los
sistemas generalmente tienen una manera de generar bucles o aportar información sobre la calidad del
resultado.

Los bucles de comentarios pueden ser positivos o negativos:

 Comentarios positivos: el comentario refuerza la entrada original. Los retroalimentación positivos


aceleran la transformación de salida en la misma dirección que el resultado anterior. Tienden a
cualquier crecimiento exponencial o rechazo, como se muestra en la figura 3.
 Comentario negativo: el comentario anula o contrarresta la entrada original. Los retroalimentación
negativos disminuyen el efecto del resultado anterior. Tienden hacia la estabilización, logrando
cierto nivel de equilibrio, como se muestra en la figura 4.

Sistemas de control
Un sistema de control incluye un controlador que utiliza entradas y salidas para administrar y regular el
comportamiento del sistema en un intento de llegar a un estado deseado. La entrada especifica cuál
debería ser el resultado del proceso completo. El controlador indica qué cambios específicos se necesitan
para alcanzar el resultado deseado según la entrada. La parte controlada del sistema, el proceso y el
accionador suelen denominarse la planta. La planta utiliza la entrada para obtener el resultado deseado.

Elegir los ajustes para aplicar en una planta para lograr la salida deseada se llama teoría de control. La
teoría de control es básicamente una estrategia para seleccionar la entrada correcta y cómo proceder
para generar el resultado deseado.

La teoría de control se aplica en todos los tipos de dispositivos. Considere cómo se aplica la teoría de
control al conducir un automóvil. El conductor del automóvil es el controlador, quien se ocupa de
administrar y regular el automóvil (la planta). En función de la entrada, el conductor determina cómo
utilizar cada control (p. ej., acelerador, freno, volante) para alcanzar el resultado esperado. Muchos de los
procesos en un automóvil también dependen de los sistemas de control diseñados por el fabricante de
automóviles. En estos sistemas, el resultado se mide mediante algún tipo de sensor para informar qué
cambios debe hacer un controlador. El objetivo consiste en diseñar un sistema con un índice de error de
cero. Esto significa que el resultado de la planta es exactamente el que usted desee. Por lo tanto, si el
conductor desea viajar a 65 MPH, la configuración de control de la velocidad crucero de 65 MPH debería
alcanzar exactamente ese resultado.
A una escala mayor de tecnología, piense cómo se aplicó la teoría de control para llegar correctamente
con el Curiosity Rover de la NASA a Marte. La nave utilizó un sistema de control dinámico para determinar
cómo moverse por el espacio. Los sensores de la nave proporcionaron la entrada repetidamente mediante
el muestreo de su posición y velocidad en su descenso a la superficie de Marte. Los procesos de la nave
utilizaban esta entrada para realizar los ajustes necesarios para llegar al destino deseado.

Los sistemas de control pueden ser sistemas de ciclo abierto o cerrado. La diferencia entre estos dos
sistemas se basa en si utilizan retroalimentación o no.

Haga clic aquí para ver un excelente video de 9 minutos en el que se explican los sistemas de ciclo
abierto y cerrado.

Sistemas de control de bucle abierto


Los sistemas de control de bucle abierto no usan retroalimentación. El controlador instruye a la planta
para que realice una acción predeterminada sin ninguna verificación de los resultados deseados. Un
diagrama de lógica de un sistema de control de anillo abierto se muestra en la figura.

Los sistemas de control de bucle abierto se utilizan a menudo para los procesos sencillos donde están
bien definidas las relaciones entre la entrada y la planta. El trabajo del ingeniero consiste en determinar
cómo manipular las entradas de información de modo que la planta genere los resultados deseados.

Por ejemplo, considere una cafetera (la planta) como el sistema de bucle abierto. El usuario proporciona
la cantidad correcta de café y de agua (entradas). La planta calienta agua y controla el flujo de agua
caliente hacia el filtro. El resultado es el café. Si suponemos que la planta está en condiciones de
funcionamiento adecuadas, la calidad del café (el resultado) se determina a partir de la calidad de las
entradas.

Otro ejemplo del sistema de bucle abierto es un dispositivo del hogar. Un lavaplatos (la planta) se ejecuta
normalmente durante una cantidad de tiempo determinada con jabón y agua caliente (entradas). La
planta, con sus chorros de agua y estantes ubicados de manera, produce platos limpios (el resultado). Sin
embargo, la planta no posee la capacidad de determinar cuándo se limpian los platos o si se los limpia. La
planta ejecutará su ciclo completo independientemente de la calidad de la entrada. ¿El usuario cargó
platos excepcionalmente sucios? ¿El usuario agregó jabón?

Observe que, en ambos ejemplos, la calidad de las entradas afecta directamente la calidad del resultado.

Sistemas de control de bucle cerrado


Un sistema de control de bucle cerrado usa retroalimentación para determinar si la salida recopilada es la
salida deseada.

Como se muestra en el diagrama en la figura 1, un sistema de ciclo cerrado mide el resultado mediante un
sensor. A partir de la teoría del control, esta medición se compara con una medición de referencia, que
representa el estado deseado (entrada). El resultado luego “se vuelve a enviar” a un controlador. El
controlador utiliza estos retroalimentación para modificar los controles de la planta para obtener una
nueva versión del resultado y repeticiones de proceso.

Un sistema de control de ciclo cerrado puede ajustar continuamente el resultado según el estado deseado
(entrada) y el estado medido del bucle anterior por el sistema.

Existen muchos ejemplos de sistemas de control de ciclo cerrado. Por ejemplo, observe el diagrama del
sistema de control de calefacción, ventilación y aire acondicionado (HVAC) de una casa en la figura 2.
Inicialmente, el termostato digital está programado con la temperatura deseada. La entrada se ingresa en
la planta de HVAC. De ser necesario, la planta acciona el equipo de HVAC para generar el resultado
deseado. El resultado deseado se mide en función de la entrada deseada. Se determina el error, o la
diferencia, entre las temperaturas deseadas y el termostato ajusta el control en la planta de HVAC.

Otro ejemplo de un sistema de control de ciclo cerrado se puede encontrar en modelos nuevos de
secadores de ropa. Estas secadoras tienen sensores que detectan la humedad relativa mientras que la
ropa se seca. En este ejemplo de un sistema de control de ciclo cerrado, el estado de error sería la suma
de la sequedad deseada menos la sequedad medida. Este error se envía continuamente al controlador
para hacer las correcciones necesarias en la planta, lo que reduce el error en la próxima versión. Este
proceso continúa hasta que la ropa esté seca y el controlador pare la planta.
Controladores de ciclo cerrado
Existen varios tipos de controladores de ciclo cerrado. Un controlador de proporcional-integral-derivado
(PID) es una forma eficiente de implementar el control de retroalimentación. Los controladores de PID se
utilizan en muchos tipos de aplicaciones industriales porque son fáciles de usar. Los controladores de PID
son fáciles de entender, implementar, probar y utilizar para solucionar problemas. Los dispositivos
Arduino® y Raspberry Pi® se muestran en la figura 1 y pueden utilizarse para implementar los
controladores de PID.

Como se mencionó anteriormente, el acrónimo PID significa proporcional, integrado y derivado. Cada uno
de estos términos describen cómo se maneja un error. Aunque la matemática excede el alcance de este
curso, el significado de estos términos se puede explicar con los gráficos de la figura 2.

 Controladores proporcionales (P): estos controladores observan específicamente la diferencia


entre el resultado medido y el resultado deseado. La cantidad de cambio que el controlador envía a
la planta es proporcional al tamaño del error de la iteración más reciente. Por ejemplo, en un
sistema de HVAC, el controlador activaría el 50% de los refrigeradores si el sensor detectase una
desviación de un grado de la temperatura determinada. En una desviación de 2 grados, se
habilitaría una capacidad del 100%. Los controles proporcionales suelen pasar por alto la
temperatura establecida, como se muestra en el gráfico P, porque están buscando sólo la
desviación en el punto establecido en un momento determinado.
 Controladores integrales (PI): estos controladores proporcionales e integrales utilizan datos
históricos para medir cuánto se desvío el sistema de la temperatura determinada. Cuanto más
tiempo se desvíe el sistema de la temperatura establecida, más larga será la respuesta del
controlador. En un sistema de HVAC, el controlador explicaría los datos históricos y el tiempo al
ajustar el sistema. Aunque los controladores integrales también pasarían por alto la temperatura
establecida, la variación disminuirá en horas extras, como se muestra en el gráfico de PI.

 Controladores derivados (PID): estos controladores proporcionales, integrales y derivados


incluyen datos sobre cómo el sistema se aproxima rápidamente al resultado deseado. En un
sistema de HVAC, la función derivada de un controlador PID observa la velocidad de cambio en la
temperatura. Esto permite que el controlador ajuste rápidamente el resultado a medida que el
sistema se aproxima al resultado deseado, como se muestra en el gráfico de PID.

Observe que el control proporcional puede implementarse con los controladores neumáticos, analógicos o
electrónicos.

Sistemas interdependientes
Los sistemas de control de ciclo cerrado son fáciles de comprender. Sin embargo, el mundo real puede
presentar una complejidad considerable. Muchos factores pueden afectar los sistemas y el alcance de su
impacto no siempre se mide fácilmente. La mayoría de los sistemas tiene muchas partes
interdependientes que contribuyen y afectan la salida.

Por ejemplo, piense en un sistema de estilo de vida saludable, tal como se muestra en el diagrama en la
figura. 1. Una persona emprende un programa de dieta y ejercicio. Después de un momento, se vuelve
más fuertes y la ropa le queda más suelta. Comienza a recibir halagos (retroalimentación) de otros. Esto
genera buenos sentimientos y los motiva a continuar su dieta y ejercicio.

Otro ejemplo es el sistema climático de la Tierra. En el diagrama de la figura 2, se muestra cómo las
temperaturas globales en aumento provocan que el hielo se derrita más rápido con la sabida
consecuencia de un incremento en el nivel de la superficie del océano. Una mayor superficie del océano
significa menor cantidad de luz sola reflejada hacia el espacio, lo que incrementa la temperatura de la
Tierra.

Por último, analice el ejemplo de reciclar materiales para que vuelvan a formar parte de la cadena de
abastecimiento. Haga clic aquípara saber de qué manera Dell recicla el plástico de productos electrónicos
viejos para volver a utilizarlo en la cadena de abastecimiento y recurrir a él para fabricar nuevos sistemas
de computadoras.
Práctica de laboratorio: analice un proceso
En esta práctica de laboratorio, analizará los procesos de las actividades comunes dibujando las
relaciones entre las entradas, las acciones y las salidas.

Práctica de laboratorio: sistema de control de bucle abierto


En esta práctica de laboratorio, analizará los procesos de las actividades comunes dibujando las
relaciones entre las entradas, las acciones y las salidas.

Práctica de laboratorio: compare los sistemas de control de bucle abierto y bucle


cerrado
En esta práctica de laboratorio, se comparan los sistemas de control de ciclo cerrado y de ciclo abierto.

Práctica de laboratorio: dibuje un diagrama de proceso


En esta práctica de laboratorio, creará un diagrama de proceso para una solución de IoT que incluye un
mecanismo de retroalimentación.

Práctica de laboratorio: diagrame un proceso del mundo real


En esta práctica de laboratorio, diagramará procesos observables de ejemplos de la vida real que incluyan
mecanismos de retroalimentación.

Modelos de comunicación
Los modelos de redes en capas se usan para ilustrar cómo opera la red. Hay muchos beneficios por el
uso de un modelo en capas para explicar protocolos de red y operaciones:

 Colaboran en el diseño de protocolos, ya que los protocolos que operan en una capa específica
tienen información definida respecto de la cual actúan y una interfaz definida para las capas
superiores e inferiores.

 Fomentan la competencia, ya que los productos de distintos proveedores pueden trabajar en


conjunto.

 Evitan que los cambios en la tecnología o en las capacidades de una capa afecten otras capas
superiores e inferiores.

 Proporcionan un lenguaje común para describir las funciones y funcionalidades de redes.


Estandarización
Cada día, una mayor cantidad de dispositivos están en línea, lo que se suma a la IoT en constante
crecimiento. Los analistas acuerdan que la IoT incorporará miles de millones de dispositivos durante la
próxima década. El desafío del ecosistema de IoT es garantizar que estos dispositivos emergentes de IoT
se pueden conectar de manera segura y confiable a Internet y entre sí.

Para garantizar comunicaciones eficaces a través de los distintos sistemas de IoT, se requiere del uso de
estándares y tecnologías uniformes, seguros y reconocidos. La industria de redes ha desarrollado
modelos en capas, como el modelo OSI y el modelo TCP/IP, para estructurar y estandarizar la
conectividad entre los dispositivos de red. Con el auge de los dispositivos de IoT que se conectan y
comunican por Internet, resulta aun más importante que estos dispositivos también pueden conectarse y
comunicarse sin importar el fabricante del dispositivo o el sistema operativo en los que se ejecutan.

Muchas nuevas organizaciones como el Consorcio Industrial de Internet, el Consorcio de OpenFog y la


Fundación de Conectividad Abierta, trabajan con los miembros del sector, del gobierno y de la academia
para admitir e impulsar la creación y la adopción de nuevos sistemas de IoT. Para colaborar con este
objetivo, ayudan a desarrollar arquitecturas estándar y marcos de trabajo que permiten que los
dispositivos se conecten y comuniquen de forma confiable y segura en IoT.

El Consorcio Industrial de Internet (IIC) ha utilizado grupos de trabajo con representantes de distintos
sectores, como energía, fabricación, transporte y servicios de salud, para crear la Arquitectura de
referencia industrial de Internet. Esta arquitectura es una plantilla y una metodología arquitectónicas
basadas en normas para la IoT industrial. El IIC también colabora con empresas como Cisco, Bosch
Rexroth, Intel y National Instruments para desarrollar el primer banco de Redes con Limitación de
Tiempos (TSN) a nivel mundial. El objetivo del banco de pruebas consiste en visualizar el valor de los
nuevos estándares de Ethernet requeridos para admitir la interoperabilidad perfecta entre los dispositivos
inteligentes emergentes necesarios para los nuevos sistemas de IoT. El banco de pruebas proporcionará
comentarios a las organizaciones de estándares relevantes en las áreas de consideración y mejora.

El Consorcio de OpenFog crea una arquitectura de referencia abierta para la computación en la niebla.
También crean modelos operativos y bancos de pruebas, definen e impulsan la tecnología, educan el
mercado y promueven el desarrollo empresarial a través de un ecosistema de OpenFog.

La Fundación de Conectividad Abierta (OCF) trabaja en pos de diseñar soluciones que apunten a una
especificación de interoperabilidad única y abierta de IoT. Para ello, el OFC ha patrocinado el proyecto
IoTivity, un marco de trabajo de software de código abierto. Este marco de trabajo habilitará la
conectividad transparente para artefactos como dispositivos, teléfonos, computadoras y equipos
industriales. Estos dispositivos podrán comunicarse entre sí independientemente del fabricante, el sistema
operativo o el conjunto de chips.
Modelos TCP y OSI
Las conexiones de red suelen describirse con mayor frecuencia como las que utilizan los modelos OSI y
TCP/IP. Como se muestra en la figura 1, ambos modelos usan capas y cada capa tiene una función.

El modelo de protocolo TCP/IP para comunicaciones de internetwork se creó a principios de la década del
setenta. Como se muestra en la figura 2, en ella se definen cuatro categorías de funciones que deben
ocurrir para que las comunicaciones se lleven a cabo correctamente. La arquitectura del conjunto de
protocolos TCP/IP sigue la estructura de este modelo, motivo por el cual se lo conoce como modelo de
protocolo. El modelo de protocolo TCP/IP se conoce comúnmente como modelo de Internet.

El modelo de referencia OSI proporciona una amplia lista de funciones y servicios que se pueden
presentar en cada capa. También describe la interacción de cada capa con las capas directamente por
encima y por debajo de él. Haga clic en cada capa del modelo OSI de la figura 3 para ver los detalles.
Es importante destacar que, en las redes, ambos modelos se utilizan de manera indistinta. Por lo tanto, se
recomienda asegurarse de estar familiarizado con estos modelos.

Nota: tenga en cuenta que, mientras las capas del modelo TCP/IP se mencionan solo por el nombre, las
siete capas del modelo OSI se mencionan con frecuencia por número y no por nombre. Por ejemplo, la
capa física se conoce como capa 1 del modelo OSI.

Modelo de referencia del foro mundial de IoT


Al igual que el modelo OSI, el modelo de referencia de IoT consta de siete partes. Sin embargo, las partes
se denominan niveles en lugar de capas. El modelo de referencia de IoT fue desarrollado como un marco
de trabajo común para guiar y acelerar las implementaciones de IoT. El modelo es el resultado de un
esfuerzo de colaboración de los 28 miembros del grupo de trabajo de arquitectura, administración y
análisis del Foro Mundial de IoT. También cuenta con el respaldo del Consorcio Industrial de Internet (IIC).

El objetivo del modelo de referencia de IoT es proporcionar la terminología común y ayudar a aclarar
cómo fluye la información y cómo se la procesa para un sector unificado de IoT.

Como se muestra en la figura, el modelo desglosa el concepto de IoT en siete niveles funcionales, desde
dispositivos físicos y controladores en el nivel 1 hasta la colaboración y los procesos en el nivel 7.

Arquitectura simplificada de IoT


Desarrollar sistemas de IoT para interconectar objetos inteligentes es una tarea compleja. Muchos objetos
inteligentes diseñados por distintos fabricantes presenta restricciones relacionadas con el software de
propiedad exclusiva, lo cual hace que la interoperabilidad sea un desafío. Además, los dispositivos como
sensores, accionadores y controladores tienen restricciones en el ancho de banda, la energía, el tamaño y
la ubicación instalada. Estas restricciones amplían los problemas relacionados con la seguridad y
privacidad.

Existen varias arquitecturas que facilitan el diseño y la creación de sistemas de IoT. El modelo OSI, el
modelo TCP/IP y el modelo de referencia del foro mundial de IoT se presentan como ejemplos.

En la actualidad, existen distintas opiniones que optan por un enfoque más sencillo basado en el tipo o
nivel de conexiones entre objetos inteligentes. Cada nivel de conectividad expandida podría tener un
conjunto diferente de problemas de diseño y de requisitos relacionados con la seguridad y la privacidad
que deberían tenerse en cuenta.

Device-to-Device (Figura 1)

Las soluciones IoT suelen admitir un objeto inteligente que se conecta directamente a otro mediante un
protocolo inalámbrico, como Bluetooth o Zigbee. Un ejemplo de este nivel es un sensor que se encuentra
en un viñedo y detecta el suelo seco. Este envía una señal a un accionador, que activa el sistema de
riego.
Device-to-Cloud (Figura 2)

En un modelo de comunicación de dispositivo-a-red-a-nube, el dispositivo de IoT se conecta a través de


una red local directamente a un servicio de Internet en la nube mediante conexiones tradicionales
Ethernet cableadas o inalámbricas. Este modelo establece una conexión entre el dispositivo, la red IP y la
nube para permitir el intercambio de datos y los mensajes de control.

Device-to-Gateway-to-Cloud (Figura 3)

Muchos dispositivos inteligentes, como rastreadores de estado, no están habilitados para IP y no tienen la
capacidad nativa de conectarse directamente a la niebla o la nube. Para estos dispositivos, existe un
software de aplicaciones que funciona en un dispositivo de gateway local y actúa como intermediario entre
el dispositivo y el servicio en la nube. El gateway también puede proporcionar traducción de protocolos y
datos, o servicios de seguridad. Para los dispositivos, como los rastreadores de estado, el gateway suele
ser una aplicación que se ejecuta en un smartphone.

Device-to-Gateway-to-Cloud-to-Application (Figura 4)

Otra opción de conexión admite la recopilación y transferencia inteligentes de datos del dispositivo a
través de un gateway a una red IP local. Los datos después fluyen a la niebla o a la nube y están
disponibles para que los usuarios exporten y analicen. Los datos se analizan a menudo junto con datos de
otras fuentes u otros servicios en la nube.

El conocimiento de los cuatro niveles básicos de conexiones garantizará que se preste atención a la
interoperabilidad y los estándares abiertos del dispositivo. Estos son los aspectos clave a tener en cuenta
en el momento de desarrollar un sistema de IoT interconectado.
Conexiones dentro de las redes
Existen significados múltiples y complementarios de la palabra “conexión” al diseñar, configurar o
solucionar problemas relacionados con los sistemas de IoT.

En primer lugar, los dispositivos deben “estar conectados” a algún tipo de fuente de energía. Los tipos de
conexiones para la energía incluyen baterías, conexiones directas a alimentación de CA, fuentes de
alimentación externa (convertir CA a CC), y alimentación por Ethernet (PoE). La mayoría de los
dispositivos se conectan con la matriz de energía local, como un tomacorriente de pared. Sin embargo, los
dispositivos de IoT también se utilizan en ubicaciones remotas donde el acceso a la energía es limitado o
no se encuentra disponible. En estas situaciones, la recolección de energía se lleva a cabo a partir de la
luz (células solares), la vibración (elementos piezoeléctricos de la presión) o la diferencia de temperatura
(termocupla) para alimentar los dispositivos.

Un segundo significado de la palabra “conexión” se relaciona con los cables y el circuito utilizados en los
dispositivos de IoT. Todos los dispositivos de IoT poseen circuitos que interconectan sus sensores,
accionadores, y controladores juntos. Para simplificar este proceso al diseñar prototipos de nuevos
dispositivos, suele utilizarse una placa de prueba sin soldaduras. Una placa de prueba sin soldaduras es
una forma flexible de establecer conexiones electrónicas a nivel del circuito para todos los tipos de
componentes. Por ejemplo, en la figura, Raspberry Pi está conectado a una placa de prueba que ofrece
acceso a LED, resistores y circuitos integrados.

Un tercer significado de la palabra “conexión” se relaciona con los enlaces de red de OSI de las capas 2 y
3. Este es el significado más importante que debe tenerse en cuenta al hacer referencia a los dispositivos
de IoT. En las siguientes páginas, se describen los medios, protocolos y estándares requeridos para
lograr conexiones de red.

Conexiones físicas
Los dispositivos de IoT utilizan tres medios para comunicarse:

 Cobre: las redes utilizan medios de cobre porque son económicos, fáciles de instalar y tienen baja
resistencia a la corriente eléctrica. Sin embargo, estos medios están limitados por la distancia y la
interferencia de señal. Por lo tanto, todos los medios de cobre deben seguir limitaciones de
distancia estrictas según lo especifican los estándares que los rigen.
 Fibra óptica: los cables de fibra óptica pueden viajar significativamente mayores distancias que los
cables de cobre debido a su inmunidad a la interferencia de señal. El dispositivo emisor transmite
los bits binarios como impulsos de luz mediante LED o láseres. El dispositivo de recepción usa
fotodiodos para detectar los pulsos de luz y convertirlos en voltaje. Los cables de fibra óptica se
clasifican ampliamente como fibra óptica monomodo (SMF) y fibra multimodo (MMF). El SMF consta
de un núcleo muy pequeño que utiliza tecnología láser costosa para enviar un único haz de luz a
través de grandes distancias que abarcan cientos de kilómetros. El MMF consta de un núcleo más
grande y utiliza emisores LED para enviar pulsos de luz. El MMF es popular en implementaciones
de LAN ya que puede admitir 10 Gb/s por enlaces de 550 metros.

 Inalámbrico: la tecnología inalámbrica consiste en una amplia variedad de opciones de conexión,


como señales, frecuencias de radio y microondas, y enlaces satelitales.

Todos los conectores de cobre y de cable de fibra cumplen con los estándares de capa física específicos.
Estos estándares especifican las dimensiones mecánicas de los conectores y las propiedades eléctricas
aceptables de cada tipo. Estos medios de red utilizan conectores modulares para facilitar la conexión y la
desconexión.

Conexiones de red y enlace de datos


Al proporcionar energía a los componentes, todos los dispositivos cumplen con los estándares estrictos
según lo especificado por las agencias gubernamentales. No se requieren protocolos para suministrar
correctamente energía. Por ejemplo, se enchufa simplemente el componente a un tomacorriente de pared
y se activa el dispositivo.

La comunicación de red, por otra parte, requiere el uso de protocolos para establecer reglas de
comunicación. Los mensajes solo se pueden intercambiar correctamente entre los dispositivos utilizando
protocolos comúnmente aceptados.

La capa de enlace de datos más popular (capa 2) utilizada en redes cableadas es Ethernet. Ethernet es
un protocolo de capa 2 que ofrece tramas entre los dispositivos de una LAN. Otros protocolos de enlace
de datos de uso general incluyen estándares inalámbricos, como IEEE 802.11 (Wi-Fi), IEEE 802.15
(Bluetooth), y redes celulares 3G o 4G.

Existen varias tecnologías emergentes cuya finalidad consiste en admitir la conectividad de las "cosas" en
la IoT, como:

 LoRoWAN: una red de área amplia de bajo consumo


 IoT de banda angosta "(NB-IoT, Narrowband IoT)": una nueva forma de comunicación con las
“cosas” que requiere de pequeñas cantidades de datos durante períodos prolongados en lugares de
difícil acceso.

 Redes urgentes: Ethernet mejorada que admite aplicaciones sensibles a la latencia y que requieren
de un rendimiento de red determinado.

Los protocolos de capa de enlace de datos son responsables de varias actividades:

 Permite a las capas superiores acceder a los medios.

 Acepta paquetes de capa 3 y los encapsula en tramas

 Prepara los datos de red para la red física.

 Controla la forma en que los datos se colocan y reciben en los medios.

 Intercambia tramas entre los nodos en un medio de red físico, como cobre o fibra óptica.

 Recibe y dirige paquetes a un protocolo de capa superior.

 Lleva a cabo la detección de errores.

Los protocolos de la capa 3 son responsables de proporcionar la dirección para llegar a las redes
remotas. La capa de red más común (capa 3) utilizada en conexiones de red y en Internet es el protocolo
IP.

En la figura, el usuario de PC1 envía un archivo al servidor web en otra red. Es importante destacar que
todos los dispositivos de redes tienen que llegar a un acuerdo respecto del uso de Ethernet e IPv4 para
que las comunicaciones de la red sean posibles.

Conexiones de aplicaciones
IoT admite muchos tipos de conexiones: máquina a máquina (M2M), máquina al gateway (M2G), y
máquina a la nube (M2C). Los dispositivos deben usar los mismos protocolos de capa de aplicación para
conectarse. La aplicación variará según los dispositivos y el tipo de conexión implicada.
En la figura 1, se muestra un ejemplo conocido de un cliente que utilizará el protocolo HTTP para
comunicarse con el servidor web. El servidor web está configurado y se administra de manera tal de
permitir que las personas interactúen con una página web.

Los protocolos de capa de aplicación más recientes, como MQTT y REST, han surgido para admitir
dispositivos de IoT que se conectan a infinidad de diferentes tipos de configuraciones remotas.

El Transporte de telemetría de mensajes en colas (MQTT) es un protocolo de envío de mensajes ligeros


con la sobrecarga mínima que proporciona alta integridad de datos y seguridad para entornos remotos.

La transferencia de estado representativa (REST), o servicio web RESTful, es un tipo de API diseñado
para facilitar la interacción de los programas con Internet. REST permite el uso del protocolo HTTP y de
URL para solicitar servicios web.

Ambos protocolos se analizarán con más profundidad en capítulos posteriores.

Packet Tracer: conectar dispositivos para crear IoT


En esta actividad, creará una fuente de alimentación solar conectada.

Packet Tracer: conectar dispositivos para crear IoT (instrucciones)

Packet Tracer: conectar dispositivos para crear IoT (PKA)

¿Qué son los metadatos?


El término “metadatos” significa datos sobre los datos. Los metadatos pueden incorporarse dentro de un
objeto digital o almacenarse de forma separada. Por lo general, los usuarios no ven los metadatos. Por
ejemplo, un encabezado de correo electrónico contiene información al principio que representa la ruta que
recorrió un correo electrónico para llegar hasta usted, el nombre y la información IP del destinatario del
correo electrónico, el nombre y la información IP de la persona que envió el correo electrónico, y la fecha
y hora de envío del correo electrónico. Esta información se considera metadatos. Los metadatos pueden
contener información personal y descriptiva, o información administrativa. Una fotografía digital puede
contener la hora y la ubicación de GPS relacionadas con el lugar en que se tomó la fotografía. También
puede contener configuración de la exposición e información sobre el modelo de la cámara.

Las organizaciones pueden recopilar, almacenar y analizar los metadatos con un buen fin. Entre las
organizaciones, pueden mencionarse gobiernos, organizaciones y proveedores de servicios de salud. Los
datos se pueden utilizar para respaldar las iniciativas del gobierno, las tendencias emergentes de compras
o para mejorar el acceso a los médicos y a las clínicas en las guardias. Los metadatos se pueden utilizar
para almacenar y archivar datos. Lamentablemente, la información en los metadatos también puede
utilizarse de mala fe y usarse para invadir nuestra privacidad, seguir nuestros movimientos o, tal vez,
robarnos dinero o identidad.

En algunas aplicaciones, los metadatos pueden desactivarse. Esto suele hallarse en la


ficha Configuración u Opciones. Como cada aplicación es diferente, consulte la documentación para ver
si es posible.

En la figura 1, se muestra cómo ver un encabezado de Gmail y en la figura 2 se muestra un ejemplo de


metadatos que preceden un correo electrónico.
El impacto de IoT en la privacidad
Muchos sistemas de IoT han sido diseñados para supervisar y regular personas y entornos físicos. Estos
sistemas y dispositivos de IoT pueden activar la creación de grandes volúmenes de metadatos. La
persona debe poder confiar en que la información de identificación personal (PII) que se recopile sobre su
persona se mantiene segura y de manera confidencial. La PII es toda información que pueda identificar,
servir para contactarse o localizar a una persona. La PII también puede combinarse de diferentes
orígenes para identificar elementos relacionados con las características individuales o el estilo de vida de
una persona. Para proteger a los individuos e inspirar confianza, deben diseñarse nuevos sistemas de IoT
teniendo en cuenta la privacidad y la seguridad desde el comienzo.

Sugerencias y consideraciones de diseño con respecto a la privacidad:

 Transparencia: la persona debe saber qué tipo de datos personales se recopilan, por qué se
recopilan los datos y dónde se almacenan. Esta transparencia en la recopilación y el procesamiento
de los datos aliviará las inquietudes y evitará situaciones desagradables, tanto para los propietarios
como para los usuarios de objetos inteligentes.

 Recopilación y uso de los datos: los dispositivos inteligentes deberían almacenar únicamente
datos personales que resulten pertinentes en relación con la finalidad para la cual se los recopila.
Los datos que ocultan la identidad de la persona deben utilizarse cuando sea posible.

 Acceso a los datos: antes de que se implementen nuevos sistemas, los diseñadores deben
determinar quién puede acceder a los datos personales recopilados por objetos inteligentes y bajo
qué condiciones. Si se establecen y promueven procedimientos adecuados y definidos, la persona
afectada por los dispositivos puede tener su propio criterio respecto de cómo utilizar el sistema.

Para cubrir las cuestiones relacionadas con la privacidad, el software, el hardware y los servicios, los
proveedores nos piden que leamos y aprobemos los documentos de Términos de servicio y Acuerdos.
Todos tendemos a marcarlos como leídos, porque son demasiado largos y están repletos de jerga legal.
La próxima vez que instale nuevo software o hardware, le recomendamos que se tome el tiempo
necesario para leer los Términos de servicio desde la perspectiva de la privacidad y la seguridad de sus
datos personales. Tal vez, le resulte interesante.
Desafíos de seguridad de los dispositivos de IoT
Las innovaciones y las tecnologías emergentes en el espacio de IoT tienen un impacto en nuestra vida
cotidiana. Podemos experimentar de mejor manera el entorno físico, realizar un seguimiento de la
actividad física de un individuo, monitorear los dispositivos médicos integrados, optimizar el
procesamiento y simplificar el tráfico y la congestión en el estacionamiento en tiempo real. Para
mantenerse al día con la tecnología y los competidores, los dispositivos de IoT han sido desarrollados con
capacidades de conectividad de red necesaria, aunque no suelen implementar seguridad de red sólida. La
seguridad de la red es un factor fundamental al implementar dispositivos de IoT. Estos son algunos
factores que afectan la seguridad de la red en IoT:

 Creciente cantidad de dispositivos: la cantidad de sensores interconectados y dispositivos


inteligentes crece exponencialmente, lo cual aumenta la oportunidad para que se produzcan
ataques. Los sensores y los dispositivos inteligentes tienden a ser pequeños dispositivos, con
distintos sistemas operativos, tipos de CPU y memoria. Se espera que muchas de estas entidades
sean dispositivos económicos y de una sola función con conectividad de red rudimentaria. Analice el
ejemplo de un propietario que compra un sistema de seguridad y monitoreo para su hogar. Este
sistema está diseñado para realizar un control de la temperatura y la luminosidad en cada
habitación, y de la frecuencia y el tiempo de apertura y cierre de las puertas. Estos datos se pueden
almacenar localmente en la computadora del propietario de la casa, pero probablemente se carguen
y almacenen en el sistema de proveedor o en la nube. Pronto, todos los vecinos optarán por usar el
mismo sistema. El uso de este sistema luego se extiende a la ciudad. Esto da como resultado una
creciente cantidad de sensores y más datos recolectados exponencialmente. Deben seguirse estos
métodos para garantizar la autenticidad, la integridad y la seguridad de los datos, la ruta del sensor
al recopilador y la conectividad al dispositivo.

 Ubicación no tradicional de dispositivos: algunos dispositivos conectados de IoT pueden


interactuar con el mundo físico. Ahora se encuentran en dispositivos, automóviles o en nuestros
organismos y hogares. Los sensores pueden recolectar datos sobre el refrigerador o los sistemas
de calefacción. Podrían también estar ubicados en faroles de la ciudad o estar colocados en los
troncos de los árboles. Estas ubicaciones no tradicionales hacen que resulte difícil lograr la
seguridad física. Los atacantes pueden tener acceso físico directo a los dispositivos de IoT. Dada la
naturaleza altamente interconectada de los dispositivos de IoT, esto puede crear una situación en la
que un enlace débil en un pequeño sensor o en el accionador podrían comprometer la seguridad a
nivel local o global.

 Tipo y cantidad cambiantes de datos recopilados: los dispositivos de IoT con sensores
habilitados recopilan cada vez más datos de carácter personal. Los rastreadores utilizables de
estado físico, los sistemas de supervisión hogareños, las cámaras de seguridad y las transacciones
con la tarjeta de débito son todos sistemas que recopilan datos personales así como datos
ambientales. Suelen combinarse datos de distintos orígenes y los usuarios no están informados de
esta situación. La combinación de los datos de monitoreo del estado físico con los datos de
monitoreo de la casa podrían generar puntos de datos para ayudar a rastrear los movimientos o la
ubicación de un propietario. Este tipo de recopilación cambiante de datos y la agregación pueden
utilizarse para fines positivos y contribuir al entorno. También aumenta la posibilidad de que se
produzca una invasión de nuestra privacidad, robo de identidad y espionaje corporativo.

 Falta de posibilidad de actualización: los dispositivos de IoT con sensor habilitado pueden estar
ubicados en lugares remotos y/o inaccesibles en los que la intervención o configuración humana se
torna prácticamente imposible. Estos dispositivos también pueden contener la tecnología básica
diseñada para una sola tarea sencilla. Los dispositivos con frecuencia están diseñados para
mantenerse en servicio muchos años más que lo normal para un equipo tradicional de alta
tecnología. Es posible que estos dispositivos sobrevivan a la empresa que los creó. Esto abre la
posibilidad de haber instalado dispositivos sin medios de soporte a largo plazo. Algunos dispositivos
de IoT han sido diseñados intencionalmente sin la capacidad de actualizarse, o pueden ser
implementados en situaciones que hacen que resulte difícil o imposible reconfigurarlos o
actualizarlos. Todo el tiempo se descubren nuevas vulnerabilidades. Si un dispositivo no puede
actualizarse, la vulnerabilidad existirá para el resto de su vida. Si un dispositivo se puede actualizar,
las compañías fabricantes deben comprender que es posible que el consumidor típico no tenga un
contexto de tecnología, por lo tanto, el proceso de actualización debe realizarse automáticamente o
ser lo suficientemente sencillo como para que lo ejecute un lego.

Antes de implementar un nuevo sistema de IoT, deben elaborarse medidas de seguridad para abordar la
mayor cantidad de vulnerabilidades de seguridad como sea posible. Como mínimo, deberían estar
implementadas medidas de seguridad de datos estandarizadas para evitar el acceso, la modificación o la
pérdida ilegal de datos de objetos inteligentes. Deberían utilizarse encriptación sólida y marcos de trabajo
de autenticación para limitar el riesgo de vulnerabilidades.

En la figura, se describen los aspectos de seguridad a tener en cuenta que deberían afectar el diseño de
un dispositivo de IoT, conforme lo propone el IETF.

Capítulo 1: Cosas y conexiones(Resumen)


Internet de las cosas (IoT) nos rodea. Un sistema de IoT generalmente se compone de sensores que
monitorean eventos, accionadores que influencian el entorno, hardware que crea plataformas y
conexiones, y software que proporciona un marco de trabajo para ejecutar procesos.

Un proceso es una serie de pasos o acciones adoptada para lograr un resultado deseado.

Los modelos de redes en capas se usan para ilustrar y modelar la forman en que se comunican los
dispositivos. Las capas física, de enlace de datos y de red son conceptos que se utilizan para demostrar
de qué manera funciona la comunicación de la red.

En todas las etapas de creación de un sistema de IoT, deben tenerse en cuenta los problemas
relacionados con la seguridad y la privacidad. Cada nivel de conectividad trae aparejados distintos
requisitos e inquietudes.

Capitulo 2: Sensores, accionadores y


microcontroladores
¿Qué es la electrónica?
Utilizamos dispositivos electrónicos todos los días: teléfonos celulares, televisores y muchos otros
dispositivos y herramientas. ¿Con qué frecuencia nos detenemos a pensar cuál es el campo de la
electrónica? La palabra "electrónica" deriva de "electrón", el cual es el origen de la carga eléctrica. La
electrónica es el campo de estudio centrado en el control de la electricidad y los componentes físicos y
los circuitos que ayudan a dirigir la energía eléctrica.

El mundo de IoT se basa en varias tecnologías, una de las cuales consiste en aumentar la disponibilidad
de los sensores electrónicos de bajo costo. Un sensor es un componente electrónico que transforma una
cantidad física, como puede ser la temperatura de un ambiente, la posición de un brazo robótico o el nivel
de azúcar en sangre, en una señal eléctrica. La señal eléctrica que genera el sensor luego se transforma
en una señal digital que procesa un sistema informático muy simplificado denominado microcontrolador.
Este capítulo aborda los conceptos básicos para comprender de qué manera la electrónica es necesaria
para hacer el prototipo de una solución de IoT.

Haga clic aquí para ver una lista de diversos sensores.

Si desea conocer de qué manera los dispositivos electrónicos controlan la corriente eléctrica debe tener
un conocimiento básico de lo que es la corriente eléctrica.

Definiciones

 La corriente eléctrica se crea a partir del movimiento de los electrones. La corriente fluye en un
ciclo cerrado y es uniforme en todos los puntos de ese ciclo.

 Los electrones, junto con los protones y los neutrones, conforman los átomos. La carga básica de
un electrón se mide en términos de coulombs. Un coulomb de carga es igual a la cantidad de carga
transportada por un amper en un segundo.

 Los átomos son los bloque de creación de todos los elementos y la materia. Los electrones
transportan las cargas negativas y son atraídos a los protones con carga positiva dentro del núcleo
del átomo.
 Los elementos químicos en la tabla periódica están compuestos por diferentes tipos de átomos.
La atracción entre los átomos y sus electrones externos es más fuerte en algunos elementos que en
otros.

 Los conductores eléctricos son materiales con elementos que tienen una atracción débil entre los
átomos y sus electrones. En elementos conductores, los electrones tienden a pasar de un átomo a
otro. Entre algunos ejemplos de conductores eléctricos se incluyen metales como el cobre, el oro y
la plata.

 Los aislantes eléctricos son materiales compuestos por elementos que atraen con fuerza sus
electrones, los cuales nunca abandonan el átomo. Entre algunos ejemplos de materiales que
funcionan como aislantes eléctricos se incluyen la madera seca, el vidrio, y diversos materiales de
goma.

 El voltaje es la fuerza que transporta la corriente, también llamada presión eléctrica. El voltaje se
mide como la diferencia de energía potencial eléctrica entre dos puntos.

 Los amperios (A) miden la intensidad de la corriente eléctrica. Son una medida que indica la
cantidad de electrones en una corriente eléctrica. Un amperio por segundo es equivalente a un
coulomb que viaja a través de un circuito en un segundo. Esto equivaldría aproximadamente al
flujo de 6,241509×10^18 electrones por segundo.

 La potencia es la cantidad de energía que se consume en un momento determinado. La potencia


se mide en watts. La formula básica de la potencia es potencia = voltaje x corriente

 Un circuito eléctrico es una red física (o modelo de una red física) de componentes eléctricos
interconectados entre los que se incluyen baterías, resistores, capacitores, inductores e
interruptores.

Ley de Ohm
Si su objetivo es diseñar, crear, y analizar los circuitos eléctricos, es importante que comprenda la relación
entre voltaje, corriente, y resistencia dentro de un circuito.

A principios del siglo XIX, George Ohm descubrió que el voltaje es constantemente proporcional a la
corriente en un circuito con una fuente fija de resistencia. Ohm publicó su teoría, que se ha convertido en
un concepto fundamental en electrónica, conocida como la ley de Ohm.

Según la ley de Ohm, el voltaje es directamente proporcional a la intensidad de la corriente multiplicada


por la resistencia dentro de un circuito. Expresado de manera sencilla, el voltaje es igual a la corriente
multiplicada por la resistencia (V = I x R), como se muestra en la figura.

Circuito básico
Todos los dispositivos electrónicos comparten un nivel de control preciso de energía eléctrica. Esta control
sucede a través del circuito electrónico. Un circuito es una ruta conductora cerrada que permite que los
electrones fluyan y generen una corriente eléctrica. Para generar una corriente eléctrica el circuito también
necesita una fuente de energía eléctrica, como una batería, para iniciar el flujo de electricidad.
Mientras que un circuito cerrado permite que fluya corriente, un circuito abierto tiene una interrupción en la
ruta que detiene el flujo de la corriente. Un circuito abierto puede crearse colocando un interruptor en la
ruta del circuito. Cualquier dispositivo eléctrico con un interruptor de encendido y apagado crea un circuito
que puede ser abierto o cerrado.

A diferencia de los circuitos abiertos y los cerrados, un cortocircuito, en general, no se diseña. Un


cortocircuito ocurre cuando una conexión accidental entre dos puntos del circuito se desvía de la ruta
regular. Debido a que la corriente eléctrica toma, normalmente, la ruta de menor resistencia, los
cortocircuitos pueden hacer que el exceso de corriente sobrecargue los componentes. Esto ocasiona un
recalentamiento y da lugar a situaciones inseguras, como la fundición de cables, la falla de componentes
y la posibilidad de un incendio eléctrico.

La figura representa un circuito simple que usa una batería para alimentar un diodo emisor de luz (LED).
En la figura, se ve un diagrama oesquema de un circuito que muestra todos los componentes del circuito
y la manera en que están conectados.

La batería suministra 6 voltios de corriente directa al circuito. El signo más (+) cerca del símbolo de la
batería indica la terminal positiva de la batería. Según un concepto antiguo de la electricidad, hoy
conocido como corriente convencional, la corriente eléctrica tiene carga positiva y fluye desde la terminal
positiva a la negativa. En los esquemas que usan la corriente convencional esto se indica con una flecha
y la letra I. Hoy en día, aún se utiliza esta convención de etiquetado, aunque ahora se entiende que el
flujo de la corriente es el exactamente opuesto: la corriente eléctrica fluye desde el terminal negativo al
terminal positivo y está compuesta de electrones con carga negativa. La mayoría de los esquemas
eléctricos utilizarán la corriente convencional aunque el flujo de electrones sea opuesto al diagramado. En
este curso, utilizaremos la corriente convencional para describir el flujo de la corriente, pero cabe recordar
que, en realidad, el flujo de electrones es el opuesto.

Las líneas en el diagrama del circuito muestran cómo los componentes están conectados, ya sea con
cable u otros conectores. Los componentes electrónicos suelen estar hechos con terminales. Las
terminales son cables que sobresalen, que se conectan al interior de los componentes y proporcionan un
modo de conectar el componente con otros elementos del circuito.

El símbolo de zigzag en la parte superior del diagrama representa un resistor. El rol del resistor es limitar
la cantidad de corriente que circula por el circuito. La resistencia se mide en ohmios (simbolizados con Ω)
y el resistor en este circuito evita que el LED reciba demasiada corriente y se destruya.

El LED se simboliza con un triángulo que tiene un segmento de línea en un extremo y dos flechas que
apuntan hacia afuera. La parte triangular del símbolo representa un diodo y las dos flechas que apuntan
hacia afuera representan el hecho de que este diodo emite luz. Los diodos son parte de una clase
especial de componentes electrónicos conocidos como semiconductores.

Circuitos en serie y en paralelo


Los componentes de un circuito eléctrico se pueden interconectar de diferentes maneras.

En un circuito en serie los componentes se interconectan uno después del otro en una ruta entre las
terminales positiva y negativa de la fuente de alimentación, como se muestra en la figura de la izquierda.
La corriente eléctrica viaja a través de cada componente en una forma lineal. Un ejemplo de un circuito en
serie se puede apreciar en una serie de luces decorativas en las que cada lámpara está conectada a la
siguiente, una después de otra.
En un circuito en paralelo, la corriente fluye desde el terminal de la batería, pero se divide en un punto
del cual salen rutas paralelas a través del circuito. Los componentes conectados a lo largo de cada ruta
obtienen su propia parte de corriente, como se muestra en la figura de la derecha. En un circuito en
paralelo se pueden alimentar varios componentes, como LED. Sin embargo, ya que cada componente
obtiene su propio suministro de energía, si algún componente o LED fallara, no se detendría la corriente y
esta seguiría fluyendo a las otras rutas y alimentando a los otros componentes o LED. De esta manera, un
circuito en paralelo podría resolver el problema frecuente de las series de luces, que genera que todas las
luces dejen de funcionar cuando una de ellas falla y el circuito se abre.

Si bien la elección entre un circuito en serie o en paralelo depende del uso que se le vaya a dar, la fuente
de alimentación debe ser lo suficientemente potente como para proporcionar energía a todo el circuito en
ambos casos.

Circuitos pasivos, activos, lineales y no lineales


En otras palabras, los componentes electrónicos que producen energía son activos y crean circuitos no
lineales. Los componentes que almacenan o mantienen la energía son pasivos y crean circuitos lineales.

En un circuito, un componente activo es un dispositivo que puede controlar la corriente eléctrica con una
fuente externa de alimentación, ya sea voltaje eléctrico o corriente eléctrica. La parte del circuito que
suministra energía al componente activo se denomina corriente continua (CC) del circuito. Un circuito
activo es aquel con, al menos, un componente activo. Los componentes activos proporcionan ganancia de
potencia o amplificación que produce una señal de voltaje discontinua o no lineal. Entre los componentes
activos se incluyen los diodos, los transistores y los rectificadores controlados de silicio (SCR, silicon
controlled rectifiers). Entre los ejemplos de circuitos no lineales se incluyen los mezcladores, moduladores
y circuitos lógicos digitales.

Los componentes que son incapaces de controlar la corriente mediante otra señal eléctrica se denominan
dispositivos pasivos. Un circuito electrónico compuesto en su totalidad por componentes pasivos se llama
circuito pasivo. Los resistores, capacitores, inductores y transformadores se consideran dispositivos
pasivos. Los componentes pasivos no pueden introducir energía en un circuito. Solo pueden depender de
la fuente de alimentación que tengan disponible gracias al circuito al cual están conectados. Los
componentes pasivos no pueden aumentar la potencia de una señal, aunque pueden incrementar el
voltaje o la corriente. El procesamiento de la señal en un circuito pasivo puede ser continuo o analógico.

Los circuitos analógicos son aquellos en los que la señal es continua; la alimentación puede tomar
cualquier valor entre ninguna potencia y potencia total. Los circuitos digitales presentan una señal
discreta, ya sea con valores que indiquen potencia cero o potencia total (todo o nada), sin pasos
intermedios. Un circuito lineal es aquel en el que los valores de los componentes electrónicos (resistores,
capacitores, inductores, etc.). no cambian con el nivel de voltaje o la corriente en el circuito. Los circuitos
lineales son importantes porque pueden amplificar y procesar señales electrónicas sin distorsión. Un
ejemplo de un dispositivo electrónico que utiliza circuitos lineales es un sistema de sonido. Un circuito
lineal no tiene ningún componente electrónico no lineal. Entre algunos circuitos lineales se incluyen los
amplificadores, diferenciadores, integradores y filtros electrónicos lineales.

Corriente continua frente a corriente alterna


La corriente continua (CC) es un tipo de corriente en el cual el flujo de electrones circula en un solo
sentido. Es producida por fuentes como baterías, fuentes de alimentación, termopares, células solares o
dínamos. La corriente continua se utiliza para cargar baterías y como fuente de alimentación para
sistemas electrónicos. Se puede obtener a partir de la corriente alterna (CA) mediante un rectificador que
convierte la CA en CC. Los rectificadores fuerzan la corriente para que circule en una única dirección y se
encuentran, con frecuencia, en las fuente de alimentación de CA a CC.

La corriente alterna es una corriente eléctrica en la que el sentido de circulación del flujo se revierte de
manera regular. La CA es la forma en la que la energía eléctrica se suministra a los negocios y las
residencias. La forma de onda usual de corriente alterna en la mayoría de los circuitos eléctricos es una
onda senoidal. En ciertas aplicaciones, se usan diferentes formas de onda, por ejemplo ondas triangulares
o cuadradas. La corriente alterna es producida en plantas de energía eléctrica mediante el
aprovechamiento de diversas formas de energía mecánica (agua que fluye desde una presa o los giros de
una turbina eólica) para mover alternadores de gran escala. Los alternadores luego transforman la
energía mecánica en electricidad. La corriente continua producida por una planta solar se puede convertir
en corriente alterna con un inversor o un conjunto motor-generador.
Circuitos analógicos frente a circuitos digitales
Los circuitos analógicos son aquellos en los que la corriente o el voltaje puede variar de forma continua
con el tiempo de manera que correspondan con la información que está representada. Los circuitos
analógicos se utilizan en circuitos de administración de energía, sensores, amplificadores y filtros.

Los circuitos digitales tienen señales eléctricas que toman dos valores discretos que corresponden al
nivel de voltaje. Estos valores son binarios y se representan como 1/0, encendido/apagado o alto/bajo. En
los circuitos digitales, se usa codificación binaria: un voltaje representa un 1 binario y otro voltaje, en
general, con un valor cercano al potencial de tierra, o a 0 voltios, representa un 0 binario, como se
muestra en la figura. Los circuitos digitales pueden estar diseñados para proporcionar operaciones lógicaa
y de memoria mediante la interconexión de estas señales binarias, lo que les permite ejecutar funciones
arbitrarias de cómputo.

Los circuitos integrados son circuitos miniaturizados producidos en una sola pieza de material
semiconductor. Los circuitos integrados se conocen como chips y pueden tener de cientos a miles de
millones de componentes electrónicos integrados en un único chip.

Componentes
Los componentes electrónicos son dispositivos especializados que se usan en un circuito para controlar la
corriente. Entre algunos ejemplos de componentes electrónicos se incluyen los cables, interruptores,
resistores, capacitores, diodos, transistores, inductores y circuitos integrados, tal como se muestra en la
figura. Los componentes electrónicos tienen al menos dos terminales eléctricas o cables. Los cables se
conectan para crear un circuito electrónico con una función en particular, como puede ser la de un
amplificador, un receptor de radio o un oscilador. Los componentes electrónicos pueden ser elementos
individuales, matrices o redes de componentes similares, o pueden estar integrados en paquetes como es
el ejemplo de los circuitos integrados.
Componentes electrónicos más grandes
Hay componentes electrónicos que pueden usarse para proporcionar mayores cantidades de energía
eléctrica para alimentar motores y maquinarias grandes. El campo magnético producido por una corriente
que atraviesa una bobina de cable puede usarse para ejercer una fuerza mecánica en cualquier objeto
magnético. La fuerza magnética puede activarse o anularse mediante la conducción o no de corriente
(encendido/apagado) a través de la bobina.

Si coloca un objeto magnético cerca de la bobina con el fin de moverlo, al activar la bobina, se obtiene un
solenoide. El objeto magnético móvil se denomina armadura. Los solenoides pueden usarse para abrir
eléctricamente los pestillos de las puertas, abrir o cerrar válvulas, mover los miembros robóticos e incluso
accionar los mecanismos de interruptores eléctricos. Si un solenoide se usa para accionar un conjunto de
contactos de interruptor se denomina relé.

Los relés son extremadamente útiles cuando existe una necesidad de controlar una gran cantidad de
corriente o voltaje con una pequeña señal eléctrica. La bobina del relé que genera el campo magnético
puede consumir solo fracciones de un vatio de potencia, mientras que los contactos cerrados o abiertos
por ese campo magnético pueden conducir cientos de veces esa cantidad de energía a una carga.

En la figura, la bobina del relé se activa por una fuente de bajo voltaje (12 VCC), mientras que el contacto
de un polo y un recorrido (SPST, single-pole, single-throw) interrumpe el circuito de alto voltaje (480 VCA).
Es muy probable que la corriente requerida para accionar la bobina del relé sea cientos de veces menor
que la capacidad de corriente del contacto. En general, las corrientes de bobinas de relés están por
debajo de 1 A (1 amperio), mientras que las capacidades típicas de contacto para relés industriales son,
por lo menos, de 10 A (10 amperios).

Test

Fase de diseño
La etapa de diseño consta de los siguientes pasos:

1. Concepto: Esta es la idea inicial.

2. Investigación: Esta es la investigación detallada sobre la tecnología necesaria, los proveedores


posibles, los costos de materiales y diseño y un estudio de viabilidad.
3. Diseño de circuito: Estos son los diagramas esquemáticos, los diseños de circuitos impresos y los
diseños de gabinetes de los productos.

El diagrama en la figura se denomina diagrama de circuito. Es una representación gráfica de un circuito


eléctrico. Un diagrama de circuito muestra los componentes y las interconexiones del circuito mediante
representaciones simbólicas estandarizadas. La presentación de las conexiones entre los componentes
del circuito en el diagrama no corresponde necesariamente con su disposición física en el dispositivo
terminado. Un diagrama de circuito ilustrado utiliza imágenes simples de los componentes y de la
conexión física.

Fase de prototipo
La etapa de armado del prototipo consta de los siguientes pasos:

1. Hardware, mecánica, y desarrollo de software: El software es una parte importante del proyecto. Al
igual que el hardware, debe comenzar con el diseño de alto nivel.

2. Diseño de PCB: El diseño de la placa de circuito impreso (PCB, Printed Circuit Board) es un elemento
esencial en el desarrollo de la electrónica del hardware. Las pruebas de integridad de la señal se deben
realizar como parte de esta actividad. En general, se utilizan paquetes de software CAD para crear los
diseños de PCB.

3. Armado de prototipos: Arme el prototipo del producto final, incluidos los gráficos y el empaque.

4. Prueba del producto: Antes de pasar a la siguiente fase, se requieren pruebas exhaustivas de los
productos y un examen de aptitud operativa (TRR, Test Readiness Review).

Placa de pruebas sin soldaduras

Una placa de pruebas sin soldaduras es una herramienta que se usa de manera habitual en el armado de
prototipos electrónicos. Esta placa permite crear circuitos temporales mediante la conexión de los
componentes en los orificios dispuestos en filas y columnas a través de la superficie, tal como se muestra
en la Figura 1. Los circuitos pueden crearse y desarmarse rápidamente conectando y desconectando los
componentes, como resistores y LED, en varias filas y columnas. Los orificios de la placa de pruebas son
orificios de contacto con rieles de cobre debajo de la superficie plástica, tal como se muestra en la Figura
2. Debido a que la placa de pruebas no tiene soldaduras, es una herramienta reutilizable para fabricar
prototipos lo que facilita la creación de prototipos temporales y la experimentación con el diseño de
circuitos.
Fase de producción
La etapa de producción consta de los siguientes pasos:

1. Examen de aptitud de producción: Este paso debe llevarse a cabo antes de que se inicie la
producción del producto.

2. Producción: A esta altura del proceso, todo el equipo debe haber sido probado.

3. Mantenimiento continuo: Incluso cuando un producto ha ingresado en producción, el mantenimiento


continuo del diseño es necesario. Deberán abordarse la obsolescencia de los componentes, los
problemas de diseño que hayan pasado inadvertidos, las mejoras menores y otras cuestiones.

Placa de circuito impreso (PCB)

La placa de circuito impreso (PCB), la cual se muestra en la ilustración, sirve de soporte mecánico para
los componentes electrónicos y los conecta eléctricamente. Una PCB usa pistas conductivas, tableros y
otras características grabadas a partir de hojas de cobre y laminadas sobre un sustrato no conductor. Los
componentes, como los condensadores, resistores o dispositivos activos, en general, se sueldan a la
PCB.

Las PCB pueden ser de una sola cara (una capa de cobre), de doble cara (dos capas de cobre) o
multicapa (capas externas e internas). Los conductores en las diferentes capas están conectados
mediante pequeñas aperturas en la placa llamadas vías. Las PCB multicapa admiten muchos más
componentes que las de cara simple o doble cara del mismo tamaño.

Las PCB se usan en todos los productos electrónicos, excepto en los más simples. Entre las alternativas a
las PCB se incluyen la conexión enrollada y la conexión punto a punto. Si bien las PCB requieren un
esfuerzo adicional en el diseño para la disposición del circuito, la fabricación y el ensamblaje se pueden
automatizar. La manufactura de circuitos con PCB es más económica y más rápida que con otros
métodos de cableado, ya que los componentes se montan y conectan por cables con una sola parte.
Además, se eliminan los errores de cableado del operador.
Introducción al SparkFun Inventor's Kit
El SparkFun Inventor's Kit (SIK) es un excelente kit para aquellos que se inician en la construcción de
circuitos. Es una buena opción para introducir a los principiantes en los tipos de sensores y accionadores
utilizados por Internet de las cosas (IoT). El kit incluye una placa de tipo Arduino como una placa de
pruebas sin soldaduras, los cables de conexión y una variedad de sensores y accionadores. Algunos de
los componentes del SIK se muestran en la ilustración y se identifican a continuación:

1. Placa de pruebas sin soldaduras: Utilizada para crear prototipos temporales que permitan
experimentar con diseños de circuito.

2. SparkFun RedBoard: Una placa de tipo Arduino con un microcontrolador ATmega328 que se puede
programar con un cable USB mini-B con Arduino IDE.

3. Cable USB mini-B: Se puede usar para suministrar energía y cargar programas a Redboard.

4. Resistores: Se usan para reducir el flujo de corriente y pueden funcionar con niveles inferiores de
voltaje dentro de los circuitos.

5. Diodos: Un componente electrónico de dos terminales que conduce corriente en un solo sentido.

6. Sensores: Flex, potenciómetro, temperatura, luz o imagen son algunos de los tipos de sensores.

7. Pulsadores: Mecanismo simple de interruptor para controlar algunos aspectos de un proceso.

8. Diodos emisores de luz (LED): Los LED tienen dos terminales, una se denomina ánodo (más larga) y
la otra, cátodo (más corta).

9. Potenciómetro: Una perilla simple que se puede girar para proporcionar una resistencia variable.

10. Cables de acoplamiento: Cables eléctricos cortos con una punta sólida en cada extremo.

11. Servo: Tiene pequeños engranajes integrados y un eje que pueden ser controlados con precisión.

12. Pantalla de cristal líquido (LCD, Liquid crystal display).

13. Relé: Activado por una corriente o señal en un circuito para abrir o cerrar otro circuito.

14. Circuito integrado (CI).

15. Motor de CC: Convierte la energía eléctrica de una corriente continua en energía mecánica.
Microcontrolador Arduino
Una computadora se puede programar para detectar un evento desencadenado por un sensor, y luego se
puede realizar una acción basada en ese evento. Los microcontroladores son una excelente plataforma
para realizar estas tareas por su tamaño reducido y los escasos requisitos de alimentación. Una unidad de
microcontrolador (MCU, microcontroller unit) es una computadora simple diseñada y construida en un
factor de forma pequeño. Cuando están emparejados con sensores o accionadores, los
microcontroladores se pueden programar para que funcionen a partir de desencadenantes. El Arduino,
como se muestra en la Figura 1, es un microcontrolador popular para el armado de prototipos.

Las placas Arduino pueden interpretar datos recibidos, tales como la luz en un sensor, el dedo en un
botón o un mensaje de Twitter. Después pueden convertir los datos recibidos en un resultado, como
encender un motor, encender un LED o realizar una publicación en línea. Todo esto se define por un
conjunto de instrucciones programadas mediante el entorno de desarrollo integrado (IDE, integrated
development environment) de Arduino.

La SparkFun RedBoard, la cual se muestra en la Figura 2, es una placa de tipo Arduino con un
microcontrolador ATmega328 que se puede programar con un cable USB mini-B con el IDE de Arduino.
Es capaz de recibir datos (como la lectura de un sensor de luz o un botón presionado) y, después, realizar
diversas acciones (como hacer titilar un LED o mover un actuador) en función de cómo se programa.
Test

Desarrollo del circuito


Recuerde que un circuito necesita un ciclo continuo y una fuente de alimentación para que circule la
electricidad. Un circuito simple puede se puede crear conectando los componentes electrónicos (LED,
resistor, y cables de acoplamiento) en serie a lo largo de una fila en la placa de pruebas, tal como se
muestra en la figura. Cuando la fila esté conectada, la fuente de alimentación estaría conectada a los
cables de acoplamiento rojos y negros inferiores. Esto debería completar el circuito y encender el LED.

El IDE de Arduino
El paquete de software del IDE de Arduino es un programa que le permite interactuar con la placa de
Arduino. Es un software gratuito que se puede descargar desde el sitio web de Arduino:

https://www.arduino.cc/en/Main/Software
El paquete de software del IDE de Arduino contiene el entorno de desarrollo integrado (IDE) y los
controladores requeridos para las placas de Arduino. Una vez que se haya descargado el software,
descomprima el archivo e instale el software y los controladores del IDE de Arduino.

El IDE de Arduino se puede dividir en cuatro áreas principales, tal como se muestra en la figura.

 La barra de Menú contiene cinco menús: Archivo, Editar, Programa, Herramientas y Ayuda.
Estos elementos del menú proporcionan acceso a comandos contextuales adicionales que solo
están disponibles si son relevantes para el trabajo que se está realizando.

 La barra de herramientas contiene iconos que proporcionan herramientas para Verificar el código
en un programa, Cargarun programa a la placa de Arduino, crear un Nuevo programa, Abrir un
programa existente, Guardar un programa y abrir unMonitor serie.

 El editor de texto es similar a otros editores que tal vez haya utilizado. Proporciona las funciones
habituales de edición de texto, incluidas las de cortar y pegar, y buscar y reemplazar

 La Consola muestra el texto de salida, incluidos los comentarios del programa, los mensajes de
error y demás información útil.

Los programas escritos con el IDE de Arduino se denominan sketches o proyectos y se guardan con la
extensión de archivo .ino. Los sketches se pueden guardar en un sketchbook o proyecto que se puede
abrir desde el menúArchivo > Proyecto o desde el botón Abrir en la barra de herramientas. Puede ver y
modificar la ubicación predeterminada de la carpeta de proyectos haciendo clic
enArchivo > Preferencias.

Nota: Se recomienda que también descargue los ejemplos de codificación de SparkFun


de http://sparkfun.com/sikcode. Cuando se descarguen, descomprima el archivo y copie la
carpeta SIK_Guide _Code_32 en la carpeta de ejemplos de Arduino (Archivos de programa
(x86) > Arduino > Ejemplos).

Código de escritura
Las palabras clave relacionadas con los proyectos de Arduino se pueden dividir en tres tipos de
categorías principales: estructuras,valores (variables y constantes) y funciones. Podrá encontrar una
lista completa de palabras clave relacionadas con los proyectos
en https://www.arduino.cc/en/Reference/HomePage.
La primera vez que ejecute el software del IDE de Arduino, o cuando cree un nuevo sketch, se presentará
un shell de inicio de un sketch en la sección del editor de texto del IDE. La siguiente es una explicación de
las palabras claves utilizadas en este shell de inicio.

La palabra void solo se utiliza en las declaraciones de funciones. Indica que no se espera que la función
devuelva información alguna.

La función setup() se usa para inicializar variables, modos de pin, comenzar a usar librerías, etc. La
función setup() solo se ejecutará una vez, después de iniciar o restablecer la placa de Arduino.

Nota: Las llaves ({}) después de la función setup() delimitan el comienzo y la finalización de dicha
función. Todo el código contenido dentro de estas llaves se ejecutará una sola vez.

La función loop () es la sección principal de un sketch y se ejecutará continuamente, lo que permite que el
programa cambie y responda.

Los comentarios son líneas en el programa que se usan para informar al usuario que está viendo el
código cómo funciona el programa. La placa de Arduino ignora los comentarios. Los comentarios pueden
ser de dos formas: de una línea y de varias líneas. Un comentario de una línea se designa con dos barras
diagonales (//). Todo el texto desde las dos barras diagonales hasta el final de la línea se considera parte
de los comentarios y se ignora cuando se compila el sketch. Los comentarios de varias líneas comienzan
con una barra diagonal y un asterisco (/*) y terminan con un asterisco y una barra diagonal (*/). Todo el
texto entre esos delimitadores se considera parte del comentario. El comentario puede abarcar varias
líneas.

Nota: El uso de delimitadores de comentarios multilínea para comentar una sección de un código puede
ser útil para resolver problemas.

Evaluación
Una vez creado el circuito del prototipo y escrito y guardado el código, haga clic en el primer icono en la
barra de herramientas para verificar su código. El IDE compilará su código y verificará los errores de
sintaxis. Revise los mensajes que reciba en el área de la consola del IDE, tal como se muestra en la
Figura 1.
Para probar el código, haga clic en el segundo icono en la barra de herramientas para cargar su sketch a
la placa de Arduino, tal como se muestra en la Figura 2. Cada vez que realice un cambio en el sketch,
deberá volver a compilar y cargar la versión nueva a la placa de Arduino. Después de que un sketch se
carga a la placa de Arduino, permanecerá allí hasta que lo cambie, aún si se restablece o apaga el
Arduino.

Sensores
Los sensores son dispositivos que detectan un evento del entorno físico y responden con señales
eléctricas u ópticas como resultado. Existen sensores que miden la luz, la humedad, el movimiento, la
presión, la temperatura u otras propiedades ambientales. La figura identifica cuatro sensores que se
incluyen en el SparkFun Inventor's Kit (SIK).

Actuadores y relés
Un actuador es un tipo de motor responsable de crear movimiento. En la Figura 1 se muestras dos
ejemplos de accionadores eléctricos que se incluyen en el SIK. Un actuador eléctrico convierte energía
eléctrica en un torque mecánico. En este curso trabajaremos solo con los accionadores eléctricos, pero
los accionadores también pueden usar energía hidráulica (aceite), neumática (aire) y mecánica.

Un relé es un interruptor mecánico controlado eléctricamente. En la Figura 2 se muestra un relé que se


incluye en el SIK. Dentro de esa caja plástica hay un electromagneto que hace un interruptor se active
cuando recibe una corriente.
Cómo se conecta todo en PT
Hay un nuevo icono de grupo en Packet Tracer versión 7 etiquetado como Componentes. Este grupo
contiene iconos de tres subgrupos para la IoT.

El primer subgrupo es para las placas de la IoT, en la Figura 1, que contiene una unidad de
microcontrolador (MCU) y una computadora de una placa (SBC, single board computer), similar a la
Raspberry Pi. El último icono es para crear cosas personalizadas.

El segundo icono de subgrupo se etiqueta como Accionadores y muchas cosas de la IoT se incluyen
dentro de este subgrupo, tal como se muestra en la Figura 2.

El tercer icono de subgrupo se etiqueta como Sensores. Otros elementos relacionados con la IoT se
pueden encontrar en este subgrupo, tal como se muestra en la Figura 3.

Para conectar las cosas de la IoT a una placa de una MCU, use el cable personalizado de la IdT que se
encuentra en el grupo de conexiones en la Figura 4.

Capítulo 2: Sensores, accionadores y microcontroladores(Resumen)


La electrónica es una parte importante de IoT. Los dispositivos de la IoT se construyen, a menudo, desde
el principio; por lo tanto, comprender los conceptos, componentes y la terminología de la electrónica es
fundamental. También es importante que un profesional de la IoT pueda leer y crear esquemas
electrónicos.

El kit de SparkFun contiene un número de dispositivos y piezas que ayudan a los principiantes a
comenzar con la electrónica y los microcontroladores. Además introduce conceptos importantes, como
circuitos electrónicos, y formas de programar los microcontroladores Arduino. Al trabajar con el kit, los
principiantes aprenden cómo programar sensores para monitorear el entorno. Los accionadores y los
relés con frecuencia se usan para influenciar el entorno o generar una acción.

Los estudiantes pueden usar el Cisco Packet Tracer como una herramienta para armar modelar y hacer
prototipos de sistemas de la IoT.

Capitulo 3: El software está en todos


lados
¿Qué es un programa?
En el capítulo 2, hemos visto cómo los sensores y la electrónica permiten conectar el mundo físico con un
sistema informático, como un microcontrolador. Esta conexión permite completar el primer paso para la
creación de una solución de IoT. Primero se detectan los datos del mundo físico, luego se hace algo con
esos datos. Se almacenan, transmiten o procesan. En el mundo digital, el procesamiento de datos se
realiza mediante programas de software. En este capítulo repasaremos los conceptos clave de
programación de software y presentaremos Raspberry PI. Aprender a escribir programas informáticos con
RaPI será el segundo paso fundamental en nuestro recorrido hacia los prototipos de soluciones de IoT.

Un programa es un conjunto de instrucciones solicitadas creado para realizar una tarea específica. Según
esta definición, muchas actividades de la vida diaria se pueden considerar programas.

Una receta básica de pan puede considerarse un programa:

 Precaliente el horno a 375 ºF. Enmanteque y enharine dos moldes de pan de 9 pulgadas.

 Disuelva la levadura en agua caliente. Agregue azúcar, sal, aceite y 3 tazas de agua.

 Bata hasta que quede homogéneo y mezcle con el resto de la harina.

 Amase en una superficie enharinada entre 8 y 10 minutos.

 Coloque en un bol engrasado y deje levar durante 1 a 2 horas.

 Golpee la masa, divídala en dos y colóquela en los moldes de pan. Cubra y deje levar hasta que se
duplique.

 Hornee a 375 ºF de 30 a 35 minutos.

En este ejemplo, el orden de las instrucciones es relevante. La receta, como un programa de software, fue
diseñada para realizar una tarea específica; en este caso, hacer pan.

La receta pudo haberse escrito en cualquier idioma: inglés, español, chino o árabe. El único requisito para
la opción de idioma es que la persona que hace el pan lo comprenda. Si bien los diferentes idiomas
poseen distintas reglas gramaticales y sintaxis, la lógica de la receta no debe cambiar.

De manera similar, los programas informáticos son también un conjunto de instrucciones solicitadas
creadas para realizar una tarea específica. También llamados códigos, los programas informáticos se
pueden escribir en otros lenguajes. La sintaxis y las reglas varían de lenguaje en lenguaje, pero la lógica
del programa prácticamente no debe tener cambios.
Los programas están en todas partes
Todas las computadoras necesitan programas. Una computadora es un dispositivo que contiene una
CPU, una memoria y dispositivos de E/S (monitor, teclado, ratón, tarjeta de audio, etc.). Las
computadoras de escritorio, los smartphones, las tablets, los relojes digitales y los dispositivos inteligentes
son solo algunos ejemplos de computadoras. Aunque las computadoras están en todas partes, son
inútiles hasta que se ejecutan los programas.

Los programas informáticos adoptan muchas formas diferentes. Los sistemas operativos, el firmware y las
aplicaciones son ejemplos de programas que se encuentran en las computadoras.

Un sistema operativo (SO) es un programa que permite que los usuarios interactúen con las
computadoras. Los sistemas operativos modernos incluyen interfaces gráficas para facilitar la interacción
del usuario. Los ejemplos de SO son Windows, Linux, OS X, Apple iOS y Android.

Firmware son programas creados para permitir que una computadora realice una tarea específica. El
firmware suele estar presente en computadoras pequeñas, como relojes digitales simples, dispositivos
modernos y diversos subsistemas encontrados en automóviles modernos (por ejemplo, el sistema de
frenos antibloqueo (ABS) y las bolsas de aire). Debido a la memoria limitada y a otras restricciones de
recursos, los dispositivos de IoT a menudo dependen del firmware para su funcionamiento. La
funcionalidad del firmware y el SO se superpone. A veces, el firmware también puede actuar como SO
para computadoras más simples.

Las aplicaciones son programas creados para ayudar al usuario a realizar una tarea específica. Los
ejemplos de aplicaciones son Microsoft Word, Mozilla Firefox y Calculator.

¿Por qué se debe aprender a programar?


Las personas que pueden programar son cada vez más valiosas en el actual mercado laboral. A pesar de
que en el pasado los programadores estaban limitados a la codificación de aplicaciones de escritorio, el
incremento de IoT genera nuevas posibilidades para ellos. En 1991, Mark Weiser escribió un documento
titulado “La computadora del siglo XXI”. En este documento, previó el futuro de IoT y lo describió como
“elementos especializados de hardware y software, conectados por cables, ondas de radio e infrarrojas,
tan ubicuos que nadie notaría su presencia”. En un mundo cada vez más digital, la naturaleza ubicua de
la computación significa que el software está en todas partes. Actualmente, los programadores pueden
trabajar con el firmware, los controladores de dispositivos, las aplicaciones móviles, las interfaces web, el
análisis de datos y más. Estas áreas laborales estaban disponibles antes, pero IoT ha aumentado
drásticamente la cantidad de empresas y proyectos disponibles.

La industria de las redes también impulsa la necesidad de más programadores requeridos para
personalizar la red y la infraestructura. Los enfoques emergentes de la red, como las redes definidas por
software (SDN) y la infraestructura centrada en aplicaciones (ACI) de Cisco proporcionan programabilidad
integral a la infraestructura de la red.

Otro beneficio de saber programar es que los programadores pueden crear sus propias herramientas de
software. ¿Necesita un filtro específico de red no disponible en el mercado? Tal vez un proyecto requiere
un análisis de datos específico. Un buen programador puede cifrarlo.

¿Qué conforma un programa?


Las personas imparten la lógica a las computadoras a través de programas. Los programas usan
expresiones, funciones y estructuras lógicas. Las expresiones son combinaciones de variables,
constantes y operadores que producen un nuevo valor. Las funciones definen una secuencia de
expresiones que debe aplicarse a los argumentos (x, y) para producir el valor arrojado z. Mediante
estructuras lógicas específicas, un programador puede preparar una computadora para tomar decisiones.
Algunos ejemplos de expresiones, funciones y estructuras lógicas más comunes son:

 Expresiones

 Area_Triangle = (base*height)/2

 Print Area_Triangle

 Funciones
 z= Function(x,y)

 IF - THEN: esta estructura lógica permite que la computadora tome una decisión según el resultado
de una expresión. Un ejemplo de expresión es myVar > 0. Esta expresión es verdadera si el valor
almacenado en la variable myVar es mayor que cero. Cuando el intérprete o compilador encuentra
una estructura IF - THEN, evalúa la expresión proporcionada. Si la expresión es falsa, la
computadora continúa con la siguiente estructura, ignorando el contenido del bloque IF - THEN. Si
la expresión es verdadera, la computadora ejecuta la acción asociada antes de pasar a la siguiente
instrucción del programa. (Figura 1).

 Bucle FOR: se utiliza para ejecutar un conjunto específico de instrucciones una cantidad de veces
específica según una expresión. El término bucle proviene del hecho de que un conjunto de
instrucciones se ejecuta varias veces. Si bien la sintaxis del bucle FOR varía de lenguaje en
lenguaje, el concepto es el mismo: se define una variable para que actúe como contador y valor
máximo. Cada vez que se ejecuta el bucle, aumenta la variable del contador. Cuando el contador es
igual al valor máximo definido, se abandona el bucle y los movimientos de ejecución del siguiente
paso. (Figura 2).

 Bucle WHILE: se utiliza para ejecutar un conjunto específico de instrucciones mientras que una
expresión es verdadera. Observe que las instrucciones dentro del bucle a menudo harán que la
expresión se evalúe finalmente como falsa. (Figura 3).

Antes de escribir un código, el programador necesita entender el problema y cómo puede resolverse
dividiéndolo en una secuencia de pasos y decisiones. Es común que los programadores creen el primer
borrador de un programa sin ningún lenguaje específico. Estos programas independientes del lenguaje se
centran en la lógica en lugar de la sintaxis y se conocen como algoritmos. Un diagrama de flujo es una
manera común de representar un algoritmo. La Figura 4 muestra un ejemplo del diagrama de flujo.
Escribir un buen algoritmo para resolver un problema es una tarea increíble que algunas personas
consideran una forma de arte.

Interpretado frente a compilado


Los lenguajes de computadora se pueden dividir en dos categorías principales: interpretados y
compilados.

Los lenguajes interpretados dependen de otro programa para analizar y ejecutar el código. Este programa
se denomina intérprete. El código permanece en texto legible para el humano y se envía a un intérprete
para su ejecución. Si bien los lenguajes interpretados facilitan el mantenimiento y la solución de
problemas de los códigos, la ejecución es más lenta que en los lenguajes compilados. Algunos ejemplos
de lenguajes interpretados son Python, JavaScript y PHP.

Los lenguajes compilados dependen de un compilador (otro programa) para convertir el código legible
para el ser humano en un código ejecutable binario. El código compilado se almacena de forma binaria y
puede ejecutarse en cualquier momento sin la necesidad de volver a compilarse. El código compilado
además se ejecuta más rápido porque lo hace directamente desde la CPU, sin la necesidad de un
intérprete. Debido a que el lenguaje compilado se ejecuta directamente desde la CPU, el compilador y el
código compilado binario que genera son específicos de la plataforma. Código fuente es el término que se
usa para referirse al código de lenguaje compilado antes de su compilación. En esta etapa, el código es
legible para el humano y puede modificarse fácilmente. Si un programador desea realizar cambios en un
programa compilado, debe aplicar dichos cambios al código fuente y volver a compilarlo antes de su
ejecución. Ejemplos de lenguajes compilados son C y C++.

La Figura 1 muestra leap_check.py, un programa escrito en Python para calcular si un año determinado
será un año bisiesto.
La Figura 2 muestra leap_check.c, un programa escrito en C para calcular si un año determinado será un
año bisiesto aún como código fuente antes de la compilación.

La Figura 3 muestra leap_check.c, un programa escrito en C para calcular si un año determinado será un
año bisiesto, en un sistema hexadecimal, después de la compilación.

La Figura 4 muestra el resultado de leap_check, un programa escrito en C para calcular si un año


determinado será un año bisiesto después de tres ejecuciones.
Lenguajes de computadora
Al igual que los idiomas humanos, hay varios lenguajes de computadora diferentes. Algunos lenguajes de
computadora son mejores que otros para ciertos tipos de tareas.

JavaScript, un lenguaje de computadora, está diseñado para crear aplicaciones web. Con JavaScript, un
programador puede crear aplicaciones web que pueden interactuar con los usuarios y otras aplicaciones.

Python, otro lenguaje interpretado, permite declaraciones más simples. Python es muy fácil de usar,
potente y versátil y se ha convertido en el lenguaje de preferencia de muchos desarrolladores de IoT. Uno
de los motivos principales de popularidad de Python es la comunidad de desarrolladores; los
desarrolladores de Python han creado y puesto a disposición muchos módulos específicos que pueden
importarse a cualquier programa para prestar inmediatamente mayor funcionalidad.

Blockly es un lenguaje de programación visual que permite a los usuarios crear programas conectando
bloques que representan diversas estructuras de lenguaje lógico en lugar de escribir el código real.
Blockly se ejecuta dentro de un navegador web y puede traducir el programa visualmente creado, como
JavaScript, PHP o Python. En la figura se muestra un ejemplo de Blockly.

C, un lenguaje compilado, es bueno para crear programas complejos y rápidos, pero sus reglas y sintaxis
estrictas dificultan su desarrollo. Creado a principios de 1970, C se ha convertido en uno de los lenguajes
de programación más utilizado de todos los tiempos. El sistema operativo Linux se escribe en C.

Java es un lenguaje compilado que se “escribe una sola vez y se ejecuta en cualquier lugar” (WORA). A
pesar del nombre similar, Java y JavaScript no están relacionados. Java está diseñado para ejecutarse en
cualquier plataforma sin la necesidad de la recompilación. Las aplicaciones basadas en Java requieren
una plataforma de JVM (máquina virtual Java) instalada en la computadora. JVM es el entorno donde se
ejecuta el código compilado en Java.

Procesamiento de datos y dispositivos de IoT


Una aplicación común para los sistemas de IoT es la recopilación de datos. Los dispositivos de IoT, como
sensores, a menudo se implementan en ubicaciones donde ocurre la recopilación de datos. La agricultura,
el transporte y la manufactura son solo algunos ejemplos de áreas donde la recopilación de datos se
realiza mediante uno o más sistemas de IoT.

Aunque la recopilación de datos es importante, los datos deben procesarse antes de que puedan ser
útiles. Los datos recopilados se pueden procesar en el punto de recopilación o se pueden transmitir y
almacenar en la nube para procesarlos en otro momento. Con frecuencia los datos de distintas fuentes se
combinan para brindar información más útil. Se utilizan programas informáticos para procesar eficazmente
los datos recolectados.

En un ejemplo agrícola, los dispositivos de IoT se pueden utilizar para supervisar el suelo y las
condiciones climáticas. Los sensores recogen datos sobre la humedad del suelo, la temperatura y los
niveles de acidez. Otros sensores pueden recopilar datos sobre los niveles de CO2 en el aire además de
la temperatura del aire, la presión barométrica y la humedad. Todos estos datos casi no tienen uso hasta
que se procesan. Se puede escribir un programa de computadora para procesar los datos y calcular las
chances de lluvia en función de las variaciones de la temperatura del aire, la humedad y la presión
barométrica. Los datos recopilados sobre las condiciones del suelo también pueden procesarse con
software para ayudar a optimizar el proceso de cosecha.
En un ejemplo de transporte, pueden recopilarse datos tales como el número de camiones que usa una
parte específica de la autopista, la temperatura de dicha sección de pavimento y los precios de la gasolina
y los neumáticos para invierno. El procesamiento de los datos puede indicar cuándo instalar los
neumáticos para invierno en los camiones en función de los días en que los caminos se congelarán.

Existen muchos lenguajes compatibles con un sistema de IoT que pueden utilizarse para crear programas
informáticos. Este curso se centra en Python debido a su popularidad, gran comunidad y simplicidad.

Los dispositivos de IoT toman decisiones


Un aspecto importante de un sistema de IoT es la capacidad de tomar decisiones. Activar una alarma si
los niveles de dióxido de carbono superan un umbral o desbloquear una puerta al detectar el mando a
distancia correcto son dos ejemplos de decisiones que podrían tomarse a través de dispositivos de IoT.
Algunos dispositivos de IoT también son capaces de tomar decisiones más complejas, como identificar el
rostro de una persona desde la fuente de una cámara.

La capacidad de tomar decisiones se suma a algunos de los dispositivos de IoT mediante el software. Los
programas deben escribirse y cargarse en el dispositivo de IoT para su ejecución antes de que el
dispositivo pueda tomar decisiones.

API de software

En muchos casos, los programas deben comunicarse con otros programas, sitios web o dispositivos. Una
interfaz de programa de aplicación (API) es un conjunto de rutinas y herramientas de software que facilita
la comunicación entre programas. Gracias a las API, las aplicaciones que se ejecutan a través de las
redes pueden comunicarse entre sí, compartir datos y solicitar servicios específicos de otras aplicaciones,
por ejemplo, preguntar a una API externa si la persona de la imagen es hombre o mujer.

Hay diferentes tipos de API disponibles, como API de sistema operativo, API de aplicación y API de sitio
web. Al crear una aplicación de administrador de archivos, un desarrollador de software aprovechará la
API de sistema operativo para copiar, mover o eliminar un archivo. Si la aplicación del desarrollador no
tiene el código necesario para realizar estas funciones, simplemente puede solicitar al sistema operativo
que las realice a través de su API de sistema operativo expuesta.

Las aplicaciones de IoT pueden comunicarse entre sí mediante las API, pero también pueden utilizarlas
para comunicarse con otros servicios basados en la nube. Independientemente del tipo de API, el objetivo
sigue siendo el mismo: permitir que otros programas interactúen entre sí. Los detalles sobre cómo utilizar
una API específica y qué tareas se exponen se incluyen en la documentación de la API.

La figura muestra un ejemplo de documentación de una API. Observe las tareas expuestas por la API.
Todas las tareas enumeradas pueden se utilizadas por otros programas.

Los dispositivos de IoT pueden depender de un tercer sistema para procesar los datos o ampliar su
conectividad. Los servicios alojados en la nube son una opción común para diseñar un sistema de IoT.

API de REST

La transferencia de estado representativa (REST), o servicio web RESTful, es un tipo de API diseñado
para facilitar la interacción de los programas con Internet. Las API de REST usan llamadas basadas en
HTTP entre las diferentes aplicaciones para manipular y acceder a la información almacenada en las
bases de datos potentes.

Los recursos web solían ser identificados exclusivamente por una URL. Actualmente, los recursos web
abarcan cada entidad o cosa que puede nombrarse, identificarse o abordarse. Las entidades pueden ser
un objetivo de paso del día, una configuración de temperatura de la casa o la frecuencia cardíaca de un
marcapasos. Cada recurso ahora tiene una identificación de recurso uniforme (URI) que generalmente
comienza con una barra diagonal, por ejemplo, /frecuenciacardíaca. Las API de REST usan el protocolo
HTTP y una URL o URI para solicitar servicios web. Dichas solicitudes REST basadas en la web activan
respuestas en formatos web bien definidos, como XML y JSON (notación de objetos JavaScript).
Mediante el uso de HTTP como protocolo, los servicios RESTful pueden tomar prestadas operaciones de
HTTP, como las acciones HTTP GET, POST, PUT and DELETE. Un ejemplo puede ser un marcapasos
que envía actualizaciones sobre la frecuencia cardíaca promedio a una base de datos médica. El
marcapasos puede utilizar una llamada de API de REST en un formato específico (PONER de HTTP)
para actualizar la información en la base de datos.

Los sistemas de IoT que aprovechan los servicios en la nube dependen con frecuencia de los servicios
RESTful para comunicarse. Por ejemplo, considere un reloj inteligente con capacidades climáticas, donde
un dispositivo de IoT recopila la información del clima para su ubicación actual y la muestra al usuario.
Este reloj puede programarse para comunicarse con un sistema meteorológico basado en la web a través
de una URL de API de REST (dirección web). Este tipo de URL y sus parámetros se describirán en la
documentación de la API. La figura muestra un ejemplo de URL de servicio RESTful. De la misma manera
en que un explorador web visita una página web, el reloj se contacta con la URL descrita en la
documentación de la API del sistema meteorológico y solicita, mediante la acción OBTENER de HTTP, el
clima para la ubicación actual (según el sensor del GPS). El sistema meteorológico responderá, conforme
a su propia API, con datos con formato JSON o XML que contienen la información del clima para dicha
ubicación. El código que se ejecuta en el reloj, también creado según la API del sistema meteorológico, a
su vez muestra la información al usuario.

Protección del código


Un sistema de IoT consta de la interconexión de varios bloques funcionales: dispositivos, gateways,
redes, nube y aplicación real. En cada uno de estos bloques, hay un código que se ejecuta para cumplir
con la función para la que está diseñado. Las mejores prácticas recomendadas para proteger los
dispositivos conectados en IoT deben incluir:

a) Los dispositivos deben protegerse de ataques que afecten su función o permitan que se usen para
fines no deseados sin autorización.

b) Los dispositivos deben proteger las credenciales de autenticación y los materiales clave privados de la
divulgación a partes no autorizadas.

c) Los dispositivos deben proteger la información recibida, transmitida o almacenada localmente en el


dispositivo de la divulgación inadecuada a partes no autorizadas.

d) Los dispositivos deben protegerse contra el uso como vectores para atacar a otros dispositivos o hosts
en Internet.

Para lograr las mejores prácticas de seguridad recomendadas, la seguridad física, la capacidad de confiar
en la integridad del código y la capacidad de actualizarse de forma remota son fundamentales para el
diseño de todos los sistemas y dispositivos de IoT.

Los dispositivos de IoT se encuentran en ubicaciones tradicionales, como centros de datos en la nube, y
también en muchas ubicaciones no tradicionales, como postes de luz, estacionamientos y cuerpos
humanos. Las ubicaciones tradicionales se pueden proteger mediante cámaras de vigilancia, sistemas de
control de acceso, identificación biométrica y puntos de autenticación múltiples.

La seguridad de los dispositivos de IoT en ubicaciones no tradicionales es más compleja. Los dispositivos
deben fabricarse para ser resistentes a manipulaciones y deben colocarse de manera tal que no sean
obvios y tengan difícil acceso. Aunque uno debe hacer lo mejor para proteger estos dispositivos
físicamente, un hacker determinado aún puede obtener acceso. La seguridad física, en la mayoría de los
casos, es una práctica recomendable pero no suficiente en sí misma.
Una manera en que un hacker puede cambiar la función de un dispositivo es: acceder al dispositivo,
deshabilitar la función, instalar software nuevo en el dispositivo y reiniciarlo. Otra forma de proteger el
dispositivo es asegurarse de que el código del dispositivo (tanto firmware como aplicación) sea el código
original que se creó. Esta medida de seguridad puede proteger el dispositivo de intentos de cambiar sus
funciones, incluso si se infringió la seguridad física. Esto se realiza “firmando” criptográficamente el código
original y garantizando que el dispositivo no se inicie si el código no está firmado. Este es el mismo
método que se utiliza para garantizar la integridad y la procedencia de los documentos. Hay muchos
enfoques que surgen en la industria para satisfacer los diferentes ángulos de este problema, como la
computación de confianza, las tecnologías de anclaje de confianza de Cisco y el arranque seguro de
Cisco. Por ejemplo, para iOS en un router, el anclaje de confianza de Cisco y el acceso seguro de Cisco
comprueban el código firmado para garantizar que el código que se ejecuta en las plataformas de
hardware de Cisco sea auténtico y no esté modificado, estableciendo una raíz de confianza a nivel del
hardware y una identidad inmutable del dispositivo para edificar el sistema.

También es fundamental que los dispositivos de IoT se diseñen para actualizarse de forma remota. El
diseño debe incluir funciones para permitir la administración remota del dispositivo y las actualizaciones.
También deben tenerse en cuenta la eliminación de las puertas traseras de la fase de desarrollo o las
cuentas de acceso de depuración de codificación rígida y la aplicación del acceso autorizado únicamente.

Los datos deben cifrarse mientras se reciben o transmiten a servidores locales o remotos. El acceso
remoto a los servidores o los terminales remotos también debe protegerse. Esto garantiza que los datos
conserven su integridad dado que permanecen protegidos del acceso no autorizado y la manipulación.
Los algoritmos de encriptación y los protocolos de transmisión seguros son técnicas de uso general para
proteger el software y los datos.

Raspberry Pi y sus puertos


Raspberry Pi (Pi) es una computadora económica y pequeña. Tiene una cantidad de puertos USB que
pueden usarse para conectar varios dispositivos, como teclados, ratones, unidades externas y cámaras.
Dado que se trata de una computadora completa en un paquete del tamaño de una tarjeta de crédito,
RaPi se ha convertido en la opción para muchos proyectos de IoT. Pi3 comparte las funciones de su
predecesora Pi2, pero añade:

 Una CPU de 1,2 Ghz y 64 bits con procesador de cuatro núcleos ARMv8

 LAN inalámbrica 802.11n

 Bluetooth 4.1

 Bluetooth de baja energía (BLE)

La Figura 1 muestra una vista superior del modelo B de Raspberry Pi 3.

La Figura 2 muestra una vista inferior del modelo B de Raspberry Pi 3.

RaPi además incluye un encabezado de 40 pines con GPIO. Los pines de GPIO (entrada/salida de uso
general) son extremadamente útiles para interactuar con el mundo físico. Los sensores, los accionadores,
los switches y los dispositivos pueden conectarse a la GPIO y controlarse mediante el código que se
ejecuta en RaPi. Otros puertos de RaPi incluyen una salida de audio, una ranura para tarjeta SD, un
puerto Ethernet, 4 puertos USB, una interfaz de cámara (CSI), una interfaz de dispositivo (DSI) y un
conector micro USB (para alimentación).

La Figura 3 muestra la distribución de terminales de GPIO del modelo B de Raspberry Pi 3.

Creada con base en Raspberry Pi, RaPi se diseñó para ser pequeña y económica. RaPi puede ejecutar
varios sistemas operativos, como Linux y Windows.

La Figura 4 muestra las especificaciones de hardware del modelo B de Raspberry Pi 3.

PL-App
Existen varias maneras de configurar y usar Raspberry Pi. Mediante la conexión física de una pantalla
HDMI, un ratón y un teclado USB, RaPi se convierte en una PC general y permite al usuario tener acceso
físico local. Una vez que se descarga la imagen compatible del sistema operativo de Raspberry Pi a la
tarjeta micro SD, RaPi está lista para usar.

Tradicionalmente, Raspberry Pi se usa como computadora completa con monitor, teclado y ratón. Estos
son los pasos para usar la Raspberry Pi como computadora con acceso físico local:

Paso 1: Instale una imagen de sistema operativo en la tarjeta micro SD.

Paso 2: Coloque la tarjeta en la ranura para tarjetas micro SD de RaPi.

Paso 3: Conecte un teclado USB.

Paso 4: Conecte un monitor o TV mediante el puerto HDMI.

Paso 5: Encienda el dispositivo con el adaptador de potencia.

Alternativamente, para utilizar la Raspberry Pi como dispositivo de IoT, se debe poder controlar desde la
red. Acéfalo es el término que se utiliza para servidores que solo se operan de forma remota. Aunque hay
disponibles muchas configuraciones acéfalas, este curso se enfoca en una solución personalizada
llamada aplicación de prácticas de laboratorio de prototipos (PL-App). PL-App permite el acceso a
Raspberry Pi directamente desde la red. El acceso acéfalo permite el funcionamiento sin la necesidad de
un monitor, un teclado o un ratón conectados directamente a RaPi (Figura 1). Desde una segunda PC, el
usuario establece conexiones de red a RaPi y opera a través de estas conexiones. Es compatible con la
GUI y funciona solo con texto. La Figura 2 muestra un ejemplo de una topología de una clase que ejecuta
PL-App en Raspberry Pi.

La Figura 3 muestra una captura de pantalla de los componentes que conforman PL-App.

Tarjeta SD con capacidad de arranque


Las computadoras modernas pueden arrancar el sistema de los dispositivos USB externos y las tarjetas
SD. Con el aumento de su popularidad debido a las tarjetas externas más grandes y económicas, es
común tener sistemas operativos enteros instalados en dichas tarjetas.

Raspberry Pi 3 incluye una ranura para tarjeta micro SD (Figura 1) que se usará como dispositivo de
almacenamiento para el sistema. Antes de que Raspberry Pi 3 se pueda utilizar, debe instalarse un
sistema operativo en la tarjeta micro SD que se colocará en la ranura SD para arrancarla.

Si bien hay varias formas de instalar un sistema operativo en una tarjeta micro SD, el más común (y
probablemente el más rápido) es utilizar un archivo de imagen. Un archivo de imagen es un archivo único
que contiene una imagen del sistema de archivos completo. En ese sentido, el archivo de imagen es una
copia exacta del sistema de archivos y puede utilizarse para reconstruir el sistema de archivos en otros
medios. Los formatos de archivo de imagen comunes son: .iso y .img.

Hay varias opciones disponibles para las herramientas de transferencia de imágenes. El que se usa en
este curso es parte del Iniciador de PL-App. Se trata de una herramienta personalizada de transferencia
de imágenes que simplifica la implementación de las imágenes utilizadas en el curso. El Iniciador de PL-
App además administra la detección y el control acéfalo de Raspberry Pi conectada a la red.

La Figura 2 muestra los pasos para configurar un dispositivo nuevo.

La Figura 3 muestra cómo conectar un nuevo dispositivo mediante la aplicación del Iniciador de PL-App.

Si un usuario descarga una imagen sin la herramienta de PL-App especializada, el usuario deberá obtener
el archivo de imagen creado por el fabricante o el encargado de mantenimiento que habilita la descarga.
El usuario simplemente podrá descargarlo de la página web correspondiente. La base de Raspberry Pi
ofrece una imagen de Raspbian, una variación de Debian Linux personalizada para Raspberry Pi. Este
curso utiliza una imagen de PL-App basada en una versión modificada de Raspbian.

Interpretación de Linux
Linux es un sistema operativo creado en 1991. Fue creado, y es mantenido actualmente, por una
comunidad de programadores. Linux es de código abierto, rápido, confiable y pequeño. Requiere muy
pocos recursos de hardware para ejecutarse y es altamente personalizable. Linux es parte de diferentes
plataformas y puede encontrarse en cualquier lugar, desde “relojes a supercomputadoras”. Linux es
también una opción muy popular en los dispositivos de IoT.

Otro aspecto importante de Linux es que está diseñado para estar en la red. Las operaciones de red y las
conexiones son simples en Linux, lo que lo convierte en una buena opción para los profesionales y
administradores de redes. Cualquier persona puede obtener el código fuente del núcleo, examinarlo,
modificarlo y volver a compilarlo a disposición. Las empresas y los usuarios son libres de modificar,
reempaquetar y ejecutar el software. Pueden redistribuir el programa con o sin cargos.

Una distribución de Linux es el término que se utiliza para describir los distintos paquetes de Linux
creados por distintas empresas. Las distribuciones de Linux (o distros) incluyen el núcleo de Linux más
varias herramientas y paquetes de software personalizados. Si bien algunas proporcionan y cobran el
soporte de Linux (orientado a empresas basadas en Linux), la mayoría ofrece su distribución gratuita sin
soporte. Debian, Red Hat, Ubuntu, Slackware y Mint son solo algunos ejemplos de distribuciones de
Linux.

Raspbian es una distribución del sistema operativo Linux creada específicamente para Raspberry
Pi. Raspbian es una variación de Debian Linux y, por lo tanto, mantiene la estructura de Linux.

La figura muestra una captura de pantalla de Raspbian ejecutándose en Raspberry Pi 3.

Acceso al shell de Linux


El sistema operativo de Linux puede dividirse en núcleo y shell. El núcleo se puede pensar como el SO en
sí, mientras que el shell es solo un programa que se ejecuta en el SO y ofrece funcionalidades de
interacción entre el SO y el usuario.

Para interactuar con el hardware de la máquina, el usuario interactúa con el shell que interactúa con el
núcleo que, a su vez, interactúa con el hardware. La figura es un diagrama de alto nivel de Linux.

El shell es un interpretador de comandos y, por lo tanto, los términos shell, terminal, consola y CLIse usan
con frecuencia de forma indistinta. Este curso utiliza el término terminal para referirse al shell. Cuando un
usuario se conecta al sistema, el programa de inicio de sesión revisa el nombre de usuario y la
contraseña; si las credenciales son correctas, el programa de inicio de sesión llama al shell. Desde aquí,
un usuario autorizado puede comenzar a interactuar con el SO a través de los comandos basados en
texto.

Históricamente, cuando no había ninguna interfaz gráfica disponible, el shell se basaba en texto sin
soporte para el ratón o las funciones visuales avanzadas. También denominado interfaz de línea de
comandos (CLI), el shell basado en texto era la única forma para que el usuario interactuara con el SO.
Hoy en día, el shell de Linux sigue siendo extremadamente importante, ya que proporciona acceso al
sistema. Aunque muchas distribuciones de Linux modernas incluyen soporte para las interfaces gráficas
de usuario (GUI), el shell aún se considera el método más eficiente para interactuar con el sistema. Esto
es especialmente cierto cuando la interacción se relaciona con el mantenimiento del sistema o la solución
de problemas.

Como ejemplo de interacción entre el usuario-shell-núcleo, supongamos que un usuario desea eliminar un
archivo llamado myFile. El usuario escribe rm myFile. rm es el comando para eliminar los archivos
y myFile es el nombre del archivo que se eliminará. El shell busca en el sistema de archivos el
programa rm y solicita al núcleo, a través de llamadas al sistema, que ejecute el programa rm con el
parámetro myFile. A medida que el proceso se ejecuta, el shell no está disponible para el usuario y no
presenta ninguna indicación que señale el estado. Cuando el proceso rm myFile finaliza su ejecución, el
shell muestra el mensaje al usuario que indica que está listo y en espera de más comandos.
Acceso a CLI
Se crearon diferentes shells y añadieron muchas funciones para facilitar la escritura y la interacción del
usuario. Algunas de las características importantes del shell incluyen la compleción de comandos y
nombres de archivos con la tecla TAB, el historial de comandos, los accesos directos del teclado para
pasar de línea de comando y otras. Entre los shells más populares aparecen el shell Bourne (sh), Bash
(bash), el shell C (csh), el shell C mejorado (tcsh) y el shell Z (zsh). Qué shell utilizar es una cuestión de
preferencia para la mayoría de los usuarios.

Aunque haya una CLI aún presente, el SO moderno a menudo arranca en la GUI de manera
predeterminada, ocultando la CLI al usuario. Una forma de acceder a la CLI en un sistema operativo
basado en la GUI es a través de una aplicación del emulador de terminal. Estas aplicaciones permiten que
el usuario acceda al shell y generalmente se denominan con alguna variación de la palabra “terminal”. En
Linux, los emuladores de terminal comunes son Terminator, eterm, xterm, console y gnome-terminal. La
figura muestra una captura de pantalla de Gnome-Term, una aplicación del emulador de terminal de
Linux.

Independientemente del emulador de terminal utilizado, el usuario aún decide qué shell utilizar dentro de
la aplicación del emulador de terminal. Para cambiar el shell, el usuario debe tener el shell deseado
instalado en el sistema y configurar algunas opciones en un archivo de configuración. Si bien es
importante comprender la diferencia entre emulador de terminal y shell, reemplazar o configurar el shell
predeterminado excede el alcance de este curso.

Comandos básicos de Linux


Los comandos de Linux son básicamente programas creados para realizar una tarea específica del
sistema. Para añadir flexibilidad, algunos comandos admiten parámetros, opciones y switches. Estos
generalmente van precedidos por un guión ("-"). Las opciones y los switches admitidos por un comando
son ingresados por el usuario junto con el comando. Utilice el comando man para obtener documentación
sobre otros comandos. Por ejemplo, man ls proporcionará documentación sobre el comando ls del
manual del usuario incorporado en la versión que se ejecuta de Linux.

Para invocar un comando a través del shell, simplemente escriba el nombre. El shell intentará encontrarlo
en la ruta del sistema y, si lo encuentra, lo ejecutará.

La figura muestra una lista de algunos comandos básicos de Linux y sus funciones.

Haga clic aquí para experimentar una interfaz de línea de comandos de Linux en su navegador web.
Proceso de comandos de administración
Proceso es el término que se utiliza para hacer referencia a cualquier tarea ejecutada por el sistema. Un
programa de computadora es pasivo. Es un conjunto de instrucciones almacenado en un disco como
código ejecutable. Un proceso es en la práctica un programa en acción. Las ID de proceso, o PID, son ID
exclusivas asociadas a los procesos utilizadas por el núcleo para identificarlos. Como con cualquier otro
sistema operativo multitarea, Linux puede administrar varios procesos al mismo tiempo. Linux también
incluye herramientas para la administración y visualización de los procesos. Los siguientes son algunos
comandos de administración de procesos:

 ps: este comando se utiliza para enumerar los procesos en ejecución en el sistema cuando se
invoca. Se puede indicar a ps que muestre los procesos en ejecución que pertenecen al usuario
actual o a otros usuarios. Si bien enumerar procesos no requiere privilegios de raíz, eliminar o
modificar otros procesos del usuario puede que lo haga.

 top: este comando también se utiliza para indicar procesos en ejecución pero, a diferencia
de ps, top sigue mostrando los procesos en ejecución dinámicamente. Presione q para salir de top.

 kill:: este comando se utiliza para modificar el comportamiento de un proceso específico. Según los
parámetros, kill eliminará, reiniciará o detendrá un proceso. En muchos casos, el usuario
ejecutará ps o top antes de ejecutar kill. Esto se hace para que el usuario adquiera la PID de un
proceso antes de ejecutar kill.

Si se bloquea un proceso, puede ser necesario eliminarlo manualmente. Esto es común al crear
programas, ya que pueden funcionar de manera incorrecta y bloquearse. Una razón común para que un
programa no responda es un bucle mal construido que se ejecuta continuamente.

La figura muestra el comando top que se ejecuta en Linux.


Visualización de archivos y operaciones de archivos

En Linux, la mayoría de las entidades se trata como archivos. Con el objetivo de organizar el sistema y
reforzar los límites dentro del sistema, Linux utiliza permisos de archivos. Una de las características
principales de Linux es que los permisos de archivos se incorporan en la estructura del sistema de
archivos y proporcionan un mecanismo para definir los permisos en cada archivo. Esto significa que cada
archivo en Linux conlleva sus permisos de archivo que definen qué pueden hacer el usuario,
el grupo y otros con el archivo. Los posibles derechos de permisos son
de lectura, escritura y ejecución. Considere el resultado del comando ls - l a continuación:

rod@machine: $ ls -l My_Awesome_File

-rwxrw-r-- 1 rod staff 1108485 Aug 14 7:34 My_Awesome_File

user@machine: $

El resultado anterior proporciona mucha información sobre My_Awesome_File.

Conforme a las columnas que se muestran en la parte superior de la figura, la primera columna (extremo
izquierdo) del resultado anterior muestra los permisos asociados a My_Awesome_File. Los permisos de
archivos siempre se muestran en el orden Usuario, Grupo y Otro, lo que significa
que My_Awesome_File puede manejarse de la siguiente manera:

 El usuario que posee el archivo puede leer (Read), escribir (Write) y ejecutar (eXecute) el archivo.
Esto se representa con el primer “rwx” (de izquierda a derecha).

 El grupo que posee el archivo puede leer (Read) y escribir (Write) el archivo. Esto se representa con
“rw-”.

 Cualquier otro usuario o grupo del sistema solo puede leer (Read) el archivo. Esto se representa
con “r--”.
La segunda columna define el número de enlaces directos al archivo y no es importante para el alcance
de este curso.

La tercera y cuarta columna muestran el usuario y el grupo que poseen el archivo, respectivamente. En
este caso, el usuario rod y el grupo staff tienen un cierto nivel de propiedad sobre el archivo.

La quinta columna muestra el tamaño del archivo en bytes. My_Awesome_File tiene 1 108 485 bytes o
cerca de 1,1 MB.

La sexta columna muestra la fecha y la hora de la modificación más reciente.

La séptima columna muestra el nombre del archivo.

La figura muestra un desglose de los permisos de archivos en Linux.

Como mencionamos antes, los permisos de archivos son una parte fundamental de Linux y no se pueden
eliminar. Un usuario tiene tanto derecho a un archivo como el permiso del archivo se lo permite. El único
usuario que puede anular el permiso de un archivo en un sistema Linux es el usuario raíz. Al tener el
poder de anular los permisos de archivos, el usuario raíz puede escribir a cualquier archivo. Dado que
todo en Linux se trata como un archivo, el usuario raíz tiene control total sobre el sistema Linux.

El permiso de archivo es un concepto simple, pero extremadamente importante para el sistema Linux,
dado que con los permisos de archivos el sistema estructura su seguridad y definen sus límites. Un
usuario común no puede modificar los archivos o los recursos que no le pertenecen. Como consecuencia
de esta característica inherente, con frecuencia se requiere el acceso raíz antes de realizar tareas de
mantenimiento y administrativas.

Nota: el usuario raíz también es conocido como superusuario.

La Figura 2 muestra algunas herramientas de línea de comandos administrativas.


Administradores de paquetes
Un administrador de paquetes (también denominado sistema de administrador de paquetes) es un
conjunto de herramientas de software diseñadas para facilitar la instalación, la eliminación y la
actualización de programas informáticos. Los programas informáticos dependen de programas externos
llamados bibliotecas para operar. Mantener tales programas y sus bibliotecas manualmente no es
escalable para un sistema con una gran cantidad de programas instalados. Un administrador de paquetes
puede ayudar a automatizar el proceso y reducir los errores humanos.

Los diferentes sistemas operativos incluyen distintos administradores de paquetes. Debian y sus
derivados incluyen dpkg (administrador de paquetes Debian GNU/Linux). Para automatizar el proceso aún
más, los usuarios pueden utilizar apt como parte inicial para dpkg. Red Hat Linux y sus derivados utilizan
RPM (administrador de paquetes Red Hat) como administrador de paquetes predeterminado para las
distribuciones de Linux. Otro administrador de paquetes popular es yum (actualizador Yellowdog
modificado). Yum es capaz de seguir automáticamente las dependencias de un paquete e instalarlas
antes de instalar el paquete.

Un administrador de paquetes generalmente incluye herramientas de usuario y un repositorio de paquetes


remoto. Las herramientas de usuario facilitan la administración de paquetes y pueden ser CLI o GUI. El
administrador de paquetes utiliza el repositorio remoto para alojar los paquetes. Los administradores de
paquetes son también muy útiles para el versionamiento de paquetes, lo que permite a los usuarios
actualizar o volver a la versión anterior de un paquete o ignorar una versión de paquete específica.

Antes de realizar correctamente cualquier operación del paquete, el usuario debe sincronizar el índice del
repositorio local con el índice remoto (por ejemplo: “apt-get update”). Un índice de repositorio es
simplemente una lista de paquetes y sus últimas versiones. Cuando se sincronizan los índices locales y
remotos de repositorios, el sistema puede compararlos con la versión actualmente instalada y recomendar
actualizaciones.

Según la decisión del usuario de actualizar un paquete o no, el administrador de paquetes descarga los
paquetes necesarios. Si estos paquetes tienen paquetes de dependencias, también se descargan. Una
vez que la descarga se ha completado, el administrador de paquetes los instala automáticamente.

Como Raspbian es un derivado de Debian, dpkg y apt se incluyen de forma predeterminada. Instalar,
eliminar y actualizar los paquetes en Raspberry Pi puede hacerse fácilmente con algunos comandos
simples.

Variables y declaraciones básicas


Blockly es una herramienta de programación visual creada para ayudar a los principiantes a comprender
los conceptos de programación. Mediante el uso de múltiples tipos de bloques, Blockly permite que un
usuario cree un programa sin introducir ninguna línea de código.
Blockly implementa la programación visual mediante la asignación de diferentes estructuras de programas
a bloques de color. Los bloques también contienen ranuras y espacios que permiten que los
programadores ingresen los valores requeridos por la estructura. Los programadores pueden unir las
estructuras de programación arrastrando y asociando los bloques adecuados. Las estructuras de
programación, como subordinadas, bucles y variables, están todas disponibles para utilizar.

Una variable es una entidad de programación utilizada para almacenar datos. Básicamente, una variable
es una parte de la memoria que puede recibir un nombre legible para el almacenamiento de datos y la
recuperación. También se puede cambiar el contenido de una variable mientras se ejecuta el programa.

Crear una nueva variable en Blockly es sencillo: se debe arrastrar el bloque variable al espacio de trabajo
y completar la ranura de valor. La figura muestra una variable de Blockly.

Blockly también admite funciones. Al igual que las variables, Blockly tiene bloques específicos para
representar funciones. Asimismo, los programadores simplemente seleccionan y arrastran los bloques de
funciones al área del espacio de trabajo y completan las ranuras requeridas.

Observe que el bloque de variables y la impresión en el bloque de la pantalla tienen una ficha biselada en
la parte inferior y una ranura en la parte superior. Esto significa que los dos bloques pueden conectarse
para crear una secuencia de programa. Blockly ejecutará primero el bloque en la parte superior y
continuará con el bloque en la parte inferior.

Otros bloques están disponibles, como el bloque IF - THEN, el bloque WHILE y el bloque FOR. También
hay bloques específicos para los sensores y los accionadores.

Por último, Blockly se puede utilizar para traducir el código basado en bloques en Python o JavaScript.
Esto es muy útil para los programadores principiantes.

Subordinada IF - THEN
La estructura subordinada IF - THEN se utiliza para permitir que el código tome decisiones. Al probar la
veracidad de una expresión, el programa pasará a la siguiente declaración si la expresión se evalúa como
falsa. Si la expresión es verdadera, la acción THEN se ejecuta antes de pasar a la siguiente declaración
del código.

El programa Blockly que se muestra en la Figura 1 representa un programa que determina quién es la
persona más grande de las dos. El programa solicita al usuario que introduzca la edad de la primera
persona y la almacena en una variable llamada PERSON1. Después el programa solicita la edad de la
segunda persona y la almacena en otra variable llamada PERSON2. Por último, el programa compara las
dos edades y publica cuál es la mayor de las dos personas.

La Figura 2 muestra el código equivalente de Python.


Bucle FOR
El bucle FOR se utiliza para repetir la ejecución de un bloque específico de un código una cantidad
específica de veces. Es común utilizar el bucle FOR cuando la cantidad de repeticiones se conoce de
antemano.

El programa Blockly que se muestra en la figura utiliza el bucle FOR para determinar todos los números
primos entre 1 y 100. Los números primos son los números divisibles solo por 1 o por el número en sí y se
publican en la pantalla, mientras que los números que no son primos se ignoran.

El programa utiliza dos bucles FOR para calcular el resto de la división entre el número que se evalúa y
los números entre 2 y el número mismo. Si el resto de la división es cero, el número no es un número
primo. Si ninguna división produce un resto equivalente a cero, entonces es un número primo. El
programa publica el número primo en la pantalla y continúa con la evaluación del siguiente número; solo
se detiene cuando llega a 100.

Bucle WHILE
El bucle WHILE se utiliza para ejecutar un bloque de códigos siempre que una condición sea verdadera.
El código en el bucle WHILE a menudo modifica las entidades y las variables para finalmente hacer que la
expresión sea falsa. Si la expresión comprobada por WHILE nunca se torna falsa, el bucle se ejecuta
continuamente y se denomina bucle infinito. Por lo general, no se recomiendan bucles infinitos en la
programación.

El programa Blockly que se muestra en la figura utiliza el bucle WHILE para crear un juego de
adivinanzas. El programa elije un número al azar entre 1 y 10 y solicita al usuario que intente adivinarlo. El
programa seguirá repitiendo la conjetura hasta que el usuario adivine el número correcto.

Uso de Blockly para conocer Python


Python es un lenguaje muy común diseñado para ser fácil de leer y escribir. La comunidad de
desarrolladores de Python agrega valor al lenguaje creando todo tipo de módulos y poniéndolos a
disposición de otros programadores.

La filosofía base del lenguaje se resume en el documento Zen de Python:

 Hermoso es mejor que feo.

 Explícito es mejor que implícito.

 Simple es mejor que complejo.

 Complejo es mejor que complicado.

 La legibilidad es importante
A pesar del hecho de que Python está diseñado para ser simple, aún hay una curva de aprendizaje. Para
que conocer Python sea aún más fácil, un principiante puede utilizar Blockly para mejorar la comprensión
de Python.

Si bien los distintos lenguajes de programación tienen diferente semántica y sintaxis, todos comparten la
misma lógica de programación. Los principiantes pueden utilizar Blockly para crear fácilmente un
programa independiente del lenguaje, exportarlo como código de Python y usar el código recientemente
creado para aprender la sintaxis, la estructura y la semántica de Python.

Las Figuras 1 y 2 muestran el programa del juego de adivinanzas en formatos de Blockly y Python.

Interpretador de Python
Python es un lenguaje interpretado; por lo tanto, requiere un intérprete para analizar y ejecutar el código
de Python. El interpretador de Python comprende y ejecuta el código de Python. El hecho de que el
código de Python pueda crearse en cualquier editor de texto y que los intérpretes de Python estén
disponibles para muchos sistemas operativos permite que los desarrolladores de Python creen e
implementen los programas de Python prácticamente en cualquier sistema operativo. Las herramientas de
terceros, como Py2exe y Pyinstaller, también pueden utilizarse para incluir el código fuente de Python en
un archivo ejecutable, lo que elimina la necesidad de intérpretes de Python al ejecutar el código de
Python.

En las máquinas Linux, el intérprete de Python está instalado generalmente


en /usr/bin/python o /usr/bin/python3 (según las versiones de Python disponibles en el sistema). Con el
nuevo instalador Windows de Python, Python se instala de manera predeterminada en el directorio de
inicio del usuario. En equipos Windows más antiguos, Python se colocaba en C:\PythonXX(donde XX es
la versión de Python). Una vez instalado el intérprete de Python, funciona de manera similar al shell de
Linux. Esto significa que, cuando se llama sin argumentos, lee y ejecuta comandos de forma interactiva;
cuando se llama con un argumento de nombre de archivo o un archivo como entrada estándar, lee y
ejecuta una secuencia de dicho archivo.

Para iniciar el intérprete, simplemente escriba python o python3 en el indicador del shell.
Algunos sistemas heredados todavía se están ejecutando en una versión anterior de Python 2, pero
muchos sistemas nuevos están migrando a la nueva versión 3 de Phyton. La versión de Python está
impresa en la primera línea cuando se inicia el intérprete (Figura 1). Este curso se basa en código de
Python 3 y aunque es bastante compatible con la versión anterior Python 2, algunas funciones pueden
tener diferente conducta.

Cuando se llama al intérprete de Python sin argumentos y los comandos se ingresan mediante el teclado,
el intérprete se dice que está en modo interactivo. En este modo, el intérprete espera los comandos. El
indicador principal está representado por tres signos mayor que (>>>). Las líneas de seguimiento están
representadas por tres puntos (...). La línea de seguimiento es el indicador secundario predeterminado.

El indicador >>> indica que el intérprete está listo y espera los comandos.

Las líneas de seguimientos son necesarias al introducir un código multilínea. La Figura 2 muestra el
bloque IF - THEN escrito en Python.

Otra forma de utilizar el intérprete es python -c command [arg] ... que ejecuta las declaraciones en el
comando. Como las declaraciones de Python suelen contener espacios u otros caracteres determinados
del shell, se recomienda incluir el comando completo entre comillas simples.

Variables y declaraciones básicas en Python


El intérprete recibe y ejecuta las declaraciones interactivamente.

El intérprete actúa como calculadora simple. Puede ingresar una expresión y escribirá el valor. La sintaxis
de la expresión es directa. Los operadores +, -, * y / funcionan al igual que en la mayoría de los otros
lenguajes (por ejemplo, Pascal o C). Los paréntesis (()) pueden utilizarse para agrupar, como se muestra
en la Figura 1.

El modo interactivo de Python implementa la variable especial “_” para sostener el resultado de la última
expresión publicada, como se muestra en la Figura 2.

Las variables son áreas de memoria rotuladas que se utilizan para almacenar datos de programas de
tiempo de ejecución. Para asignar valores a las variables en Python, use el signo = (igual). No se muestra
ningún resultado antes del siguiente indicador interactivo, como se muestra en la Figura 3.

Los intentos de utilizar una variable no definida (sin ningún valor asignado) resultarán en un error, como
se muestra en la Figura 4.

Las secuencias, definidas como secuencias de caracteres, también pueden manejarse desde el modo
interactivo. Utilice el carácter de barra invertida (“\”) para sustraerse de los caracteres. Por ejemplo, una
cadena que utiliza comillas dobles, pero que también necesita utilizar una comilla doble dentro de la
cadena. Si la cadena se ingresa de la siguiente manera: "I really "need" this"., Python se confundirá y
pensará que la primera comilla doble dentro de la cadena finaliza realmente la cadena. Si coloca una
barra invertida (\) antes de las comillas dobles dentro de la cadena de la siguiente manera: "I really
\"need\" this", la barra invertida (\) hará que Python se sustraiga o ignore el carácter que sigue.

Las comillas simples o comillas dobles pueden utilizarse para envolver las cadenas, como se muestra en
la Figura 5.

La declaración de publicación publica el resultado de la expresión dada. Difiere de la escritura simple de la


expresión que se desea escribir (como hicimos anteriormente en los ejemplos de cálculo) en la manera en
que se administran las expresiones y cadenas múltiples. Las cadenas se publican sin comillas y se inserta
un espacio entre los elementos para formatear las cosas correctamente, como se muestra en la Figura 6.

Las funciones son una parte importante de muchos lenguajes de programación. Las funciones permiten
que un bloque de códigos reciba un nombre y se vuelva a utilizar según sea necesario. El siguiente
ejemplo define una función para agregar dos números y publicar el resultado, como se muestra en la
Figura 7.

Funciones útiles y tipos de datos en Python


Python admite muchas funciones y tipos de datos útiles. Algunos de los más importantes son los
siguientes:
Range(): la función range() genera una lista de números utilizados generalmente para iterar con los bucles
FOR. La Figura 1 muestra ejemplos de la función range().

range(stop): cantidad de números enteros a generar desde cero.

range([start], stop[, step]: a partir del número de secuencia, genera números hasta dicho número (sin
incluirlo), diferenciando entre cada número en la secuencia.

Tuplas

Una tupla es una secuencia de objetos incambiables de Python. Las tuplas son secuencias separadas por
paréntesis. La Figura 2 muestra ejemplos de tuplas.

Listas

Las listas son una secuencia de objetos cambiables de Python. Las listas pueden crearse configurando
distintos valores separados por comas entre corchetes. La Figura 3 muestra ejemplos de listas y cómo
pueden actualizarse.

Conjuntos

Los conjuntos son colecciones no ordenadas de elementos exclusivos. Las aplicaciones comunes
incluyen pruebas de membresía, cancelaciones de duplicados de una secuencia y cálculos de
operaciones matemáticas estándar en conjuntos, como intersecciones, uniones, diferencias y diferencias
simétricas. La Figura 4 muestra ejemplos de paquetes.

Diccionario

Un diccionario es una lista de elementos separados por comas. Cada elemento es una combinación de un
valor y una clave única. Cada tecla se separa de su valor por dos puntos. El diccionario completo se
escribe entre llaves. Se puede acceder a, actualizar o eliminar los elementos del diccionario. También hay
muchas funciones integradas en el diccionario, como la función que compara elementos dentro de
diferentes diccionarios y la que proporciona un conteo de la cantidad total de elementos de un diccionario.
La Figura 5 muestra ejemplos de diccionarios.

Importación de módulos en el código


Salir del intérprete de Python y volver a ingresar elimina todas las definiciones efectuadas previamente;
las funciones y las variables se perderán en el proceso. Debido a esto, utilice un editor de texto cuando
cree un programa más largo o más complejo. Cuando el programa esté listo, aliméntelo simplemente en el
intérprete para ejecutarse. Con un editor de texto utilizado de esta manera se crea un tipo de programa
llamado secuencia. A medida que los programas son más largos y más complejos, puede ser necesario
dividirlos en programas más pequeños para un mantenimiento más fácil. Con este enfoque, un
programador creará un programa principal que importe todos los programas más pequeños necesarios.
Estos programas más pequeños se denominan módulos.

Incluso si un programa no es largo o complejo, el programador aún puede beneficiarse con la importación
de un módulo existente en su programa. Un programador puede elegir reutilizar una buena función ya
escrita. Otra opción común es que los programadores importen los módulos escritos por otra persona para
agregar funcionalidad a su código o mejorar su programa. Python tiene una comunidad grande y muy
activa de desarrolladores que han escrito y compartido módulos para muchas tareas.

La Figura 1 muestra un fragmento del código que crea un módulo de Python para calcular y publicar la
serie Fibonacci hasta el número N.
El código anterior se creó en un editor de texto y guardó como fibo.py. Ahora que el módulo se ha creado
y guardado en el disco, se puede importar a cualquier otro programa de Python y alimentar al intérprete a
través de la palabra clave import, como se muestra en la Figura 2.

Observe que el intérprete no ejecuta el contenido de fibo.py, sino que sabe dónde encontrar las
funciones fib() y fib2(). Para usar el módulo y sus funciones, simplemente llámelos por su nombre, como
se muestra en la Figura 3.

Los módulos comunes que verá en IoT y en este curso incluyen los módulos de procesamiento de datos
(funciones matemáticas), los módulos de autoevaluación (nivel de batería y prueba de memoria), los
módulos de seguridad (hashes, cifrado/descifrado) y los módulos de servidor de red y cliente (Web, FTP,
NTP, etc.).

La Figura 4 muestra diferentes maneras de utilizar la función de importación.


IF - THEN en Python
Al igual que otros lenguajes, Python implementa la estructura IF - THEN. Los bloques IF - THEN se
pueden utilizar para permitir que el código tome decisiones según el resultado de una expresión, como se
muestra en la figura.

El código realiza algunas pruebas y publica un mensaje conforme a los resultados de la prueba. Observe
que Python también implementa dos subestructuras denominadas ELSE y ELIF. ELSE permite al
programador especificar instrucciones para ejecutar si la expresión es falsa. La forma abreviada de ELSE
IF, ELIF, se usa para realizar una segunda prueba en caso de que la primera expresión sea falsa y se
requiera otra prueba. Puede haber cero o más ELIF y la parte ELSE es opcional.

Bucle FOR en Python


El bucle FOR en Python itera los elementos de cualquier secuencia (una lista o una cadena) en el orden
en que aparecen en la secuencia, como se muestra en la figura.

Bucle WHILE en Python


El bucle WHILE ejecuta un bloque de códigos si la expresión es verdadera. El programa a continuación
utiliza un bucle WHILE para calcular y publicar una subsecuencia inicial de la serie Fibonacci, como se
muestra en la figura.

La tercera línea contiene un operador de asignación múltiple. Las variables a y b obtienen los nuevos
valores de 0 y 1 en una única declaración.

El bucle WHILE calcula el término siguiente en la serie Fibonacci siempre que la condición b < 10 sea
verdadera. Como en C, Python asume cualquier valor del número entero que no sea cero como verdadero
y cero como falso. La prueba que se utiliza en la figura es una comparación simple.

Observe que el cuerpo del bucle está indentado. La indentación es la forma en que Python agrupa las
declaraciones. En el indicador interactivo, debe escribir una ficha o espacio para cada línea indentada.
Las entradas más complejas de Python deben realizarse con un editor de texto. Cuando una declaración
compuesta se ingresa interactivamente, debe ir secundada por una línea en blanco para indicar la
finalización (porque el analizador no puede adivinar qué línea será la última). Observe que cada línea
dentro de un bloque básico se debe indentar por la misma cantidad.
Páncreas artificial hecho con Raspberry Pi
Su tamaño pequeño y bajos requisitos de recursos hacen que Raspberry Pi sea como una navaja suiza
multiuso para IoT. Este tema explora algunos proyectos interesantes que utiliza Raspberry Pi.

Dana Lewis ha vivido con diabetes tipo 1 desde los 14 años. El páncreas de las personas con diabetes
tipo 1 no produce suficiente insulina para administrar el azúcar en la circulación sanguínea. Las personas
como Dana deben supervisar y corregir los niveles de insulina. Debido a que el monitor que utilizaba tenía
muchos defectos, Dana y su esposo decidieron utilizar Raspberry Pi para construir un páncreas artificial,
como se muestra en la figura.

Robot Pi 4Borg
La figura muestra un equipo robótico asequible de los expertos en robótica de PiBorg. Es educativo y
divertido.
Obtenga más información sobre el proyecto en: https://www.raspberrypi.org/magpi/4borg-robot-review/

Otro excelente ejemplo de automatización con Raspberry Pi se produjo en una granja de pepinos en
Japón. Se utilizó una cámara como sensor para procesar imágenes y clasificarlas. Luego se usaron
accionadores para seleccionar qué pepinos eran aceptables y cuáles no. Este proceso ahorra al granjero
entre ocho y nueve horas de trabajo manual por día.

Control de Arduino a través de Pi


Si bien Raspberry Pi es una computadora eficaz y flexible, existen algunas tareas que no administra bien.
Esto se debe a que RaPi no cuenta con pines analógicos. Los sensores, como los termómetros, los
sensores de luz y los sensores de presión de aire, ofrecen señales analógicas. Debido a que RaPi no se
envía con pines analógicos, deben realizarse algunas soluciones alternativas.

Otro ejemplo se relaciona con el tamaño; si bien RaPi es muy pequeña y tiene pocos requisitos de
energía, algunos proyectos pueden requerir controladores incluso más pequeños. Para esas situaciones,
puede ser mejor trabajar con un microcontrolador de Arduino. Arduino también es pequeño y consume
muy poca energía, pero incluye pines analógicos. Esto hace que Arduino sea perfecto para trabajar con
sensores y dispositivos analógicos.

Puede conectar y controlar Arduino directamente desde su computadora. Debido a que RaPi es una
computadora completa, también es posible utilizarla para conectar y controlar Arduino. Si utiliza su PC o
PI, es necesario instalar algún software específico antes de que la computadora pueda interactuar con
Arduino. Otro punto importante es que Arduino a menudo ejecuta códigos escritos en C. Algunos
dispositivos Arduino admiten firmware alternativo que puede implementar otros lenguajes, como Python,
pero esta no es la norma.

Cuando se instale el software adecuado, utilice un cable USB para conectar Arduino con RaPi. El software
facilitará la transferencia de datos entre RaPi y Arduino, lo que permite que un usuario alterne el código,
ejecute programas y reciba datos de Arduino.

En esta configuración, con Arduino conectado a RaPi mediante el USB, Arduino también puede actuar
como controlador secundario, administrando los datos recibidos de los sensores analógicos y
retransmitiéndolos para procesarlos en la más potente Raspberry Pi. Esto también permite la creación de
un entorno de configuración de Arduino, donde el código puede crearse en RaPi y alternarse con Arduino
para su evaluación. Cuando el usuario está satisfecho y listo para implementar Arduino por su cuenta,
Arduino puede desconectarse e instalarse en la ubicación planificada.
La figura muestra una imagen de RedBoard de Arduino conectado a Raspberry Pi 3 a través de un cable
USB.

Introducción del modelo de automatización doméstica


Packet Tracer (PT) no solo es una herramienta útil para modelar, simular y probar entornos de red, sino
que puede hacer lo mismo con las soluciones de IoT. PT 7.0 brinda soporte para varios dispositivos y
funcionalidades de IoT que permiten diseñar y crear soluciones completas de IoT.

Entre los dispositivos de IoT admitidos por PT 7.0, es posible destacar los modelos programables de
sensores, accionadores, microcontroladores, computadoras de una sola placa y dispositivos de
computación en la niebla. Esto permite diseñar, configurar, programar y resolver los problemas de los
modelos cada vez más sofisticados de sistemas de IoT. La Figura 1 muestra una captura de pantalla de
PT 7.0 y de muchos de sus dispositivos admitidos.

Un buen ejemplo de lo que PT 7.0 puede hacer con las simulaciones de IoT se muestra en el hogar
inteligente. La Figura 2 muestra una captura de pantalla del hogar inteligente integrado en PT. El modelo
incluye puertas conectadas, puertas conectadas del garaje, rociadores de agua conectados, detectores de
humo conectados, ventiladores de techo conectados y más. Todo esto se puede controlar y supervisar a
través de una interfaz web desde cualquier dispositivo en el hogar, como una tablet, un smartphone o una
computadora portátil. PT 7.0 hace todo esto mientras representa la red subyacente con routers
inalámbricos, cables y switches.

Componentes del sistema


En el ejemplo del hogar inteligente, todos los dispositivos se conectan al gateway del hogar. El gateway
del hogar actúa como concentrador para todos los dispositivos, proporcionando conectividad cableada e
inalámbrica. También en el gateway doméstico se crea y aloja la interfaz web para permitir que los
usuarios controlen y monitoreen todos los dispositivos conectados.

La Figura 1 muestra una captura de pantalla de la ventana del gateway doméstico.

En el modelo, los sensores monitorean el entorno y garantizan que los valores permanezcan dentro de un
umbral predefinido. Si el valor monitoreado supera el umbral definido, se toman medidas. El detector de
humo, un sensor que monitorea los niveles de CO2 en el hogar, tiene un valor predefinido de 0,4. Si el
nivel medido supera 0,4, la alarma se desactiva. El detector de humo no tiene ninguna funcionalidad
controlada por el usuario, simplemente responde al entorno.
Las conexiones de red entre el gateway doméstico y otros dispositivos de red también están
representadas. Observe cómo el gateway doméstico se conecta a un cable módem que, a su vez, se
conecta a un divisor. El divisor divide la señal proveniente del ISP y envía señales de televisión por cable
al televisor y datos al cable módem. El par de cable módem y divisor es lo que proporciona conectividad
de Internet al gateway doméstico y al hogar entero.

Nota: si bien PT 7.0 es potente y flexible, varios sensores y accionadores pueden tener diferentes
conexiones. PT 7.0 implementa Ethernet por cable e inalámbrica, pero no implementa otras conexiones
posibles.

Código de la SBC en Packet Tracer


PT 7.0 además presenta una computadora de una sola placa (SBC) y una unidad de microcontrolador
(MCU).

La computadora de una sola placa es una computadora diseñada para adaptarse a todos sus
componentes, como almacenamiento, memoria y E/S dentro de una sola placa. Un buen ejemplo de SBC
es Raspberry Pi. Las SBC son comunes en las soluciones de IoT porque se utilizan para ejecutar un
código y agregar inteligencia a los dispositivos diarios. Una SBC de PT es un dispositivo de PT creado
para simular una SBC mediante la proporción de capacidades de ejecución de códigos y ciertas
conexiones. Específicamente, una SBC de PT proporciona 2 puertos USB y 10 puertos de E/S digital que
se pueden utilizar para conectar sensores y dispositivos de IoT. Una SBC de PT tiene un intérprete de
Python incorporado que le permite al código nativo de Python escribirse y ejecutarse directamente en el
dispositivo. Puede accederse al intérprete de Python mediante la ficha de programación de la SBC de PT.

La Figura 1 muestra una captura de pantalla de la ventana de la SBC de PT y la ficha Configuración.


Una unidad de microcontrolador (MCU) es una pequeña computadora incorporada a un sistema en un
chip (SoC). Es similar a una SBC, pero contiene menos potencia de procesamiento y funcionalidad.
Contiene un núcleo de procesador, una memoria y unidades periféricas programables de entrada/salida.
Los microcontroladores están diseñados para las aplicaciones incorporadas o las aplicaciones que
requieren pocos recursos de computadora. Algunos ejemplos de aplicaciones que dependen de
microcontroladores son sistemas de control de motores automotrices, dispositivos médicos implantables,
controles remotos, máquinas de oficinas y electrodomésticos. Los microcontroladores de señales
combinadas también son comunes e integran componentes analógicos necesarios para controlar los
sistemas electrónicos no digitales. PT 7.0 brinda soporte al emulador de MCU. Un usuario puede
programar la MCU de PT para que realice tareas similares a las MCU del mundo real. Para simplificar el
proceso, la MCU de PT además puede programarse con Python. La MCU de PT tiene un puerto USB,
seis puertos de E/S digital y cuatro puertos de E/S analógica. Los puertos de E/S digital en la MCU de PT
permiten que un usuario conecte accionadores y sensores digitales. Los puertos de E/S analógica
permiten que un usuario conecte accionadores y sensores analógicos.

La Figura 2 muestra una captura de pantalla de la ventana de la MCU de PT.


Desde una perspectiva de simulación, la SBC de PT y la MCU de PT difieren muy poco entre sí.
Específicamente, la SBC de PT puede alojar archivos y tiene una ficha Escritorio con varias aplicaciones,
como navegador web y cliente de correo electrónico. La MCU del PT no aloja archivos ni tiene una ficha
Escritorio.

Nota: si bien no es común encontrar Python en las MCU en la vida real, PT 7.0 implementa el soporte de
Python para comodidad de los usuarios.

Capítulo 3: el software es todo(Resumen)


Los programas (a los que también se les llama código) se utilizan en IoT para proporcionarles lógica e
inteligencia a los dispositivos. Agrupando adecuadamente estructuras de lógica especiales, un
programador puede crear un código para permitir que un dispositivo de IoT ejecute tareas tales como
monitoreo, comunicación con otros, procesamiento de datos y más.

Raspberry Pi, una computadora de una sola placa, está diseñada para ser pequeña y consumir muy poca
energía. La PL-App de Cisco permite el acceso a la Raspberry Pi directamente desde la red sin necesidad
de un monitor, un teclado o un mouse para conectarse. Raspberry Pi ejecuta Raspbian, una versión
modificada del código abierto y el sistema operativo Linux de amplia difusión. Raspberry Pi admite
distintos lenguajes de programación, incluido Blockly, un lenguaje de programación visual diseñado para
ayudar a los principiantes a aprender a programar. Este curso se centra en Python, un lenguaje de
programación popular, simple y potente.

Con el soporte agregado para Python, Cisco Packet Tracer es una gran herramienta para modelar, probar
y hacer prototipos de los sistemas completos de IoT.

También podría gustarte