Resistance is Futile

Servo + Arduino

Es posible controlar la posicion del eje de un servo desde la tarjeta Arduino, esto se logra enviando cierta cantidad de pulsos por segundo, lo cual el servo traduce como la posicion en la que se desea colocar el eje. Para realizar esta tarea de una forma mas sencilla Arduino posee una libreria llamada Servo la cual posee una clase que permite conectar el servo a los pines 9 o 10 de la tarjeta (estos pines soportan PWM) y colocar el eje en el angulo requerido.

Para controlar un servo se puede utilizar :

  • Servo servo1;
    Permite crear un objeto el cual representara el servo a conectar.
  • servo1.attach(numPin);
    Permite asignar como pin de conexion con el servo al pin 9 o 10 de la tarjeta
  • servo1.write(angulo);
    Permite cambiar la posicion del servo

A continuacion se muestra el codigo para generar el movimiento mostrado en el video :

 
#include <Servo.h>
#undef int
#undef abs
#undef double
#undef float
#undef round
 
Servo myservo; 
 
void setup() {
  myservo.attach(9);
} 
 
void loop() {
  myservo.write(0);
  delay(1000);
  myservo.write(90);
  delay(1000);
  myservo.write(180);
  delay(1000);
  myservo.write(90);
  delay(1000);
}
 

El servo se debe conectar a la alimentacion de la tarjeta, cable negro a tierra/GND y cable rojo a voltaje, el cable naranja debe conectarse al pin 9.

Para mayor informacion de la libreria :

http://arduino.cc/en/Reference/Servo


Servos

Un servo es un motor que no gira completamente y que puede posicionarse en cualquier angulo que este dentro de su rango de funcionamiento, de este modo es posible controlar la posicion actual del servo y el mismo corrige su posicion si se ve afectada. Los servos son muy utilizados en robotica como por ejemplo en la construccion de las articulaciones, lo cual permite controlar el el movimiento del brazo con gran presicion.

Internamente el servo posee un motor el cual cuenta con una serie de engranajes para aumentar la fuerza con que actua sobre el elemento a mover, asi como tambien posee un circuito electronico encargado de posicionar el eje en determinado angulo (generalmente tienen una capacidad de giro entre 0 y 180 grados), ademas de corregir la posicion del mismo si se ve afectado por una fuerza externa. El servo posee un conector con tres terminales dos para el suministro de la energia (tierra,voltaje) y un terminal que permite modificar la posicion por medio de PWM o modificacion por ancho de pulso. Los servos generalmente vienen acompañados de los tornillos para fijarlos, como tambien una serie de conectores para el eje que permiten utilizar el servo para diferentes propositos.

El servo que se muestra en el video tiene las siguientes caracteristicas :

Servo + Arduino

Existen una gran variedad de servos para gran cantidad de aplicaciones, la diferencias principales estan en la precision, la duracion, el torque y la velocidad.


Arduino

No he presentado oficialmente la Arduino en este blog, entonces aqui vamos :

Arduino es una plataforma abierta (tanto software como hardware)
de computacion fisica (interaccion entre el mundo fisico y el virtual en el computador)
de bajo costo, basada en una tarjeta o placa que posee un microcontrolador el cual
puede ser programado utilizando el lenguaje Wiring y C++
y que se conecta con inumerables aplicaciones en el computador

o como aparece en la pagina oficial

Arduino es una plataforma de fuente abierta para prototipado electronico
basada en un hardware y software flexible.
Desarrollada para todos aquellos que quieran desarrollar ambientes y objetos interactivos, artistas y entusiastas.

En terminos mas terrenales, Arduino es una tarjeta electronica multiproposito que posee su propio ambiente de desarollo y que puede ser utiilizada para crear objetos y ambientes que respondan a acciones externas, con esta tarjeta se puede crear desde un interruptor hasta robots, juegos de video, dispositivivos con localizacion geografica y muchos mas, no hay limites.

http://www.arduino.cc


Enviando Correo desde Amazon EC2

Otro servicio que debo configurar es el servicio de correo, el cual permita desde la aplicacion web enviar mensajes a los usuarios a sus correos o a sus celulares con SMS enviados a traves de email, para esto necesitaba un servicio de correo y el Postfix es el servicio por defecto con el cual viene el Ubuntu Server, pero en el caso de mi maquina en EC2 debia instalarlo por que solo tenia los paquetes basicos. http://www.marlonj.com/blog/2008/11/gis-en-amazon-ec2/

Para instalar el Postfix simplemente ejecutar y configurarlo como Internet Site (dejando la configuracion por defecto)

  • sudo apt-get install postfix

Al momento de realizar las pruebas los servidores de correo trataban como spam los mensajes enviados desde el postfix, esto se debe a que algunas personas han utilizado los servicios de EC2 para el envio indiscriminado de correo y por tal las direcciones ip de los servidores de Amazon han quedado almacenadas en los servicios antispam.

Por tal motivo busque una forma de hacer que el servidor enviara a otro servidor (smarthost) el correo para que este fuera quien finalmente enviara el mismo, primero prove con mi servidor de correo de Dreamhost pero no me fue posible debido a que el servidor en Dreamhost verifica la procedencia primero antes de realizar la verificacion de usuario. Despues me encontre que podia hacer que GMail enviara el correo, asi que hice los siguientes cambios :

  • Editar el archivo de configuracion y adicionar la configuracion para GMail
    vi /etc/postfix/main.cf
    relayhost = [smtp.gmail.com]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_pass
    smtp_sasl_security_options = noanonymous
    smtp_tls_CAfile = /etc/postfix/cacert.pem
    smtp_use_tls = yes
  • Editar el archivo con la informacion de autenticacion de mi usuario en GMail
    vi /etc/postfix/smtp_pass
    [smtp.gmail.com]:587    user@gmail.com:password
  • Mapear la clave
    sudo postmap /etc/postfix/smtp_pass
  • Crear el certificado
    cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem
  • Reiniciar el servicio de Postfix
    sudo /etc/init.d/postfix restart

Con esta nueva configuracion los correos enviados por el servidor, son pasados a mi cuenta de GMail la cual se encarga de entregar el correo, adicional a esto en mi bandeja de salida de correos quedan copias de todos los correos enviados lo cual puede ser molesto si un gran numero de estos.


LionGIS en Amazon EC2

Desafortunadamente al servidor de proyectos donde debia tener el proyecto del Sistema de Informacion Geografico se le quemo la fuente, por tal motivo estuve buscando una solucion para tener un servidor temporal de tal modo que pudieramos hacer pruebas antes de entregar los trabajos de este semestre, pero ya me cojio un poco la tarde para instalar uno en una maquina local, asi que lo monte el servidor utilizando los servicio del Amazon Elastic Compute Cloud.

Estos son los pasos a grandes rasgos que se deben realizar para crear un servidor Ubuntu Linux 8.10 con los paquetes necesarios para el GIS :

  • Tener una maquina con Linux para acceder al servicio, tambien se puede hacer desde Windows
  • Crear una cuenta de usuario en Amazon EC2
    http://aws.amazon.com/ec2/
  • En el menu Your Account seleccione la opcion Access identifiers
  • En la seccion de X.509 Certificate pulse el boton Create New para generar las llaves y certificados de seguridad.
  • Descarge la llave privada (recuerde que esta debe ser bien protegida) y descargue el certificado
  • Cree un directorio ec2 en el home de su cuenta
  • Copie los archivos descargados en el directorio
  • Descargue la herramientas de linea de comando y descomprima en el directorio ec2
    http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351&categoryID=88
  • Exporte las variables utilizadas por los scripts de acceso a EC2
    Cambie los valores deacuerdo a la distribucion de Java, la version de las herramientas ec2 y los nombres de los certificados
    export JAVA_HOME='/usr/lib/jvm/java-6-sun'
    export EC2_HOME=~/ec2/ec2-api-tools-1.3-26369
    export EC2_PRIVATE_KEY=~/ec2/pk-HXN7TZ2KPONB4F4L63M47FMY7F4HNBDF.pem
    export EC2_CERT=~/ec2/cert-HXN7TZ2KEXEB4F4T56M47FMY7F4HNBDF.pem
    export PATH=$PATH:$EC2_HOME/bin
  • Cree un par de llaves para autenticarnos con el servicio de EC2
    ec2-add-keypair gsg-keypair
  • Copie el contenido devuelto al archivo id_rsa-gsg-keypair
  • Cambie los permisos del archivo
    chmod 600 id_rsa-gsg-keypair ; ls -l id_rsa-gsg-keypair
  • Ejecute una instancia utilizando la imagen de sistema operativo mas conveniente
    En este caso utilizamos un sistema base de Ubuntu 8.10, para una lista actualizada visite http://alestic.com
    ec2-run-instances ami-7806e211 k gsg-keypair
  • Identifique el numero de instancia devuelto por el comando, por ejemplo i-ae0bf0c7
  • Describa la instancia para obtener el estado y la URL
    ec2-describe-instances i-ae0bf0c7
  • Identifique el nombre de la maquina, algo como ec2-67-202-7-236.compute-1.amazonaws.com
  • Autorice el acceso por SSH y Web
    ec2-authorize default -p 22
    ec2-authorize default -p 80
  • Conectese a la maquina utilizando ssh
    ssh -i id_rsa-gsg-keypair root@ec2-67-202-51-223.compute-1.amazonaws.com
    En este caso entramos como root al Ubuntu

Debemos instalar los servidores para prestar el servicio web, base de datos, mapas

  • sudo apt-get install sudo apt-get install apache2 php5 php5-mapscript postgresql postgresql-8.3-postgis postgis phppgadmin unzip
  • Habilitamos el modulo de paginas para los usuarios en Apache
    sudo a2enmod userdir
  • Creamos el directorio donde almacenaremos la aplicacion
    sudo adduser liongis
    cd /home/liongis
  • Creamos el directorio para las paginas
    mkdir public_html
  • Reiniciamos el servidor web
    sudo /etc/init.d/apache2 restart
  • Abrimos un navegador en nuestra maquina local y vamos a :

    http://ec2-67-202-51-223.compute-1.amazonaws.com/~liongis

    Nos debe mostrar el contenido del directorio

  • Creamos el usuario y la base de datos
    sudo -u postgres createuser -P liongis
    sudo -u postgres createdb -O liongis liongis
  • Para poder acceder remotamente la PHPPgAdmin debemos modificar su configuracion para habilitar el acceso remoto
    vi  sudo vi /etc/phppgadmin/apache.conf
  • Debemos modificar el estilo de fecha del motor de base de datos postgresql
    sudo vi /etc/postgresql/8.3/main/postgresql.conf
    Buscamos datestyle y cambiamos mdy por dmy
    Reiniciamos el servidor sudo /etc/init.d/postgresql-8.3 restart
  • Copiamos los archivos de la aplicacion :
    El framework de Prado prado.zip. la aplicacion web liongis.zip
    y el backup de la base de datos liongis.tar
    scp prado.zip liongis.zip liongis.tar liongis@ec2-67-202-51-223.compute-1.amazonaws.com:/tmp
  • Decomprimimos en public_html el Prado y el LionGIS
  • Restauramos el backup de la base de datos
    pg_restore -d liongis liongis.tar
  • Abrimos la aplicacion web

    http://ec2-67-202-51-223.compute-1.amazonaws.com/~liongis/liongis

Para detener la instancia debemos ejecutar el comando

  • Para obtener la lista de instancias en ejecucion
    ec2-describe-instances
  • Para terminar la instancia
    ec2-terminate-instances i-10a64379

Guia de Inicio Completa Amazon Elastic Compute Cloud :Getting Started Guide (API Version 2008-08-08)
http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/


Page 2 of 3123
Powered by WordPress | Designed by Elegant Themes