残疾人手势控制轮椅
#1 · 2024年6月25日, pm2:03
Quote from Matoo robot on 2024年6月25日, pm2:03借助与加速度计传感器相对应的手势,轮椅将移动
项目介绍
$ https://drive.google.com/open?id=1RNI2ehaknWPN0lPpKm8wv95DUVcTr8H6$
•印度农村和城市地区的残疾人比例都有所增加。残疾可能是由于出生或由于某种医疗或意外原因造成的。
•该项目的目的是制作一个手势控制轮椅,并使用加速度计作为传感器,帮助身体残疾的人从一个地方移动到另一个地方,只需用手指示
•今天在印度,许多人患有残疾,有些人的下半身瘫痪了。这款轮椅将增加舒适度,使人们的生活更轻松
接收机代码
#include <nRF24L01.h> #include <printf.h> #include <RF24.h> #include <RF24_config.h> #include <SPI.h> //SPI library for communicate with the nRF24L01+ #include "RF24.h" //The main library of the nRF24L01+ const int enbA = 3; const int enbB = 5; const int IN1 = 2; //Right Motor (-) const int IN2 = 4; //Right Motor (+) const int IN3 = 7; //Left Motor (+) const int IN4 = 6; //Right Motor (-) int RightSpd = 130; int LeftSpd = 130; int data[2]; RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; void setup(){ //Define the motor pins as OUTPUT 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){ //forward analogWrite(enbA, RightSpd); analogWrite(enbB, LeftSpd); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } if(data[0] < 310){ //backward analogWrite(enbA, RightSpd); analogWrite(enbB, LeftSpd); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } if(data[1] > 180){ //left analogWrite(enbA, RightSpd); analogWrite(enbB, LeftSpd); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } if(data[1] < 110){ //right 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 car analogWrite(enbA, 0); analogWrite(enbB, 0); } } }
发射机代码
#include <SPI.h> //SPI library for communicate with the nRF24L01+ #include "RF24.h" //The main library of the nRF24L01+ #include "Wire.h" //For communicate #include "I2Cdev.h" //For communicate with MPU6050 #include "MPU6050.h" //The main library of the 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(); //Initialize the MPU object radio.begin(); //Start the nRF24 communicate radio.openWritingPipe(pipe); //Sets the address of the receiver to which the program will send data. } void loop(void){ mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); data[0] = map(ax, -17000, 17000, 300, 400 ); //Send X axis data data[1] = map(ay, -17000, 17000, 100, 200); //Send Y axis data radio.write(data, sizeof(data)); }
电路图
轮椅
手套电路图
借助与加速度计传感器相对应的手势,轮椅将移动
项目介绍
$ https://drive.google.com/open?id=1RNI2ehaknWPN0lPpKm8wv95DUVcTr8H6$
•印度农村和城市地区的残疾人比例都有所增加。残疾可能是由于出生或由于某种医疗或意外原因造成的。
•该项目的目的是制作一个手势控制轮椅,并使用加速度计作为传感器,帮助身体残疾的人从一个地方移动到另一个地方,只需用手指示
•今天在印度,许多人患有残疾,有些人的下半身瘫痪了。这款轮椅将增加舒适度,使人们的生活更轻松
接收机代码
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h> //SPI library for communicate with the nRF24L01+
#include "RF24.h" //The main library of the nRF24L01+
const int enbA = 3;
const int enbB = 5;
const int IN1 = 2; //Right Motor (-)
const int IN2 = 4; //Right Motor (+)
const int IN3 = 7; //Left Motor (+)
const int IN4 = 6; //Right Motor (-)
int RightSpd = 130;
int LeftSpd = 130;
int data[2];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(){
//Define the motor pins as OUTPUT
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){
//forward
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if(data[0] < 310){
//backward
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] > 180){
//left
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] < 110){
//right
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 car
analogWrite(enbA, 0);
analogWrite(enbB, 0);
}
}
}
发射机代码
#include <SPI.h> //SPI library for communicate with the nRF24L01+
#include "RF24.h" //The main library of the nRF24L01+
#include "Wire.h" //For communicate
#include "I2Cdev.h" //For communicate with MPU6050
#include "MPU6050.h" //The main library of the 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(); //Initialize the MPU object
radio.begin(); //Start the nRF24 communicate
radio.openWritingPipe(pipe); //Sets the address of the receiver to which the program will send data.
}
void loop(void){
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
data[0] = map(ax, -17000, 17000, 300, 400 ); //Send X axis data
data[1] = map(ay, -17000, 17000, 100, 200); //Send Y axis data
radio.write(data, sizeof(data));
}
电路图
轮椅
手套电路图
踩。0赞。0