¿Qué es el Internet de las Cosas?

internet-de-las-cosas

Te imaginas poder programar el tiempo de tostado de tu pan para el desayuno del día siguiente desde la terminal del aeropuerto en Mumbai a través de tu dispositivo móvil, ¿suena a los Supersónicos, cierto?. ¡Pues no está para nada alejado de la realidad!, es totalmente posible gracias a la tecnología evidentemente y al concepto Internet de las Cosas.

El Internet de las Cosas o IoT (por sus siglas en inglés Internet of Things), es un concepto que cada vez se hace más notorio en nuestra vida diaria, se refiere a interconectar dispositivos de uso cotidiano a Internet.

 

Hablemos sobre “The thing” . . .

«Cosa», este término se refiere a cualquier “objeto” (por ejemplo un horno de microondas, la licuadora, el tocadiscos de la abuelita, la puerta principal, etc.) que mediante la integración de la electrónica necesaria (comunmente sistemas embebidos) le proporcionen funcionalidades de comunicación y/o control remoto, las cuales originalmente no estaban previstas en su diseño, permitiéndonos de esta manera controlar o monitorear desde cualquier parte su funcionamiento gracias a la conexión que este tiene a internet.

Diversos factores amplian el campo de acción del Internet de las Cosas, por ejemplo la actualización del Internet Protocol versión 6 (IPV6), esto es algo crucial pues podemos asignar una dirección IP a todos y cada uno de los relojes de mano que existen en el planeta Tierra y aún así nos sobrarían direcciones IP para regalar, ¿asombroso no?.

 

Organizando nuestras ideas . . .

Cabe aclarar que este concepto no es nada nuevo desde hace más de tres décadas varios gigantes del internet y tecnología han trabajando para lograr lo que ahora todos conocemos como dispositivos inteligentes (cosas), equipos  que hacen la vida del usuario más práctica.

Kevin Ashton es la persona quien acuñó el término Internet de las Cosas en el mundo durante una presentación cuando trabajaba para la multinacional Procter & Gamble en 1999. En ese entonces, el término quedó flotando en el medio tecnológico y fue hasta el 2009 que se retomó gracias a la potencialización de comunicaciones inalámbricas, los avances significativos en dispositivos MEMS (MicroElectroMechanical Systems), el acercamiento masivo del internet a la mayor parte de los hogares e industrias del mundo y curiosamente la llegada de Twitter pues el uso del hashtag #IoT se hizo muy popular entre los jovenes desarrolladores posicionándolo fuertemente en la industria.

 

 

Beneficios de las «cosas»

Podrías estar preguntándote, ¿ en que me puede beneficiar el IoT?, ¡en todo!, imagina que una persona padece diabetes y necesita estár monitoreando sus niveles de glucosa en la sangre (triste pero real) pues con un dispositivo dotado de los sensores necesarios se recavan las muestras y se transfieren automáticamente a la base de datos de su institución de salud donde llevan su historial clínico y en caso de alguna contingencia, se alerta a los servicios de emergencia para atendender de inmediato, reduciendo de esta manera el tiempo de respuesta al mínimo y ampliando enormemente la esperanza de vida de la persona.

En toda la industria se ha aplicado ya este concepto por ejemplo en las SmartTvs que se conectan a internet y te proponen una programación de acuerdo a tus gustos, o los refrigeradores que llevan el control de la comida para que estés al pendiente de lo que hace falta o no. En la medicina con los marcapasos que tienen conexión con el exterior para que los médicos puedan configurar y monitorear su estado y permitir que el paciente lleve una mejor calidad de vida.

 

La receta para el pastel . . .

Gracias a la introducción en el mercado “maker” de tecnologías como Arduino, Raspberry, Beaglebone, Tiva, etc, se ha facilitado la implementación del IoT pues existen infinidades de sensores, actuadores, etc. de fácil interconexión con un microcontrolador reduciendo la electónica necesaria a módulos muy amigables, así como las IDEs de programación se han desarrollado de tal forma que sean muy intuitivas para el usuario poco experimentado.

