miércoles, septiembre 3

Arduino Apagar/Encender un Led con botones

Componentes: 2 botones de 4 pines, un resistor de 330 omhs, arduino uno, medio protoboard y los cablecitos, lo que obtendremos sera que con el boton A encienda el led y con el boton B lo apague:


  
Ingresamos este codigo al Arduino UNO:

    /*
    Adafruit Arduino - Lesson 6. Inputs
    */    
    int ledPin = 5;
    int buttonApin = 9;
    int buttonBpin = 8;    
    byte leds = 0;    
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    pinMode(buttonApin, INPUT_PULLUP);
    pinMode(buttonBpin, INPUT_PULLUP);
    }    
    void loop()
    {
    if (digitalRead(buttonApin) == LOW)
    {
    digitalWrite(ledPin, HIGH);
    }
    if (digitalRead(buttonBpin) == LOW)
    {
    digitalWrite(ledPin, LOW);
    }
    }


La primera parte se definen 3 variables de cada uno de los pines que se utilizan del Arduino (5,9 y 8), el buttonApin hace referencia al boton A y el buttonBpin hace referencia al boton B.

En la función "Setup" se asigna como variable de salida al ledPin (el numero 5) y las otras dos entradas como deben ser variables de entrada se utiliza el pinMode para asignarlos como tal.

La palabra reservada INPUT_PULLUP significa que sera utilizado como entrada, pero si no se encuentra nada mas conectado en el pin de entrada se tomara el valor de HIGH automaticamente, si no tomara el valor de LOW mientras el boton no se encuentre presionado.

Es por esa condicion de HIGH y LOW por la cual los botones se encuentran conectados a tierra para que no se encuentren con el valor LOW amenos que sean presionados.

Ahora para la condición solamente se ingresa en la función loop() para ver si el boton A se encuentra en tierra el led encendera, pero si el boton B se encuentra en tierra entonces se apagara.

    void loop()
    {
    if (digitalRead(buttonApin) == LOW)
    {
    digitalWrite(ledPin, HIGH);
    }
    if (digitalRead(buttonBpin) == LOW)
    {
    digitalWrite(ledPin, LOW);
    }
    }

Si el boton A se presiona el led encendera:


 Si el boton B es presionado el led se apagara:


Fuente
https://learn.adafruit.com/adafruit-arduino-lesson-6-digital-inputs/breadboard-layout

lunes, febrero 3

Arduino cambiar brillo de LEDS

Componentes: Un led del color que prefieras (cabe destacar que notaras un mejor cambio con el rojo), 3 resistores (10 KOhms, 5 KOhms, 330 Ohms), Arduino y medio protoboard.





Cabe destacar que el Arduino viene siendo una fuente de 5v lo que seria lo mismo que tener una batería conectada en los extremos positivo y negativo del protoboard, pero como estamos aprendiendo a usar el Arduino no esta de mas usarlo con algo demasiado sencillo que seguramente muchos ya sabrán y para los que aun no tienen idea los componentes deberán de estar conectados de la siguiente manera:



Una vez que lo tengas todo conectado empecemos a jugar con los resistores primero empezamos con el de 330 Ohms, conectamos nuestro Arduino y obtenemos:


Con el de 5 KOhms obtenemos:


Y con el de 10 KOhms notaras todavía mas la diferencia de brillo:


Ahora haremos el mismo procedimiento pero con el pin 13 y con el código que utilizamos en la entrada Arduino Parpadear el LED predeterminado, y empiecen con el de 330 Ohms, luego con el de 5 KOhms y por ultimo el de 10 KOmhs, y verán que el led empezara a parpadear.




Arduino Parpadear el LED predeterminado

Vamos a trabajar con un led que tiene predeterminado el Arduino que es el "Pin 13", para ello primero necesitamos abrir nuestro IDE previamente instalado y escribimos el siguiente codigo:

// Parpadear el LED 13
void setup(){
  pinMode(13,OUTPUT); // Declaramos el pin 13 como salida
}
void loop(){
  digitalWrite(13,HIGH); // Encendemos el led
  delay(1000); //Retraso representado en milisegundos 1seg = 1000mseg
  digitalWrite(13,LOW); // Apagamos el led
  delay(1000); //Esperamos 1seg
}
Para verificar que no tenemos errores en nuestro programa necesitamos darle click en verificar en nuestro programa IDE de Arduino:


Al finalizar de verificar el IDE nos informara si tuvo errores o no nuestro código:


Ahora que nos damos cuenta que no nos genero ningún error nuestro código lo podemos cargar a nuestro Arduino y para eso le tenemos que dar click en "Cargar" del IDE para que lo pueda trabajar el Arduino.


Una vez cargada notaran que el led 13 del Arduino empezara a parpadear.


Y como el programa quedara cargado en el Arduino cada vez que lo tengas encendido el led no dejara de parpadear hasta que vuelvas a cargar otro código o si te preocupa eso vuelve a cargar el mismo codigo simplemente cambiando la parte de Loop() agregale esto: 

void loop(){
  digitalWrite(13,LOW); // Apagamos el led
}
Y lo vuelves a cargar y listo el led se apagara.

martes, enero 21

Arduino Instalar IDE en Ubuntu 13.10

Bueno tenemos la ventaja de que Ubuntu 13.10 ya trae consigo nuevas cosas muy interesantes debo de decir (Si ya lo instale) y el Unity valla que si lo mejoraron me ha gustado y bueno para instalar el IDE para Arduino es todavía mas sencillo.

Abrimos el centro de software de "Ubuntu" y buscamos "IDE para arduino"


Esta instalación son cuestiones de clicks, le damos click en el botón instalar el que aparece al "pasar el mouse sobre el nombre de IDE para Arduino que se encuentra en el centro de software. Y procederá a instalarse.


Una vez terminada la instalación tendrás el IDE para Arduino instalado.


Tenemos las ventajas de que una vez que se conecta nuestro Arduino lo reconoce automáticamente (o por lo menos eso creo) por que igual no tengo otros para probarlos, pero de algo estoy seguro su configuración la trae por default para el Arduino Uno con el que yo dispongo. Y eso lo puedes verificar en el menú de "Herramientas -> Tarjeta -> Arduino Uno" en el área de Tarjeta podrás cambiarlo dependiendo el Arduino con el que cuentes. Y listo ya podremos iniciar la programación de nuestro Arduino Uno (o del que tengan).


jueves, enero 9

Sistema para gestión y monitoreo de unidades de emergencia y/o transporte (Raspberry Pi)

Les hablare de una aplicación mas para el Raspberry Pi, para que vean las posibilidades de proyectos que pueden realizarse con el Raspberry Pi. El proyecto tomo el nombre de "Sistema para gestión y monitoreo de unidades de emergencia y/o transporte" fue nuestra tesis aplicada en la Universidad del Caribe.

Los integrantes del equipo fueron: María José Ac Novelo, Yonni López Cortes y Saúl Vázquez Radilla.

El sistema consiste en que un operador base recibe una llamada de atención a un servicio o emergencia por parte de algún ciudadano de la comunidad, el operador base tiene la obligación de solicitar la dirección exacta del lugar que necesita la atención.

Computadora del operador base

En un mapa de Google Maps el operador base ubica el servicio o emergencia, una vez que es ubicado el lugar exacto, el programa procede a realizar una búsqueda de las unidades móviles mas cercana al lugar desplazando un botón para poder iniciar la búsqueda, y muestra de manera ordena las unidades móviles desde la mas cercana a la mas lejana.

El operador base puede escoger una sola unidad móvil o mas de una eso dependerá del operador, y una vez que se seleccionan las unidades se generan una posible ruta a seguir y se les envía a las unidades móviles. 

Unidad móvil 

En la unidad móvil se encuentra un Raspberry Pi, monitor de 7", un gps, un módem 3g, una cámara web y un teclado con mousepad, todo eso en un gabinete beta de triplay:




Una vez que el servicio o emergencia lo recibe la unidad móvil, en el monitor de 7" cuenta con un mapa de Google Maps donde se muestra siempre su posición actual, y al recibir el evento se muestra la posible ruta a seguir y se despliega un chat con el que tiene comunicación con el operador base y viceversa (operador base también tiene comunicación con la unidad móvil).

Tecnologías

Como saben la principal tecnología que fue implementada en este proyecto fue el Raspberry Pi, los problemas principales fueron la comunicación en tiempo real con el servidor y algunas configuraciones del Raspberry Pi. Cabe destacar que nuestro proyecto es totalmente en tiempo real gracias a la tecnología que permite trabajar el node.js

Y bueno otras de ellas fueron las siguientes:


Resultados



Trabajos a futuro

Se puede agregar sensores al dispositivo móvil, utilizar tecnología 4g en el modem, realizar una aplicación para que el cliente no interactué con el operador base e implementar algoritmos para tomar en cuenta el trafico.

miércoles, enero 8

Hardware Libre Arduino (Introducción)

Bueno ya he escrito algunas cosas del Raspberry Pi y también les hablare sobre que realizamos con la mini computadora para nuestra tesis aplicada en la Universidad del Caribe, pero ahora hablare y también trabajare con otro componente de Open Hardware que es el Arduino.

Computadora vs Arduino

Primero tengamos en mente a una computadora esta tiene un dispositivo conocido como procesador, se le puede conectar un mouse, un teclado o una cámara estos son dispositivos de entrada que envían información al procesador y este genera salidas una vez que procesa la información de los dispositivos de entrada; y estas salidas se pueden mostrar en dispositivos de salida como pueden ser bocinas, monitor o impresora.


Ahora veamos al Arduino como el procesador de una computadora que hace las mismas funciones y también le podemos ingresar dispositivos de entrada como botones, un sensor de fotocelula o un sensor de temperatura, que generan resultados del procesamiento de la información que realiza el Arduino y estos se pueden mostrar en dispositivos de salida como pueden ser motores, pantallas LCD o bocinas.


Arduino viene siendo una plataforma para realizar proyectos electrónicos que se pueden hacer con la integración de varios dispositivos como ejemplo, compañeros míos realizaron su tesis aplicada que  fue presentado en el Congreso de Ingenierías de la Universidad del Caribe 2013 y fue la automatización de una casa utilizando domótica donde encendían y apagaban un foco, un ventilador y abrían o cerraban una puerta desde una llamada telefónica. Y se pueden hacer diferentes tipos de proyectos.

Proyectos interesantes

Algunos proyectos que se pueden hacer con el Arduino son los siguientes:

* Música con dispositivos floppy

Un usuario de youtube con el nombre de "MrSolidSnake745" tiene una serie de vídeos que el realiza donde nos muestra 8 floppys generando canciones de diferentes artistas o interpretaciones de películas (una de ellas mi favorita que es la de Sherlock Holmes) y esto es posible emularlo utilizando un Arduino si se sigue este vídeo-tutorial y el código que se encuentra disponible en Github.


* Caja de percusión rebotica

El MR-808 es una serie de robots y autómatas que emulan la caja de ritmos TR-808 con resultados que se pueden apreciar en el vídeo y que realmente suena increíble.



* uWave, microondas diferente

Desconocia que hace tiempo samsung creo un refrigerador modelo RFG299 modelo francés que como las siguientes imágenes lo muestran cuenta con una pantalla tactil de 7" que sirve para controlar algunas de las funciones del electrodoméstico, como la temperatura a la que enfría , el estado del filtro de agua, horarios, información nutrimental de los alimentos, fotos y más.


Con el Arduino hicieron algo parecido con el microondas y quizás no pueda caber en el presupuesto de bolsillos como el mio pero la idea parece algo interesante, lo que demuestra que el Arduino puede hacer que sean más inteligentes los electrodomésticos como lo hicieron con este microondas:


* Domótica 

Como lo mencione antes con el arduino también se puede hacer domótica ya sea con ayuda de un Raspberry Pi o sin el, Arduino es la base de pequeños sistemas inteligentes que permiten automatizar una casa.



* Minecraft

Aunque el Arduino no esta destinado para poder jugar Minecraft pero si para el Raspberry Pi, por lo tanto implementar un Arduino con el Raspberry Pi puede otorga resultados diferentes que eso lo puede explicar Minestation.


Arduino Uno

Existen varios tipos de Arduino, implementando diferentes recursos para cada uno de ellos, pero el que es mas utilizado por los estudiantes para aprender a usar el mismo, es el Arduino Uno el cual yo dispongo y estaré aprendiendo con ustedes mientras voy escribiendo mis resultados en el blog así es que estén atentos y haber que aprendemos a hacer.


martes, enero 7

Respaldar datos de memoria SD (Raspbian)

Cuando cuentas con información importante en tu memoria SD, microSD o cualquier otro dispositivo que desees respaldar su imagen, puedes utilizar el Windisk32 con el que utilizamos para instalar Raspbian desde Windows 7 en el memoria.


Primero insertamos la memoria a copiar, una vez insertada el programa Windisk32 reconocerá automáticamente el dispositivo.


Ahora procedemos a escribir en el textbox nombrado "Image File" la ruta donde queremos grabar la imagen con el nombre y una extensión de .img

En mi caso lo grabare en la ruta C:\Users\Saúl\Desktop con el nombre de Proyecto.img como se muestra en la imagen:


Una vez que tenemos escrito la ruta con el nombre de la imagen a guardar procedemos a darle click al botón read, y empezara a grabar la imagen y como le asigne la ruta del escritorio notaran que aparecerá la imagen en el titulado Proyecto:


Una vez que la imagen es correctamente grabada en la ruta que se especifico previamente el programa de Windisk32 mostrara el siguiente mensaje:


Y al final tendrán la imagen de su memoria respaldada:


domingo, noviembre 10

Congreso Ingenierías 2013 en la Universidad del Caribe



Como saben cada año en la universidad del caribe, se realiza un congreso de ingenierías del cual invitan a ponentes para presentar las nuevas de la ingeniería y este fue mi ultimo congreso en la universidad como estudiante y ahora una breve reseña de lo que tuve la oportunidad de presenciar por cuestiones de tiempo:

Día I:

Dr. Ivan Serna, ingeniero de software en Google nos presento la ponencia "Análisis de optimización de los algoritmos PageRank" y estuvo platicando sobre algunos componentes del PageRank, claro que todo lo que nos estuvo platicando se encuentra publicado en el Internet, ya que la realidad del mundo de Google se encuentra como secreto. Y para todos aquellos que gustaron de esta ponencia quizás también gusten ampliar su conocimiento con esta lectura "El Lado Oscuro de Google" que presenta más información de este tema.



Proyecto "Concierge Management App" una aplicación para servicio a cliente, este consiste en virtualizar a la persona que se encarga de atender al cliente (huesped) cuando llega a un hotel se puede conocer el lugar donde nos encontramos, el calendario, el tiempo, los servicios que existen en el hotel (spa, restaurantes, eventos, ...) y podrán reservar estos servicios. 




También cabe destacar que mis compañeros Eduardo Maldonado, Abraham Benavides y José Moctezuma se presentaron en la Feria de Iniciativa de Negocios UJAT (Universidad Juárez Autónoma de Tabasco) en la que al compañero José fue entrevistado en el evento:



Proyecto "Sistema para gestión y monitoreo de unidades de emergencia y/o transporte" nosotros nos apegamos al Open Hardware utilizando un Raspberry Pi para la implementación de un equipo móvil en las unidades por cuestiones de tiempo no tuvimos la posibilidad de realizar una muestra de nuestro proyecto; pero nos falta la presentación final ahí esperamos que nos alcance.


Muestra de la unidad móvil del proyecto que consta con características como ubicación en tiempo real en un Google Maps, posibilidades de enviar transmisión de vídeo, un chat para una comunicación con la central, un monitor de 7", un hub usb de 7 puertos, un mini teclado con un mouse táctil integrado, cámara web y un dispositivo GPS, cabe destacar que no se dejara montado como se muestra en la imagen se esta trabajando en una gabinete montable dentro de la unidad, que esperamos próximamente presentarles.


Día II:

Proyecto "POS", dedicado a los profesores que al final del semestre deben realizar un reporte de todas las actividades que realizaron durante el mismo, dando la mejor exposición del proyecto durante el congreso de ingenierías 2013 ganaron un reconocimiento por lo mismo.


También cabe destacar que la compañera presento el proyecto en el Congreso en Ixtlahuaca en compañía de profesores de la institución.


Proyecto "Desarrollo de un prototipo de sistema de planificación de recursos empresariales (ERP) para la microempresa Autopartes Aguilar." los compañeros de telemática Karla Tirado, Jonathan Horta y compañeros de industrial, claro que cada quien orientado a la carrera unos partes de administración y los otros en el área de programación. Demostrando el compañerismo entre ingenierías sin ningún problema.


Proyecto "Smart Home con VoIP", los compañeros dieron una demostración de la domótica con este dispositivo que también pertenece a la familia de Open Hardware que es el Arduino con una maqueta con foco, realizaron en vivo una demostración; realizando una llamada que se les presentaba un menú con numero de extensión para prender y/o apagar el foco desde la llamada.


