Rollstuhl mit Handgestensteuerung für behinderte Menschen
Komponenten und Verbrauchsmaterialien
| | × | 2 | |
| | × | 2 | |
| SparkFun Dual H-Bridge Motortreiber L298 | | × | 1 | |
| | × | 1 | |
| | × | 2 | |
Über dieses Projekt
https://drive.google.com/open?id=1RNI2ehaknWPN0lPpKm8wv95DUVcTr8H6
•Der Anteil behinderter Menschen ist sowohl im ländlichen als auch im städtischen Teil Indiens gestiegen. Die Behinderung kann von Geburt an oder aus medizinischen oder unfallbedingten Gründen vorliegen.
•Das Ziel dieses Projekts ist es, einen Rollstuhl mit Handgestensteuerung zu entwickeln und den Beschleunigungsmesser als Sensor zu verwenden, um körperlich behinderten Menschen dabei zu helfen, sich von einem Ort zum anderen zu bewegen, indem sie einfach die Richtung von der Hand geben
•Heute leiden in Indien viele Menschen an einer Behinderung, es gibt Menschen, deren untere Körperhälfte gelähmt ist. Dieser Rollstuhl erhöht den Komfort und macht das Leben der Menschen etwas einfacher
Code
SendercodeArduino
#include //SPI-Bibliothek für die Kommunikation mit dem nRF24L01+#include "RF24.h" //Die Hauptbibliothek des nRF24L01+#include "Wire.h" //Für die Kommunikation#include "I2Cdev. h" //Für die Kommunikation mit MPU6050#include "MPU6050.h" //Die Hauptbibliothek des MPU6050MPU6050 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(); // Das MPU-Objekt initialisieren radio.begin(); // Starten Sie die nRF24-Kommunikation radio.openWritingPipe (pipe); // Setzt die Adresse des Empfängers, an den das Programm Daten sendet.}void loop(void){ mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); data[0] =map(ax, -17000, 17000, 300, 400); // Daten der X-Achse senden [1] =map (ay, -17000, 17000, 100, 200); // Y-Achsen-Daten senden radio.write(data, sizeof(data));}
EmpfängercodeArduino
#include #include #include #include #include //SPI-Bibliothek zur Kommunikation mit dem nRF24L01+#include " RF24.h" //Die Hauptbibliothek des nRF24L01+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; //Rechter Motor (-)int RightSpd =130;int LeftSpd =130;int data[2];RF24 radio (9,10);const uint64_t pipe =0xE8E8F0F0E1LL;void setup () { // Definiere die Motorpins als OUTPUT pinMode (enbA, AUSGANG); pinMode (enbB, AUSGANG); PinMode (IN1, AUSGANG); PinMode (IN2, OUTPUT); PinMode (IN3, AUSGANG); PinMode (IN4, AUSGANG); 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) {//weiterleiten analogWrite (enbA, RightSpd); analogWrite (enbB, LeftSpd); digitalWrite (IN1, HIGH); digitalWrite (IN2, LOW); digitalWrite (IN3, HOCH); digitalWrite (IN4, LOW); aufrechtzuerhalten. 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); aufrechtzuerhalten. Wenn (Daten [1]> 180) {//links analogWrite (enbA, RightSpd); analogWrite (enbB, LeftSpd); digitalWrite (IN1, HIGH); digitalWrite (IN2, LOW); digitalWrite (IN3, LOW); digitalWrite (IN4, HOCH); aufrechtzuerhalten. Wenn (Daten [1] <110) {//rechts analogWrite (enbA, RightSpd); analogWrite (enbB, LeftSpd); digitalWrite (IN1, LOW); digitalWrite (IN2, HOCH); digitalWrite (IN3, HOCH); digitalWrite (IN4, LOW); aufrechtzuerhalten. If (data[0]> 330 &&data[0] <360 &&data[1]> 130 &&data[1] <160) {// Auto stoppen analogWrite (enbA, 0); analogWrite (enbB, 0); } }}