Antecedentes
Al comienzo de este año escolar (17-18), la administración de nuestro
querido Liceo nos dijo: “Al final del año, cada uno de ustedes debe proteger un proyecto individual. Quienes no protejan el proyecto tendrán un académico. deuda y gosy (GIA-9) no se les permitirá ". Resulta algo así como una tesis (en el noveno grado, simplemente super). Entre septiembre y diciembre, mi amigo Kirill (
kkirra ) y yo decidimos qué tipo de proyecto estaríamos haciendo: quería algo no muy difícil de ejecutar, pero al mismo tiempo algo espectacular y original. Al final, decidimos: decidimos hacer un modelo de una mano humana, e incluso tal que estaba ejecutando un dispositivo Android (este año, Cyril y yo
ingresamos accidentalmente a la escuela de informática de Samsung en función de nuestro liceo, por lo que queríamos utilizar los conocimientos adquiridos en el proyecto) ella tradujo el texto ingresado al lenguaje de señas.
Parte de software
Aplicación de Android
Aproximadamente un mes antes de la fecha límite, comenzamos a trabajar en el proyecto. La primera etapa del trabajo fue el desarrollo de una aplicación de Android.
Para ser sincero, el diseño de la aplicación fue y sigue siendo el más difícil para mí: tengo problemas con estos diseños y sus tipos (todavía soy un estudiante de nueve grados, e incluso de Física y Matemáticas). Hacer que la aplicación se vea igual de bella en todos los dispositivos también es bastante difícil.
Otra tarea difícil, además del marcado, era atornillar bluetooth a la aplicación (decidimos implementar la conexión entre el dispositivo Android y el modelo a través de bluetooth): no nos enseñaron esto en los cursos escolares de Samsung, pero no hay mucha información al respecto en Internet ( Me refiero a información sobre la implementación de la conexión entre el dispositivo Android y el Arduino, que fue controlado por el modelo).
Ahora un poco sobre el código en sí (enlace a GitHub al final del artículo). El programa consta de cuatro actividades: la pantalla de inicio y una actividad para cada modo de control.
- El primer modo de control es el modo de ingreso de texto, cuando el usuario ingresa el texto manualmente
- El segundo: con la ayuda de la voz, la aplicación reconoce el discurso del usuario.
- El tercero es el modo manual. El usuario puede cambiar manualmente la posición de los dedos para representar gestos no proporcionados por el programa.
Para ser honesto, estoy muy avergonzado de mi código: parece inacabado. El hecho es que podría encapsular la conexión bluetooth en una clase separada, creando metot connect, enviar datos, desconectar, etc., pero, en cambio, en cada actividad, volví a registrar todo lo anterior, porque la encapsulación condujo a algunos (no muy grande) problemas. Sin embargo, para resolverlos, era necesario pasar un tiempo estudiando el trabajo de bluetooth, y, como, tenía prisa por escribir el código para que hubiera tiempo para desarrollar e implementar el hardware.
Programación Arduino
En el proceso de implementación de la parte de software, fue necesario programar el microcontrolador Arduino, que recibió datos de un teléfono inteligente y controló el manipulador. Se escribió una biblioteca que contenía datos sobre la conexión de servos a Arduino (a qué contactos conectar los servos) y los métodos para traducir el texto al lenguaje de señas. La parte principal de la biblioteca es una matriz, que contiene información sobre la posición de cada dedo, las letras correspondientes del alfabeto ruso y varios métodos para simplificar el código. La matriz se da a continuación.
const int navigate [Hand::n][Hand::m]= { {224, 180, 180, 180, 180, 180},
"Hand" es un archivo de encabezado de biblioteca (con la extensión ".h") que contiene prototipos de funciones y constantes.
Ahora unas pocas palabras sobre los métodos de traducción. El método de traducción de caracteres recibe la codificación de letras en la entrada, busca la línea deseada (el primer elemento de cada fila de la matriz es el código de símbolo) y establece los servos de acuerdo con los grados de rotación indicados en la línea (los códigos de símbolos se colocan en la tabla para que la codificación se pueda cambiar si se desea tabla, sin cambiar el código completo), luego espera unos segundos para que los gestos puedan leerse y no sigan uno tras otro. El método de traducción de oraciones divide la oración en caracteres y utiliza el método de traducción de caracteres.
El método de traducción de los caracteres:
void Hand :: SymbolTranslate(unsigned char a){
Método de traducción de propuesta:
void Hand :: SentenceTranslate(char* s){
Los métodos también registran mensajes con el texto aceptado y el resultado de la traducción (se imprime "Succsessfull"), lo que nos ayudó mucho al depurar un código arduino
inactivo .
Hardware
La implementación de esta fase del proyecto fue realizada por la mencionada
kkirra . Antes de comenzar a trabajar, parecía que desarrollar dibujos del manipulador y ensamblarlo sería una tarea muy simple, pero este no es el caso en absoluto.
Inicialmente, queríamos imprimir los detalles del manipulador en una impresora 3D, tomamos los planos de un banco de proyectos francés abierto (también dibujamos los nuestros, pero luego decidimos que era mejor obtenerlos de código abierto), pero después de enviar los planos para imprimir, aprendimos eso para imprimir nuestras partes tomarán varias semanas, que no teníamos en ese momento. Luego decidimos armar un manipulador de materiales improvisados: un antebrazo de placas de metal, dedos de madera contrachapada. Los dedos doblados debido a los servos bajo el control del microcontrolador Arduino. A continuación se presenta un dibujo de muestra.
- Color rojo: el eje de rotación de los dedos, si observa los dedos de las personas, estas son articulaciones
- Verde: pequeñas bandas elásticas que devuelven los dedos a su posición original (es decir, tendón)
Conclusión
Para resumir. Hemos reunido y programado un intérprete de lenguaje de señas (brevemente lo llamamos "tocón" por su apariencia). Nuestro proyecto permite que las personas que no conocen el lenguaje de señas se comuniquen con personas con discapacidad auditiva utilizando el alfabeto de señas ruso. La implementación del software le permite cambiar rápidamente el código y, sin romper nada, agregarle otros lenguajes de signos (por ejemplo, inglés).
En el futuro, planeamos imprimir el modelo previamente seleccionado en una impresora 3D y ensamblarlo (haremos esto cuando tomemos un descanso de los exámenes y otras tonterías).
En general, resultó bastante bueno, aunque no muy hermoso en términos de firmware y apariencia, pero lo principal es un borrador de trabajo. Aprendimos mucho mientras trabajábamos en este proyecto (por ejemplo, el hecho de que necesitamos comenzar a trabajar en un proyecto diseñado para todo el año, a principios de año y no un par de semanas antes de la entrega) y por esto estamos muy agradecidos con los maestros que nos ayudaron y especialmente con Damir. Muratovich, nuestro científico científico, que nos ayudó a resolver la mayoría de los problemas asociados con el proyecto.
¡Gracias por leer hasta el final!
Si le resultó interesante, todos los materiales del proyecto (incluido el texto del trabajo, presentaciones, etc.) están disponibles para el acceso público
aquí .
Gracias de nuevo por su atención!