lunes, 5 de diciembre de 2011

Resumen Avances de Proyecto

• Arduino Uno:
• Financiamiento.
• Instalación.
• Diseño Técnico Arduino-Pc:
• Instalación Técnica.
• Instalación Software Arduino.
• Primeros Pasos simulación. VBB.
• Adquisición Materiales.
• Pasos Experimentales.
• Fallos técnicos.
• Información Post Evaluación.
• Ethernet Shield.
• Códigos.

Web Server - Funciones - Codigo

- Responder a una peticion http.

- Responde mostrando los valores del estado de su entrada análoga o digital por medio de la web.

Código:

#include
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
Server server(80);
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
Client client = server.available();
if (client) { // una solicitud http finaliza con una linea en blanco
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read(); // si hemos llegado al final de la linea (recibido un caractér newline) // y la linea esta en blanco, la solicitud http ha finalizado, // por lo que podemos enviar una respuesta.

if (c == '\n' && current_line_is_blank) { // respondemos con un encabezado http estandar.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(); // envia los valores de cada pin de entrada análoga
for (int i = 0; i < 6; i++) { client.print("analog input "); client.print(i); client.print(" is "); client.print(analogRead(i)); client.println("
");
}
break;
}
if (c == '\n') { // comenzamos una nueva linea
current_line_is_blank = true;
}
else if (c != '\r') { // hemos recibido un caracter en la linea actual
current_line_is_blank = false;
}
}
} // le damos tiempo al navegador para recibir los datos
delay(1);
client.stop();
}
}

lunes, 28 de noviembre de 2011

Arduino Ethernet shield y TelnetClient

Como primera aplicación con el shield "oficial" de Arduino, voy a comentar uno de los ejemplos básico que el IDE de programación de Arduino te proporciona, es el sketch TelnetClient.
Con este programa podemos acceder al ordenador donde esté alojado el servidor Telnet, crear y modificar sus ficheros. Estoy convencido que se os ocurrirá alguna aplicación en la que esto os resulte útil.
Sin más demora, voy a describir, paso a paso, lo que hay que hacer para probarlo con el sistema operativo Windows.
Básicamente tenemos tres piezas en este juego:
Arduino con el shield de Ethernet
PC al que conectamos el puerto USB de Arduino. Lo llamo PCArduino
PC donde corre el servidor telnet. Lo llamo PCTelnet
No se me ocurre ninguna razón por la que PCArduino pueda ser PCTelnet, pero me parece más divertido sin son distintos, a mí me da una mejor idea de la verdadera función de la aplicación, el control remoto de un PC a través de Ethernet.

Configuración de Arduino

Una vez hayamos conectado el shield Ethernet en Arduino, el puerto USB al PCArduino y arrancado el IDE de programación, debemos seleccionar el sketch TelnetClient:


Tomamos nota del COM al que se conecta Arduino, después necesitaremos esa información para abrir una sesión con hypeterminal.


Modificación sketch

Este sketch consta de tres partes, una primera de inicialización de variables globales, una función de setup, y por último, una función de loop.
Variables globales. En este sketch las variables globales son:
MAC y la IP que le queremos dar a Arduino. En los últimos shields de Ethernet se indica la MAC en una pegatina. En cuanto a la IP, teniendo en cuenta que nos vamos a comunicar dentro de la intranet de nuestra casa, elegimos una que sepamos que no utilizamos en ninguno de los PCs que tenemos. Yo, por defecto, pongo 192.168.1.177.
IP del PCTelnet, en el que corre el servidor Telnet y donde queremos conectarnos a través de Arduino. Para saber la IP de ese ordenador ya sabéis: linea de comando DOS y ejecutamos ipconfig. En mi caso 192.168.1.35
Puerto del servidor telnet. Normalmente es el puerto 23.
Función de setup.
Inicializa la conexión a Ethernet y el puerto serie a 9600bps.
Se ejecuta la conexión al servidor telnet
Función loop
Traza por el puerto serie todo lo que recibe del servidor y viceversa
Detecta si el cliente telnet se mantiene conectado, en caso de no estarlo, saca el mensaje de desconexión.
Así pues, sólo tenemos que modificar el programa con los datos de las variables globales. En mi caso:

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
192,168,1,177 };
// Enter the IP address of the server you're connecting to:
byte server[] = {
192,168,1,35 };
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 23 is default for telnet;
// if you're using Processing's ChatServer, use port 10002):
Client client(server, 23);
Una vez lo hayamos hecho, compilamos el programa y lo bajamos a Arduino.

Servidor Telnet

¿Tenemos disponible un servidor Telnet en el PCTelnet al que queremos conectarnos?. En mi caso no era así, por lo que me bajé el servidor Telnet KpyM. Dudo que sea el mejor, sencillamente fue el primero que encontré.
El servidor telnet nos exige tener un usuario y un password para Windows. Si no lo tenéis, tendréis que crearlo, ¿cómo?: Panel de control > Cuentas de usuario.
Telnet dejó de utilizarse a través de la red, a nivel profesional, porque es un protocolo muy primitivo, sin ninguna seguridad, los nombres de usuario y los passwords van por la red en caracteres, sin ningún tipo de codificación. Para nuestro propósito está bien, ya que hacemos una conexión punto a punto, pero desde luego, esta conexión a través de Internet no es segura.
No os olvidéis de abrir el puerto 23 en el PCTelnet. Para hacer esto: Propiedades de conexión de área local > Opciones avanzadas > Configuración > Excepciones > Agregar Puerto ... > Nombre: telnet / Numero puerto: 23 / TCP.

KpyM crea una aplicación para configurar el servidor telnet, no es necesario modificar nada, en todo caso, en caso de tener algun problema, echadle un vistazo, ejecutad la opción start service para comprobar que el servidor está efectivamente corriendo.


Sesión hypeterminal
Una vez hemos conectado con el cable de Ethernet el shield con el PCTelnet, abrimos una sesión de hypeterminal del PCArduino con el COM de Arduino, en mi caso COM4, con 9600bps:


Si todo es correcto, al abrir la sesión de hypeterminal, Arduino intenta conectarse con el servidor telnet alojado en el PCTelnet. Las siguientes pantallas son las que obtenemos en el hypeterminal:









Una vez hayamos introducido el usuario y el password para Windows, accederemos al PC remotamente. Podemos controlar el PCTelnet a través de la sesión hypeterminal del PCArduino.

lunes, 21 de noviembre de 2011

Entendiendo las conexiones de cable entre arduino y un protoboard para encender un led con un botón.

Seleccionamos este Ejemplo de codigo creyendo que se adecuara a nuestras necesidades entre el arduino y la cerradura para cerrar o abrir  utilizando una protoboard, conexiones de cables y resistencias.
A continuación veremos el ejemplo de utilizar un pulsador desde una protoboard.

   const int botonPin = 2;
   const int ledPin = 13;
int botonestado = 0;
void setup(){
pinMode(botonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop(){
botonestado = digitalRead(botonPin);
if (botonestado == HIGH){  // si esta presionado es encendido(HIGH), tambíen puede ser contrario.
  digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}

jueves, 10 de noviembre de 2011

Que es Ethernet Shield y como utilizarlo a nuestro proyecto?.|

Etherner shield es un tipo de arduino parecido al arduino en dimensiones de tamaño sirviendo como complemento para nuestro proposito del proyecto, se monta ethernet shield sobre arduino uno y asi poder trabajar con arduino uno y el ethernet sincronizadamente. (Ver figura N°1).
                                                                   Fig N°1 Ethernet shield

 Cual es la funcionalidad de Ethernet shield:
-Se usa para tener acceso a internet.
-Controlar Perifericos externos y mostrar resultados por web.
-Se puede ahorra el servidor para almacenar datos.(Ver figura N°2  Ethernet sobre  arduino uno).

 
                                               Fig n°2 Ethernet shield montado sobre Arduino Uno.



domingo, 6 de noviembre de 2011

Adquisición de Materiales

 Se ha adquirido los primeros materiales para empezar a desarrollar nuestro proyecto, los materiales que se han adquirido son:

- Placa Arduino UNO
- Transformador y Cargador
- Led Color Azul

















El Arduino UNO fué Comprado a travéz por Internet a la Empresa Olimex (www.olimex.cl), y el Led fué sacado de un lector de DVD antiguo que no servía.

Estos materiales son los primeros que tendremos al finalizar el año, con estos y el Software principal de Arduino nos basta para empezar a Conocer códigos y a Manipular el Microcontrolador.

Encendido de un led en secuencia.(utilizando función fade).

A continuación veremos la función fade para utilizar en led para encendido y apagado aumentando el brillo del leds por secuencia de milisegundos.

int brightness = 0;
int fadeAmount  = 5;


void setup() {
pinmode(9, output);
}

void loop() {
   digitalWrite(9, OUTPUT);

brightness = brightness + fadeAmount;
if( brightness == 0 || brightness == 255) {
 fadeAmount= -fadeAmount;
}
 delay(30);
}

Codigo de encender un Led y apagar el led (Blink) utilizando función delay.

El Codigo que se mostrara a continuación es para encender un led y apagarlo en determinados tiempos utilizando el software Arduino alpha v022 para tal proposito.

Codigo del Blink.
Void setup() {
pinmode(13, output);  //13 vendria siendo el numero de pin
 }

Void Loop() {
  digitalWrite(13, HIGH);
  delay(1000); // seria el tiempo de encendido del led
  digitalWrite(13, LOW);
  delay(1000);
}

lunes, 24 de octubre de 2011

Arduino Alpha 022

Arduino Alpha es el software utilizado para un Arduino en la programación.
A continuación Veremos Algunos codigos mas utilizados del software  para el proyecto:

  - Setup(): La función setup se utiliza para dar inicialización tales como a pines  y su n° de pin. Tambien se puede iniciar  librerias.Esta función se ejecuta una vez despues de conectar o resetear la placa arduino.
  - Loop(): Esta función se utiliza para hacer repeticiones continuamente y cuando el arduino este activo. Está función obtiene el estado del pin utilizado.
  - PinMode(): Está función se utiliza para configurar el pin como entrada o salida de un arduino,selecciónando el pin  a utilizar.
   Ejemplo:
   PinMode(13, OUTPUT).
 -OUTPUT: Indica al Pin que es salida variando la corriente electrica de hasta 40 mA (Miliamperios)  sirviendo para alimentar leds pero inservibles para leer sensores.
  -INPUT: Está función logra aplicar una resistencia de 100 Megohms. Lo que le hace sufiente para leer sensores pero no para leds. (Puede funcionar pero se verá opaco siendo probablemente esta la causa).
 -DigitalWrite(): Esta función escribe un valor HIGH O LOW dependiendo de si se configuro como INPUT o OUTPUT.
 -DigitalRead(): Esta función lee un valor especificado  HIGH O LOW.
 -HIGH: Si el pinMode esta configurado como OUTPUT    y se utiliza la funcíón Digitalwrite. Este dara una corriente de 5v.
Si el PinMode esta configurado como INPUT y se utiliza la funcíón Digitalwrite este dara una corriente de 5v  a travez de una resistencia de 20k siendo HIGH hasta que lo conectemos a una señal LOW a travez de un circuito externo.
 Si el PinMode se encuentra en INPUT  y se utiliza la función digitalread este devolvera HIGH  cuando se de 3 v o mas.
 - LOW: Si el pinMode esta configurado como OUTPUT. Este dara una corriente una de 0 v.
  Si esta configurado como INPUT, la función LOW  se aplicara cuando la corriente sea de 2v o menos.
-Delay(): Esta función pausa el programa en un tiempo de milisegundos (1000 milisegundos = 1 seg).
 la desventaja al utilizar esta función es que cuando se pausa el programa este queda sin utilidad para hacer otro tipo de actividad como leer sensores o calculos, pero los estados de los pines siguen funcionando y las interrupciones ya sean  tales de tiempo.
 -If: está función compara si ciertas condiciones se cumplen  como si un input tiene un valor mayor a un numero.

jueves, 6 de octubre de 2011

Ejemplo de VBB con Mplab

Lo primero que debemos hacer es seleccionar un pic con un led en VBB y seleccionar el plugin de mplab (ver figura n°1)

-Luego corremos el pic y seguidamente abrimos Mplab. Dentro de Mplab creamos un nuevo workspace, luego tenemos que abrir el blink en la carpeta source files que es el codigo de programación  del pic  en el cual es el que queremos utilizar para hacer correr el leds.(ver figura n°2).

- Luego tenemos que compilar el blink y  que conectar este codigo a VBB. tiene que estar corriendo VBB para llevar a cabo dicha conexión. El siguiente paso es depurar(debugger) y seleccionamos Virtualbreaboard. Pinchamos sobre program target device y hacemos correr lo compilado. y se encenderán los leds aleatoriamente en VBB. (Ver figura N°3).

¿Que es Mplab ide y como lo Usamos?

Mplab ide es una herramienta de simulación capaz de utilizar diversos microcontroladores  con una amplia gama de pics a disposición.  Pudiendo Utilizarse cada microntrolador para su total programación en este software de la empresa microchips. El software esta hecho para ser programado en los lenguajes Assembler(Gratuito) y C(Pagado).

¿Como nos sirve Mplab  a nosotros?
Virtualbreadboard(VBB)  nos ofrece la posibilidad de utilizar una herramienta mas poderosa de simulación  activando el plugin desde propiedades desde VBB podemos activar mplab previamente instalado. Usaremos los pics,arduinos,netduino,etc. del mismo VBB . y programarlo desde Mplab 
para la posterior utilización en el VBB estando activos los 2 softwares.

miércoles, 5 de octubre de 2011

Algunos Ejemplos Básicos con el Software Principal

Estos son algunos ejemplos básicos que se probarán antes, y así después empezar a involucrarse con el fin de nuestro proyecto.

Ejemplos obtenidos desde la página principal de Arduino:
http://arduino.cc

1 Ejemplo:


Parpadeo
Este ejemplo muestra la cosa más simple que se puede hacer con un Arduino:

parpadear un LED.
Requisitos de hardware:

  
- Placa Arduino
   -
LED
Circuito
Para construir el circuito, conectar una resistencia de 220 ohmios al pin 13. A continuación se conecta la pata larga de un LED (la pierna positivo, llamado ánodo) a la resistencia. Colocar la pata corta (la pata negativa, llamado el cátodo) a tierra. A continuación, conecte la placa Arduino en su equipo, iniciar el programa de Arduino, e introducir código principal.
La mayoría de las placas Arduino ya tiene un LED conectado al pin 13 en la placa.



 
- Lo Primero es inicializar el pin 13 como pin de salida con la línea
pinMode (13, OUTPUT);
digitalWrite (13, HIGH);
Esto proporciona 5 voltios al pin 13. Que crea una diferencia de voltaje a través de los terminales de los LED y luces para arriba. Luego que lo apague con la línea:
digitalWrite (13, LOW);
Para eso se necesita el pin 13 a 0 voltios, y se vuelve el LED. Entre el encendido y apagado, requiere tiempo suficiente para que una persona vea el cambio, por lo que el comando delay () ordena decirle al Arduino a hacer nada por 1000 milisegundos, o un segundo.



Codigo


void setup () {
  
/ / Inicializar el pin digital como salida.
  
/ / El pin 13 tiene un LED conectado en la mayoría de las placas Arduino:
  
pinMode (13, OUTPUT);}
void loop () {
  
digitalWrite (13, HIGH); / / establecer el LED
  
delay (1000); / / espera por un segundo
  
digitalWrite (13, LOW); / / configurar el apagado LED
  
delay (1000); / / espera por un segundo
 

Instalación Técnica de Arduino para Programar

   Es Relativamente sencillo la instalación técnica para empezar a programar el Arduino y así empezar con la primera parte de nuestro proyecto, llamese primera parte porque son los primeros pasos en donde nos involucraremos a la programación y conocimiento de esta placa.

Intalación: