Silla de Ruedas Inteligente por Gestos Manuales para Personas con Discapacidad
Componentes y suministros
| Arduino Nano R3 | × | 2 |
| Módulo nRF24 (genérico) | × | 2 |
| Driver dual H-Bridge L298 SparkFun | × | 1 |
| Cables jumper (genéricos) | × | 1 |
| Motor DC 12V | × | 2 |
Herramientas necesarias
- Soldador
- Pistola de silicona caliente
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
- El porcentaje de personas con discapacidad ha aumentado tanto en zonas rurales como urbanas de India. La discapacidad puede ser congénita o por causas médicas/accidentales.
- El objetivo es hacer una silla de ruedas controlada por gestos manuales usando acelerómetro como sensor para ayudar a personas con discapacidad física a moverse de un lugar a otro solo dando dirección con la mano.
- Hoy en India muchas personas sufren discapacidad, hay personas con la mitad inferior del cuerpo paralizada. Esta silla añadirá comodidad y hará la vida un poco más fácil.
Código
Código Transmisor Arduino
#include <SPI.h> // Librería SPI para comunicar con nRF24L01+
#include "RF24.h" // Librería principal nRF24L01+
#include "Wire.h" // Para comunicación
#include "I2Cdev.h" // Para comunicar con MPU6050
#include "MPU6050.h" // Librería principal MPU6050
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int data[2];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void){
Serial.begin(9600);
Wire.begin();
mpu.initialize(); // Inicializa objeto MPU
radio.begin(); // Inicia comunicación nRF24
radio.openWritingPipe(pipe); // Dirección del receptor
}
void loop(void){
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
data[0] = map(ax, -17000, 17000, 300, 400); // Enviar dato eje X
data[1] = map(ay, -17000, 17000, 100, 200); // Enviar dato eje Y
radio.write(data, sizeof(data));
}
Código Receptor Arduino
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include "RF24.h"
const int enbA = 3;
const int enbB = 5;
const int IN1 = 2; // Motor Derecho (-)
const int IN2 = 4; // Motor Derecho (+)
const int IN3 = 7; // Motor Izquierdo (+)
const int IN4 = 6; // Motor Izquierdo (-)
int RightSpd = 130;
int LeftSpd = 130;
int data[2];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(){
pinMode(enbA, OUTPUT);
pinMode(enbB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1, pipe);
radio.startListening();
}
void loop(){
if (radio.available()){
radio.read(data, sizeof(data));
if(data[0] > 380){ // adelante
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if(data[0] < 310){ // atrás
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] > 180){ // izquierda
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] < 110){ // derecha
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if(data[0] > 330 && data[0] < 360 && data[1] > 130 && data[1] < 160){ // stop
analogWrite(enbA, 0);
analogWrite(enbB, 0);
}
}
}
Esquemáticos
Proceso de manufactura
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Controlar un LED de Arduino con Cortana vía Bluetooth en Windows 10
- Robot seguidor de personas DIY con Arduino UNO y Motor Shield
- Robot Omnidireccional Diseñado para Seguimiento Seguro de Personas
- Teclador Automático para Radiogoniometría: Precisión, Facilidad y Fiabilidad
- Control preciso de motor paso a paso: 28BYJ-48 con Arduino UNO y joystick
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino
- Circuitos avanzados de control de motor: retención, parada y técnicas de retardo
- Interfaz cerebro-ordenador permite a paralíticos controlar tablets con el pensamiento
- Renesas lanza la familia de MCU RX66T de 32 bits, impulsando el control de motores 2,5×
- Renesas lanza microcontroladores RX72T para control de servo avanzado en robots industriales