Archivos de la categoría Raspberry pi

Raspberry Pi es un ordenador de placa reducida o (placa única) (SBC) de bajo coste desarrollado en Reino Unido por la Fundación Raspberry Pi, con el objetivo de estimular la enseñanza de ciencias de la computación en las escuelas

UART flawours

Comunicacion serie Raspberry Pi vía Java

La comunicación serie es una de las tecnologías más antiguas en informática y telecomunicaciones y a día de hoy todavía es relevante. Sus orígenes se remontan a la década de 1960 cuando se utilizó la comunicación serie entre teletipos y módems. Hoy en día, las interfaces serie se puede encontrar dentro de sistemas embebidos donde se transfieren los datos entre los diferentes componentes. Una interfaz serie es también una forma común para conectar un PC a un sistema embebido (SmartPhones, reproductores..). En este post anterior ya explicamos como comunicar una Raspberry Pi con un Arduino vía UART. En éste veremos una breve introducción de la comunicación serie y cómo implementarla en tus aplicaciones Java mediante el uso de la biblioteca RXTX.

Por lo que respecta al material necesario dependerá de nuestro proyecto, si necesitamos comunicación inalámbrica, y si es el caso, dependerá también de la aplicación de la misma

Material necesario:

Material opcional en función del proyecto

Conexión directa WiFi Bluetooh Wireless dedicado

Algo de historia

Una de las primeras aplicaciones de comunicación de datos en serie fué la conexión entre teletipos (TTY, acrónimo de la forma inglesa teletype) . El teletipo convierte cada pulsación de tecla por medio de un módem en una cadena de bits en serie y los envía a través de una línea telefónica. El legado del teletipo se mantiene en el nombre de interfaces series en sistemas Unix:
Teletipo => TTY => / dev / ttyS0 o / dev / ttyUSB0 como el nombre del dispositivo en sistemas basados ​​en Unix.
Los teletipos utilizan una representación específica de bits para cada caracter conocido como el código Baudot. Nombre adquirido por su inventor, Jean-Maurice-Émile Baudot (1.845-1.903), un ingeniero del telégrafo francés. La velocidad entre enlaces en serie todavía se mide hoy en día en Baudios.
Los dispositivos modernos por lo general no tienen un puerto serie (RS-232) . Estos puertos han sido sustituidos por USB (Universal Serial Bus) para conectar periféricos. Sin embargo hay una solución disponible en la forma de un USB al puente UART. Estos adaptadores, en formato PCB (Printed Circuit Board) o en formato USB,  a menudo conocido como cable FTDI, llevan el nombre del chip FTDI utilizado para el USB a la conversión UART.

XBMC

Raspberry pi con XBMC (Home media center)

Este es un proyecto muy sencillo y que no requiere conocimientos previos mínimos ni de la programación ni de electrónica. Encargamos los componnentes y los interconectamos. Con una Raspberry pi, una pantalla que soporte HDMI o VGA y un par de cables está listo!

Material imprescindible:

Material opcional:

Entre otras cosas XBMC ofrece

  • Álbum de fotos digital desde almacenamiento USB o desde un repositorio en línea como Dropbox, Picassa, Flickr!
  • reproducir archivos multimedia (música, video) desde almacenamiento USB o desde Pandora, YouTube, Netflix etc.
  • Obtener actualizaciones meteorológicas
  • Función de alarma.
  • Y mucho más …

El home media center utiliza kodi que es un software gratuito y de código abierto reproductor multimedia desarrollado por la Fundación XBMC. Tecnología sin ánimo de lucro y que está disponible para varios sistemas operativos y plataformas de hardware.

Vamos a utilizar la tarjeta SD para albergar el sistema operativo y el otro software del sistema que se ejecuta nuestro Home media center. Todo el software se incluye en un solo paquete llamado Kodi.

Pasos para la instalación en la SD:

  • Descarga de software Kodi desde https://osmc.tv/download/. Hay que elegir la versión de nuestro sistema operativo (Windows, Linux, MAC).
  • Connectar la tarjeta SD al ordenador si tiene ranura para ello o bien via un adaptador.
  • Una vez que descargado el archivo y con la SD conectada, ejecutarlo. Se selecciona la opción para instalar el software en la tarjeta SD.
  • Una vez finalizada la instalación, retirar la tarjeta sd y conectarla a la Raspberry Pi.
  • Conectar la fuente de alimentación de la Raspberry Pi que por defecto arranca desde la tarjeta sd por defecto y se iniciará a Kodi pantalla de inicio.
  • Connectar con el cable HDMI a la pantalla, así como el raton y teclado para las primeras configuraciones.

XBMC tiene muchas funciones y se puede personalizar pero aquí vamos a tratar dos cuestiones de configuaricón: la configuración de red y del mando a distancia.

Domótica Casera 2

Aquí hemos visto como interactuar desde Internet con la Raspberry pi pero se queda al aire qué hacer para eliminar el vínculo entre Arduino y RSPI

Pues bíen, ya está hecho el “Hello world” domotico de forma completa. Navegado mucho uno puede apreciar que hay varias opciones puesto que Arduino ya lleva unos años por ahí y hay todo tipo de proyectos. Los más elaborados son los hechos con módulos de radiofrecuencia que actuana a partir de 433Mz.

Material necesario:

Existen varias librerías destinadas a estos módulos. La idea es implementar eslte esquema:

prototipo02

En líneas generales los proyectos que pueda haber tratan sobre que el Arduino se comunique con otro Arduino con módulos RF. Los principales problemas si optamos por esta solución son:

  • Los módulos RF no tienen una entrada de UART, se limitan a transmitir una seña analógica, con lo que deberiamos implementar en cada Arduino la codificación y decodificación de la información.
  • Necesimaos un Arduino en la parte de la Raspberry pi y otro en la parte del actuador.

Al usar un módem bluetooth connectado directamente al RX/TX del arduino junto con un dongle bluetooth conectectado a uno de los puertos USB de la RSPI conseguimos comunicar la RSPI con las siguientes ventajas:

  • Protocolo estandard
  • Raio de accción aceptable (10m con dispositivos Clase 2 o 100m con dispositivos Clase 1)
  • Eliminamos un Arduino en la equación
  • No hay que modular/demodular la información digital en analógica, delegamos todo esto al protocolo.

Una vez tenemos claro como hacer esto, se pieden las piezas (Esencilamente estas) y este es el resultado:

Por otra parte, una carácterística bastante extendida en un sistema domótico es la notificación de eventos. Ya no abarcaremos aquí como notificar eventos via interntet (por e-mail), pero si algo un poco mas complejo como el envío de SMS’s. Pues bién, hemos optado por aprovechas que la RSPI tiene un dongle bluetooth para connectarnos a un un móvil (uno cualquiera, sólo tiene que encontrarse entre los soportados por www.gnokii.org) y así poder notificar cuaquier evento a un número de móbil.

Resultado es el siguiente:

Ahora, como próximo objetivo debemos miniaturizar todo el dispositivo de actuación para conseguir encapsularlo de la mejor forma posible. raspberry pi arduino domotica

Domotica casera 1

El mercado de la domotica no es muy diferente al de los teléfonos puesto que a pesar de pagar 4 duros por los componentes, por el simple hecho de cumplir con el estándar ABC  o XYZ, para poder encender la calefacción desde la oficina te tienes que dejar como mínimo 1000€.

Material necesario:

Analicemos esto último y veamos qué elementos bien conocidos por todos como routers, “bluetoothes” y demás podrían hacer falta para encender la calefacción o la lámpara de la mesita. Pues bien, yo pensé en estos, aunque puede haber otras configuraciones:

    •    Contratar una IP fija o un servicio que haga accesible la IP dinámica.
    •    Un servidor en Internet para que resida una web o similar o montarnos el servidor en casa.
    •    Un computador que haga las veces de cerebro del sistema y que sea capaz de poner un pin a 5V o 0V constantes para poder activar un relé directamente o vía un transistor.

Y YA ESTÁ!!!!

Que inconvenientes pude tener montar un sistema sí:

  • Incompatibilidad con otros sistemas y estándares tipo KNX:  Con lo que cuesta un sistema tipo KNX puedes renovar tu sistema completamente un buen par de veces, si encima lo haces Wireless con lo que se ahorra uno de instalación lo puedes renovar unas cuantas veces más. Cuando digo renovar quiero decir cambiar hasta la última pieza, y una pieza nueva, siempre es una pieza nueva… y saca el mayor partido de la tecnología a día de instalarla.
  • Dependencia del instalador: Wireless, routers, bluetooth, Java, Ethernet…cualquier técnico sabe de estas tecnologías con lo que realmente no existe tal dependencia (alguien que instale sistemas KNX ya es mas complicado de encontrar).

Como las desventajas no me parecieron tales me puse manos a la obra (Google) para llegar a varias cuestiones fundamentales:

  • El sistema debe ser Wirelees: Elimina costos de instalación, permite que los acabados sean peores puesto que los elementos que actúan  (relés, difusores…) sobre las cargas (bombillas, motores…) pueden estar en cualquier punto de la instalación (falsos techos, registros eléctricos….).
  • El sistema debe costar, como mínimo la mitad que cualquiera que se pueda encontrar en Internet: que cueste la mitad garantiza no sólo que sea viable para alguien actualizado en tecnología y que pueda hacerlo él mismo, sino que pueda dedicarse a instalarlo y hacer de ello un negocio viable.
  • El sistema debe basarse en una tecnología que permita cambiar el hardware sin problemas de compatibilidad: JAVA, sin ningún margen de duda. Que, aparte de interoperatibilidad del hardware, es decir, si mañana dejan de fabricar el dispositivo de control elegido, se bebe poder sustituir por otra cosa análoga, nos da la libertad de usar el sistema en modo programado para simular presencias o programar el riego de las tomateras de una finca por ejemplo.

Con todo esto me decidí crear un prototipo con el siguiente resultado:

Detalles de la instalación:
 prototipo01
  • Servidor Web: Dado que ya disponemos de uno público con un Tomcat creamos una aplicación sencilla para que interactuara con el dispositivo de control. Aquí simplemente hay unas clases que abren una IP:Puerto de la red local. Al abrir el puerto satisfactoriamente, el servidor envía un mensaje indicando cual es la voluntad del usuario.
  • Dispositivo de control en la red local: Hemos optado por una RaspberryPi, aunque puede haber otras opciones. En ella hay un Linux con un servicio programado también en Java que está permanentemente atento a si llega alguna orden del servidor. En caso de que llegue, esta es decodificada, proceso sencillo puesto que en este primer prototipo solo actúa si llega un “ON”, “OFF” o “BLINK”, para apagar, encender o hacer parpadear una carga (lámpara, motor….). Esto se ejecutará mandando un comando al puerto serie donde habrá un dispositivo con capacidad para actuar sobre un relé o similar.
  • Dispositivo actuador: Lo más cómodo para desentenderse un poco de programar en ensamblador, por lo tedioso y por el tema de no vincularse con el hardware, es usar un Arduino. Éste simplemente está escuchando el puerto USB hasta que llega una orden (“ON”, “OFF” o “BLINK”) En este primer prototipo solo actuamos contra una carga pero con Arduino disponemos de hasta 12 entradas/salidas digitales y 5 analógicas que nos harán falta en el futuro para, además de poner el pin a 5V, asegurarnos de que la carga esta funcionando.
Pues bien, como veis en el vídeo todo funciona perfectamente. La aplicación web que se muestra en el vídeo está visible en pRemote, aunque sin ningún dispositivo conectado :-)
El siguiente paso: De momento he cumplido con la interoperatibilidad del hardware, es decir, si mañana dejan de fabricar Rasperrys Pi, se bebe poder sustituir por otra cosa. Pero me falta hacer la conexión Rasperry Pi –Arduino wireless.
 prototipo02

 

Para esto nos hemos decantado por bluetooth puesto que en su especificación V2 alcanza hasta 10m y en V1 hasta 100m, más que suficiente para la mayoría de proyectos. Los componentes necesarios para tal empresa estan en camino y en breve esperamos poder mostraros los resultados.