Project in progress
Walk Helper for Mentally Challenged Students

Walk Helper for Mentally Challenged Students

To relieve mentally handicapped students' effort and time spent in training walking, Walk Helper with Curie Board will help them.

  • 998 views
  • 0 comments
  • 5 respects

Components and supplies

Apps and online services

About this project

Mentally handicapped students learn everything by repeated behaviors, so they need very long time and efforts to train something whether it is easy or not. Some students have difficulty in walking and balancing, but they don't realize they're tilted or in wrong way. So, Gyro sensor and Accelerometer included in Curie Nano Board are used in order to help disabled students modify their walking posture and balance.

When students are tilted in one way, for example, left side, the gyro sensor estimates the direction and indicates the biased side to the student. Then the student can repeat rebalancing and walking ahead, so that it can improve students' muscle and balancing ability.

Code

walk helperArduino
walk helper using curie nano board for mentally disabled students
#define RIGHT         0001
#define LEFT          0002
#define NORMAL        0003 
#define FRONT         0004
#define BACK          0005
#define RIGHT_FRONT   0006
#define RIGHT_BACK    0007
#define LEFT_FRONT    0011
#define LEFT_BACK     0012
 
#include "CurieIMU.h"
 
int tilted = NORMAL;
int SAVED_TILT = NORMAL;
 
void setup() {
 
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open
 
  // initialize device
  Serial.println("Initializing IMU device...");
  CurieIMU.begin();
 
  // Set the accelerometer range to 2G
  CurieIMU.setAccelerometerRange(2);
}
 
void loop() {
  float ax, ay, az;   //scaled accelerometer values
 
  // read accelerometer measurements from device, scaled to the configured range
  CurieIMU.readAccelerometerScaled(ax, ay, az);
  
//=============================================
  if(ax*10 <= -5) //오른쪽
  {
      if(az*10 <= 7)
      {
        tilted = RIGHT;
      }
      else
      {
        tilted = NORMAL;
      }
  }
  else if(ax*10 >= 5) //왼쪽
  {
      if(az*10 >= -7)
      {
        tilted = LEFT;
      }
      else
      {
        tilted = NORMAL;
      }
  }
  else
  { 
     tilted = NORMAL;
  } //오른쪽
//=============================================
  SAVED_TILT = tilted;    //저장
//=============================================
  if(ay*10 >= 5.5)            //앞
  {
   if(tilted == NORMAL)
   {
    tilted = FRONT; 
   }
   else if(tilted == RIGHT)
   {
    tilted = RIGHT_FRONT;
   }
   else if(tilted == LEFT)
   {
    tilted = LEFT_FRONT;
   }
  } else if(ay*10 <= -5.5)     //뒤
  {
   if(tilted == NORMAL)
   {
    tilted = BACK; 
   }
   else if(tilted == RIGHT)
   {
    tilted = RIGHT_BACK;
   }
   else if(tilted == LEFT)
   {
    tilted = LEFT_BACK;
   }
  }
  else
  {
    tilted = SAVED_TILT;
  }
  //=============================================
  int delaytime = random(10,500);
  // display tab-separated accelerometer x/y/z values
  Serial.print(ax*10);
  Serial.print("  ");
  Serial.print(ay*10);
  Serial.print("  ");
  Serial.print(az*10);
  Serial.print("  ");
  Serial.print("Status : ");
  
  if(tilted == LEFT)
  {
    Serial.print("LEFT TILTED");
    digitalWrite(13,HIGH);
    delay(delaytime);
  }
  else if(tilted == NORMAL)
  {
    Serial.print("NOT TILTED");
    delay(100);
  }
  else if(tilted == RIGHT)
  {
    Serial.print("RIGHT TILTED");
    digitalWrite(12,HIGH);
    delay(delaytime);
  }
  else if(tilted == FRONT)
  {
    Serial.print("FRONT TILTED");
    digitalWrite(11,HIGH);
    delay(100);
  }
  else if(tilted == BACK)
  {
    Serial.print("BACK TILTED");
    digitalWrite(10,HIGH);
    delay(100);
  }
  else if(tilted == RIGHT_FRONT)
  {
    Serial.print("RIGHT & FRONT TILTED");
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    delay(100);
  }
  else if(tilted == RIGHT_BACK)
  {
    Serial.print("RIGHT & BACK TILTED");
    digitalWrite(12,HIGH);
    digitalWrite(10,HIGH);
    delay(100);
  }
  else if(tilted == LEFT_FRONT)
  {
    Serial.print("LEFT & FRONT TILTED");
    digitalWrite(13,HIGH);
    digitalWrite(11,HIGH);
    delay(100);
  }
  else if(tilted == LEFT_BACK)
  {
    Serial.print("LEFT & BACK TILTED");
    digitalWrite(13,HIGH);
    digitalWrite(10,HIGH);
    delay(100);
  }
  digitalWrite(13,LOW);
  digitalWrite(12,LOW);
    digitalWrite(11,LOW);
  digitalWrite(10,LOW);
  Serial.println("  ");
  delay(10);
}
 
 
 
 
https://github.com/01org/corelibs-arduino101/tree/master/libraries

Custom parts and enclosures

Curie Nano Attachment Shield Model
A curie nano board shield to protect and stick the sensor at the back
tinker_FJ5rBVvnA1.obj

Comments

Similar projects you might like

Arduino 101 BLE App

Project in progress by Alexis Santiago Allende

  • 10,798 views
  • 26 comments
  • 51 respects

Arduino Temperature Control

Project tutorial by Team pandhoit

  • 18,234 views
  • 10 comments
  • 28 respects

SMART CUBE: A New Way to Control Your Home

Project tutorial by Alberto Sartori

  • 13,525 views
  • 7 comments
  • 30 respects

Arduino101 / tinyTILE BLE: Match-Making Sunglasses

Project tutorial by Kitty Yeung

  • 11,335 views
  • 2 comments
  • 35 respects

Gest-chair

Project showcase by Team Next Tech Lab

  • 2,839 views
  • 0 comments
  • 16 respects

Very First Hands On Arduino - Voice Activated LED

Project tutorial by Liren Yeo

  • 3,731 views
  • 2 comments
  • 18 respects
Add projectSign up / Login