#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.
Creado a partir de la obra en https://www.youtube.com/
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.
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
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.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!
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
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








No hay comentarios.:
Publicar un comentario