Entradas

Mostrando entradas de diciembre, 2012

El Muro de la Vergüenza

Antes que nada, disculpas a todos por no haber actualizado mi blog la última semana con la entrada sobre Arduino y la Raspberry PI. Como se imaginarán la última semana del año siempre es algo movida, sin embargo espero abrir el 2013 con la nueva entrada aprovechando que tengo algunos días libres del trabajo. Para cerrar el año, es traigo un pequeño "Muro de la Verguenza". Desde que dejé la Raspberry PI en línea (hace 7 días) con el puerto SSH abierto he tenido numerosos intentos de acceso no autorizados vía SSH. Realmente la RasPI no tiene nada interesante, sin embargo para un SPAMMER una máquina con acceso a Internet siempre es algo valioso. Ahora, es muy difícil que accedan a la RasPI si no es con un Exploit 0-Day ya que los logins de usuario/password están desactivados, sin embargo es divertido verlos intentar. Por eso les dejo "El Muro de La Vergüenza" en la siguiente dirección: Has Clic Aquí para abrir El Muro de La Verguenza La lista de accesos ...

DNS Dinámico en la Raspberry PI

Imagen
En entradas anteriores hablamos de como instalar un servidor web de manera sencilla en nuestra Raspberry PI , luego explicamos como armar un complicadísimo puente wireless y realizar la redirección de puertos en nuestro router para acceder a una página web. Sin embargo habrán notado que mi Raspberry PI es accesible desde la dirección raspi.teubi.co bajo este mismo dominio; En esta entrada les voy a explicar como pueden obtener un DNS dinámico utilizando servicios como los de no-ip.com y dyndns para poder actualizar dinámicamente la IP de su Raspberry PI o de cualquier server que tengan bajo una conexión con IP pública dinámica.

Haciendo un "puente wireless" para la Raspberry PI

Imagen
Si han estado revisando mi últimos videos, notarán como me toca trabajar literalmente "en la cocina". Sucede que junto a la cocina tenemos un pequeño comedor que es una mesita de vidrio templado que me parece maravillosa para trabajar con la Raspberry PI y el Arduino ya que tiene espacio y puedo estar cortando cosas sin miedo a rayar nada. El problema es que mi módem se encuentra en una sala de la casa que no tiene mucho espacio para trabajar así que necesitaba encontrar una forma de conectar la RasPI sin tener que sacar cableado UTP ya que primero no tengo y segundo tenía mucha pereza de comprar un dongle Wireless. Voy a explicar en esta entrada mi configuración de red por si a alguien es útil, aunque lo más probable es que termine comprando un dongle Wireless para la RasPI. Esta configuración les puede servir adicionalmente por si tienen un servidor web en otro segmento de red que no está conectado directamente al módem de Internet (en este caso mi RasPI).

Instalando Lighttpd+PHP 5+Sqlite en la RasPI

Para la serie de articulos de Arduino y Raspberry PI estaba pensando en hacer un pequeño dispositivo que se pudiera controlar vía Internet. Para ello necesito instalar un servidor web con soporte de PHP en el que pudiera programar una sencilla aplicación web. En esta corta entrada, les voy a guiar paso a paso para realizar la instalación de Lighttpd+PHP 5+Sqlite. Para ello solo van a necesitar su Raspberry PI, asegurarse de que está conectada a Internet y seguir estos sencillos pasos. Ojo, como no quiero simplemente darles una "receta de cocina" que diga "ejecuta estos comandos", intentaré comentar cada uno de los mismo, trataré de explicar que hace y para que sirve y espero que en el camino también aprendan algo de lo que están instalando en vez de seguir ciegamente los comandos que un extraño en Internet les ha dado.

Manejo de Interrupciones con Arduino

Imagen
El artículo anterior conectamos un simple display de 7 segmentos a nuestro Arduino y programamos un sencillo contador. Pero... ¿Qué tal si queremos interactuar con eventos externos? Una de las formas comunes de interactuar con cosas que suceden "fuera" de nuestro control es por ejemplo monitorear el estado de las líneas. Dentro de nuestro "loop" principal podemos leer continuamente el valor de una línea de entrada y ejecutar por medio de una condicional un código especifico en caso de que detectemos un cambio. El problema de este método es que el código se vuelve sumamente complejo cuando tenemos que monitorear muchas cosas o cuando nuestro loop principal simplemente tiene que hacer cosas que toman demasiado tiempo. En esta entrada vamos a comprender como utilizar las interrupciones externas del Arduino. Esto nos será de mucha utilidad para interactuar ya sea con el usuario o con otros dispositivos de hardware que emitan "señales" que nos permit...

Fabricando un contador simple con Arduino y un display de 7 segmentos

Imagen
Luego de la entrada sobre interconexión entre la Raspberry y el Arduino vía Serial , vamos a comenzar una serie de entradas donde construiremos distintos módulos que nos permitirán conocer las distintas funcionalidades básicas del Arduino. Luego de finalizar esta serie de artículos tendremos un pequeño módulo de pruebas que será capaz de realizar realizar algunas tareas interesantes: Desplegar información a traves de un display de 7 segmentos. Capturar eventos del usuario mediante pulsadores. Monitorear y controlar nuestro Arduino mediante la conexión serial que probamos previamente. Si bien los módulos pueden construirse por separado y prácticamente hemos cubierto la mitad del tercer punto, pensé que sería más interesante ir armando cada módulo paso a paso y luego poner todo en conjunto para ver como trabaja. En esta primera entrada vamos a hacer uso de las funciones digitalWrite para controlar un pequeño display de 7 segmentos conectado a nuestro Arduino Mega.

Conectando la Raspberry PI al Arduino vía Serial

Imagen
De bachiller, hace ya algunos años por cierto, estudié una opción técnica en electrónica. Esto fué así porque en algún momento de mi vida quise ser ingeniero electrónico (o algo que se le asemejara). Lástimosamente, esa rama de la ingeniería no tiene mucha demanda en mi país y la verdad al descubrir la computación me di cuenta que era algo en lo que no era nada malo, me gustaba bastante y actualmente es lo que me da de comer. Sin embargo, el pasar de los años no ha logrado hacer que pierda el cariño por la electrónica y esa magia especial que tiene el "inventar" o "armar" dispositivos que simplemente hagan cosas interesantes por muy pequeñas que sean. Actualmente, resulta muchísimo más facil el armado de prototipos para todos aquellos cuyo hobby o profesión sea la electrónica. En esta entrada vamos a conocer al Rasberry PI, luego al Arduino y vamos a conectarlos vía puerto serial. Al final, podrán usar esta configuración para conectar sus Arduinos (o cualquie...

Redimensionando Imágenes con PHP y GD

Una de las tareas más comunes a la hora de desarrollar aplicaciones web, es la de redimensionar las imágenes que envían los usuarios. PHP a través de la extensión GD, provee de una serie de funciones que nos facilitan este trabajo. En esta entrada explicaré un sencillo algoritmo para redimensionar manteniendo el aspecto, es decir redimensionar una imágen sin que esta se deforme. El problema: Imaginemos que ustedes han creado una super-aplicación que va a sacar a Flickr fuera de línea. Sin embargo todos sus usuarios están enviandoles fotografías de 10Mpx. ¿Como hacer para generar los thumbnails y versiones en distintos tamaños desde php? La siguiente función se encarga de redimensionar una imágen manteniendo el ancho y alto dentro de los límites especificados. Así si nuestra imagen original tiene 1600x1200 de tamaño y especificamos 800x800 en los parámetros la imagen redimensionada resultante tendrá 800x600. function resizeImage($originalImage,$toWidth,$toHeight){ /* Esta f...

Convirtiendo Gráficos Vectoriales (SVG) en PNG programáticamente

Imagen
Trabajando en unas cosas de la oficina me vi en la necesidad de desplegar la información de tendencias de precios en una página web; Sinceramente, no soy nada amigo de Flash, necesitaba algo estándar, que tuviera la posiblidad de agregar interactividad y que al mismo tiempo me permitiera trabajar directamente con los datos en vez de tener que hacer todo a mano. Buscando un poquito en google me topé con d3js - Data-Driven Documents . d3js es una biblioteca de Javascript que permite crear visualizaciones de datos de una manera un poco fuera de lo común usando Gráficos Vectoriales Redimensionables(SVG) . En esta entrada no pretendo explicar como usar d3js sino cómo resolver la siguiente pregunta que me hizo un usuario luego de ver las gráficas que había generado con esta herramienta: ¿Se puede descargar la gráfica?

¡Hello World! en Java (Estricto al paradigma OO)

Esta será una entrada super corta. Cuando uno aprende un lenguaje de programación uno de los primeros ejemplos que le dan es el famosísimo "Hello World!", Java en este aspecto no es la excepción. Sin embargo me encuentro con que el ejemplo mas sencillo realmente no es OO. public class SayHello { public static void main(String args[]) { System.out.println("Hello World!"); } }  ¿Muy lindo no? El problema es que no considera la orientación a objetos y es un simple ejemplo de programación estructurada al estilo de C. Comencemos por la función "main", esta es una simple convención. Todo programa tiene que tener un punto de entrada al iniciar su ejecución, se decidió para mantener la sintaxis similar a otros lenguajes que el punto de entrada de una clase Java fuera la función main junto con los parámetros de la linea de comandos que se guardan en el arreglo args[]. ¿Que tal si hacemos un SayHello? Realmente orientado a objetos. public cla...

Variando la intensidad de un LED en Arduino con PWM

Imagen
El día de ayer recibí mi Arduino Mega , esta es una pequeña tableta creada especialmente para hacer prototipos electrónicos. En lo personal me llamó mucho la atención porque es sumamente fácil de programar y utilizar. Si son de la gente que les encanta hacer proyectos electrónicos Arduino es una excelente solución. En esta entrada intentaré explicar una aplicación básica de Modulación del Ancho de Pulso (PWM) para el cambio de la intensidad de un LED.