Intelligenter Rollstuhl per Handgesten für Menschen mit Behinderung
Komponenten und Zubehör
| Arduino Nano R3 | × | 2 |
| nRF24-Modul (Generic) | × | 2 |
| SparkFun Dual H-Bridge Motortreiber L298 | × | 1 |
| Steckbrücken (Sortiment) | × | 1 |
| DC-Motor 12 V | × | 2 |
Benötigte Werkzeuge und Maschinen
- Lötkolben (Standard)
- Heißklebepistole (Standard)
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Projektdokumentation (Google Drive)
- Der Anteil behinderter Menschen steigt in ländlichen und städtischen Gebieten Indiens. Behinderung kann angeboren, medizinisch oder unfallbedingt sein.
- Ziel: Handgesten-gesteuerter Rollstuhl mit Beschleunigungssensor (Accelerometer) – ermöglicht körperlich behinderten Menschen, sich durch Handbewegungen fortzubewegen.
- In Indien leiden viele unter Behinderung, u. a. Lähmung der unteren Körperhälfte. Dieser Rollstuhl erhöht Komfort und erleichtert den Alltag.
Code
Sender-Code (Transmitter)
#include <SPI.h> // SPI für nRF24L01+
#include "RF24.h" // Hauptbibliothek nRF24L01+
#include "Wire.h" // I2C-Kommunikation
#include "I2Cdev.h" // Kommunikation mit MPU6050
#include "MPU6050.h" // Hauptbibliothek 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(); // MPU6050 initialisieren
radio.begin(); // nRF24 Kommunikation starten
radio.openWritingPipe(pipe); // Empfängeradresse setzen
}
void loop(void) {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
data[0] = map(ax, -17000, 17000, 300, 400); // X-Achse senden
data[1] = map(ay, -17000, 17000, 100, 200); // Y-Achse senden
radio.write(data, sizeof(data));
}
Empfänger-Code (Receiver)
#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; // Rechter Motor (-)
const int IN2 = 4; // Rechter Motor (+)
const int IN3 = 7; // Linker Motor (+)
const int IN4 = 6; // Linker Motor (-)
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) { // vorwärts
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
if (data[0] < 310) { // rückwärts
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
if (data[1] > 180) { // links
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
if (data[1] < 110) { // rechts
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) { // Stopp
analogWrite(enbA, 0);
analogWrite(enbB, 0);
}
}
}
Schaltpläne
Herstellungsprozess
- Fortgeschrittene Motorkontrollschaltungen: Selbsthaltung, Stopp und Zeitverzögerung
- Renesas stellt RX66T 32-Bit-MCU-Familie vor: 2,5-fache Motorsteuerungs-Leistung
- Renesas bringt RX72T Mikrocontroller für fortschrittliche Servo-Steuerung in Industrierobotern
- Neue Brain-Computer-Interface lässt gelähmte Nutzer Tablets per Gedanken steuern
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Arduino-LED per Cortana und Bluetooth unter Windows 10 steuern
- DIY Mensch-verfolgender Roboter mit Arduino UNO & Motor Shield
- Omnidirektionaler Roboter für sicheres Personentracking
- Automatischer Keyer für Radio-Peiling – Präzision, Einfachheit und Zuverlässigkeit
- Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte