Categories
Windows

Añadir variables de entorno en Windows 10

A veces necesitamos añadir una variable de entorno o cambiar el path. El path es una variable de entorno que el Sistema Operativo utiliza cuando quiere ejecutar un programa y busca en las rutas en el path.

Las variables de entorno nos puede servir para crear un nombre de mas corto a una ruta de directorio más larga, por ejemplo %HOME% , en el directorio C:\Users\<nuestro usuario>

En los Shell Scripts o Bash Scripts también se utilizan las variables de entorno.

Para acceder a las variable de entorno en Windows 10 ponemos en la barra de búsqueda donde está Cortana variables y pinchamos sobre editar las variables de entorno de sistema

variables de entorno
Pinchamos en variables de entorno

Ahora en variables de usuario(si queremos cambiar el path buscaremos en variables del sistema) pulsamos en nueva y ponemos el nombre por ejemplo HOME y en valor ponemos C:\Users\<nuestro nombre de usuario> y pulsamos aceptar

Ahora deberíamos reiniciar o cerrar sesión para que se apliquen los cambios aunque a veces esto no es necesario con Windows 10.

Una vez reiniciado ya podemos acceder a nuestra variable de entorno, en el cuadro de búsqueda Cortana ponemos %HOME% y resultará nuestra ruta C:\Users\<nombre usuario>

Categories
Robotica con arduino

Controlar leds con botones táctiles

Para controlar los leds tenemos que conectar cada led a una resistencia de 220 ohm para no dañar los pins del arduino. Luego los sensores capacitativos no son más que un cable con un papel de plata y una resistencia entre dos pines del arduino de 1 MegaOhm(aunque esta resistencia puede variar, junto con el valor threshold, si queremos que nuestro sensor capacitativo sea más sensible). Para ahorrar pines utilizamos un pin común para todas las salidas de los cuatro sensores capacitativos.

circuito tactil
Los cables morados serían nuestros sensores táctiles
#include <CapacitiveSensor.h>
CapacitiveSensor capSensor1=CapacitiveSensor(2,6);
CapacitiveSensor capSensor2=CapacitiveSensor(2,5);
CapacitiveSensor capSensor3=CapacitiveSensor(2,4);
CapacitiveSensor capSensor4=CapacitiveSensor(2,3);

int threshold=300;
const int ledPin1=12;
const int ledPin2=11;
const int ledPin3=10;
const int ledPin4=9;




void setup() {

  Serial.begin(9600);
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
  pinMode(ledPin4,OUTPUT);

}

void loop() {

  long sensorValue1 = capSensor1.capacitiveSensor(30);
  Serial.print(sensorValue1);
  Serial.print("-");
  long sensorValue2 = capSensor2.capacitiveSensor(30);
  Serial.print(sensorValue2);
  Serial.print("-");
  long sensorValue3 = capSensor3.capacitiveSensor(30);
  Serial.print(sensorValue3);
  Serial.print("-");
  long sensorValue4 = capSensor4.capacitiveSensor(30);
  Serial.print(sensorValue4);
  Serial.println();
  
  if(sensorValue1>threshold){
    digitalWrite(ledPin1,HIGH);
  }
  else{    
    digitalWrite(ledPin1,LOW);
  }
  if(sensorValue2>threshold){
    digitalWrite(ledPin2,HIGH);
  }
  else{    
    digitalWrite(ledPin2,LOW);
  }
  if(sensorValue3>threshold){
    digitalWrite(ledPin3,HIGH);
  }
  else{    
    digitalWrite(ledPin3,LOW);
  }
  if(sensorValue4>threshold){
    digitalWrite(ledPin4,HIGH);
  }
  else{    
    digitalWrite(ledPin4,LOW);
  }
  delay(10);

}

Finalmente deberíamos variar el valor threshold, a modo de prueba y ensayo, para adaptarlo al que mejor se adopte a nuestro caso.

Categories
WIFI

Como Cambiar el canal del WIFI

Primero tenemos que saber la dirección del router, aunque suele ser siempre la misma(192.168.1.1) podria ser otra. Para asegurarnos solo hay que abrir una consola (desde windows 10 buscamos cmd en el recuadro donde está cortana y pinchamos sobre simbolo del sistema) y ahora ejecutamos:

C:\> ipconfig
Adaptador de LAN inalámbrica Wi-Fi:
.
.
.
Puerta de enlace predeterminada . . . . . : 192.168.1.1

donde pone Puerta de enlace predeterminada es nuestro router.

Ahora tenemos que saber el puerto por defecto es el 80 pero podria ser otro(depende del fabricante del router), como el 8080. Entonces abrimos el navegador(Chrome,Firefox,Opera…)y ponemos en la barra de direcciones:(http://<ip del router>:<puerto>)

http://192.168.1.1:80

Nos saldrá una página web local, que sirve para configuracion del router y nos pedirá una contraseña que suele ser 1234 o <vacio>

Una vez en la configuracion tenemos que buscar en WLAN -> basic options -> Channel (aunque el nombre de estos menus puede variar) y cambiamos el channel, los canales que mejor fucionan son el 1,6,11. Ahora solo nos falta reiniciar.

También tenemos la opción de ponerlo en Automatic y el propio router escogerá la mejor opción al reiniciar.(recomendado si no sabes que canales están más saturados)

Para saber que que canales están saturados puedes utilizar una aplicacion (Windows Store) para windows o en android (Google Play) analizador de wifi

AVISO: Por seguridad se recomienda hacer esto conectado con cable directamente al router y no por WIFI. Las claves podrian ser visibles al ser un protocolo http no seguro en el caso de que alguien estuviera escuchando paquetes del WIFI

Categories
Robotica con arduino

Como conectar arduino a bluetooth HC-06

Para las conexiones, primero ponemos ground y vin a 3.3v (depende de cada fabricante, puede ser 5v o 3.3v) del arduino luego conectamos RX y TX (DI y DO, en mi dispositivo)a los pines 3 y 2(pero pueden ser otros). En la cabecera ponemos:

#include <SoftwareSerial.h>
 SoftwareSerial bluetooth(3, 2); // RX, TX

Luego en el setup:

void setup(){
    bluetooth.begin(9600);
    delay(200); // esperar a que se estabilize el voltaje
    bluetooth.print("AT+NAMlgimenez"); // pon tu nombre para configurar el nombre del dispositivo
                                        // requiere reiniciar para que los cambios hagan efecto 
    delay(3000); // esperar a que el dispositivo este preparado
}

Finalmente podemos comprobar si hay algo en el bluetooth, en el loop:

if (bluetooth.available()) { // comprobar si hay algo en el buffer
     char c=bluetooth.read();
}

En este punto, conectaríamos desde el pc o desde el móvil con un monitor de serie y envíariamos algún carácter que recibiría arduino(siempre que se envien en el puerto(COM) correspondiente al bluetooth)

monitor de serie pc

monitor de serie android

Categories
Robotica con arduino

How to assemble your own arduino robot – part 2 – Programming

In this part we continue with the arduino robot with the programming part.

The code that basically does is to continuously check the distance of the ultrasonic sensor and if it finds a wall it turns a little and continues until it returns it has encountered another obstacle.

Next we have the code of a robot that avoid objects

/*global variables for the number of pins*/ 
//pins for the motor driver
int in1=13;
int in2=12;
int in3=9;
int in4=8;
int enA=11;
int enB=10;


//pins for the ultrasonic sensor
int pinTrig=3;
int pinEco=4;

//on / off button pin
int pinBoton=2;

/*global variables for on / off*/
int previousBoton=0;
int botonState=0;
int robotEnabled=0;

/*global variables for the ultrasonic sensor*/
long distancia;
long tiempo;
 
/*arduino setup function*/
void setup(){
 //initialization of the output motor pins
 pinMode(in1,OUTPUT);
 pinMode(in2,OUTPUT);
 pinMode(in3,OUTPUT);
 pinMode(in4,OUTPUT);
 pinMode(enA,OUTPUT);
 pinMode(enB,OUTPUT);

// pinMode(13,OUTPUT);

//ultrasonic sensor pins
pinMode(pinTrig,OUTPUT); 
 pinMode(pinEco,INPUT);
 
//on / off button pin
 pinMode(pinBoton,INPUT);
 
//with this we stop the engines
 digitalWrite(in1,HIGH);
 digitalWrite(in2,HIGH);
 digitalWrite(in3,HIGH);
 digitalWrite(in4,HIGH);

// digitalWrite(13,LOW);

Serial.begin(9600);//the serial monitor is not necessary


}

/*arduino loop function*/
void loop(){
 //we read the state of the on and off button
 botonState=digitalRead(pinBoton);
 
//this makes an ultrasound sensor reading and is always the same
digitalWrite(pinTrig,LOW);/* Due to sensor stabilizationr*/
delayMicroseconds(5);
digitalWrite(pinTrig,HIGH);/*ultrasonic pulse sending*/
delayMicroseconds(10);
tiempo=pulseIn(pinEco,HIGH); /* Function to measure the length of the incoming pulse. It measures the time between the sending of the ultrasonic pulse and when the sensor receives the bounce, that is to say: since the 12th pin begins to receive the bounce, HIGH, until it stops doing it. LOW, the length of the incoming pulse*/ 
distancia=int(0.017*tiempo);

Serial.println(distancia);//print the distance measured by the ultrasonic sensor

if(botonState != previousBoton){ //if you have changed the on / off or off / on button 
 if(botonState==HIGH){ //if the button is pressed
 robotEnabled=!robotEnabled; // switch to off if it was on or on if it was off
 if(robotEnabled==true){ //Here you can do something when you turn on the robot like a melody
 tone(6,420);
 delay(200);
 noTone(6);
 delay(50);
 tone(6,420);
 delay(200);
 noTone(6);
 delay(50);
 tone(6,420);
 delay(200);
 noTone(6);
 }
 }
 }

if(robotEnabled){//from here goes the important code that is when it is on
 
 
 if(distancia>30){ //if it does not detect anything follow
 analogWrite(enA,255);
 analogWrite(enB,240);
 _mright(in1,in2);
 _mright(in3,in4);
 // digitalWrite(13,HIGH);
 }
 else{//if it detects an object less than 30 turn around
 // digitalWrite(13,HIGH);
 _mright(in1,in2);
 _mleft(in3,in4);
 
 delay(800) ; 
 }

}else{//if the robot is off stop the engines
 digitalWrite(13,LOW);
 _mstop(in1,in2);
 _mstop(in3,in4); 
 }

previousBoton=botonState; //this is to know if it is off or on
}

/*functions for driving the motors // (motor left does not move the robot to the left, // for that it would be necessary to move two motors, // only one motor no clock)*/
void _mleft(int pin1,int pin2){ //activate a non-clockwise motor
 digitalWrite(pin1,HIGH);
 digitalWrite(pin2,LOW);
}
void _mright(int pin1,int pin2){ //activate a clockwise motor
 digitalWrite(pin1,LOW);
 digitalWrite(pin2,HIGH);
}
void _mstop(int pin1,int pin2){ //stop a motor
 digitalWrite(pin1,HIGH);
 digitalWrite(pin2,HIGH);
}

If you missed the assembly part see here