Control de cargas con Raspberry-pi usando MQTT


MQTT significa MQ Telemetry Transport, es decir hablamos de un protocolo de mensajería publicación / suscripción, extremadamente sencillo y ligero, diseñado para dispositivos limitados y bajo ancho de banda y latencia alta o redes no confiables , razón por lo cual  es ideal para IoT (Internet de las cosas).

Los principios de diseño se centran en  minimizar el ancho de banda de la red y los requisitos de recursos del dispositivo, a la vez que intentan asegurar la fiabilidad y cierto grado de garantía de las entregas. Estos principios también resultan ideales para conformar el protocolo ideal de la emergente (M2M) “máquina a máquina” o “Internet de las cosas”  que compone el universo de los dispositivos conectados, asi como  también para aplicaciones móviles en las que el ancho de banda y la energía de la batería están en juego

A partir de marzo de 2013, MQTT está en el proceso de normalización a someterse a OASIS.La especificación del protocolo ha sido publicada abiertamente con una licencia libre de regalías para muchos años, y empresas como Eurotech (anteriormente conocido como Arcom) han puesto en práctica el protocolo en sus productos.En noviembre de 2011 IBM y Eurotech anunciaron su participación conjunta en el Grupo de Trabajo de la Industria M2M Eclipse y la donación del código MQTT al proyecto Eclipse OPS  .

Muy resumidamente  un  sistema basado en  MQTT funciona mediante un Brocker, que es al fin y al cabo un pequeño servidor en el cual se pueden publicar temas llamados Topics.

mqrç

Una vez  publicados esos Topics  en el  Broker ,  otros dispositivos pueden suscribirse a éstos  para intercambiar información o simplemente para consumir información.

Hay muchas librerías para utilizar MQTT,  tanto con diversos microcontroladores (como por ejemplo Arduino)  , con el ESP8266 y por supuesto también con la Raspberry-Pi.

Como Broker, uno de los más famosos es Mosquitto  , el cual también puede correr en una Raspeberry-Pi

Para interectuar con el broker  , no tenemos que crear una nueva app , pues existe la aplicación  ioT Mqtt dashboard , gratuita desrcargable desde Google Play  (si está buscando una aplicación para administrar sus proyectos de IO utilizando el protocolo MQTT, dejar de buscar, aquí está 🙂

Con esta aplicación, puede controlar fácilmente los dispositivos cliente MQTT con pasos de configuración muy sencillas. En un momento  puede comunicarse con su  Arduino, o puede ordenar a su ESP8266 esclavo que haga algo,etc …

 

iot mqtt

Las principales funcionalidades de esta app:

  •  Muchas conexiones
  •  Conexión SSL
  •  Especificar su unidad de datos
  •  Visualizar los valores numéricos de una tabla de actualización en tiempo real
  •  Componentes de Publicaciones personalizables:
    + Texto
    + Botón
    + Interruptor
    + Barra de búsqueda
    + Cuadro de lista desplegable
    + Selector de color
    + botones multi
  • WIDGETS PANTALLA DE INICIO( Botón,Botón basculante (versión del componente widget de interruptor),Selector de color)

Nota:
– Usted puede encontrar el registro de errores en: almacenamiento externo (tarjeta SD) / MQTT-salpicadero / registro
– Los widgets de la pantalla principal se utilizan para publicar sólo! Ellos no se suscribe al tema y reflejan su estado.

El protocolo MQTT es pues un sencillo y ligero sistema diseñado especialmente para IoT (Internet Of Things) que funciona prácticamente en cualquier sitio y no consume apenas recursos  como lo vamos a ver , precisamente usando una Raspberry-PI al que simplemente se han conectado tres leds de colores a modo de ejemplo ,pero que obviamente se podría haber conectado cualquier carga , usando por ejemplo un simple relé o un driver de potencia.

El  esquema como podemos simplemente usa los pines 11,12 y 13 y la masa (pin6) del conector de aplicación de la Raspberry Pi   para conectar simplemente tres leds de colores al que solo se han conectado  tres simples resistencias para limitar la corriente que circula por el puerto:

esqeuma

Como una imagen (y si es en vídeo), vale mas que 1000 palabras , continuación en el siguiente vídeo podemos ver la aplicación ioT Mqtt dashboard , interactuar con una Raspberry Pi usando el esquema anterior:

 

 

Para mas información sobre este proyecto  se puede consultar los siguientes recursos:

Anuncios

Placa clon de la Raspberry Pi:la Orange Pi


Desde 2012 la Raspberry Pi ha ido  creciendo  de  gran popularidad, estando  hoy en día  posicionada como una de las placas de desarrollo de referencia. Uno de sus rivales clásicos en los últimos tiempos están siendo las Orange Pi, una placa con un diseño similar pero  basado  en  procesadores de Allwinne

Shenzhen Xunlong dispone de la  placa SBC  muy similar a la Raspberry Pi a falta de 1 conector  USB , pero con un coste   bastante inferior  en Aliexpres. Es ademas abierta y hackeable. La placa de desarrollo low cost compite abiertamente   con  otras tantas existentes  donde  la mas destacable es tambien la Banana Pi  ,  pretendiendo todas  ellas  competir  con la Raspberry Pi.

Hablando de esta versión, la Orange Pi ,se vende en dos versiones, una básica de bajo coste  y otra denominada Orange Pi Plus.

orangepi

La Orange Pi normal  cuesta menos de 15$ y se basa en un SoC Allwinner A20 ARM, mientras que la Orange Pi Plus más cara sube a los 52$ a cambio  de integrar una versión más potente del chip Allwinner, concretamente una A31S En el resto de hardware, ambas placas SBC son muy similares y parejas en cuanto a prestaciones.

Las dos integran una CPU basada en ARM Cortex A7 Dualcore y Quadcore (en la versión más potente), una GPU Mali compatible con OpenGL y 1GB DDR3 RAM, posibilidad de direccionar hasta 64GB de almacenamiento mediante tarjetas o por un puerto SATA, conexiones para audio, conector CSI para cámara, HDMI, VGA, USB OTG, USB 2.0, alimentación, GPIOs, IR, etc.

El tamaño de ambas placas de  es de 85 × 55 milímetros y su peso se queda en 38 gramos. En estas dimensiones a sus desarrolladores les han cabido puertos HDMI y AV, receptor de infrarrojos, Ethernet RJ45 10/100M, tres puertos USB 2.0, uno microUSB OTG, un micrófono, un interfaz CSI para cámara y un encabezado de 40 pines compatible con Raspberry Pi ( y en la version Plus soporte para SATA ,8GB de  EMMC   y   WiFi

 

orange_pi

En cuanto a los sistemas operativos soportados, se encuentran Raspbian, Ubuntu, Debian, Android 4.4 y otras versiones del sistema de Google  descargable desde la pagia oficial .. Todos ellos pueden ser movidos por los chips de Allwinner y el hardware que entregan estas placas SBC (Single Board Computer).

Sobre el resto de características son  las siguientes:

 

Especificación de hardware

CPU H3 Quad-Core Cortex-A7 H.265/HEVC 4 K
GPU
· Mali400MP2 GPU @ 600 MHz
· Compatible con OpenGL ES 2.0
Memoria (SDRAM) 1 GB DDR3 (compartido con GPU)
Almacenamiento a bordo Tarjeta del TF (máximo 64 GB)/MMC ranura para tarjeta
Red de a bordo 10/100 Ethernet RJ45
Entrada de vídeo Un conector de entrada CSI cámara:

Soporta 8-bit YUV422 interfaz de sensor CMOS

Soporta CCIR656 protocolo para NTSC y PAL

   Soporta SM píxeles sensor de la cámara

Soporta captura de vídeo solución hasta P @ 30fps

Entrada de audio MIC
Salidas de vídeo

Soporta salida HDMI con HDCP

Soporta HDMI CEC

Soporta HDMI 30 funciones

Integrado CVBS

Soporta una salida simultánea de HDMI y CVBS

Salida de audio 3.5mm Jack y HDMI
Fuente de alimentación
  Entrada de CC, entrada USB OTG no suministra alimentación
USB 2.0 puertos Tres USB 2.0 Host, un puerto USB 2.0 OTG
Botones Botón de encendido:
Periféricos de bajo nivel
40 encabezado pines, compatible con Raspberry Pi B +
GPIO (1×3) pin UART, suelo.
LED Energía LED y LED de estado
Clave IR de entrada, potencia
Sistemas operativos soportados Android lubuntu, debian, Rasberry Pi imagen

Definición de interfaz

Tamaño del producto 85mm × 55mm
Peso 38g
Naranja Pi™ es una marca comercial de Shenzhen xunlong software co., Limitada

 

Si la  versión económica  le parece poco   , Shenzhen Xunlong  también ha puesto a disposición del público, por menos de 52$, la versión  Orange Pi Plus, una versión más potente con un procesador SoC Allwinner H3 de cuatro núcleos a 1.6Ghz , con soporte para SATA ,8GB de  EMMC   y  sobre todo integracion de  WiFi.

 

bananaplus

hardware.jpg

Por cierto,  ambas  placas son compatibles con los pines de expansión de la Pi original…

Sobre diferencias respecto  al original,ciertamente casi todas las placas SBC son bastante similares orientándose para ser clones  mas baratos  de  la Raspberry Pi. Es cuestión de gustos o necesidades, pues  como hemos visto no se pueden alegar diferencias sustanciales, excepto porque se basan en arquitecturas diferentes a la ARM (como las basadas en x86) de la cual se comenta tienden a calentarse mucho precisando normalmente de un radiador pasivo o si es posible mejor  activo (equipado con un miniventilador).

Coche RC Autonomo basado en Rasberry Pi y Arduino


Este proyecto desarrollado por   Zeng Wang  constituye  una versión reducida de un  sistema de auto-conducción ( eso si usando un coche de RC) con una Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)
, un Arduino ,y  un ordenador exterior con software de código abierto.

El sistema utiliza tanto una Raspberry Pi con la cámara incorporada  oficial  como un sensor ultrasónico como entradas, enviando la informacion a un ordenador  que recibe el video  y se encarga del procesamiento en tiempo real del video capturado por la raspberry Pi mediante  reconocimiento de objetos (señal de stop y semáforos) y medición de distancia  ordenando las señales correspondientes  de la dirección mediante una placa Arduino para el control del coche de RC.

Dos programas ejecutándose en la Raspberry Pi permiten gestionar la información que recibe y la transmiten junto al vídeo de baja resolución (320 x 240) que capta la cámara a otro ordenador vía WiFi .A su vez el mando que controla el coche teledirigido efectivamente sigue dirigiéndolo, pero lo hace a través de las órdenes que le pasa ese ordenador vía USB mediante una placa Arduino.

El código fuente esta disponible en git hub 

El resultado, como puede verse en el vídeo, es espectacular .

 

 

 

El objetivo del autor Wang en efecto era modificar un coche RC  para que fuese capaz de  manejar tres tareas: auto-conducción en la pista, la señal de detención  ,la detección semáforo, y evitar colisiones frontales.

El sistema construido  consta de tres subsistemas:

  • Unidad de entrada (cámara, el sensor de ultrasonidos)
  • Unidad de procesamiento (ordenador) y
  • Unidad de control del coche RC.

Unidad de entrada

Una placa  Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45) al que se conecta un módulo de cámara pi y un sensor ultrasónico-HC SR04 se utiliza para recoger datos de entrada. Dos programas de cliente se ejecutan en Raspberry Pi para el streaming de vídeo en color y datos de los sensores ultrasónicos a la computadora a través de conexión Wi-Fi local.Con el fin de conseguir una baja latencia de streaming de vídeo, el vídeo se escala hasta QVGA (320 × 240) resolución.

Unidad de procesamiento

La unidad de procesamiento (ordenador) se encarga de múltiples tareas: recibir datos de Raspberry Pi, el entrenamiento de la red neural red y la predicción (dirección), la detección de objetos (señal de stop y semáforos), medición de distancia (visión monocular), y el envío de instrucciones via Arduino a través de conexión USB .

Servidor TCP
Un programa de servidor TCP multihilo se ejecuta en el ordenador para recibir cuadros de imagen por streaming y datos ultrasónicos de la Raspberry Pi. Los cuadros de imagen se convierten a escala de grises y se descodifican en matrices numpy.

Red Neuronal
Una ventaja de usar la red neuronal es que una vez que la red ha aprendido, sólo necesita cargar parámetros formados después, y por tanto, la predicción puede ser muy rápida. Sólo la mitad inferior de la imagen de entrada se utiliza para fines de aprendizaje y de predicción. Hay 38.400 (320 × 120) nodos en la capa de entrada y 32 nodos en la capa oculta. El número de nodos en la capa oculta se elige bastante arbitrario.

Hay cuatro nodos en la capa de salida, donde cada nodo corresponde a las instrucciones de control de dirección: izquierda, derecha, adelante y atrás respectivamente (aunque inversa no se utiliza  Wang la ha incluido en la capa de salida).

mlp_half_32-2

A continuación se muestra el proceso de recolección de datos de entrenamiento.Primero cada cuadro se recorta y se convierte en una matriz numpy. Entonces la imagen de tren está emparejado con la etiqueta de tren (entrada humana). Por último, todos los datos y etiquetas de imagen emparejados se guardan en un archivo NPZ. La red neuronal está entrenada en el uso de OpenCV  usando el  método de propagación de vuelta. Una vez que la formación se lleva a cabo, los pesos se guardan en un archivo xml. Para generar predicciones, la misma red neuronal se construye y se carga con el archivo xml capacitado.

collect_train_data

Detección de Objetos
Para este proyecto Wang adaptó el enfoque basado en la forma utilizando clasificadores en cascada Haar basados ​​en características para la detección de objetos. Desde cada objeto se requiere su propio clasificador y sigue el mismo proceso de formación y detección, asi que en este proyecto sólo se centra en señal de stop y la detección del semáforo.

OpenCV proporciona un entrenador, así como detector. Las muestras positivas (contener objeto de destino) fueron adquiridos utilizando un smartphone , y se recortan para que solo el objeto deseado sea visible. Las muestras negativas (sin objeto de destino), por otro lado, se recogieron al azar. En particular, para el semáforo  muestras positivas contienen igual número de semáforos en rojo que semáforos en verde. El mismo conjunto de datos de muestras negativas se utilizan tanto para la señal de stop como para  la formación del semáforo. A continuación se muestran algunas muestras positivas y negativas utilizadas en este proyecto.

pos_neg_samples

sample_tabel

Para reconocer diferentes estados del semáforo (rojo, verde), se necesita un poco de procesamiento de imágenes más allá de la detección.

El diagrama de flujo a continuación resume el proceso de reconocimiento semáforo.

brightest_spot

En primer lugar, entrenado el clasificador en  cascada se utiliza éste para detectar un semáforo. El cuadro delimitador es considerada como una región de interés (ROI). En segundo lugar, la falta de definición de Gauss se aplica dentro de la ROI para reducir ruidos. En tercer lugar, encontrar el punto más brillante en el retorno de la inversión. Por último, los estados rojos o verdes se determinan basándose simplemente en la posición del punto más brillante en el retorno de la inversión.

Distancia de medida
Raspberry Pi sólo puede soportar un módulo de cámara de un pi. El uso de dos cámaras web USB traerá peso extra para el coche RC y también parece poco práctico.Por lo tanto, se elige el método visión monocular.

Este proyecto adaptó un modelo de geometría de detectar la distancia a un objeto utilizando el método de la visión monocular propuesto por Chu, Ji, Guo, Li y Wang (2004).

distante

P es un punto en el objeto de destino; d es la distancia desde el centro óptico hasta el punto P. En base a la geometría de la relación anterior, la fórmula (1) muestra cómo calcular la distancia d. En la fórmula (1), f es la longitud focal de la cámara; ∂ es el ángulo de inclinación de la cámara; h es la altura del centro óptico; (x0, y0) se refiere al punto de plano de la imagen y el eje óptico intersección; (x, y) se refiere a la proyección del punto P en el plano de la imagen. Supongamos O1 (u0, v0) es la cámara de coordenadas del punto de eje óptico y el plano de la imagen de intersección, también supongamos que la dimensión física de un píxel correspondiente al eje X y el eje Y en el plano de la imagen son dx y dy. Entonces:
distance_measure
v es la cámara de coordenadas en el eje y, y se puede devolver en el proceso de detección de objetos. Todos los demás parámetros son parámetros intrínsecos de la cámara que se pueden recuperar de la matriz de la cámara.

OpenCV proporciona funciones para calibración de la cámara. Matriz de la cámara para la cámara de 5MP pi se devuelve después de la calibración. Idealmente, a_x y a_y tienen el mismo valor. Varianza de estos dos valores se traducirá en píxeles no cuadrados en la imagen. La siguiente matriz indica que la lente de longitud focal fija en cámara pi ofrece un razonablemente buen resultado en el manejo de la distorsión de aspecto. Aquí es un artículo interesante discutir la distancia focal de la cámara pi con la acción de la lente y su equivalente de cámara de 35mm.
pi_cam_matrixLa matriz devuelve valores en píxeles y h se mide en centímetros. Mediante la aplicación de la fórmula (3), la distancia física d se calcula en centímetros.

Unidad RC Car Control

El coche RC utilizada en este proyecto tiene un controlador tipo de interruptor de encendido / apagado. Cuando se pulsa un botón, la resistencia entre el contacto pasador y el suelo chip de referencia es cero. Por lo tanto, una placa Arduino se utiliza para simular las acciones sobre el pulsador. Cuatro pines de Arduino se eligen para conectar cuatro clavijas de chips en el controlador, que corresponde a adelante, atrás, izquierda y derecha, respectivamente, acciones. Pines de Arduino envian señales baja indicando a tierra los pines de chips del controlador; Por otro lado el envío de señal de alta indica la resistencia entre los pines de chips y suelo permanecen sin cambios. El Arduino se conecta al ordenador a través de USB. Las salidas de computadora comandos para Arduino utilizando interfaz serie, y luego el Arduino lee los comandos y escribe señales de bajo o alto, simulando acciones de botón de prensa para conducir el coche RC.

Resultados

La predicción de las muestras de prueba devuelve una precisión de 85% en comparación con la precisión de 96% de que las muestras de entrenamiento devoluciones. En la situación de conducción real, predicciones se generan cerca de 10 veces por segundo (velocidad de transmisión de aproximadamente 10 fotogramas / s).

Características Haar por naturaleza son la rotación sensible. En este proyecto, sin embargo, la rotación no es una preocupación ya que tanto la señal de stop y el semáforo son objetos fijos, que es también un caso general en el entorno del mundo real.

drive_test01drive_test02

Para distancia aspecto medición, el sensor de ultrasonidos sólo se utiliza para determinar la distancia a un obstáculo delante del coche RC y proporciona resultados exactos cuando se toma la detección de ángulo adecuado y estado de la superficie en las consideraciones. Por otro lado, la cámara Pi ofrece “suficientemente buenos” resultados de la medición. De hecho, siempre y cuando sabemos que el número correspondiente a la distancia real, sabemos cuándo dejar el coche RC. Los resultados experimentales de detección a distancia usando la cámara pi se muestran a continuación:
camera_measure2

En este proyecto, la exactitud de la medición de la distancia utilizando el enfoque de visión monocular podría estar influenciada por los siguientes factores: (1) errores en la medición de los valores reales, (2) objeto de delimitación variaciones de caja en el proceso de detección, (3) errores en el proceso de calibración de la cámara, (4) relación no lineal entre la distancia y la cámara de coordenadas: la mayor distancia del, más rápido cambio de la cámara de coordenadas, por lo tanto cuanto mayor sea el error.

En general, el coche de RC podría navegar con éxito en la pista con la capacidad de evitar la colisión frontal, y responder a la señal de stop y semáforos en consecuencia.

Segun Wang ,el proceso de entrenamiento fue relativamente sencillo debido a la sencillez del modelo de carretera utilizada, y a eso se le sumaba la detección de objetos gestionada por la plataforma OpenCV (Open Source Computer Vision) que entre otras cosas también permitía calibrar la cámara.

 

Es sin duda  un proyecto apasionante y sorprendente el que ha realizado  Zheng Wang  demostrando  una vez hasta donde  puede llegar  la capacidad de procesamiento  actual  presentes en dispositivos tan reducidos y modestos como lo constituye la gama  de la Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)

Mas  información en la web del autor

Interactuar con Scratch en una Raspeberry pi


Raspberry Pi 2 Model B ,  con unas medidas mas que  reducidas de  86 x 56 x 20 y un precio contenido  rodando los 40€ , representa un gran aumento de rendimiento con respecto a sus antecesores basados en un núcleo,  de hasta seis veces más rápido gracias  a su procesador Cortex-A7 de cuatro núcleos  y ademas porqeu ahora también cuenta con 1 GB de memoria RAM para las aplicaciones con más requisitos de memoria o cálculo.

Es la segunda generación de Raspberry Pi,lo cual en comparación con el Raspberry Pi 1,   es notable al diferencia ,pues  tiene un procesador  Broadcom BCM2836 de 900 MHz ARM Cortex-A7 de cuatro núcleos con GPU VideoCore IV de doble núcleo con SDRAM LPDDR2 de 1 GB . Gracias al procesador ARMv7, puede funcionar con toda la gama de distribución ARM GNU / Linux, incluyendo Snappy Ubuntu Core e incluso  Microsoft Windows 10.

Incluye una GPU con tecnología Open GL ES 2.0, con hardware acelerado OpenVG y admite imágenes de alta resolución 1080p30 H.264. Esta GPU tiene una capacidad de 1 Gpixel/s, 1,5 Gtexel/s o 24 GFLOPs con filtrado e infraestructura DMA ofreciendo dos salidas de video :una HD 1080p y otra  normal de video compuesto (PAL/NTSC)

Las conexiones disponibles son :

  • Conector hembra de vídeo/audio HDMI 1.3 y 1.4
  • Conector hembra de salida de vídeo compuesto/audio de 3,5 mm 4 polos
  • Conector MPI CSI-2 de 15 vías para cámara de vídeo HD Raspberry Pi (775-7731)

 

Una mejora  que sin duda nos recuerda  a otras plataformas  como Arduino o Netduino es que la  cabecera GPIO ha crecido hasta 40 pines, mientras que conserva el mismo pinout para los primeros 26 pines como el Modelo B. Es decir ofrece la  posibilidad de usar el conector macho de 40 pines para buses serie y el  GPIO (compatible con el conector macho de 26 pines Raspberry Pi 1)

Asimismo ahora tenemos 4 puertos USB 2.0 y una mejor conexión en caliente y el comportamiento de sobrecorriente y  el antiguo zócalo de la tarjeta SD de ajuste por fricción ha sido reemplazado con un push-push versión mucho más agradable microSD.

Mediante la sustitución de reguladores lineales con los de conmutación han reducido el consumo de energía entre 0.5 W y 1 W, lo cual se traduce en el uso de una fuente de alimentación de +5 V a 2 A a través de conector hembra microUSB

Asimismo en esta versión  también se  ha mejorado el audio pues el circuito de audio stereo incorpora una fuente de alimentación de bajo ruido dedicado.

Por ultimo se ha mantenido la compatibilidad con versiones anteriores de hardware y software con la Raspberry Pi 1 modelo A+/B+, por lo tanto puede utilizar todos los accesorios y expansiones disponibles  en el mercado  y  también cuenta con un conector hembra Ethernet RJ45 10/100 BaseT y un conector de interfaz serie de display de 15 vías

La Raspberry Pi a parte de valer para muchos proyectos, es una placa estupenda para el aprendizaje y si lo juntamos con el entorno Scratch podemos disponer de un completo entorno de desarrollo rápìdo y barato ideal para los niños o gente que empieza a programar.

Scratch es un entorno de programación que facilita el aprendizaje autónomo. Scratch se puede instalar y redistribuir gratuitamente en cualquier ordenador con el Sistema Operativo Windows, Mac OS X o Linux, incluyendo, claro está, la computadoraRaspberry Pi.

Scratch es una herramienta fantástica para la creación de juegos y para la enseñanza de programación y codificación que  ademas puede descargar gratuitamente  directamente pulsando aquí.

Miles Berry de la Universidad de Roehampton ha creado un excelente tutorial de vídeo, que enseña a programar en lenguaje Scratch en 10 minutos y medio y sin conocimientos previos del lenguaje.

En el  siguiente vídeo se muestra todo el proceso para configurar una Raspberry Pi con el entorno Scratch y un ejemplo de control de los GPIO para encender y apagar un LED. Es una muy buena base para comenzar a controlar dispositivos físicos y a partir de ahí, ¡el límite solo es su imaginación!

 

 

 

 

Mas información aqui

Cómo conectar Arduino con una Raspberry


En este tutorial de Zagur, vamos a ver como es posible  conectar de una forma muy sencilla a través del puerto serie  una   placa   Arduino  con  una Raspberry Pi utilizando Python para hacer esta comunicación.

El resultado va a ser  reproducir una melodía con un zumbador  conectado a Arduino por medio de un servicio (Apache, por ejemplo)que correrá en la Rasberry Pi.

Para hacer posible el ejemplo conectaremos primero Arduino en nuestro PC,  cargaremos el software en él y luego lo conectaremos a la Rasberry Pi.

El código de Arduino es realmente sencillo, y el montaje no requiere mucho tiempo, ya que solo es conectar el zumbador piezoléctrico en el pin 8 (cable rojo) y en el pin GND (cable negro).

Ahora cargamos este programa en nuestro Arduino,

#include “pitches.h”
// Notas en la melodía
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

// Duración de las notas: 4 (negra), 8 (semicorchea), etc
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4};

void setup () {
Serial.begin(9600); //Inicializamos el puerto serial a 9600 baudios
}

void loop() {
if (Serial.available()) { //Si está disponible el puerto serie
char c = Serial.read(); //Guardamos la lectura en una variable char

if (c == ‘w’) { // Si escribo w  entonce  haremos sonar una melodía y reiniciamos  apache (en la RPi)

for (int thisNote = 0; thisNote < 8; thisNote++) {

int noteDuration = 1000/noteDurations[thisNote];
tone(8, melody[thisNote],noteDuration);

int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// parar el tono que se esta reproduciendo:
noTone(8);
}
}
}
}

 

 

Este código resumidamente lo que hace es que comprobar mediante el   condiciona   if (c == ‘w’)   si la variable que Raspberry Pi le envía es igual  el carácter ‘w’ ( o el carácter que se desee siempre  que lo defina en este código) , entonces ejecutará la melodía hasta que finalice    por medio del bucle for{} .

Junto a esto, abriremos un fichero nuevo y lo llamaremos pitches.h que contendrá las notas musicales  que se puede descargar aquí.

 

Una vez hemos cargado este código en Arduino, el siguiente paso es preparar la Raspberry Pi.

Aquí tendremos que hacer un pequeño programa en Python que nos permitirá mandarle comandos a la placa Arduino. Para eso, tendremos que instalar una librería de Python en Raspberry Pi mendiante el comando.

aptget install pythonserial  
 Una vez instalado, conectamos Arduino a nuestra Rasberry Pi y creamos un fichero llamado RaspDuino.py. En él añadiremos lo siguiente:
import os
 
arduino = serial.Serial(‘/dev/ttyACM0’, 9600)
 
print(“Starting!”)
 
continuar = True
while continuar:
        comando = raw_input(‘Introduce un comando: ‘) #Input
        arduino.write(comando) #Mandar un comando hacia Arduino
 
        if comando == ‘w’:
                print(‘Reiniciando apache…’)
                resultado = os.system(“service apache2 restart”)
        elif comando == ‘exit’:
                continuar = False
arduino.close() #Finalizamos la comunicacion

 

Este código también es sencillo. En primer lugar creamos un bucle para que nos vaya pidiendo siempre el “Introduce un comando“, y todo lo que vayamos escribiendo, se enviará al Arduino y de modo  que dependiendo del código qeu tenga Arduino hará una cosa u otra. En el ejemplo si enviamos ‘w‘ ejecutará la melodía en el Arduino y además, ejecutaremos en la Raspberry Pi, “service apache2 restart“. Si escribimos “exit” saldrá del bucle while y se acabará el programa.

Para ejecutar este fichero ya sólo queda ejecutar el fichero en python: python RaspDuino.py

 

 

Fuente   aqui

Pasarela musical con Raspberry


BeakPi es un sistema muy interesante  que  puede servir como sistema de reproducción de música  pues nos permite, por un lado, controlar la luces de nuestra casa a través de Raspberry Pi pero, también, es capaz de integrar a Spotify y funcionar a modo de reproductor de música. BeakPi nos ofrece aplicaciones Android para controlar la reproducción de música y, en cierta forma, nos abre las puertas a desarrollar nuestro propio sistema siguiendo la senda del Spotify Connect

Este software pues nos permite el control de audio para el hogar y tambien como extra el  Encendido y apagado de dispositivos electricos mediante  trasnmisores  y receptores de RF estandard domestico  .

Puede seguir este proyecto en la cuenta deTwitter del proyecto   en: https://twitter.com/Beakable y por cierto  BeakPi es de código abierto y está disponible en GitHub: https://github.com/beakable/beakpi.

Otra alternativa es el proyecto Pi Fi, o Pi Fidelity, que nos ofrece un avanzado sistema de reproducción de música basado en Raspberry Pi. Esta solución nos ofrece la posibilidad de transformar nuestro pequeño ordenador en un completo sistema multimedia capaz de reproducir emisoras de radio online así como archivos de música en formato mp3. Se puede controlar desde un dispositivo móvil y es capaz de soportar Airplay para dispositivos iOS (lo cual es muy interesante para hacer streaming de contenidos de audio en casa).

 

Fuente aqui

Usos para tu Rasberry Pi


Seguro  que muchas personas se han planteado adquirir este fabuloso hardware ,que ademas de ser muy asequible  cuenta con salida hdmi,lector sd ,usb-host  y toma ethernet. Por ejemplo estos son algunos de los usos que le podemos dar:

Montar un NAS eficiente

Somos muchos los que tenemos más de un ordenador en casa y, ante la ausencia de un NAS con el que compartir ficheros en red, andamos compartiendo carpetas en nuestros equipos. Si bien esta solución es plenamente funcional y evita que tengamos la información repetida en nuestros ordenadores, no es extremadamente eficiente porque implica que tengamos que tener encendidos los ordenadores para acceder a la información y, por tanto, implica gasto en consumo eléctrico.

Raspberry Pi, además de ser un ordenador de bajo coste, tiene un consumo eléctrico muy muy bajo y, por tanto, puede ser la base sobre la que construir un NAS de bajo consumo y eficiente desde el punto de vista del consumo energético. ¿Y qué tenemos que hacer? Como nos podemos imaginar, para construir nuestro NAS necesitaremos una placa de Raspberry Pi, su fuente de alimentación, un disco duro USB para conectarlo a la placa y la tarjeta SD con el sistema operativo (fundamental para arrancar el sistema).

Una vez arrancado el sistema podemos seguir alguna de las recetas que circulan por la red para instalar el paquete de Samba en el sistema y configurar las carpetas a compartir en la red de nuestra casa.

 

Otro de los casos de uso de Raspberry Pi que podemos tener en cuenta es montar nuestro propio Dropbox, es decir, nuestro propio sistema de almacenamiento y acceder a él desde cualquier lugar, aunque estemos fuera de la red de nuestra casa. ¿Y cómo podremos hacerlo? Recurriendo a Barracuda Drive que está disponible en la tienda de aplicaciones de Raspberry Pi.

Ampliar nuestros conocimientos sobre redes y comunicaciones

Raspberry Pi, a pesar de ser un pequeño ordenador, dispone de un interfaz de red Ethernet 10/100; una tarjeta de red que podemos aprovechar para realizar nuestros propios experimentos y profundizar nuestros conocimientos de gestión de redes en plataformas GNU/Linux. ¿Y qué usos podemos darle a Raspberry Pi en este sentido?

Con NeoRouter, por ejemplo, podríamos montar sobre Raspberry Pi nuestro propio servidor de VPN y acceder a nuestros equipos en remoto desde cualquier lugar y de forma segura. Otra posibilidad es montar sobre Raspberry Pi un servidor de USB que nos permita compartir en red cualquier dispositivo que conectemos a los puertos USB de este computador y acceder a estos desde un equipo Windows conectado a la misma red y, por ejemplo, compartir impresoras o webcams.

También podemos usar Raspberry Pi como cliente de torrents que, además, podríamos gestionar cómodamente desde el sofá de nuestra casa a través de nuestro dispositivo móvil o, incluso, montar nuestra propia centralita IP gracias a Asterisk.

Montar un media center

Gracias a su salida HDMI podemos conectar nuestra Raspberry Pi a la televisión de nuestra casa y convertirla en un media center de bajo coste que es capaz de reproducir películas en HD (aunque a 1080p hay veces que le cuesta un poco responder adecuadamente). En la red podemos encontrar muchas opciones para transformar este pequeño computador en un media center aunque una de las formas más comunes es recurrir a XBMC directamente o a través de distribuciones Linux preparadas para Raspberry Pi que ya lo integran (como RaspBMC o bien OpenElec).

En mi opinión, es uno de los usos de Raspberry Pi más prácticos que podemos encontrar porque el partido que podemos sacarle a este computador con este uso es bastante importante.

Como consola de juegos

Jugar al Minecraft y otros juegos

Además de desplegar un media center o una centralita de VoIP, en la tienda de aplicaciones de Raspberry Pi podemos encontrar un buen número de juegos con los que pasar el rato y alternar el aprendizaje con un poco de ocio. Entre todos los juegos que se han desarrollado para Raspberry Pi, quizás uno de los más importantes y con mayor impacto es Minecraft: Pi Edition, la versión para Raspberry Pi del popular Minecraft (con el que podremos pasarnos buenos ratos).

Una vista previa de una versión muy temprana de Minecraft: Pi Edition. Es un puerto de Pocket Edition y ha estado en desarrollo durante menos de una semana, así que pido disculpas por cualquier fallo. Esta demostración se realizó en un estándar de 256 MB Raspberry Pi sin overclocking.

El Pi Edition presenta la posibilidad de utilizar la programación de influir en el mundo del juego. Yo uso de Python en este video, pero cualquier lenguaje capaz de comunicar sobre la red iba a trabajar.

He actualizado mi módulo “Minecraft” para su uso con el lanzamiento oficial del juego. Usted tendrá que colocar en el directorio MCPI y “minecraft_basic importación” para usarlo.
http://www.cl.cam.ac.uk/ ~ db434/files/minecraft_basic.py

Dele a su apoyo a Daniel Frisk (@ danfrisk) y Aron Nieminen desde Mojang si te gusta este desarrollo.

He utilizado el LEDCraft paquete de textura: http://www.planetminecraft.com/textur

.

Revivir máquinas arcade

He de reconocer que una de mis pasiones son las máquinas recreativas clásicas, es decir, las máquinas arcade que eran tan populares en los años 80 y principios de los 90. Gracias a Raspberry Pi podemos sacar esta vena vintage que llevamos dentro y revivir algunos de los clásicos de las recreativas cuyas ROMs circulan por la red. Cadillacs and Dinosaurs, The Punisher, Captain Commando o Final Fight son algunos de los más de 5.000 juegos a los que podremos jugar gracias al emulador MAME4ALL disponible para Raspberry Pi.

Un gabinete de la arcada vieja comprado fuera de eBay, despojado de su JAMMA original y CRT interior y dotado de un Raspberry Pi corriendo Raspbian, AdvanceMAME y AdvanceMENU, utilizando un Ipac 2 para la interfaz entre el Pi y los controles de arcade, un “monitor de TFT 19 y un amplificador de un solo canal para encender el altavoz.

Login se fija para ser alcanzable utilizando sólo los controles de arcade (por nombre de usuario y contraseña), y AdvanceMENU funcionamiento se logra mediante el joystick izquierdo para recordar los comandos introducidos anteriormente en la cáscara.

Bajo el gabinete de control hay un botón oculto que permite salir del juego para el sistema de menús, que puede ser bloqueado mediante un interruptor de llave para fijar el gabinete en un solo juego.

Tablero de la moneda del monedero y marte electrónica estaban todos trabajando, y la unidad reconoce actual Reino Unido £ 1, 50p, 20p y 10p, y se puede ajustar a diferentes precios de juego de 10p a £ 1.60 ..

 

Y si, además, se nos da bien el bricolaje o queremos hacer un regalo muy especial, podríamos construirnuestra propia máquina recreativa a tamaño natural y ponerla en el salón de nuestra casa que, seguramente, se convertirá en el más geek del vecindario.

 

Artículo documentar esto: http://spritesmods.com/?art=rpi_arcad
Hice un gabinete de la arcada en miniatura basado en un Raspberry Pi. Cuenta con un 2,4 “LCD GPIO impulsada, una fuente de alimentación a medida al poder de las baterías de iones de litio, 3V de altavoces estéreo y botones / joystick.

De todas formas, si el espacio físico es un problema podemos construirnos una versión mini que podría convertirse en un buen regalo que hacer a nuestros amigos.

Emuladores de MS-DOS, Atari 800 y consolas clásicas

Además de revivir los videojuegos de las máquinas arcade, podemos encontrar un buen número de emuladores de sistemas clásicos como Atari800 que es capaz de emular computadoras clásicas como la Atari 800, Atari 800XL, Atari 130XE y Atari 5200 y transportarnos a los primeros años de la década de los 80.

Emulador MS-Dos para Raspberry Pi - usos creativos de Raspberry Pi

rpix86 es un curioso emulador de MS-DOS que es capaz de hacer funcionar aplicaciones diseñadas para arquitecturas x86 (recordemos que Raspberry Pi es un sistema sobre ARM) y que emula una computadora con procesador Intel a 20 MHz, 16 MB de memoria RAM, gráficos de 640×480 a 256 colores y una tarjeta de sonido SoundBlaster 2.0 para que podamos ejecutar alguno de nuestros juegos de ordenador de antaño y volver a disfrutar de clásicos como Maniac Mansion o el X-Wing de la ya extinta LucasArt

Fuente aqui