martes, 3 de junio de 2014

RunaTech


#RunaTech by Inti Condo is licensed under a  Creative Commons Reconocimiento - Compartirigual 4.0 International license
Creado a partir de la obra en https://www.youtube.com/watch?v=H82iPUDVPu0



In Quito city of Ecuador, the technological research for the blind has not experienced significant development to their mobility needs. It is appropriate to give a proper use of the technological features of the contemporary world , in order to make mobility scheme conceived and designed for the blind in Quito. The system poses allows blind people to arrive at a specific point using technology. A system capable of measuring proximity to an object , this is a special technological suit, with ability to detect nearby objects in combination with vibrating alert to notify the person of the suit bearing the proximity of an obstacle is created . The sensors were distributed in static and strategic parts of the human body, to make it easier reception obstacles above and below the waist.
The preliminary number of sensors placed were distributed in human body, two shoulders, two proximity sensors at the waist , one for each hand , and one on each foot , these will add up to 8 sensors to detect a wider range of coverage obstacles , blind as a person walks . People who use this technological suit with ultrasonic sensors when walk these activation signal sent to the circuit board by activating the vibration system for the blind person knows of the existence of an obstacle , the user decide in a fraction of second evade the obstacle if necessary , the device in question must be learned to use and interpret , continuous vibration is a potential danger. This device will be used to interact with the environment without touching at first, to guide and resolve a latent mobility problem. 

Keywords: costume, technological, arduino, blind, runatech.


Render de Johanna Salazar



Diseño del Sistema
El inicio del código fue básico. A medida que se implementó el código fue incrementándose en cantidad de líneas, pero se trata de un código duplicado. La optimización del código de alto nivel se puede realizar con conceptos de programación orientado a objetos, clases, funciones para poder reciclar y mejorar el código en manera informal
Detalle de pseudo código estilo Pascal
Inicio
Objeto proximidad
Hacer si proximidad es == 1
Atributo pines
Hacer si Atributo cercanía
Hacer si Atributo vibrar
Imprimir (distancia)

Clases llamar a funciones
Función cercanía
Algoritmo de cercanía
Función vibrar
Algoritmo vibrar
Función Pines
Función distancia
End


Lista de Materiales al precio de Ecuador 2013
Moneda: $ Dólar




Ejemplo de código Arduino para un Sensor Ultrasónico


A continuación código de Arduino:
Inicialización del primer sensor de ultrasonido se declaran constantes y números de Pin
#define motorPin1 2
#define trigPin1 3
#define echoPin1 4
#define permite al programa dar un nombre a una constante en este caso “motorPin1” el dos representa el número de entrada digital que usa del tarjeta electrónica de Arduino.
trigPin1 3 sirve para el sensor de ultrasonido tres representa el número de entrada digital que usa del tarjeta electrónica de Arduino.
echoPin1 constante para el dispositivo ultrasónico cuatro representa el número de entrada digital que usa del tarjeta electrónica de Arduino.

void setup(){
  Serial.begin(9600);
  pinMode(echoPin1,INPUT);
  pinMode(trigPin1,OUTPUT);
  pinMode(motorPin1,OUTPUT);
  digitalWrite(motorPin1,LOW);
}
Void setup() { }
La función de setup es llamada cuando el Sketch se inicia, en esta sección se inicializa variables, Pin modes y librerías.
Serial.begin(9600);
Usado para realizar comunicación entre la tarjeta electrónica y el dispositivo, nuestra computadora u otros dispositivos a través de puerto USB RX TX, la tarjeta de arduino mega que usamos en el traje especial de no videntes tiene tres puertos seriales.
pinMode(echoPin1,INPUT);
Configura específicamente el comportamiento de un Pin como una entrada o salida modo: INPUT (Entrada) o OUTPUT (Salida) el ultrasonido está usando el pin digital número 1
pinMode(echoPin1,INPUT); sensor conectado, lo configura como entrada
pinMode(trigPin1,OUTPUT); sensor conectado, lo configura como salida
pinMode(motorPin1,OUTPUT); motor conectado, lo configura como entrada
digitalWrite(motorPin1,LOW); motor conectado lo configura como apagado

Continuación del ejemplo del funcionamiento de un solo sensor
void loop(){
int duration, distance;
//first Ultrasonic
   digitalWrite(trigPin1, HIGH);
  digitalWrite(trigPin1, LOW);
  duration = pulseIn(echoPin1, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin1,HIGH);  }
  else {
    Serial.println("su1 cm");
    Serial.print(distance);
    digitalWrite(motorPin1,LOW);
  }
Void Loop () {  }
Una vez que la función setup() se crea, la función loop() ejecuta consecutivamente permitiéndole al programa variar.
digitalWrite(trigPin1, HIGH); escribe el valor HIGH hacia el pin digital 1
  digitalWrite(trigPin1, LOW); escribe el valor LOW hacia el pin digital 1
  duration = pulseIn(echoPin1, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){ condición para establecer un valor de verdadero o falso
    Serial.println("Out of range");  impresión fuera de rango
    digitalWrite(motorPin1,HIGH); motor no hace nada
Configurado como entrada (INPUT) en el código de la función Void Setup usando Pin Mode y después se establece como HIGH con digitalWrite
Caso contrario se ejecuta el siguiente código
Else {   
    Serial.println("su1 cm"); imprime “Su1 cm” primer sensor
    Serial.print(distance); imprime la distancia en centímetros
    digitalWrite(motorPin1,LOW); El pin Digital recibe la señal activa el motor}
delay(1000); pausa el programa 1 segundo son 1000 milisegundos
Para el traje de 8 sensores se duplica todo el código y se adecua para los Pines digitales.

Plano del traje en tela


Referencia del link abajo!




Código Completo de Arduino para Arduino Mega, subir este código al Arduino


#define motorPin1 2
#define trigPin1 3
#define echoPin1 4
//second Ultrasonic
#define motorPin2 5
#define trigPin2 6
#define echoPin2 7
//third Ultrasonic
#define motorPin3 8
#define trigPin3 9
#define echoPin3 10
//fourth Ultrasonic
#define motorPin4 11
#define trigPin4 12
#define echoPin4 13
//fifth Ultrasonic
#define motorPin5 16
#define trigPin5 15
#define echoPin5 14
//sixth Ultrasonic
#define motorPin6 19
#define trigPin6 18
#define echoPin6 17
//seventh Ultrasonic
#define motorPin7 22
#define trigPin7 21
#define echoPin7 20
//eigth Ultrasonic
#define motorPin8 25
#define trigPin8 24
#define echoPin8 23
void setup()
{
  Serial.begin(9600);
  pinMode(echoPin1,INPUT);
  pinMode(trigPin1,OUTPUT);
  pinMode(motorPin1,OUTPUT);
  digitalWrite(motorPin1,LOW);
  //second ultrasonic
  pinMode(echoPin2,INPUT);
  pinMode(trigPin2,OUTPUT);
  pinMode(motorPin2,OUTPUT);
  digitalWrite(motorPin2,LOW);
   //third ultrasonic
  pinMode(echoPin3,INPUT);
  pinMode(trigPin3,OUTPUT);
  pinMode(motorPin3,OUTPUT);
  digitalWrite(motorPin3,LOW);
  //fourth ultrasonic
  pinMode(echoPin4,INPUT);
  pinMode(trigPin4,OUTPUT);
  pinMode(motorPin4,OUTPUT);
  digitalWrite(motorPin4,LOW);
  //fifth ultrasonic
  pinMode(echoPin5,INPUT);
  pinMode(trigPin5,OUTPUT);
  pinMode(motorPin5,OUTPUT);
  digitalWrite(motorPin5,LOW);
  //sixth ultrasonic
  pinMode(echoPin6,INPUT);
  pinMode(trigPin6,OUTPUT);
  pinMode(motorPin6,OUTPUT);
  digitalWrite(motorPin6,LOW);
  //seventh ultrasonic
  pinMode(echoPin7,INPUT);
  pinMode(trigPin7,OUTPUT);
  pinMode(motorPin7,OUTPUT);
  digitalWrite(motorPin7,LOW);
  //eignth ultrasonic
  pinMode(echoPin8,INPUT);
  pinMode(trigPin8,OUTPUT);
  pinMode(motorPin8,OUTPUT);
  digitalWrite(motorPin8,LOW);


}

void loop()
{
  int duration, distance;
  
  //first Ultrasonic
   digitalWrite(trigPin1, HIGH);
  digitalWrite(trigPin1, LOW);
  duration = pulseIn(echoPin1, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range");  
    digitalWrite(motorPin1,HIGH);
  } 
  else {
    Serial.println("su1 cm");
    Serial.print(distance);
    digitalWrite(motorPin1,LOW);
  }
  //second Ultrasonic
   digitalWrite(trigPin2, HIGH);
  digitalWrite(trigPin2, LOW);
  duration = pulseIn(echoPin2, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin2,HIGH);
  } 
  else {
    Serial.println("su2 cm");
    Serial.print(distance);
    digitalWrite(motorPin2,LOW);
  }
    //thirth Ultrasonic
   digitalWrite(trigPin3, HIGH);
  digitalWrite(trigPin3, LOW);
  duration = pulseIn(echoPin3, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin3,HIGH);
  } 
  else {
    Serial.println("su3 cm");
    Serial.print(distance);
    digitalWrite(motorPin3,LOW);
  }
    //fourth Ultrasonic
   digitalWrite(trigPin4, HIGH);
  digitalWrite(trigPin4, LOW);
  duration = pulseIn(echoPin4, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin4,HIGH);
  } 
  else {
    Serial.println("su4 cm");
    Serial.print(distance);
    digitalWrite(motorPin4,LOW);
  }
    //fifth Ultrasonic
   digitalWrite(trigPin5, HIGH);
  digitalWrite(trigPin5, LOW);
  duration = pulseIn(echoPin5, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin5,HIGH);
  } 
  else {
    Serial.println("su5 cm");
    Serial.print(distance);
    digitalWrite(motorPin5,LOW);
  }
  //sixth Ultrasonic
   digitalWrite(trigPin6, HIGH);
  digitalWrite(trigPin6, LOW);
  duration = pulseIn(echoPin6, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin6,HIGH);
  } 
  else {
    Serial.println("su6 cm");
    Serial.print(distance);
    digitalWrite(motorPin6,LOW);
  }
  //seventh Ultrasonic
   digitalWrite(trigPin7, HIGH);
  digitalWrite(trigPin7, LOW);
  duration = pulseIn(echoPin7, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin7,HIGH);
  } 
  else {
    Serial.println("su7 cm");
    Serial.print(distance);
    digitalWrite(motorPin7,LOW);
  }
  //eigth Ultrasonic
   digitalWrite(trigPin8, HIGH);
  digitalWrite(trigPin8, LOW);
  duration = pulseIn(echoPin8, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >=40){
    Serial.println("Out of range"); 
    digitalWrite(motorPin8,HIGH);
  } 
  else {
    Serial.println("su8 cm");
    Serial.print(distance);
    digitalWrite(motorPin8,LOW);
  }
  
 delay(500);
}

Fotos

Conexión al Relé

Conexión de la Tarjeta Mega, Sensor de Ultrasonido y Motor DC con cables de colores para más didáctica.



Distribución de los sensores en la Anatomía Humana



Si te gustó dame Like jejje :D

Inti Condo
http://www.facebook.com/inticondo

Sígueme en Twitter
https://twitter.com/intisito

Render del traje:
Johanna Salazar
https://www.facebook.com/johannansp

Carolina
https://www.facebook.com/Carola.Estefania?fref=ts