Go Down

Topic: MANO ROBOTICA CONTROLADA POR BLUETOOTH (Read 833 times) previous topic - next topic

arduboy1993

Hola, tengo que hacer una mano robotica controlada mediante una aplicación por medio de bluetooth para el proyecto final, el caso es que yo solo e hecho funcionar servos con potenciometros pero nunca e hecho un programa en el cual dependiendo del mapeo se mueva un servo u otro.
Solo se que los dedos van desde el primero que seria 1000-1180 para mapearlo hasta el ultimo 5000-5180 si alguien podría ayudarme o decirme como tengo que escribir el cuerpo del programa se lo agradecería, el servo que uso es este "Micro Servo SG90 TowerPro 9g"

Un saludo y gracias de antemano.

Arduinito

Solo se que los dedos van desde el primero que seria 1000-1180 para mapearlo hasta el ultimo 5000-5180
¿Qué son esos valores? ¿No debería tener cada articulación valores analógicos desde 0 hasta 1023?
Pero aún si fueran esos valores tu mismo te respondes:

en el cual dependiendo del mapeo se mueva un servo
Usa map(), https://www.arduino.cc/en/Reference/Map

Por ejemplo si la variable readdata es el valor string (tras concatenar, claro) que obtiene tu módulo bluetooth esclavo, lo convertirmos en valores de 0 a 180 para un servo motor de 180 grados.


Quote
Ejemplo:

int angulo  = map( readdata.toInt() , 0, 1023, 0, 180);
servo1.write(angulo);
Aunque cuidado con el envío de datos por bluetooth por ejemplo si estás moviendo un joystick con los tiempos y los valores al servo porque habrán rangos muy cercanos al pasar de 0 y 1023 a 0 y 180 y puede dar "saltitos" entre cambio y cambio. Nada que no se resuelva controlando los rangos.

arduboy1993

¿Qué son esos valores? ¿No debería tener cada articulación valores analógicos desde 0 hasta 1023?
Pero aún si fueran esos valores tu mismo te respondes:

Usa map(), https://www.arduino.cc/en/Reference/Map

Por ejemplo si la variable readdata es el valor string (tras concatenar, claro) que obtiene tu módulo bluetooth esclavo, lo convertirmos en valores de 0 a 180 para un servo motor de 180 grados.


Aunque cuidado con el envío de datos por bluetooth por ejemplo si estás moviendo un joystick con los tiempos y los valores al servo porque habrán rangos muy cercanos al pasar de 0 y 1023 a 0 y 180 y puede dar "saltitos" entre cambio y cambio. Nada que no se resuelva controlando los rangos.

Los valores son 1000-1180(dedo 1) 2000-2180(dedo 2) así hasta el 5 mapear se el problema es que no se como vincular el programa de manera que al cargar el programa a arduino tocando la aplicación del móvil se mueva, es decir que no se si es con un while o como tendría que hacerlo, no se si me explico.

Arduinito

#3
Mar 27, 2017, 08:01 pm Last Edit: Mar 27, 2017, 08:07 pm by Arduinito
Los valores son 1000-1180(dedo 1) 2000-2180(dedo 2) así hasta el 5 mapear se el problema es que no se como vincular el programa de manera que al cargar el programa a arduino tocando la aplicación del móvil se mueva, es decir que no se si es con un while o como tendría que hacerlo, no se si me explico.
No muy bien, pero presiento que tu duda es que no sabes hacer una conexión vía bluetooth para envíar y recibir datos con un módulo HC-06 o un HC-05 con role de esclavo ¿Es así? ¿Los datos que hablas son los valores que mandas por bluetooth? Si es así busca información sobre estos módulos que hay cientos de vídeos en youtube y páginas que explican su configuración con los comandos AT, si no, explica más para entender tu duda.

surbyte

#4
Mar 27, 2017, 09:21 pm Last Edit: Mar 27, 2017, 09:23 pm by surbyte
Que problema tenemos para explicarnos!!!
arduboy1993 tu conoces tu proyecto y crees que todos estamos al lado tuyo y hemos participado del mismo desde el primer momento. Pues te comento que no.

No se entiende lo que dices.

Quote
Solo se que los dedos van desde el primero que seria 1000-1180 para mapearlo hasta el ultimo 5000-5180 si alguien podría ayudarme o decirme como tengo que escribir el cuerpo del programa se lo agradecería, el servo que uso es este "Micro Servo SG90 TowerPro 9g"
Estas hablando de useg?


NOTA: ademas no es un proyecto. Movido a Software.
Lee las normas del foro y antes de postear verifica donde hacerlo.
Proyecto sería hacer todo el brazo robot, con explicaciones detalladas, software, hardware.
Pero ya hecho o comprado cosa que no juzgo, y tener problemas con algo cae en otra categoría.
La de solucionarte algo que te sirve a ti y no a los demás.
Proyectos tiene un concepto mas amplio y mas comunitario.
En Software serás igualmente respondido.

Arduinito

Que problema tenemos para explicarnos!!!
arduboy1993 tu conoces tu proyecto y crees que todos estamos al lado tuyo y hemos participado del mismo desde el primer momento. Pues te comento que no.

No se entiende lo que dices.
Como dice que los valores de un dedo van de 1000-1180 hasta 5000-5180...

Solo se que los dedos van desde el primero que seria 1000-1180 para mapearlo hasta el ultimo 5000-5180
¿Será esto?
Dedo 1 - (valores entre 1000-1180)
Dedo 2 - (valores entre 2000-2180)
Dedo 3 - (valores entre 3000-3180)
Dedo 4 - (valores entre 4000-4180)
Dedo 5 - (valores entre 5000-5180)

y obteniendo los grados restando ese valor a 1000 multiplicado por el número del dedo
Dedo 5 --> 5090 - (1000*5) = 90 grados.

?? ?? ?? ??

Es lo que entiendo, aunque no visualizo el sentido de hacerlo así.
Igual sigo pensando que es cuestion de usar map()

Danicap

Quote
¿Será esto?
Dedo 1 - (valores entre 1000-1180)
Dedo 2 - (valores entre 2000-2180)
Dedo 3 - (valores entre 3000-3180)
Dedo 4 - (valores entre 4000-4180)
Dedo 5 - (valores entre 5000-5180)

y obteniendo los grados restando ese valor a 1000 multiplicado por el número del dedo
Dedo 5 --> 5090 - (1000*5) = 90 grados.
Entiendo que si, y que eso será dado por el brazo que compró, cada dedo entiendo que llevará un motor y lo que hace es el millar seleccionar el motor determinado y los otros 3 numeros el valor del ángulo de giro.... eso quiero entender yo, pero tampoco te sabría decir....

En cuanto al problema que tienes entiendo que es el envío de datos? Como te ha dicho Arduinito revisate tutoriales d elos módulos bluetooth que son bastante sencillitos pero si es como estimo el funcionamiento tampoco le veo mucha complicación, tomas el dato desde la app y lo envías desde el 1000-5180 y el brazo ya interpreta qué hacer....

arduboy1993

Entiendo que si, y que eso será dado por el brazo que compró, cada dedo entiendo que llevará un motor y lo que hace es el millar seleccionar el motor determinado y los otros 3 numeros el valor del ángulo de giro.... eso quiero entender yo, pero tampoco te sabría decir....

En cuanto al problema que tienes entiendo que es el envío de datos? Como te ha dicho Arduinito revisate tutoriales d elos módulos bluetooth que son bastante sencillitos pero si es como estimo el funcionamiento tampoco le veo mucha complicación, tomas el dato desde la app y lo envías desde el 1000-5180 y el brazo ya interpreta qué hacer....
Si es asi como decis el 1000-1180 es el servo uno el 2000-2180 el 2,asi hasta el quinto servo, no va con motores simplemente tengo unido un hilo desde el servo hasta el dedo para cuando este tire que haga bajar el dedo, y si lo que quiero saber es que comandos o como tengo que enlazar el bluetooth con los servos

Arduinito

#8
Mar 28, 2017, 07:39 pm Last Edit: Mar 28, 2017, 07:47 pm by Arduinito
Si es asi como decis el 1000-1180 es el servo uno el 2000-2180 el 2,asi hasta el quinto servo, no va con motores simplemente tengo unido un hilo desde el servo hasta el dedo para cuando este tire que haga bajar el dedo, y si lo que quiero saber es que comandos o como tengo que enlazar el bluetooth con los servos
Ya se te explicó que si tu duda es con el bluetooth, primero busca información sobre el módulo que vas a usar.
Si son los típicos HC-05 o HC-06 hay información por doquier con sólo poner esos nombres y arduino en el buscador de google. Una vez empieces si tienes duda entonces coméntala porque no se manda "comandos" se manda un byte de información cada vez y dicho "caracter" será el que tú quieras mandar y ya eso es cosa tuya (evidentemente).

Yo puedo mandar 'A' vía bluetooth por un dispositivo móvil o un HC05 en role master que tengas en otro arduino y después ejecutar el código que quiera, o bien ir concatenando los bytes hasta obtener una cadena, por ejemplo: B90 y definir con un if que eso signifique mover servo2 al grado 90.

Como ves, no hay comando, tú eliges que envías y al recibir como actuar.
Con la búsqueda que te he dicho y ver #include <SoftwareSerial.h> tienes.

Hay tanta información que tienes hasta ejemplos hechos.
Esto no es una duda, es no haber "googleado".

Enlaces que pueden servirte:

http://www.prometec.net/bt-hc06/
http://www.prometec.net/bt-hc05/
https://www.luisllamas.es/conectar-arduino-por-bluetooth-con-los-modulos-hc-05-o-hc-06/

También hay info en este foro.

En youtube puedes poner "configurar hc 05" o "arduino HC-06 Android" Te puedes cansar de tanta info que hay donde elegir, pero no hay ningún "comando", salvo los AT para configurarlos que no es lo que preguntas y sólo usas el envío y recepción de datos con Serial.


Go Up