jueves, 23 de febrero de 2012

Mover servomotor con arduino ethernet

Intro
Para esta entrada, veremos como controlar el servomotor, poniendo nuestro arduino ehternet como servidor en red local y controlarla desde un navegador de cualquier computadora que este dentro de la red local.

Material
La mayor parte del material a emplear es igual a la entrada anterior, solo incluimos el arduino ethernet.
  • Cable de conexion
  • Servomotor Futaba S3010
  • Cable Ethernet
  • Cable USB
  • Arduino UNO
  • Arduino Ethernet


Desarrollo
Para la conexion de los cables es lo mismo que en el tutorial anterior, si acaso la diferenciar es que pondremos la salida de senal del servomotor(blanco) en el pin 6. El cable ethernet, lo colocamos en nuestro modem y en el arduino ethernet. El arduino ethernet se pone sobre el arduino uno, de tal forma que las patitas salientes de este, entren en los pines del arduino uno.


Codigo

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

//mac, IP
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,6 };
EthernetServer server(80);//ethernet server port 80
boolean reading = false;


//HTML creacion de formulario
const char html[] =
"
" "Izquierda
" //Input de izquierda y que mandara el parametro 6 "Derecha
" //Input de la derecha que mandara el paramtro 7 "
"; void setup(){ Serial.begin(9600); //Frecuencia con la cual se manejara //iniciar conexion Ethernet.begin(mac, ip); server.begin(); } void loop() { // Escuchar a los clientes que entran EthernetClient client = server.available(); if (client) { // una peticion http termina con una linea en blanco boolean currentLineIsBlank = true; boolean sentHeader = false; server.print(html);//puesta HTML en servidor while (client.connected()) {//coneccion con el cleinte if (client.available()) { //Si el cliente es disponible if(!sentHeader){ sentHeader = true; } char c = client.read(); if(reading && c == ' ') reading = false; //Si no recive nada es false if(c == '?') reading = true; //encuentra ? donde inicia la informacion if(reading){ Serial.print(c);//imprime lo que recibe del cliente //control del LED if(c == '6'){ //Si le llega el parametro 6 if(pos > 0){ pos = 10; myservo.write(pos); //Mueve la posicion del servo a 10 } break; } if(c == '7'){ //Si lelga le parametro 7 if(pos < 180){ pos = 180; myservo.write(pos); //Cambiamos la posicion del servo break; } } if (c == '\n' && currentLineIsBlank) break; if (c == '\n') { currentLineIsBlank = true; }else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); // tiempo de espera del navegador client.stop(); // cerramos la coneccion } }

Notas:
Una de las cosas importantes a tomar en cuenta son las salidas que le daremos a nuestro arduino ethernet, ya que haciendo pruebas con una compañera de clase para prender unos leds, se ocupaban las salidas de señal(los que tienen un asterisco), asi que la salida del servomotor fue 10, pero al momento de correrlo, no cumplia su funcion, pero investigando me di cuenta que las salidas 9, 10 y 11 se usan para hacer otro tipo de conecciones, asi que declare la salida 6 teniendo exito.

Video



Bibliografia
http://arduino.cc/es/Reference/Ethernet
http://gkaindl.com/software/arduino-ethernet/dhcp
http://www.cosasdemecatronica.com/tutoriales/arduino/262

3 comentarios:

  1. La segunda imagen no jala. Felicidades por tu logro :) Según yo, lo que estás haciendo hasta te sirve para aprender sobre distribuidos. Te pongo 8 en el lab de integrados por esta entrada.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. una pregunta que librerias utilizastes y porque a medio codigo aparecen unos botones a medio codigo??

    ResponderEliminar