Vous êtes sur la page 1sur 13

Internet de las cosas IOT , Practica. 3.

PRACTICA 3 RASPBERRY PI SEÑALES ANÁLOGAS


A DIGITALES, ENVÍOS DE EMAIL Y PUBLICACIÓN
DE DATOS EN LA NUBE.

Fundación Universitaria Unipanamericana – Ingeniería de Sistemas


Jose M. Cubillos, Yohana L. Corba, Airan L. Carreño
jmcubillos@unipanamericana.edu.co, ycorba@unipanamericana.edu.co,
aleonardocarreno@unipanamericana.edu.co
Docente: Andrés Esteban Puerto Lara
Internet de las cosas IOT

RESUMEN

En la siguiente practica 3, se hará la utilización de dos sistemas embebidos comunicándose entre sí


para lograr un objetivo el cual es enviar notificaciones a un correo predeterminado, en este caso
usamos el Raspberry pi es el que nos permite conectarnos a internet y el Arduino Uno es el que nos
permite leer señales analógicas, que en este caso son recibidas desde el potenciómetro, en esta práctica
se hace uso del conocimiento adquirido tanto en la practica 1 como en la practica 2.

Palabras clave: sistema embebido, Raspberry PI, email, Potenciómetro,


Arduino, pines, análoga, discreta, señales, protocolos.

Abstract

In the following lab 3 practice, the use of two embedded systems communicated with each other
to achieve the objective, which sends notifications to a predetermined mail, in this case we use
two embedded systems that the raspberry is the one that allows us to connect to the internet
and the Arduino is the one that allows us to read the analog letters, which in this case are
received from the field, in this practice we use the knowledge acquired in practice 1 as in
practice 2.

Key words: embedded system, Raspberry PI, email, Potentiometer, Arduino,


GPIO, pins.

mismo, en esta práctica se buscar entender el


funcionamiento de los protocolos de comunicación, la
INTRODUCCIÓN conectividad y portabilidad de la información, el envío
Continuando con laboratorios con sistema embebidos y recepción de órdenes a partir de una señal, desde un
como lo es Raspberry y su sistema operativo Raspbian, sistema embebido con el fin de notificar un cambio o
y comprendiendo el funcionamiento y potabilidad del
Internet de las cosas IOT , Practica. 3. 2

acción, esto mediante los pines GPIO de las raspberry


Pi.

MARCO TEÓRICO Figura 1 Tipos de potenciómetros recuperado de:


http://panamahitek.com/que-es-y-como-funciona-un-
Un Sistema Embebido se puede definir como un potenciometro/

sistema de computación diseñado para realizar un o En su estructura se puede notar el número de


algunas tareas específicas a diferencia de los terminales y las resistencias:
ordenadores PC que están diseñados para cumplir con
un alto rango de tareas. Entre sus características
podemos destacar que son de alto rendimiento y que
tienen sistemas operativos con características de
tiempo real, los componentes se encuentran incluidos
en la placa base como por ejemplo el procesador, las
Figura 2 Diagrama y partes potenciómetro recuperado de:
memorias y puertos para los periféricos. Los sistemas http://panamahitek.com/que-es-y-como-funciona-un-
embebidos pueden programarse directamente en el potenciometro/
lenguaje ensamblador del microcontrolador o también
Indica cómo podemos variar su valor a partir de la
utilizando compiladores pueden utilizarse lenguajes
ecuación de divisor de tensión puesto que:
como C o C++ e incluso se puede usar lenguajes de alto
nivel como Java o en este caso Phyton [1].

Un Raspberry PI es un miniordenador de pequeño


tamaño, bajo coste y bajo consumo cuyos primeros Donde:
modelos fueron lanzados en 2012. Por lo general estos
miniordenadores ejecutan sistemas operativos basados Vx es el voltaje en el nodo central
en Linux y están relacionados con el Open Software,
aunque Raspberry no es Open Hardware. Esta placa Vs es el voltaje de la fuente
tiene varios puertos y entradas, dos USB, uno de
Ethernet y salida HDMI, lo que permite conectar este RA y RB son las 2 resistencias que forman el
dispositivo a teclados, ratones y pantallas. También potenciómetro. Entonces el funcionamiento del
posee un System on Chip que tiene un procesador potenciómetro se basa en variar mediante una
ARM que corre a 700 Mhz, un procesador gráfico resistencia el voltaje, ajustes de resolución, variar la
VideoCore IV y hasta 512 MB de memoria RAM. velocidad, entrada de valor análogo de forma que el
Aunque es posible instalar sistemas operativos libres a usuario lo determine.[3]
través de una tarjeta SD. [2]
Que es un potenciómetro y su funcionamiento
Conformado por dos resistencias en serie, poseen
valores que son modificados por el usuario, sus formas Lectura de valores y Salida Análoga en Raspberry
pueden variar con diferentes valores. Pi

En el mundo y lo cotidiano nos encontramos con


variables y factores de valores análogos, como lo es
Internet de las cosas IOT , Practica. 3. 3

clima, temperatura, humedad entre otros, a este tipo de


valores les llamamos analógicos, porque pueden
devolver cualquier valor entre los extremos, sin
encontrar nunca saltos discretos entre puntos. Por eso
necesitamos un sistema de leer este tipo de valores
analógicos y convertirlos en valor digitales,
cuantificados en un momento dado mediante un
sistema de medida. En lo general este tipo de señales
análogas a discretas se convierten con mediante un
convertidor ADC (Analogic Digital Converter) Figura 4 Consola comprobación de puerto TTYCAM0 fuente [4]
permite dar ejemplos de señales habituales del mundo ARDUINO UNO
real.
Es una plataforma electrónica de código abierto,
De esta forma deducimos que el sistema embebido no basado en hardware y software flexibles de manera
cuenta con convertidores ADC, ya que esto lo contiene fácil de uso. Pensado para automatización y robótica o
el Arduino UNO, trae en realidad 6 convertidores, por creación de objetos de entorno interactivo. Requiere de
ese motivo se escoge como herramienta útil para el un lenguaje de programación generalmente soportado
laboratorio. Ya que este necesitaría de un chip de en C o C++, esta complementado por circuitos
convertidor de datos análogos anexado a la raspberry electrónicos y microcontroladores programables. Los
pi. De esta forma se envía los datos mediante Arduino, proyectos de Arduino pueden ser autónomos o se
como se explicará en el procedimiento del desarrollo. pueden comunicar con software en ejecución en un
Esto se complementa enviando desde el Arduino uno ordenador (por ejemplo, con Flash, Processing,
la señal a un protocolo y puerto de Linux al raspberry MaxMSP, entre otros.).[5]
pi, por medio del puerto ttyACM0 y su derivado según
la conexión sea el caso. Se ejecutará un programa que
lea dicho puerto, mediante un código donde se
implementen librerías de serial y seguridad para el
puerto.[4]

Figura 5 Arduino Uno recuperado de :


https://pixabay.com/es/arduino-arduino-uno-
tecnolog%C3%ADa-2168193/

Figura 3 Código lectura valores analógicos recuperado de [4]


Internet de las cosas IOT , Practica. 3. 4

Puertos Digitales Arduino


MATERIALES LABORATORIO:
o Raspberry Pi (sistema embebido)
o Arduino Uno cable USB
o Potenciómetro 10K Ohm
o Jumpers Marcho-Macho, Hembra macho
o SD con sistema operativo Raspbian
o Protoboard
o Computador con WinSCP y PuTTy
o Laptop con servidor SSH Linux
o Software arduino

Figura 6 Pines Arduino Uno recuperado de :


https://aprendiendoarduino.wordpress.com/2016/06/27/arduino METODOLOGÍA:
-uno-a-fondo-mapa-de-pines-2/
Explicación código:

Arduino Software

Es una plataforma que combina la estructura de


hardware con el control de distintos sensores o
circuitos que se encuentran en la placa del arduino
hardware mediante instrucciones y parámetros, un
lenguaje de programación en Co C++, Arduino soporta
un alto nivel de lenguajes que son el complemento para
el desarrollo de proyectos, permite de la mismas forma
incluir librerías necesarias, la identificación de puertos
para comunicación y manejo de señales análogas y
digitales gracias a la conversión que se genera en la
placa de tipo ADC.[5] Figura 8 Fuente código practica 3 fuente propia

El desarrollo del código se realiza en


lenguaje Python, se usa la
instrucción import para importar módulos que
ayudaran durante la ejecución del código, se
usa math para acceder a las
funciones matemáticas definidas por el estándar
de C, se usa ssl para acceso a la capa de seguridad
de transporte TLS también conocida como capa de
sockets seguros, para los temas de conexión de red,
usamos sys para acceso a algunas variables que
son usadas por el intérprete del código,
el módulo time lo usamos para acceder a
funciones de tiempo en este caso nos servirá para
Figura 7 IDE Arduino recuperado de : indicar el intervalo de tiempo en el que mediremos
https://arduinodhtics.weebly.com/iquestqueacute-es.html el voltaje, usamos el módulo urllib que servirá
Internet de las cosas IOT , Practica. 3. 5

para buscar y enviar datos de WWW, además


usamos RPi.GPIO la cual nos sirve para acceder a
los pines GPIO o también llamados pines de
acceso al exterior (Pines de Entrada y Salida) por Luego en una variable f usamos la
ultimo usamos smtplib el cual es el paquete que función urlopen del módulo urllib pasando
nos permite leer, escribir y enviar mensajes de como parámetros la dirección URL
correo, además usamos serial la cual nos sirve para de ThingSpeak, con fiel1 hacemos referencia al
la manipulación del puerto serial: campo creado en la plataforma y con
%s indicamos que ahí mostraremos una variable,
en este caso la variable línea, Después de abrir la
dirección URL con la variable f, ahora procedemos
a leer los datos gracias a la función read() de la
variable f asignada a la función print, imprimimos
los resultados en la plataforma:

Con la siguiente instrucción importamos Despues agregamos una instrucción de


los módulos de email que necesitamos: comparación IF en donde validaremos cuando la
medida del sensor supere los 2.5 voltios:

Después declaramos una variable en


llamada Url en donde guardaremos la dirección Y en caso de que esta condición se cumpla
URL de la pagina ThingSpeak con su respectiva entonces, con la instrucción print imprimimos un
Api Key: mensaje que nos sirve para validar los valores que
Lu estamos enviando, declaramos una variable
ego dentro de un ciclo while infinito para que llamada msg y usando la
siempre nos esté enviando valores haremos lo instrucción MIMEText declaramos el texto que se
siguiente: enviará al correo electrónico, dentro de una
variable llamada server es donde usamos la
instrucción smtp la cual nos sirve para indicar el
servidor de correo y el puerto a utilizar, luego con
la variable.starttls iniciamos la conexión
En la declaración de la variable puerto, usamos la
en modo TLS (Capa de Trasporte Seguro), luego
instrucción serial de la librería serial que nos
con login debemos indicar el email y contraseña
permite abrir el puerto, indicando la velocidad de
desde donde se enviaran los mensajes luego con la
transmisión serial de 96000:
variable llamado msg con el índice ‘Subject’, es
donde declaramos el texto que irá en el asunto del
mensaje, luego con la instrucción sendmail es
Después usamos la instrucción readLine para leer donde se declara el correo al cual se enviará el
los datos que son recibidos desde el puerto serían, mensaje, indicando el correo de origen, el de
que en este caso los datos son los que se están destino y el asunto con la instrucción .as_string,
recibiendo desde el Arduino el cual está enviando para validad que enviamos el mensaje imprimimos
los datos del voltaje del potenciómetro y los un mensaje en pantalla con la instrucción print y
guardamos en la variable línea y luego cerramos el finalmente cerramos la conexión SMTP con la
puerto serial con la instrucción close(): instrucción quit():
Internet de las cosas IOT , Practica. 3. 6

Luego con un Else imprimimos en pantalla un


mensaje cuando el voltaje no sea suficientemente
alto:

Figura 9 Pagina ThingSpeak fuente propia

Y finalmente usamos la función Sleep de la librería Conexión de Arduino y raspberry


Time que nos servirá para indicar el intervalo de
tiempo en que se repetirá todo el procedimiento Se puede observar la arquitectura de conexión que
anteriormente descrito: tiene la raspberry con el Arduino, el cable rojo
conectado al Arduino se conecta de la Protoboard
al pin de 5v del Arduino y el cable negro al pin de
tierra (GND), el pin 3 y 2 se conectan a la raspberry
en los pines 8 y 10 para el intercambio de
información (entrada y salida de los datos) el cable
PROCEDIMIENTO: negro conectado en la raspberry se encuentra
conectado en el pin 6 de tierra (GND) y las
Creación del canal en ThingSpeak
conexiones del potenciómetro el cable rojo es la
Se ingresa a la página https://thingspeak.com/, se conexión a 5 v, el cable negro conexión a tierra
crea un nuevo canal en donde se le asigna el (GND) y el cable verde es la conexiona al Arduino
nombre “laboratorio 3” y se le asignan un campo al pin AD para la recopilación de los datos.(ver
para los datos que se vallan a registrar y se guarda anexos y evidencias).
el campo.

Figura 10 Modelo conexiones Arduino Raspberry pi fuente practica


3

Luego se revisa en la pestaña de claves API la


clave asignada para nuestro canal la cual nos
Instalar, configura y Compilar Arduino
servirá más adelante en el código para la conexión
con nuestro canal. Se descarga el programa de Arduino una vez
instalado se ejecuta la tarea
“Analog_Serial_read.ino”, antes de ejecutarlo se
escoge el puerto en la pestaña “Tools”, luego en
“serial port” y se escoge el puerto “COM4” una
vez configurado se ejecuta el código y se
Internet de las cosas IOT , Practica. 3. 7

selecciona la lupa para ver la ejecución del código a internet utilizamos el comando “if config” y
que en este caso convierte las lecturas análogas a revisamos que no se haya cambiado la IP una vez
digitales y se observa de acuerdo a la revisado se desconecta y se empieza a hacer la
configuración del potenciómetro. conexión remota desde el computador.

Figura 11 IDE Arduino ejecución fuente propia

Figura 13 Interfaz conexión PuTTy fuente propia

Se empieza a ejecutar el programa PuTTy en el


computador se realiza la configuración para iniciar
sesión se escribe la IP la cual debe ser la misma que
tiene la raspberry, se ingresa el protocolo y el puerto se
guarda la configuración y luego se abre la consola en
donde se escribirá el usuario y la contraseña para
empezar la sesión SSH, se descarga WinSCP para la
transferencia de archivos de una manera más sencilla,
con este programa se busca el archivo para transferirlo
al sistema embebido.
Se clona el repositorio escribiendo el comando
https://github.com/titopuertolara/ClaseIotUnipana.git,
luego se suben los archivos a los sistemas embebidos,
Figura 12 Resultados ejecución Arduino IDE practica 3 fuente
luego escribimos “cd” para ver las carpetas, “ls” para
propia
listar los archivos la ruta de las carpetas es
/ClaseIotUnipana-master/ClaseIotUnipana-
master/Codigos_practicasuna vez obtenido el código
Compilar e instalar desde el repositorio se escribe el comando
Se conecta la raspberry a la fuente de poder para “Analog_value_Arduino_omega_Raspberry.py” para
prenderla, se conecta un teclado, un mouse y a un cable ejecutar se revisa la función que realiza que en este
HDMI para tener la visualización de escritorio, una vez caso convierte las lecturas análogas a digitales y se
ya halla prendido se revisa que tenga conexión a observa de acuerdo a la configuración del
internet, esta conexión debe ser la misma al manejarse potenciómetro.
desde el computador para que se puedan sincronizar,
Se revisa el código en un editor para realizar las
luego se abre la consola para revisar la IP de conexión
modificaciones necesarias para realizar estas
Internet de las cosas IOT , Practica. 3. 8

modificaciones es importante tener en cuenta la


conexión que hay entre los puertos ya que cambian
dependiendo de la tarea que se les asigne para poder
revisar los puertos en donde se encuentran todos los
archivos relacionados con el dispositivo del hardware,
de esta manera se escribe el comando “cat/dev” en este
momento se está usando el puerto ttyS0 .

Figura 16 Consola en ejecución PuTTy valores potenciómetro


fuente propia

Figura 14 Consola prueba puertos fuente propia

Se prueban para verificar que si estén funcionando.

Figura 15 Muestra de valores potenciómetro fuente propia

Una vez probados se realiza la conexión para que los


datos adquiridos sean publicados en la página
ThingSpeak para esto dentro del código se escribe la
API key asignada por defecto en el canal creado.

Figura 17 Informe y formulario pagina ThingSpeak fuente propia

Una vez cambiado y ejecutado con el comando “sudo Una vez logrado se desconecta el Arduino del
Python Analog_value_Arduino_omega_Raspberry- computador y se conecta a la raspberry en donde se
py” se observa que si está funcionando y se observa la vuelven a probar que se estén codificando bien los
información en el pagina ThingSpeak en los campos datos y verifican los puertos de nuevo se usa el
creados. comando “cat/dev” y se cambia en el código el nuevo
puerto que sería ttyACM0 y se ejecuta el código para
verifica su correcto funcionamiento “sudo Python
Internet de las cosas IOT , Practica. 3. 9

RESULTADOS:
1- Se logra identificar que el sistema embebido
Raspberry pi no cuenta con un convertidor de
señal análoga-digital, dicha función es suplida
por el Arduino Uno, ambos se comunican por
medio de serial desde los puertos o pines
GPIO, para el envió o recepción de señal.
2- En el Arduino Uno se compila y se Graba el
Figura 18 Ajustes Código fuente practica envió correo y datos
código fuente que permite la lectura de la señal
fuente propia
análoga generada por el potenciómetro, esta
una vez procesada y digitalizada es enviada a
la raspberry pi. Tomando, así como lectura los
Analog_value_Arduino_omega_Raspberry.py” una valores que cambian entre los 0V y 5V del
vez verificado su correcto funcionamiento se modifica potenciómetro.
el código de manera de acuerdo al valor suministrado 3- Cuando el valor es inferior a los 2,5 V la
en el potenciómetro superé los 2.5 V envié un correo Raspberry Pi no actúa según el código no
electrónico con el mensaje “Esto se va a envía información al correo o la nube, caso
descontrolaaaar!!” una vez terminado de modificar se contrario se evidencia el cambio del voltaje en
ejecuta con el comando “sudo la página de informes de ThingSpeak y envió
Analog_value_Arduino_omega_Raspberry.py” y se de correo el cual notifica el cambio por encima
observa su correcto funcionamiento. de los 2,5V, generados por el ajuste del
potenciómetro.
4- Fue necesario comprobar la disponibilidad y
estado del puerto serial TTyS0 y TTyACM0
para el envió de información, mediante la
ejecución del comando
“cat/dev/nombrepuerto”, así comprobar su
funcionalidad, de esta forma se obtuvo por
fuera de línea de código los valores enviados
por el arduino y el potenciómetro.
5- En la práctica se desconectó el arduino de la
fuente de alimentación y se conectó a uno de
Figura 19 Resultados ejecución código fuente propia los puertos USB de la raspberry pi, para
comprobar los resultados, su funcionalidad
Y se revisa el correo electrónico para verificar que si
será la misma usando otro puerto serial
haya llegado y que contenga la información deseada.
TTyACM0, demostrando la portabilidad que
se puede generar mediante el sistema
embebido y el dispositivo arduino.

Desconexión de cables que comunican por UART el


Raspberry pi, conexión de Arduino a USB a
Raspberry pi

Se puede evidenciar que el funcionamiento es


Figura 20 Bandeja correo electrónico recibidos fuente propia el mismo puesto que el microcontrolador del
Internet de las cosas IOT , Practica. 3. 10

dispositivo Arduino contiene grabado el


código de lectura de los valores del
potenciómetro, al descontarlo del puerto USB
del ordenador y conectarlo directamente al
puerto USB del raspberry pi, lo único que
cambia es el puerto serial de comunicación en
este caso TTyACM0, de la misma forma la
Raspberry Pi es la fuente que genera la
alimentación del voltaje para que el Arduino
genere las lecturas del potenciómetro y estas a
su vez sean transmitidas al sistema embebido.
Con ello se logra demostrar la portabilidad y
las aplicaciones que se pueden generar en
Internet de las cosas. Figura 23 Conexión potenciómetro a Arduino y Raspberry pi
fuente propia

Figura 24 Puertos GPIO Raspberry Pi fuente propia

Figura 21 Conexión Arduino a Puerto UBS Raspberry pi Fuente


propia

EVIDENCIAS Y ANEXOS PROCEDIMIENTOS:

Figura 25 Arduino pines y potenciómetro fuente propia

Figura 22 Conexión Arduino y Raspberry pi fuente propia


Internet de las cosas IOT , Practica. 3. 11

Figura 26 Conexión potenciómetro fuente propia Figura 29 valores potenciómetro PuTTy consola fuente propia

Comprobación de puertos serial

Figura 27 funcionamiento Arduino Uno fuente propia


Figura 30 Comprobación de puertos TTyACM0 PuTTy fuente
propia.

Muestra de valores por consola PuTTy

Figura 28 Arduino y Raspberry conexión USB cambio puerto serial


fuente propia

Figura 31 valores potenciómetro fuente propia

Lecturas de valores del potenciómetro


Internet de las cosas IOT , Practica. 3. 12

Prueba conexión Arduino a puerto USB Raspberry


pi

Figura 32 Verificación portabilidad Arduino puerto serial fuente


propia

Figura 33 Resultados datos en la nube ThingSpeak fuente propia

PROTOCOLOS UTILIZADOS EN LA
PRACTICA

Protocolo puertos TTyS0 y ttyACM0


Protocolo SSH PuTTy y WinSCP
Protocolo servidor correo SMTP
Protocolo TCP -IP Envió datos a Nube Https

ttyS0es el dispositivo para el primer puerto


serie UART en las arquitecturas x86 y x86_64.
Si tiene una placa base de PC con puertos
Figura 34 Verificación correo electrónico recibido fuente
propia
serie.

CONCLUSIONES:

- En esta práctica podemos evidenciar la


necesidad de interconectar dos o más tipos de
sistemas, para sacar el máximo provecho de
las funcionalidades que nos brinda cada uno,
haciéndolas trabajar en conjunto y lograr
mejores resultados.
Internet de las cosas IOT , Practica. 3. 13

- Podemos concluir que al trabajar con esta


tecnología no solo se pueden utilizar sensores
si no que se puede hacer la integración de otros
tipos de dispositivos como el Arduino BIBLIOGRAFÍA Y FUENTES
dándonos de esta manera más campos de
implementación en nuestra actualidad y la [1] Departamento de ingeniería eléctrica,
facilidad de obtener datos en tiempo real ya electrónica y de control - UNED “Ingeniería de los
sistemas embebidos”S.F.,Recuperado de:
sea por medio de correo electrónico o por
http://www.ieec.uned.es/investigacion/Dipseil/PA
página web lo único que necesitamos es tener
C/archivos/Informacion_de_referencia_ISE5_3_1.
acceso a internet. pdf
- Por medio de hardware como arduino se [2] a.F. “¿Qué es Raspberry PI y para qué sirve?”,
puede suplir la necesidad de convertir señales 21 de julio de 2013, recuperado de:
análogas a digitales, puesto que se puede https://www.abc.es/tecnologia/informatica-
realizar la lectura de diferentes sensores, esto hardware/20130716/abci-raspberry-como-
gracias a la finalidad de sus 201307151936.html
microcontroladores programables. Sugiere [3]Antony García González, “¿Qué es y cómo
entonces una solución para que un sistema funciona un potenciómetro?” Panamahitek –
embebido pueda procesar información análoga conocimiento libre para el mundo, 16 de enero de
de manera digital mediante el acoplamiento de 2016 recuperado de : http://panamahitek.com/que-
arduino y la ejecución de controladores, de la es-y-como-funciona-un-potenciometro/
misma forma interactúa el comportamiento de
[4]a,F. “Leyendo Valores Analógicos Con
puertos y pines de tipo GPIO. Raspberry Pi”, Raspberry Pi Y Las Salidas
La portabilidad alcanzada graficas a la Analógicas, Promotec recuperado de:
asociación de arduino y raspberry pi, permite https://www.prometec.net/raspberry-puertas-
analogicas/#
identificar aplicaciones en las situaciones
reales tales como domótica, automatización de [5]a,F. “Arduino Tecnología para todos”
tareas empresariales, así mismo anexando ArduinodhTics. s,f. recuperado de :
diversos dispositivos, sensores que facilitan la https://arduinodhtics.weebly.com/iquestqueacute-
lectura de valores y comunicación por es.html
protocolos.