Ayuda mover servomotor con python y Arduino por medio de señales emg

Iniciado por Walter872, 18 Abril 2019, 17:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Walter872

Hola buenas tardes necesito su ayuda necesito cómo mover un servo motor por medio de señales emg en python y Arduino uno, se los agradezco de todo corazón

rub'n

Cita de: Walter872 en 18 Abril 2019, 17:03 PM
Hola buenas tardes necesito su ayuda necesito cómo mover un servo motor por medio de señales emg en python y Arduino uno, se los agradezco de todo corazón

Necesitas ayuda? tienes los servos y arduino? que tienes que llevas programado ya ?

Hay una placa para la ELECTROMIOGRAFIA, es la Shield e-Health Sensor Shield V2.0, la libreria es eHealth.h


Con python te tocara hacer la comunicación serial, puedes usar el api pyserial


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Walter872

#2
Hola gracias por responder te cuento ya tengo como leer la señales mioelectricasa en python por medio de pyserial , tengo los servomotores, el sensor mioeletrico, pero no conseguido cómo mover un servomotor por medio de estás señales mioeléctricas en python  

rub'n

Cita de: Walter872 en 18 Abril 2019, 17:38 PM
Hola gracias por responder te cuento ya tengo como leer la señales mioelectricasa en python por medio de pi serial , tengo los servomotores, el sensor mioeletrico, pero no conseguido cómo mover un servomotor por medio de estás señales mioeléctricas en python 

Aqui mas info dog



https://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical

https://www.cooking-hacks.com/media/cooking/images/documentation/e_health_v2/eHealth_arduino_v2.4.zip

Primero sabes como mover un servoMotor con Arduino?


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Walter872

Claro que sí, las primeras pruebas que hice fue solo con Arduino uno mover los servomotores con la señales emg

rub'n

Cita de: Walter872 en 18 Abril 2019, 17:49 PM
Claro que sí, las primeras pruebas que hice fue solo con Arduino uno mover los servomotores con la señales emg

Ya solo te falta entonces comunicación serial con pyserial dog, con eso lograras enviar/recibir datos de arduino y python, y viceversa.

Primero ensaya, con

    1 - Arduino+python
    2 - Arduino+python+servos
    3 - Arduino+python+servos+Sensores

como decia jack the ripper, empecemos por pequeños trozos

   


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Walter872

Ya tengo instalado pyserial PS para poder leer la señales emg desde python, ya tengo. Cómo leer la señales emg desde paython , solo me faltaría sería como mover los servomotores con esas señales desde python

rub'n

Pon las funciones que tienes a ver, a como estas ajustando el sensor? porque varia un poco.

o sea muestra el código completo, de arduino y python


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Walter872

#8
Ok ya se lo muestro estés es el de Arduino aquí solo está lee la señales
void setup(){
  Serial.begin(9600);//Inicialice la comunicación serial a 9600 bits por segundo:
}
   
void loop(){
  int sensorValue = analogRead(A0); //Leer los electrodos
  // lectura analógica (que va de 0 - 1023) a un voltaje (0 - 5V)
  //float voltage = sensorValue * (100.0 / 1023.0);
  //Enviar las lecturas filtradas por Serial
  Serial.println(sensorValue); //Enviar las lecturas filtradas por Serial
  delay(100);

}


Aquí está el de python

%matplotlib notebook
# http://pyserial.readthedocs.org/en/latest/pyserial_api.html
import serial
import numpy as np
import xlsxwriter
from matplotlib import pyplot as plt
from time import time

# dando la ruta específica para guardar los datos en excel
workbook = xlsxwriter.Workbook('C:/Users/water/OneDrive/Documentos/MATLAB/proyecto/SENSORMIOELECTRICO1/TOMA DE DATOS/prebadepythonexcel.xlsx')
worksheet = workbook.add_worksheet()

ser = serial.Serial('COM5', 9600)

# configurado trama para animar
plt.ion()

start_time = time()
timepoints = []
ydata = []
yrange = [4.5,6.1]
view_time =2 # segundos de datos para ver a la vez
duration = 25 # segundos totales para recopilar datos

fig1 = plt.figure()
# http://matplotlib.org/users/text_props.html
fig1.suptitle('live updated data', fontsize='18', fontweight='bold')
plt.xlabel('time, seconds', fontsize='14', fontstyle='italic')
plt.ylabel('potential, volts', fontsize='14', fontstyle='italic')
plt.axes().grid(True)
#line1, = plt.plot(ydata,marker='o',markersize=4,linestyle='none',markerfacecolor='red')
line1, = plt.plot(timepoints, ydata,'b-')
plt.ylim(yrange)
plt.xlim([0,view_time])


# vaciar cualquier basura que quede en el búfer serial
ser.flushInput()

run = True

# collect the data and plot a moving frame
while run:
    ser.reset_input_buffer()
    data = ser.readline()#.split(' ')
   
    # sometimes the incoming data is garbage, so just 'try' to do this
    try:
        # almacenar el conjunto de datos completo para más tarde.
        ydata.append(float(data[0])*100.0/1023.0)
        timepoints.append(time()-start_time)
        current_time = timepoints[-1]
       
        # actualizar los datos trazados.
        line1.set_xdata(timepoints)
        line1.set_ydata(ydata)
        #print (data)
        print (ydata)
       
        # guarda los datos en una hoja de excel
        worksheet.write_row(
            "A1:A100",
            ydata
        )
                 
        # deslice el marco de visualización a lo largo.
        if current_time > view_time:
            plt.xlim([current_time-view_time,current_time])
           
        # cuando se acabe el tiempo, mata el ciclo de recolección + trazado.
        if timepoints[-1] > duration: run=False
   
    # si la instrucción try produce un error, simplemente no haga nada
    except: pass
   
    # actualizar la trama
    fig1.canvas.draw()

# traza todos los datos que has recopilado
fig2 = plt.figure()
# http://matplotlib.org/users/text_props.html
fig2.suptitle('complete data trace', fontsize='18', fontweight='bold')
plt.xlabel('time, seconds', fontsize='14', fontstyle='italic')
plt.ylabel('potential, volts', fontsize='14', fontstyle='italic')
plt.axes().grid(True)

#plt.plot(timepoints, ydata,marker='o',markersize=4,linestyle='none',markerfacecolor='red')
plt.plot(timepoints, ydata,'b-')
plt.ylim(yrange)
fig2.show()

ser.close()
workbook.close()

rub'n

Usa Geshi, selecciona python, no veo que uses el api del sensor.


Sabia que tenias algo mas, estas exportando datos a un Excell, claro no tiene nada que ver, tampoco, donde esta el codigo con la api del sensor EMG ?

El comentario de arriba editalo, como te menciono con geshi, y pon toda la informacion en ese mensaje, pon el codigo con el sensor EMG que llevas, para que no hagas doble post, para nada.


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen