0% encontró este documento útil (0 votos)
58 vistas10 páginas

Arduino RaspVirtual

El documento describe el proceso de conectar una Raspberry Pi virtual en VirtualBox a un Arduino Uno a través de una comunicación serial. Se explica cómo instalar VirtualBox, crear una máquina virtual Linux en él, instalar el sistema operativo Raspberry Pi en la máquina virtual y configurar la conexión serial entre la Raspberry Pi virtual y el Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas10 páginas

Arduino RaspVirtual

El documento describe el proceso de conectar una Raspberry Pi virtual en VirtualBox a un Arduino Uno a través de una comunicación serial. Se explica cómo instalar VirtualBox, crear una máquina virtual Linux en él, instalar el sistema operativo Raspberry Pi en la máquina virtual y configurar la conexión serial entre la Raspberry Pi virtual y el Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

INSTITUTO TECNOLÓGICO DE OAXACA

Departamento de Ingeniería Electrónica


PROCESAMIENTO DIGITAL DE SEÑALES

Adquisición
Actividad
de señales
2-2(2): RaspBerry
Lab VirtualPIU2
Virtual-
Arduino
Hernández Gabriel Julio César
Sebastián Orozco Eduardo
M.C. Franco G. Caballero Julián

INSTITUTO TECNOLÓGICO DE OAXACA


DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA

[email protected]
[email protected]

Equipo 2
01-11-21

Resumen—Se explica el proceso que se llevó a cabo A. Instalar VirtualBox


para comunicar Raspberry PI en Virtual box y un
Arduino UNO por medio de una comunicación serial.
Figura 1. Archivo descargado
Palabras clave—Arduino, matplot, Puerto serial,
Thonny Python

I. NOMENCLATURA
Arduino: Es una placa basada en un
microcontrolador.
Python: Se trata de un lenguaje de programación
multiparadigma.
VirtualBox: Es un software de virtualización para
arquitecturas x86/amd64.

II. INTRODUCCIÓN Figura 2. Seleccionamos Next.

E N este documento se explica el proceso para


conectar Arduino y Raspberry mediante Python y
una conexión serial, ya que las tarjetas Raspberry solo
cuentan con pines digitales, lo que dificulta el uso de
sensores analógicos.

III. MARCO TEÓRICO


Para realizar esta práctica, necesitamos instalar
virtualbox para simular la interfaz de Raspberry PI. Ya
dentro de la interfaz instalamos las librerías necesarias
Figura 3. Seleccionamos Next
y Arduino IDE para el sistema operativo de Linux. Este
proceso se explica mejor a continuación.

1
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES

Figura 4. Seleccionamos Next. Figura 8. Seleccionamos Finish.

Figura 9. Icono del Software Instalado.

Figura 5. Seleccionamos Yes.

Figura 10. Interfaz de la VirtualBox.

B. Instalar Raspberry en Virtualbox


Ingresar a raspberry.com/software/ y dar click en
Figura 6. Seleccionamos Install. Download Raspberry Pi Desktop.

Figura 7. Seleccionamos Instalar.

Figura 11. Página para descarga el software de Raspberry PI.

Dar clic en download y esperar a que se descargue el


archivo.

2
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES

Figura 12. Descargando el sistema de Raspberry.

Ya descargado el archivo e instalado, abrimos


Figura 15. Creación del disco virtual de la máquina.
VirtualBox y damos clic en crear nueva máquina.
Damos clic en configuración.

Figura 16. Selección de la máquina virtual creada para


configurarla.
Figura 13. Interfaz de la VirtualBox donde se crea una
nueva máquina virtual.
Nos vamos a Almacenamiento, en controlador: IDE
Le damos un nombre a la máquina, seleccionamos damos clic en Vacío y clic en el símbolo frente a
en tipo Linux, versión Debian 64 bits con un tamaño de Unidad óptica y clic en seleccionar un archivo de disco.
memoria de 2048 MB (Si tu computadora soporta
asignarle más de 2048 MB, es recomendable hacerlo.
En este caso nuestra computadora solo puede asignarle
2048 MB y trabajar bien). Ya con esto damos clic en
crear
. Figura 17. Configuración del sistema operativo de
Raspberry PI.

Buscamos el archivo que descargamos de Raspberry


y lo seleccionamos. Después le damos clic en Aceptar.

Figura 14. Asignación de nombre, tipo de sistema y memoria


de la máquina virtual.

En la siguiente ventana damos clic en crear. Figura 18. Selección del sistema de Raspberry PI para la
máquina virtual.

3
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
Damos clic en iniciar para instalar de manera seleccionamos Guided – use entire disk y clic en
correcta el sistema Raspberry PI y se siguen los continuar.
siguientes pasos. [1]

Figura 19. Inicio de la máquina virtual.

1. Ya iniciado, nos aparecerá este menú, damos Figura 22. Paso 3 para la instalación del sistema Raspberry PI.
clic en Graphic Install.
4. Seleccionamos el disco, en este caso solo hay
uno, y damos clic en continuar.

Figura 20. Paso 1 para la instalación del sistema Raspberry PI.

2. Ahora seleccionamos el idioma para nuestro Figura 23. Paso 4 para la instalación del sistema Raspberry PI.
teclado, en este caso será Spanish y damos clic
en continue. 5. Seleccionamos All files in one partition y
damos clic en continuar.

Figura 24. Paso 5 para la instalación del sistema Raspberry PI.

Figura 21. Paso 2 para la instalación del sistema Raspberry PI.


6. Mientras se carga el proceso, observamos las
características de la máquina que estamos
3. Esperamos a que cargue el proceso y después
creando y damos clic en Continue.

4
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES

Figura 25. Paso 6 para la instalación del sistema Raspberry PI. Figura 27. Paso 8 para la instalación del sistema Raspberry PI.

7. Esperamos a que cargue el proceso, 9. Ahora seleccionamos el disco duro y damos clic
seleccionamos yes y damos clic en Continue. en continue.

Figura 26. Paso 7 para la instalación del sistema Raspberry PI. Figura 28. Paso 9 para la instalación del sistema Raspberry PI.

8. Esperamos de nuevo a que termine el proceso, 10. La instalación ha finalizado, damos clic en
seleccionamos yes y damos clic en Continue. continue.

Figura 29. Paso 10 para la instalación del sistema Raspberry


PI.

11. La máquina se inicializa y esperamos a que

5
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
Raspbian se inicie. Una vez iniciado nos
aparecerá esta ventana en Raspbian y damos
clic en Next.

Figura 32. Paso 13 para la instalación del sistema Raspberry


PI.

Figura 30. Paso 11 para la instalación del sistema Raspberry 14. Con esto completamos la configuración y
PI. damos clic en Done.

12. Ahora en esta ventana seleccionamos Country


(México), Language (Spanish) y

Time Zone (Mexico Cyti). Después damos clic


en Next.

Figura 33. Paso 14 para la instalación del sistema Raspberry


PI.

Con estos pasos ya tenemos instalado Raspberry PI


en la máquina virtual.

Figura 31. Paso 12 para la instalación del sistema Raspberry


PI.

13. Ingresamos una contraseña, la confirmamos y


damos clic en Next.

Figura 34. Interfaz de Raspberry PI en máquina virtual.

C. Instalación de Arduino en Raspbian


Se abre el navegador Chromium dentro de Raspbian
e ingresamos a arduino.cc/en/software y descargamos
el instalador para Linux 64 bits, después de elegir el
instalador, nos mandará a una página si queremos
contribuir y descargar el archivo,

6
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
Figura 37. Instalación de Arduino IDE finalizada.
en nuestro caso le damos en Just Download.
Al abrir el menú y seleccionar Programming, ya nos
aparecerá el IDE de Arduino.

Figura 35. Página para descargar el IDE de Arduino en


Figura 38. Arduino IDE ya en el menú de Raspberry PI.
Raspberry PI.

Al terminar de descargar el archivo, abrimos la D. Teoría para código en Arduino para enviar datos
terminal y se escribe el siguiente comando sudo apt- de múltiples sensores
get install Arduino arduino-core y damos clic en
ENTER, esperamos a que cargue el proceso y nos Los pines analógicos A0-A5 son los encargados de
preguntará si deseamos continuar, tecleamos S para recabar información de sensores analógicos, tal como
continuar y damos clic en ENTER. un potenciómetro.
Para poder leer y enviar todos los datos, se debe de
establecer un tiempo de muestreo y las muestras que se
tomarán, esto se logrará creando la variable unsigned
long lastTime = 0, sampleTime = 200.
analogRead() es la función para leer datos
analógicos de los pines analógicos del Arduino.
La función scalig(valor, a, b, c, d) la creamos para
hacer que la variable valor pase de sus valores
originales de a-b, a valores de c-d. Por ejemplo,
scaling(voltleido, 0, 1023, 0, 5), voltleido es un voltaje
Figura 36. Instalación de Arduino por medio de la terminal. de 5V representado en 10 bits que toma valores desde 0
a 1023, por lo que se escala de 0 a 5.
Esperamos a que se complete la instalación, y una
vez terminado el proceso la instalación esta completada E. Teoría para código en Thonny Python para
y se cierra la terminal. recibir múltiples datos y representarlos en una
gráfica en tiempo real

Para poder realizar ciertas tareas en thonny Python,


como graficar, se necesita importar ciertas librerías. En
este caso estas son las librerías que se necesitan.
import serial
import time
import collections
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.lines import Line2D
import numpy as np
Tambien se debe de establecer las muestras y el
tiempo de muestreo.

7
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
voltageValue[0] =scaling(sensorValue[0], 0, 1023, 0, 5);
voltageValue[1] =scaling(sensorValue[1], 0, 1023, 0, 5);
Para graficar cada sensor, en el código final se voltageValue[2] =scaling(sensorValue[2], 0, 1023, 0, 5);
necesita de esta parte de código para cada gráfica. Serial.println(voltageValue[0]);
Serial.println(voltageValue[1]);
ax1 = fig.add_subplot(2,2,1,xlim =(xmin, xmax), ylim = (ymin[0], Serial.println(voltageValue[2]);
ymax[0])) #posición y limites que tendrá la gráfica con los datos en la
posición 0 que se envían desde el Arduino. }
ax1.title.set_text('pot1') # nombre que irá arriba de la gráfica }
ax1.set_xlabel("tiempo") #nombre del eje x
ax1.set_ylabel("volts") #nombre del eje y float scaling(float x, float in_min, float in_max, float out_min, float
ax1.add_line(lines[0]) #añade la línea a la gráfica out_max){
return (x-in_min)*(out_max-out_min)/(in_max-in_min)+out_min;
}
La siguiente línea de código se usa para realizar la Programa 1. Programa en Arduino IDE para mandar las
conexión serial. señales de los potenciómetros conectados a pines analógicos
A0-A2 por medio de la comunicación serial. [2].
try:
serialConnection = serial.Serial('/dev/ttyACM0',9600)#conexion Ahora procedemos a ingresar el siguiente código en
con el puerto Thonny Python.
except:
print('no se puede conectar el puerto')
import serial
import time
IV. DESARROLLO DEL TRABAJO EXPERIMENTAL import collections
import matplotlib.pyplot as plt
Aquí se explica cómo se llevó a cabo esta práctica. import matplotlib.animation as animation
Primero se tiene que iniciar Arduino IDE en Raspbian, from matplotlib.lines import Line2D
es importante que se haga aquí en la máquina virtual import numpy as np
para poder hacer la comunicación serial. def getSerialData(self,Samples,numData,serialConnection, lines):
Una vez iniciado, se va a la pestaña Herramientas y se for i in range(numData):
selecciona el puerto serial /dev/ttyACM0. value = float (serialConnection.readline().strip())#leer sensor

data[i].append(value)#guarda lectura en la ultima posición


lines[i].set_data(range(Samples),data[i])#dibuja nueva linea

try:
serialConnection = serial.Serial('/dev/ttyACM0',9600) #conexion
con el puerto
except:
print('no se puede conectar el puerto')
Figura 39. Selección del puerto en Arduino IDE.
Samples = 200 #muestras
sampleTime = 100 #tiempo de muestreo
Ya seleccionado el puerto, colocamos el siguiente numData = 3
código y lo cargamos a Arduino UNO:
#limites de los ejes
const int analogInPin1 = A0;
const int analogInPin2 = A1; xmin = 0
const int analogInPin3 = A2; xmax = Samples
int sensorValue[2]; ymin = [0, 0, 0]
float voltageValue[2]; ymax = [6, 6, 6]
unsigned long lastTime = 0, sampleTime = 200; lines = []
data = []
void setup(){
Serial.begin(9600); for i in range (numData):
} data.append(collections.deque([0]*Samples, maxlen=Samples))
lines.append(Line2D([], [], color='blue'))
void loop(){
if(millis()-lastTime>sampleTime){ fig = plt.figure()#crea nueva figura
ax1 = fig.add_subplot(2,2,1,xlim =(xmin, xmax), ylim = (ymin[0],
lastTime = millis(); ymax[0]))
sensorValue[0] = analogRead(analogInPin1); ax1.title.set_text('pot1')
sensorValue[1] = analogRead(analogInPin2); ax1.set_xlabel("tiempo")
sensorValue[2] = analogRead(analogInPin3); ax1.set_ylabel("volts")

8
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
ax1.add_line(lines[0])

ax2 = fig.add_subplot(2,2,2,xlim =(xmin, xmax), ylim = (ymin[1],


ymax[1]))
ax2.title.set_text('pot2')
ax2.set_xlabel("tiempo")
ax2.set_ylabel("volts")
ax2.add_line(lines[1])

ax3 = fig.add_subplot(2,2,3,xlim =(xmin, xmax), ylim = (ymin[2],


ymax[2]))
ax3.title.set_text('pot3')
ax3.set_xlabel("tiempo") Figura 41. Conexión del circuito en físico con un Arduino UNO.
ax3.set_ylabel("volts")
ax3.add_line(lines[2])
Ya teniendo el circuito montado y haber conectado
#lineLabel = 'voltaje' Arduino UNO a nuestra computadora, damos clic en
#lines = ax.plot ([],[],label = lineLabel)[0] RUN en Thonny Python y observamos las gráficas en
#lineValueText = ax.text(0.85, 0.95, '', transform = ax.transAxes) tiempo real de la lectura de los potenciómetros.
anim = animation.FuncAnimation(fig, getSerialData,
fargs=(Samples,numData,serialConnection, lines),
interval=sampleTime)
plt.show()

serialConnection.close()
Programa 2. Programa en Thonny Python para leer los datos
enviados del Arduino a la Raspberry y mostrarlos mediante
una gráfica para cada potenciómetro. [2].

Ya con los códigos en cada parte, realizamos el circuito


en físico y conectamos Arduino UNO a nuestra
Figura 42. Interfaz de Thonny Python.
computadora.

V. RESULTADOS
Aquí se muestra las capturas de pantalla y fotos
tomadas del circuito y del código ya en
funcionamiento.

Figura 40. Conexión del circuito en Proteus.

9
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
Figura 43. Monitor serial de Arduino IDE mostrando los datos
que se envían desde el puerto serial. Estos datos son los
voltajes de cada potenciómetro.

Figura 46. Segunda evidencia del circuito en físico y las


gráficas mostrando la respuesta em tiempo real.
Figura 44. Gráficas en Thonny Python de los datos recibidos
de cada potenciómetro. Se observa un documento de Word,
ya que, si se toma una captura en la máquina virtual o si se VI. CONCLUSIONES Y DISCUSIÓN DE RESULTADOS
quiere copiar a un documento fuera de la máquina, esto no
funcionará ya que el portapapeles no se comparte. La placa de Raspberry es muy útil en muchos
proyectos, sin embargo, esta placa solo tiene pines
digitales, por lo que tratar con sensores analógicos es
imposible. Para poder hacer esto, se realizó esta
práctica, ya que Arduino UNO tiene pines analógicos, y
los datos recabados se envían a la Raspberry mediante
la conexión serial. Mediante Python se puede observar
la lectura de estos datos por medio del Arduino y que se
envían a la Raspberry.

VII. AGRADECIMIENTOS
Agradecemos a el Ingeniero Franco Gabriel
Caballero Julián.

VIII. REFERENCIAS
Figura 45. Circuito en físico y las gráficas que muestran el
voltaje de cada potenciómetro en Thonny Python. [1] Gamba S. (2021) Cómo instalar RASPBIEN en VIRTUALBOX
Máquina Virtual, obtenido de:
https://www.youtube.com/watch?v=d8AP3FVrMZk
[2] Roboticoss (2021) 🐍 Python y Arduino Interfaz Gráfica de
Usuario (GUI) Lectura de múltiples sensores. Obtenido de:
https://www.youtube.com/watch?v=8YEvU2Zi_LU&t=234s.

10

También podría gustarte