Los foros y blogs han jugado un papel muy importante pues es ahí donde la mayoría de makers buscan la información que requieren para lograr sus objetivos apoyados desde más usuarios noveles hasta usuarios avanzados de empresas que apoyan esta corriente.

 

iot-architecture.png

Arquitectura del Internet de las Cosas

 

Como ya vimos, esta nueva forma de interactuar con la tecnología está caminando a pasos de gigante posicionándose de una manera muy importante en el mercado internacional. 


Después de esto, los Supersónicos no se ven tan descabellados, ¿verdad? .

 

En próximos artículos nos centraremos en desarrolladar nuestros primeros pasos en el maravilloso mundo del  IoT.

¡Hasta la próxima!

 

 

iot

Introducción al WindowBuilder en JAVA [Eclipse]

¡Hola amig@s buen día!

En esta ocasión haré una pequeña y rápida introducción al desarrollo de Interfaces Gráficas de Usuario mejor conocidas como GUI del inglés Graphical User Interface en JAVA, las cuales son sumamente útiles para dar un aspecto más profesional a nuestras aburridas aplicaciones en consola y facilitar el manejo de alguno de nuestros desarrollos electrónicos.

Usaremos el plugin WindowBuilder de Eclipse el cual nos permite crear interfaces de una manera sumamente rápida, similar a como se desarrollan en Netbeans.

Pues bueno, comencemos . . .

1)  Instalando WindowBuilder

El primer paso será abrir nuestro Eclipse en mi caso uso la versión 4.6.2 (Neon) 
0

Paso siguiente nos vamos a Help -> Install New Software 

13

Luego abrimos el navegador de internet  y entramos al sitio https://eclipse.org/windowbuilder/ y damos click en el botón amarillo que dice Download, nos llevará a otra página donde debemos de seleccionar la versión de Eclipse en la que vamos a usar el plugin en mi caso la 4.6 [Neon]. Damos click sobre Link en la columna Update Site nos manda a la última página que tiene las instrucciones de como instalarlo.

Instalarlo consiste en copiar la URL de la útima página que se nos abrio en el sitio de Eclipse (donde están las instrucciones ) y la pegamos en el apartado de nuestro Eclipse donde dice Work with:

14

y damos click en el botón de Add. Nos aparecerá abajo el plugin, lo palomeamos y damos click en Next o Finish según sea el caso. [A mi no me aparace ya que lo tengo ya instalado].

Una vez terminado reiniciamos el Eclipse para asegurarnos que todo ande bien. Si todo anda de maravilla nos debe de aparacer la ventana como la conocemos, en mi caso:

1

2) Creando un nuevo proyecto. . . 

Hasta aquí todo va de diez, ahora lo que  procede es  crear un nuevo proyecto de Java como siempre lo hemos hecho. Nos vamos a File -> New ->Project

2

Se abre la ventanita de tipo de proyecto, nosotros seleccionamos Java ->Java Project y le damos a Next. Luego escribimos el nombre de nuestro proyecto

4

5

y clikeamos en Finish.

Una vez hecho todo lo anterior nos aparecerá el administrador de proyecto con la estructura habitual de un proyecto de JAVA. Nos vamos a dirigir a la carpeta de SRC  y con el botón derecho le damos click y nos vamos a New -> Other  en el menú contextual que apareció.

7

Nos aparece en seguida la ventana de selección de proyecto nuevo, buscamos el que dice WindowBuilder , desplegamos su contenido y damos click en Swing Designer y por último en Application Window

Se abre la ventana de nueva aplicación donde introduciremos sólamente el Nombre obviamente en el campo Name y damos click en Finish.

3) Mi primera ventanita . . . 

Una vez hecho todo lo anterior nos debe de quedar una pantalla similar  a la siguiente captura donde vemos el código de inicialización del plugin para nuestra ventanita :

10

Si miramos debajo del área donde se encuentra escrito el código veremos dos pestañitas que dicen Source y Design.

En la primera podemos acceder al codigo fuente que está detrás de nuestra ventanita, es donde trabajaremos para dar toda la funcionalidad a nuestros elementos gráficos. La segunda es el editor gráfico, el cual dispone de una amplia paleta de objetos comunes en los sistemas operativos gráficos (botones, slider, progressbars, textareas, textfields, etc.) y es en esta donde comenzaremos. Damos click en la pestañita de Design y aparecera una ventana en blanco como la siguiente imagen

15

Ahora damos click en el componente que dice GroupLayout este es un layout que nos permite desplazar los objetos en la posición que nosotros queramos a lo largo y ancho de la ventanita creada (más adelante hablaré de los difertentes tipos de layouts) y nos situamos sobre la ventanita, veremos que se enmarca de color verde damos click ahí y se liberará el cursor.

Ahora vamos a añadir dos elementos un Jlabel y un JButton de la misma forma que hicimos con el layout al sotarlos nos perdirá un nombre texto que aparecerá por default yo soleccioné los que vemos en la imagen

16

podemos mover los componentes dando click sin soltar sobre ellos y arrastrándolos. Una vez colocados donde queramos, damos click en el botón y veremos que se «selecciona «, ahora  vamos a ir al panel de Propiedades del componente (donde dice Properties) y clickeamos sobre el primer botón que dice su Alt (Show events, es como una letra «c» en un circulo verde)

17

Se desplegarán todos los eventos posibles para ese tipo de componente  buscamos el que dice mouse y desplegamos su contenido. Nos aparece el que dice clicked damos doble click sobre ese y nos mandará a su sección en código

19

Busca la parte donde escribí el comentario y ahí es justo donde vamos a escribir código para que se ejecute al dar click sobre el botón. Va a quedar así en mi caso:

20

Añadi dentro de la función mouseClicked() el código:

txtTexto.setText(» ¡HOLA MUNDOOOO! «);
btnBoton.setText(«¡Me has presionado!»);
System.out.println(«También aquí en la consola decimos : ¡HOLA MUNDO!»);

La primera línea usa el métdo setText con argumento «¡HOLA MUNDOOOO!» el cual cambia el texto que tenia en un principio el objeto txtTexto que es nuestro JLabel.

La segunda línea hace lo mimso pero sobre el objeto btnButton que es nuestro botón y por último la tercera línea imprime en la consola el texto encerrado entre comillas.

Hecho esto, daremos click en el botón verde de la barra de herramientas (ese como de play) para compilar y ejecutar nuestro ejemplo. Si todo va bien nos aparecerá nuestra ventanita funcional con nuestros objetos

21

Y si clickeamos en el botón veremos como resultado :

22

¡¡Hey funcionó!!

Como vimos no es difícil crear una GUI para nuestros proyectos ya sean de programación o de electrónica. Yo  uso mucho esto en el desarrollo de aplicaciones de controL, y monitoreo de los sistemas electrónicos que desarrollo y me ha funcionado muy bien.

Más adelante escribiré sobre como comunicarnos por puertos seriales para por ejemplo leer sensores de temperatura, de humedad, acelerómetros, comunicarnos con microcontroladores desde la computadora, etc.

 

¡Hasta la próxima!

Desmontando un controlador MIDI

Hola, antes que nada quiero dejar en claro que durante el desarrollo de este pequeño artículo ningún controlador resultó herido XD.

La idea de escribir este artículo surgió debido a que nos encontramos desarrollando una serie de equipos en EDAX Audio  basados en MIDI así mismo software de control para estos dispositivos  y la curiosidad me obligó a ver las entrañas de este controlador fabricado por M-Audio, además de que muchxs de nostrxs tal vez tenemos uno pero nos da temor desarmar tan preciados instrumentos así que decidí tomarme el atrevimiento de mostrarles que hay tras esas bonitas carcasas de plástico.

En específico el modelo que desmontaré es KeyRig 49 el cual es un teclado controlador de 49 teclas con  pitch bend y modulation wheel además de poderle añadir un pedal de sustain. Es alimentado por medio del puerto USB del ordenador.

¿Qué es un controlador MIDI?

Un controlador MIDI a grosso modo es un dispositivo electrónico que genera mensajes MIDI al tener interacción con el ejecutante y que son enviados «en tiempo real» a la PC para ser tratados y convertidos en sonidos audibles. Existen infinidad de controladores MIDI, los más comunes son los teclados pero también hay baterias, guitarras, bajos, superficies de control por mencionar algunos ejemplos.

Nótese que escribí entre comillas -tiempo real- esto lo hago porque puede que al conectar sus controladores sin ningún ajuste previo, se den cuenta de que existe cierto retardo entre su ejecución y el sonido producido por la computadora, esto es debido a que dependemos de varios factores como son: la velocidad del reloj de la computadora, los drivers de la tarjeta de audio, la tarjeta de audio, el cable usado entre muchos otros más. Algo importante que debemos de tener en cuenta es que ese retardo es algo inherente de cualquier dispositivo electrónico y jamás podremos eliminarlo por completo. Lo que si se puede hacer es disminuirlo al grado que no sea del todo perceptible o que no interfiera en nuestras actividades.

Otro aspecto que debemos de tener en cuenta siempre con respecto a nuestros controladores MIDI es que estos aparatos NO MANEJAN NINGUNA SEÑAL DE AUDIO sólo como ya lo mencioné trabajan enviando y recibiendo mensajes que llevan características para permitir al software en la computadora generar el sonido.

Recomendaría que primero leyeras Introducción al protocolo MIDI [Parte 1] donde te podrás dar una idea de como son estos mensajes y qué información es la que llevan.

Bueno, dejemos de lado la teoría y comencemos presentando a nuestro paciente. . .

keyrig-49

Quitando tornillos . . .

Procederé a quitar todos los tornillos inferiores para permitirnos apreciar el interior. De este paso no dejaré imágenes ya que considero que no es necesario.

Primer encuentro . . .

Primero quité todas las teclas para poder acceder  al PCB donde se encuentran los push buttons.
1

Quitando esto nos encontramos con esta bonita imagen de todo el equipo desnudo.
2

En esta imagen vemos las dos PCBs que conforman al equpo. La color café es la parte de control del controlador y la otra es la parte donde se recolectan los datos (o sea donde están las teclas).

3

Corazón del controlador

4

Esta tarjeta esconde detrás un gran secreto. . .  el corazón de este bonito aparato, un microcontrolador de 8 bits de la empresa taiwanesa Holtek Semiconductors. Este pequeño amigo es quien lleva por dentro todos y cada uno de los mensajes MIDI que se envian al pulsar una tecla, al hacer girar la ruedita del pitch o de la modulación,  así como también las funciones especiales del equipo y gestiona la comunicación USB. SIn este micro no serviría de nada este instrumento.

5

Supe que microcontrolador era puesto que removí la etiqueta que tiene encima jejejejejejejejeje

Entradas y salidas por aquí y por allá

Vista posterior de la tarjeta de control. Podemos ver el  puerto USB, el jack para el pedal de sustain y el interruptor.

6

Un potenciómetro deslizable es lo que hay detrás de bambalinas de un fader.

7

Aquí está los leds de selección de octava así como lso botones para poder seleccionar entre  las octavas.


8

Las control wheels de la modulación y el pitch son dos potenciómetros al igual que el slider de volumen.

9

Husmeando en las entrañas del corazón

Una vez montado procederemos a encenderlo para revisar que todo esté bien y sniffearlo para saber qué hace.

010

Vamos a usar el monitor MIDI para güindous el famoso MIDI OX [es mi preferido] configuramos nuestro controlador para que el software lo pueda sniffear y ¡Voila!.

Vemos toda la data que nos envía el microcontrolador.

midi_ox_03

Como les comenté esta entrada sólo la escribí por mera curiosidad y espero que les ayude a quitarse  también la curiosidad de muchxs en saber que llevan por dentro los controladores MIDI. Obviamente hay muchos más complejos pero en escencia es más de lo mismo.

Dejaré unos enlaces de interés :

Keyrig49 : http://www.m-audio.com/products/view/keystation-49es1#.VldQeB8qfQo
M-AUDIO :  http://www.m-audio.com
MIDI OX: http://www.midiox.com/

Software para electrónica | Lo que no podría faltar en mi alacena . . .

 

Hoy comenzaré con una lista de diversos programas que he usado o uso para temas relacionados con el diseño electrónico y programación.

Poco a poco iré subiendo algunos programas para que puedas descargarlos todos juntos aunque en su mayoría son gratuitos y los puedes descargar de sus respectivos sitios web.

ECLIPSE STUDIO

eclipse_bckgr_logo_fc_lg
Windows-Mac-Linux

Es una excelente IDE para diversos lenguajes en mi caso lo uso para programar microcontroladores AVR en C.


Descarga: https://eclipse.org/downloads/


 

ATOM
atom-editor-logo

Windows-Mac-Linux

Un excelente editor de texto con highlighting y con soporte de plugins lo cual lo hace extremadamente poderoso además de su gestor de proyectos integrado. Lo uso para programar HTML5, CSS3, PHP, JAVASCRIPT, JQUERY.

Descarga: https://atom.io/


ARDUINO IDE

hqdefault (1)Windows-Mac-Linux

Más claro ni el agua, aunque también lo uso para las custom boards que desarrollamos con diferentes micros AVR no soportados oficialmente

Descarga: http://www.arduino.cc


ENERGÍA IDE

EnergiaWindows-Mac-Linux

Es una IDE de programación para las Launchpad de Texas instruments, está basada en la IDE de Arduino, La uso para programar las tarjetas de desarrolla de Texas Instruments.

Descarga:  http://www.energia.nu


CODE COMPOSER STUDIO

CCSSPLASH

Windows-Mac-Linux

Como ya lo abrán notado es para los micros y demás cosillas de Texas Instruments. Lo uso para  las Launchpads.

Descarga: http://www.ti.com/tool/ccstudio



EAGLE CADSOFT

Created with The GIMP

Created with The GIMP

Windows-Mac-Linux

El líder en diseño de PCB desde mi punto de vista puesto que es uno de los más usados a nivel mundial y poderosísimo por sus plugins.

Descarga: http://www.cadsoft.de


 

DREAMWEAVER

macromedia_dreamweaver

Sí, lo sé, es una versión viejita pero es la que me agrada, lo uso principalmente para PHP y HTML5.
Uso una versión portable que encontré en la red y lo ejecuto con WINE en Linux.



GEDIT

650px-Gedit-logo-clean.svg

Uno de los editores de texto por default en GNOME me gusta mucho por lo liviano que es. HTML, CSS, PHP JQUERY, C principalmente.

Descarga : $ sudo apt-get install gedit


APACHE WEBSERVER

Apache-http-server

Windows-Mac-Linux

Mi servidor de desarrollo favorito por su magnífico soporte y potencia al trabajar. Lo uso en el desarrollo de apps en PHP, HTML5, CSS3, JQUERY principalmente.

Descarga: http://www.apache.org 


PROTEUS ISIS

proteus

El simulador por defecto que uso preferentemente en la versión 7. Me gusta por el soporte que tiene y su relativa facilidad de uso además de las librerias que poseé y las que andan navegando por internet.


MPLABX

21086

La IDE de programación de Microchip para sus microcontroladores. Lo uso obviamente en la programación de PICS en C y Ensamblador.

Descarga: http://www.microchip.com


CCS COMPILER

images (1)

Esta IDE la ocupo a la par que MPLAB ya que es más intuitiva y muy potente en la programación de micros en C.


VIRTUALBOX

oracle_virtualbox1

Windows-Mac-Linux

Un gestor de máquinas virtuales muy potente e interesante lo uso para cargar un windows XP donde hago ciertas pruebas y para probar una que otra nueva distro de Linux.

Descarga: https://www.virtualbox.org/

Estos son algunos de los programas que uso para hacer mis proyectos personales así como también para trabajar. La mayoría son Gratuitos. Maś adelante incluiré algunos otros que también uso.

Espero que te sirva este pequeño post.

¡Hasta la próxima!

 

CNC por aquí, CNC por allá. Introducción al CNC con Arduino

Hola buen días a todxs, hoy trataré en esta entrada un poco de las maquinas CNC. Este tipo de tecnología no es nueva pues ya lleva varios años en la industria y gracias a esta podemos tener muchas cosas a un costo relativamente bajo puesto que si fueran hechas totalmente a mano serían muy caras tal vez o a lo mejor ni siquiera pudiésemos pensar en ellas XD.

Primero que nada hablemos un poco sobre lo qué es CNC

¿Qué diablos es CNC?

CNC apunta a Control Numérico por Computadora, es un técnica para controlar la serie de movimientos que harán las maquinas pudiendo ser estas de diferentes tipos por ejemplo: tornos, fresadoras, taladros por mencionar algunos, en pocas palabras es una técnica de automatización de máquinas.

Una gran ventaja de este técnica es la presición que se tiene frente al humano, por ejemplo para lograr hacer un corte circular perfecto es muy difícil, tal vez imposible hacerlo a mano puesto que cualquier pequeño movimiento causará un corte mal logrado.

Veamos un ejemplo de corte con CNC

maxresdefault (2)

Como podemos apreciar en la imagen se tiene un diseño demasiado «caprichoso» en cuanto a formas y tamaño pudiendo ser difícilmente hecho por un humano en poco tiempo, en cambio con un router CNC se puede tener listo en cuestión de minutos.

Este video muestra lo asombroso del CNC

Como vemos es un trabajo que mediante técnicas tradicionales de torneado es imposble de hacer puesto que requiere un grado extremo de precisión.

Todo está muy lindo pero . . .

¿Qué se necesita para el CNC?

Para implementar un maquinado por Control NUmérico se debe de seguir una serie de pasos los cuales son muy sencillos. La secuencia que se sigue para poder echar a andar una maquina CNC  es la siguiente:

1 ) Creación de proyecto virtual
2 ) Programación del código
3 ) Interpretación
4 ) Maquinado automático

Ahora veamos cada paso un poco más detallado.

1) Creación de proyecto virtual

Lo que se pretende aquí es mediante un software de Diseño Asistido [CAD por sus siglas en inglés ] se genere el modelo a trabajar. Existen muchos programas para realizar el CAD por ejemplo Blender, FreeCAD, CADStandar por mencionar algunos.

engrane_qcad

2) Programación de código

En esta etapa lo que sucede es que un  software de CAM [Computer Aided Manufacturing] toma las referencias creadas por el CAD y las convierte a rutas para el maquinado o sea la ruta de corte del material que se debe de seguir para lograr nuestro diseño. Aquí podemos encontrar porgramas como la suite de la empresa Vectric, FreeMill, HeekCNC o  el famoso MasterCAM.

Una vez procesado ese diseño a la salida del proceso obtenedremos un código listo para poder ser interpretado por nuestra unidad de control. Habitualmente el código utilizado es el código G el cual es una serie de instrucciones que normalmente comienzan con la letra G (de ahí el nombre) y su objetivo es dar las instrucciones para que la maquina sepa dónde y cómo debe de hacer su trabajo.

 

edxftogcode

 

 

 

3) Interpretación

Este paso viene adjunto al paso 4 que es el maquinado. Cuando se terminan los pasos anteriores se envía el proyecto ya «traducido» a la unidad de control o controlador CNC. Este es el encargado de mandar las órdenes a los servomotores, motores a pasos , etc de como se deben de mover, a qué velocidad, donde se deben de parar, si se mueve el eje X, el Y o el Z, si se cambia de herramienta etc. En resumen, ¡es quién da la magia!

Las impresoras 3D también funcionan de la misma forma

En una segunda entrega comenzaré a explicar cómo  hacer un plotter CNC con Arduino que estamos desarrollando desde cero mi padre y yo.

¡Hasta la próxima!