Lic Ricardo M. Hernández, nos presento su conferencia de "Internet Hoy" haciendo énfasis de que cada año esa conferencia cambia constantemente por los cambios constantes que va adquiriendo el Internet como tal.


Día III:

Lic. en Sistemas Leonardo Martín, nos presento su conferencia de "Patrones RIA" tecnologías que utiliza el Internet, algunos tips de como no excederse con estos patrones y enseñándonos una pagina que desconocía donde guarda las antiguas apariencias de las paginas web en Web Archive.


Después no tuvimos la suerte de contar con la conferencia de "Desarrollo ágil de software" por cuestiones personales del expositor, nos quedamos con deseos de escucharla ya que queríamos tips para nuestros proyectos terminales pero bueno, las cosas pasan por algo.

"Clausura y Premiación" presentes los profesores encargados en especificas áreas del instituto entregaron a mi compañero Abraham Benavides su premio por haber ganado el concurso del cubo rubik.


Y al final como todos los congresos de ingenierías de la universidad del caribe salí contento del mismo aunque halla tenido sus detallitos, pero al final todo salio bien. Y como mencione antes por cuestiones de tiempo no me pude presentar en demás conferencias, concursos y/o taller. Pero felicidades Universidad del Caribe por un año mas de congreso.


domingo, octubre 27

Auto Script al iniciar el Raspberry Pi

Ya tenemos la configuración en modo kiosko del Raspberry Pi y también el auto login/startx ahora si después del inicio del Raspberry Pi necesitáramos ejecutar algún comando...

Para eso vamos a crear un script que se ejecute justo después de hacer el auto login, primero creamos el archivo en el directorio home:

$ nano ~/node.sh

En mi caso yo ejecutare varios comandos en el mismo script por lo tanto lo dejo de la siguiente manera:

#!/bin/bash
echo node.sh : Ejecutando servidor
cd ~/proyectoT
sudo chmod 775 /dev/ttyUSB0
node server-movil.js &

lo hacemos ejecutable:

chmod ugo+x ~/node.sh

Ya que esta creado el script con los comandos que necesites ejecutar procedemos a modificar el siguiente archivo para que se ejecute al inicio.

sudo nano ~/.bashrc

Nos dirigimos al final del archivo y agregamos las siguientes lineas:

# Run node server
echo .bashrc: Ejecutando servidor node.js
bash node.sh

Una vez hecho esto pasamos a reiniciar el Raspberry Pi y esto sucede:

Iniciar el Raspberry Pi con Auto Login y Auto StartX


Esta entrada es la continuación de la configuración del modo kiosko del Raspberry Pi, para evitar que exista la necesidad de ingresar los datos de usuario al momento de iniciar el Raspberry Pi.

Auto Login

En una terminal ejecutamos el comando de sudo nano /etc/inittab ahora bien he visto que varios blogs dicen que debemos realizar los siguientes pasos:

1. Encontrar la siguiente linea en el archivo de inittab:

         1:2345:respawn:/sbin/getty 115200 tty1

2. Comentar la linea:

        #1:2345:respawn:/sbin/getty 115200 tty1

3. Por ultimo ingresar esta linea justo de bajo de la que se comento:

        1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

Y guardarlo...

Otra forma de Auto Login

Yo siempre me quedo estancado en el primer paso de como lo explican los demás blogs, lo que sucede es que nunca encuentro esa linea... la que mas se parece a esa linea seria la siguiente:


1:2345:respawn:/sbin/getty --noclear 38400 tty1

Quizás sea por la distribución que manejo (2013-09-25-wheezy-raspbian), la verdad lo desconozco, comente esa linea:

#1:2345:respawn:/sbin/getty --noclear 38400 tty1

Y justo de bajo de la misma agregue lo siguiente:
1:2345:respawn:/bin/login -f $Usuario </dev/tty1 >/dev/tty1 2>&1

Donde $Usuario es el usuario que te encuentras trabajando en mi caso quedaría así:

1:2345:respawn:/bin/login -f $Usuario </dev/tty1 >/dev/tty1 2>&1

Guardamos los cambios y se reinicia el Raspberry Pi y obtendremos:


Auto StartX (LXDE)

Ahora para que inicie automáticamente el modo gráfico modificamos el siguiente archivo con:

sudo nano /etc/rc.local

Se van hacia el final del archivo y justo arriba del exit 0 agregan la siguiente linea:

su -l pi -c startx



Guardamos y reiniciamos el Raspberry Pi y nos da como resultado: