Arduino RaspVirtual
Arduino RaspVirtual
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
[email protected]
[email protected]
Equipo 2
01-11-21
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.
1
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
2
INSTITUTO TECNOLÓGICO DE OAXACA
Departamento de Ingeniería Electrónica
PROCESAMIENTO DIGITAL DE SEÑALES
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]
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.
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.
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.
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 30. Paso 11 para la instalación del sistema Raspberry 14. Con esto completamos la configuración y
PI. damos clic en Done.
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.
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
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
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])
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].
V. RESULTADOS
Aquí se muestra las capturas de pantalla y fotos
tomadas del circuito y del código ya en
funcionamiento.
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.
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