
Paso a paso
Configura Swan usando Arduino IDE2. Pruebas MPU6050 sensor3. Pruebas de motores de CC y DRV88334. Creación de PCB con EAGLE5. Crear un prototipo de silla de ruedas motorizada con SolidWorks6. Montaje y Programación de Silla de Ruedas (+prueba parcial)7. Probar la batería con StepDown Converter8. Recopilación de datos9. Creación de un modelo de aprendizaje automático10. Implementación del modelo en el dispositivo11. Probar el dispositivo
1. Configurar Swan usando Arduino IDE
Swan es un microcontrolador económico basado en STM32L4, diseñado para acelerar la creación y el uso de soluciones IoT alimentadas por baterías. Es ideal para proyectos que necesitan una amplia memoria y capacidad de expansión sin arruinarse, como la inferencia periférica y el monitoreo remoto. Swan es compatible con Feather, lo que lo hace versátil para pruebas tempranas o proyectos a gran escala. Los desarrolladores pueden emparejar Swan con los sensores de Adafruit y los portadores compatibles con FeatherWing. Para una implementación rentable, Swan se puede soldar directamente a una PCB principal, utilizando todas sus capacidades de E/S. Swan ofrece tres opciones de alimentación (USB, batería o alimentación de línea) y tiene un regulador de 2 amperios conmutable por software para la alimentación de sensores externos. En el modo de bajo consumo, Swan consume solo 8uA mientras mantiene toda su memoria, perfecta para dispositivos que funcionan con baterías. Es compatible con C/C++, Arduino y CircuitPython, e incluye un conector de depuración CORTEX para el desarrollo avanzado en Visual Studio Code, IAR y STM32CubeIDE.
Para comenzar a utilizar la placa Swan con Arduino IDE, el primer paso es preparar e instalar los controladores necesarios. Empieza por añadir la siguiente URL a la URL de Tableros adicionales en Preferencias:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Una vez hecho esto, navegue hasta Herramientas > Placa, elija «Grupos de placas STM32» y luego seleccione «Placas Blues Wireless». Después, en Herramientas > número de pieza de la placa, opte por «Swan R5».
Para programar el Swan sin usar el STLink-V3Mini, vaya a Herramientas > método de carga y elija «STM32CubeProgrammer (DFU)». Conecte el Swan a su computadora a través de un cable USB, conectándolo al puerto Micro USB. Para ingresar al modo de cargador de arranque en el Swan, mantenga presionado el botón BOOT, presione y suelte RESET y luego suelte BOOT. Es crucial seguir esta secuencia cada vez que sea necesario cargar firmware en el Swan.
Una vez completados estos preparativos, continúe con el siguiente paso siguiendo las instrucciones para parpadear el LED integrado. Esto asegura que la placa Swan esté lista para un mayor desarrollo y pruebas con el IDE de Arduino.
2. Prueba MPU6050 sensor
El MPU6050 es una popular unidad de medición inercial (IMU) que combina un giroscopio y un acelerómetro en un solo circuito integrado. Desarrollado por InvenSense (ahora parte de TDK), el MPU6050 es ampliamente utilizado en proyectos electrónicos, robótica y aplicaciones de detección de movimiento. El giroscopio mide la velocidad angular, proporcionando información sobre la tasa de rotación en tres dimensiones, mientras que el acelerómetro mide la aceleración en esas mismas tres dimensiones. Al combinar los datos de ambos sensores, el MPU6050 puede proporcionar información precisa sobre la orientación y el movimiento del dispositivo.
El sensor es conocido por su tamaño compacto, bajo consumo de energía y rendimiento confiable. Se comunica con microcontroladores a través de I2C (circuito interintegrado) u otros protocolos de comunicación, lo que facilita su integración en varios sistemas electrónicos para tareas como el seguimiento de la orientación, el reconocimiento de gestos y la estabilización en aplicaciones como drones o dispositivos controlados por movimiento. En general, el MPU6050 es un sensor versátil y ampliamente adoptado para proyectos que requieren capacidades precisas de detección de movimiento.
Para acceder a los datos del sensor MPU6050, podemos utilizar los pines I2C de la placa Swan. Conecte el sensor al Swan siguiendo la configuración proporcionada. A continuación, descargue la biblioteca del sensor desde el siguiente enlace.
https://www.nyebarilmu.com/?file=2719
Insértelo en el IDE de Arduino haciendo clic en Sketch > Incluir biblioteca > Add.ZIP Biblioteca, y seleccione el archivo descargado. A continuación, abra el ejemplo proporcionado. Intentaremos subir el MPU6050_accel_simple.ino. Antes de cargar el archivo, asegúrese de seguir las instrucciones descritas en el paso 1. Una vez completada la carga, obtendremos los resultados como se muestra en la imagen a continuación. Este proceso permite una integración y utilización perfectas de los datos del sensor MPU6050 en sus proyectos basados en Swan, proporcionando información valiosa sobre la orientación y el movimiento para diversas aplicaciones.
3. Prueba de motor de CC y DRV8833
El DRV8833 es un circuito integrado de controlador de motor diseñado para controlar la velocidad y la dirección de dos motores de CC con escobillas. Fabricado por Texas Instruments, el DRV8833 es un controlador de motor de doble puente H que puede accionar dos motores bidireccionalmente o un motor paso a paso. Funciona de manera eficiente con una amplia gama de voltajes de entrada, lo que lo hace adecuado para diversas aplicaciones. El dispositivo incorpora características de protección como la protección contra sobrecorriente y el apagado térmico, lo que garantiza la durabilidad y seguridad de los motores conectados. Su diseño compacto y versatilidad hacen que el DRV8833 una opción ideal para robótica, mecatrónica y otros proyectos que requieren un control preciso del motor.
#define AIN1 5
#define AIN2 6
#define BIN1 9
#define BIN2 10
void setup() {
Serial.begin(9600);
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
}
void loop() {
digitalWrite(AIN1,HIGH);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,HIGH);
digitalWrite(BIN2,LOW);
delay(1000);
digitalWrite(AIN1,LOW);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,LOW);
delay(1000);
digitalWrite(AIN1,LOW);
digitalWrite(AIN2,HIGH);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,HIGH);
delay(1000);
digitalWrite(AIN1,LOW);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,LOW);
delay(1000);
}
En este proyecto, el DRV8833 se utilizará para controlar los movimientos hacia adelante, atrás, izquierda y derecha de los motores de CC del prototipo de silla de ruedas. El circuito proporcionado ilustra las conexiones correctas entre Swan (presumiblemente un microcontrolador o sistema de control) y el módulo DRV8833. El cableado debe realizarse en consecuencia para un funcionamiento adecuado. Para implementar este control de motor, el código debe cargarse en Swan. El código está diseñado para coordinar el control simultáneo de dos motores de corriente continua. Inicialmente, los motores giran en el sentido de las agujas del reloj, seguido de una pausa de 1 segundo. Posteriormente, giran en sentido contrario a las agujas del reloj, con otra pausa de 1 segundo. Este ciclo se repite para facilitar los movimientos previstos del prototipo de silla de ruedas.
4. Creación de PCB con EAGLE
En este proyecto, la decisión de crear una placa de circuito impreso (PCB) tiene dos propósitos principales: simplificación y mejora estética. Al utilizar una placa de circuito impreso, se reducirá el número de cables utilizados, lo que conducirá a una configuración más optimizada y organizada. Además, la incorporación de una placa de circuito impreso añade un atractivo estético al proyecto. El proceso de diseño de la placa de circuito impreso se llevará a cabo utilizando la aplicación Eagle. La función principal de la PCB será establecer conexiones entre las placas Swan, el módulo controlador DRV8833 y el sensor MPU-6050.
El paso inicial consiste en crear un diseño esquemático de los componentes que se van a utilizar. Debido a la ausencia de una biblioteca que contenga los diseños esquemáticos y de tablero de Swan, se utiliza un cabezal de pin común para crear las almohadillas necesarias. Los puntos de PCB se pueden emplear como una herramienta útil para este propósito. Al calcular la longitud y el ancho deseados, los usuarios pueden crearlos manualmente dentro de la aplicación Eagle. A pesar de esta solución, es importante tener en cuenta que la integridad conceptual permanece intacta.
Varias entradas y salidas están designadas para su uso en la PCB. Se asignan cuatro pines de salida para motores de CC, mientras que los pines de entrada incluyen un pin de fuente de alimentación conectado a todo el circuito y una entrada para un control remoto. En particular, debido a la limitación de los pines disponibles, los pines de entrada analógica se reutilizan para la entrada del control remoto. Si bien esto puede parecer poco convencional, el concepto subyacente permanece sin cambios.
Una vez que se completa el proceso de diseño esquemático, el siguiente paso consiste en generar el archivo de la placa. Durante esta fase, los componentes se organizan meticulosamente para formar una estructura similar a un escudo. A continuación, se crean pistas o caminos, conectando un componente con otro. El diseño de la placa resultante se puede observar en la imagen adjunta a continuación, que muestra los componentes organizados e interconectados de la PCB.
5. Cree un prototipo de silla de ruedas motorizada con SolidWorks
Para crear esta silla de ruedas motorizada, comenzaremos por hacer un prototipo en aras de la simplicidad y la eficiencia. El prototipo se elaborará utilizando la aplicación SolidWorks para el proceso de modelado 3D y, posteriormente, se cortará con láser a partir de láminas acrílicas. El proceso de creación de prototipos se realizará parte por parte, asegurando la atención al detalle de cada componente. El prototipo pretende parecerse mucho a la silla de ruedas motorizada real, aunque con ligeros ajustes para adaptarse al uso de un motor de corriente continua para la propulsión. En la parte inferior del asiento del usuario, se incorporará una ranura de almacenamiento para albergar componentes como el microcontrolador, el controlador, los sensores y la batería. Además, la parte delantera contará con dos ruedas giratorias, lo que permitirá al usuario una mayor flexibilidad para ajustar la dirección de movimiento de la silla de ruedas.
Tras la creación de piezas individuales, el siguiente paso consiste en generar un archivo de ensamblaje que integre todos los componentes. Los archivos de ensamblaje sirven para proporcionar una visión holística de toda la herramienta una vez que se combinan todas las piezas individuales. Este proceso es esencial para verificar que el tamaño y la alineación de cada sección sean precisos cuando se ensamblan en una sola unidad. El proceso de fusión se facilita mediante la función de relaciones de posición, que permite la unión precisa de una pieza a otra. Esto garantiza que la silla de ruedas motorizada ensamblada funcione a la perfección como un todo unificado, teniendo en cuenta el posicionamiento y la interacción correctos de cada pieza para un rendimiento óptimo.
6. Montaje y Programación de Silla de Ruedas (+prueba parcial)
Hemos completado todos los pasos en la creación de este proyecto. En este apartado, combinaremos las piezas acrílicas que se cortaron en el paso anterior en una sola unidad para el prototipo de esta silla de ruedas eléctrica. Las piezas acrílicas se unen con una pistola de pegamento. El montaje del prototipo es sencillo porque ha sido evaluado minuciosamente en el apartado anterior para evitar errores.
A continuación, se instalará la placa de circuito impreso en este prototipo de SmoothRide. La placa de circuito impreso consta de dos partes. La primera parte incluye tablas de cisne, sensor MPU-6050 y controlador DRV 8833. La segunda placa de circuito impreso contiene botones que se utilizarán para controlar la dirección del movimiento del motor. Además, hay un convertidor reductor que conectará la placa principal a la batería. Todos estos componentes se montarán en la parte inferior del motor, como se muestra en la imagen de arriba. Una vez que todos los componentes estén en su lugar, se llevará a cabo la primera prueba para garantizar que el dispositivo prototipo funcione según lo previsto. La prueba implica maniobras de avance, retroceso, giro a la derecha y giro a la izquierda. Los resultados de la prueba se pueden ver en el video a continuación.
7. Prueba de batería con StepDown Converter
A continuación, se realizarán pruebas en la batería. El uso de la batería es esencial para parecerse mucho a una silla de ruedas motorizada real. La batería seleccionada es una batería de polímero de litio (LiPo) de 12 V de salida. En esta sección, utilizaremos un módulo StepDown para reducir el voltaje de la batería a 5V. El voltaje de salida del módulo StepDown se conectará a los pines VIN y GND de las tablas Swan. Se puede observar que las luces LED se iluminarán al conectar la batería al módulo Reductor.
8. Collecting Data
Una vez que todos los componentes están preparados, abarcando tanto las conexiones del circuito como los procedimientos de lectura de datos, el siguiente paso implica el proceso de recopilación de datos. En este proyecto, la recopilación de datos se facilita a través de un reenviador de datos dirigido hacia Edge Impulse.
Para obtener orientación sobre las instalaciones necesarias, consulte los siguientes enlaces (Edge Impulse Getting Started | Seeed Studio Wiki). La instalación requiere varias aplicaciones:
Node.js versión 12 o superior
Arduino IDE
CLI de Edge Impulse, instalable a través del símbolo del sistema o terminal con el comando (para Windows):
npm install -g edge-impulse-cli
Se deben tener en cuenta varias consideraciones durante la instalación:
Asegúrese de instalar herramientas adicionales al instalar NodeJS (no seleccionado de forma predeterminada).
La versión del IDE de Arduino debe ser un mínimo de 1.15. Más detalles se pueden encontrar en este enlace.
Una vez instaladas con éxito todas las aplicaciones, el procedimiento posterior consiste en incorporar un programa para el monitor serie. Este programa se utilizará para transmitir datos a través de un reenviador de datos.
El paso siguiente consiste en iniciar la CLI de Edge Impulse a través del símbolo del sistema Node.js mediante el siguiente comando:
edge-impulse-data-forwarder
Proceda a iniciar sesión con la cuenta de Edge Impulse, seleccione el puerto asociado con Swan Boards, elija el proyecto relevante en Edge Impulse y asigne nombres distintivos a cada característica de datos. Con estas configuraciones, el dispositivo ahora está preparado para iniciar la recopilación de datos. Se puede confirmar la verificación de la conexión del dispositivo a Edge Impulse.
En este proyecto en particular, la tarea de clasificación implica categorizar los datos en dos clases distintas. La primera clase se refiere a las carreteras en buen estado, lo que denota daños mínimos. La recopilación de datos para esta clase se lleva a cabo en superficies planas, como carreteras cementadas en buen estado sin agujeros o irregularidades significativas. La segunda clase se centra en las carreteras dañadas, concretamente las que se caracterizan por un terreno accidentado e irregular. Estas condiciones presentan riesgos potenciales para los usuarios de sillas de ruedas eléctricas, ya que pueden causar dolor de espalda prolongado. Los datos para esta clase se recopilan de carreteras de asfalto o estándar con superficies irregulares.
8. Creating Machine Learning Model
El paso inicial en la construcción de un modelo de aprendizaje automático implica el diseño por impulsos. Esta fase comienza generando un impulso designado para la utilización. Los usuarios deben elegir tanto el bloque de procesamiento como el bloque de aprendizaje que se emplearán en esta etapa.
El proyecto utiliza datos brutos que se procesan posteriormente para generar clasificaciones para las clases irregulares y normales. Se observa que en la clase accidentada, el gráfico exhibe más ondulaciones en comparación con la clase normal. Posteriormente, podemos generar características utilizando las características proporcionadas por Edge Impulse.
Del análisis se desprende que los resultados del proceso de clasificación son notablemente prometedores y eficaces. El sistema ha demostrado un nivel encomiable de precisión en la distinción entre las diferentes clases. Este sólido rendimiento es indicativo de la competencia del sistema para categorizar con precisión los datos en distintas clasificaciones.
9. Implementación del modelo en el dispositivo
El último paso consiste en integrar el modelo que hemos creado en Swan Boards. Edge Impulse está equipado con funciones para convertir sin problemas modelos de aprendizaje automático para diversos dispositivos y lenguajes de programación. En la pestaña Implementación, puede elegir el tipo específico de dispositivo o lenguaje de programación que desea utilizar. Después de eso, todo lo que necesita hacer es esperar pacientemente a que concluya el proceso, después de lo cual puede descargar sin esfuerzo el modelo finalizado.
Lo fascinante es que su uso refleja el de la biblioteca estándar de Arduino, por lo que se puede importar directamente a Arduino haciendo clic en Sketch > Incluir biblioteca > Add.ZIP Biblioteca. Posteriormente, puede incorporarlo rápidamente a su proyecto.
10. Testing The Device
Por favor, mire el video.
Cierre
SmoothRide representa una forma de innovación que puedo crear para las personas con discapacidades. A pesar de que todavía está en la forma del primer prototipo de una silla de ruedas motorizada, espero inspirar el nacimiento de muchas creaciones prácticas e impactantes. En el futuro, planeo no solo mantener este proyecto como un prototipo, sino también materializarlo en la realidad. Hay varias mejoras que pretendo hacer en el futuro:
- Simplificación del responsable del tratamiento. Mi objetivo es simplificar el controlador, considerando que el uso de cables puede no ser la solución más óptima. Otra opción podría ser Bluetooth, pero estoy contemplando qué pasaría si el dispositivo encuentra un error. ¿El usuario de la silla de ruedas debe estar atrapado en un lugar sin poder moverse? Agradezco las sugerencias si tienes una mejor idea.
- Integración de GPS para la seguridad. Quiero agregar la capacidad de GPS para enviar la ubicación del usuario de silla de ruedas a su tutor. Esta función proporcionaría asistencia inmediata en caso de cualquier imprevisto. Esta idea es posible porque existen productos Blues Wireless, especialmente el Notecarrier F, que puede alojar Swan GPS y Notecard simultáneamente. Estoy un poco desconcertado acerca de la combinación de los dispositivos proporcionados por la sección «Solicitar hardware» en este concurso, por lo que creo que este es el paso más factible para mí en el futuro.
- Creación de una silla de ruedas motorizada real. Este esfuerzo requiere recursos sustanciales y una combinación de varios campos de experiencia para que no sea solo un proyecto, sino que sea realmente beneficioso para los demás. Numerosos aspectos requieren atención, empezando por la construcción de un marco que sea realmente seguro, el diseño ergonómico, la selección de los materiales adecuados, la elección del motor y el controlador adecuados, la suspensión cómoda, y muchos más. Creo que la colaboración y, por supuesto, el patrocinio (por favor 😀😀😀😀😀) pueden ser esenciales para esta ambiciosa empresa.
¡NOS VEMOS EN EL PRÓXIMO PROYECTO! 🙂
Sé el primero en comentar