Pushing usando Parse desde Netduino a Xamarin.Forms

SI VA a crear un sistema que envíe una notificación a mi teléfono cada vez que alguien abra la puerta aquí está y se llama Doorduino


Parse es un proveedor BaaS (Backend as a service) que, entre su conjunto de características, ofrece un servicio de notificaciones Push . Se usa  ese servicio para enviar las notificaciones push a nuestros  dispositivos. Es bastante sencillo comenzar, en primer lugar, crear una nueva aplicación, tomar las claves (para ambas REST API y .NET), escribir  un código y empezaré a enviar pushes.

Configurando el Netduino

Se puede utilizar  un simple interruptor de contacto magnético(es decir un rele reed)  para detectar cuándo la puerta se abrió o se cerró, en el código se verá algo así como var doorPort = new InputPort(... y un bucle infinito en el que reside la lógica “principal”). while el netduino lee el estado actual del sensor, lo compara con un estado previo y, si hay algún cambio, envía la notificación de inserción utilizando mi biblioteca parse-dotnetmf .

La biblioteca parse-dotnetmf

Para consumir las funciones REST Api de Parse de un Netduino 3, se puede í crear una biblioteca de clientes para facilitar las cosas , esta biblioteca actualmente solo admite el envío de notificaciones push o Parse, pero puede ampliarse fácilmente para admitir todas las demás funciones también , es fácil de usar simplemente cree un cliente var pc = new ParseClient("AppId", "Api Key"); y luego envíe una notificación push así: pc.SendPushToChannel("Hey!"); .

Esta biblioteca está muy inspirada en la biblioteca MicroTweet2 de Matt Isenhower. Utiliza la clase HttpWebRequest , no requiere dependencias adicionales y cabe fácilmente en un tablero de Wi-Fi Netduino 3.

Configuración de la aplicación Xamarin.Forms

Hay algunos pasos que debe seguir para implementar Parse Push en su aplicación Xamarin, le recomiendo que siga los tutoriales que ya existen en el sitio web de Parse. Voy a hacer un resumen rápido de lo que hice (además de tratar de crear mi propio complemento).

En primer lugar, para Windows Phone no hay pasos obligatorios que no sean seguir este tutorial , por otro lado, para Android tendrás que hacer dos cosas:
1. Marque este tutorial pero haga solo la parte de AndroidManifest.xml .
2. Compruebe la muestra en GitHub , en particular la implementación de la clase ParseApplication en el proyecto de Android.

El complemento CrossParse

Como sabemos, cuando queremos ofrecer experiencias específicas de la plataforma desde una aplicación Xamarin.Forms podemos usar o crear un complemento que nos permita resumir las funcionalidades de cada plataforma para interactuar con cada plataforma a través de una API común.

Tratar de hacer un complemento para manejar todas las interacciones con Parse push o resulta que no es tan fácil como se puede pensar al principio, pues  los Componentes Xamarin de Parse para cada plataforma ya son compatibles con las notificaciones push, pero no existe una capa de abstracción que pueda usarse con formularios, sin mencionar que hay algunos pasos especiales necesarios para cada plataforma que debe gestionar explícitamente en cada proyecto específico de plataforma como por ejemplo crear la clase ParseApplication extra en el proyecto de Android, por ejemplo).

Por lo tanto, este complemento no es tan útil o, pero aún ayuda proporcionando la capa de abstracción mencionada e instalando los nugets de Parse por ti. Con este complemento, puede suscribirse / darse de baja de los canales y gestionar las notificaciones mientras el usuario se encuentra en la aplicación. Realmente esperemos que Parse lance un complemento para formularios pronto, ya que es bastante fácil de hacer dado que ya tienen los componentes.

El autor ha realizado un video donde mostra cómo funciona el sistema:

Enlaces

No pretendemos desde este blog  crear una publicación llena de enlaces, así que aquí están los enlaces a los complementos GitHub repos (y su respectiva página NuGet):

Acceso web de Sensores Analogicos para Raspberry Pi (parte 1)

Veremos diferentes circuitos para procesar señales analogicas con nuestra raspberry Pi


En un post anterior veíamos algunas de las posibilidades de  conexión de sensores digitales  a nuestra Raspberry Pi como puede ser añadir sensores I2C con el CI DS1820 , sensores de Co2 basados en el Mq4, sensores genéricos,sensores de presión con el BMP180,sensores de temperatura basados en el TMP102, sensores de proximidad basados en el VCNL 4000o  o los sensores de luminosidad basados en el  TSL2561.

Como todos sabemos  existen también una cantidad muy alta de sensores cuya salida no es digital , lo cual en principio no se podrían conectar directamente a nuestra Raspberry,pero esto no es exactamente así porque si podemos conectarlos por medio de convertidores A/D y D/A  como vamos a ver a continuación

 

PCA9685 PWM

pca9685.png

En efecto con este CI  que podemos comprar por unos 12€  en Amazon podemos ajustar el brillo por ejemplo de 12 leds mediante PWM o por supuesto también controlar hasta 12 servos con esta placa

El  circuito contiene un controlador PWM controlado por I2C con un reloj incorporado. A diferencia de la familia TLC5940, no es necesario enviar continuamente señales pues es gestionado  utilizando sólo dos pines para controlar 16 salidas PWM de funcionamiento libre e  incluso puede encadenar 62 salidas para controlar hasta 992 salidas PWM

Funciona a 5V, lo que significa que puede controlarlo desde 3,3V y seguir con seguridad hasta 6V salidas (esto es bueno cuando se desea controlar LEDs blancos o azules con 3,4+ voltajes hacia adelante)

Lleva 3 conectores de clavija en grupos de 4, así que usted puede enchufar 16 servos a la vez (los enchufes del servo son levemente más anchos de 0.1 “por lo que usted puede apilar solamente 4 al lado de uno a en 0.1”)
La  resolución es de 12 bits para cada salida – para servos, lo que significa una resolución de 4us a 60Hz

 

Un par de notas antes de comenzar:
  • Para agregar un actuador de luminosidad necesita un controlador PWM. Para este ejemplo vamos a utilizar un regulador de la entrada-salida de PCA9685 PWM. Este tutorial asume que usted ya tiene el PCA9685 conectado. Consulte el Tutorial de PCA9685 si necesita ayuda con la parte.
  • Asegúrese de que Raspberry Pi está apagado al conectar los cables.
  • Cuando utilice un cable de cinta GPIO, asegúrese de que está conectado el cable (es un color diferente que los otros) en la esquina de la Raspberry Pi y la parte superior de tu pastel de Pi.
  • El diagrama proporcionado es sólo un ejemplo de cómo conectar el sensor. Hay muchas maneras para conectar sensores y extensiones, así que trate de lo que funciona mejor para usted!
  • Algunos placas de prototipos tamaño completo (usados en los diagramas a continuación) tienen una linea de alimntación que se separa en el medio. Si este es el caso, asegúrese de que sus sensores están conectados en la misma mitad de la placa como tu pastel de Pi.

Use el siguiente diagrama para conectar un LED a su frambuesa Pi y ajustar su brillo mediante PWM.

Paso 1

Conecte uno de los pines PWM de la PCA9685 a lo LED, a través de un resistor conectado al cable (positivo) más. En este caso, utilizaremos canal 0 en el PCA9685.
Luminosity

Paso 2

Conecte tierra del canal 0 de la PCA9685 de los LEDs más corto (negativo).
Luminosity

Paso 3

¡Listo! Ahora puede Agregar el actuador de luminosidad a su panel de control, utilizando el canal 0 en el PCA9685 para ajustar el brillo de los LEDs.

TMP36

TMP36

Antes de comenzar,para poder utilizar un sensor análogo del tipo  TMP36  con la RP Pi tenemos que utilizar un convertidor de analógico a Digital. Para este ejemplo utilizaremos el MCP3008 para esta tarea. Este tutorial asume que usted ya tiene el MCP3008 conectado.

Use el siguiente diagrama para conectar un sensor de temperatura de analógico TMP36.

 

Paso 1

Conecte la energía eléctrica desde el  Pi al TMP36 pin 1 (+ VS).
TMP36

Paso 2

Conectar la tierra de la Pi al TMP36 pin 3 (GND).
TMP36

Paso 3

Conectar la clavija de TMP36 2 (VOUT) en uno de los 8 canales de la MCP3008. Para este ejemplo, CH0.
TMP36

Paso 4

¡Listo! Ahora puede añadir el sensor TMP36 al tablero de Cayenne, usando canal de la MCP3008  para leer el valor del sensor.

 

MCP3004

MCP3004

El  MCP3004  es  un conversor A/D de canales de 10 bits de resolución

Use el siguiente diagrama para conectar su Convertidor A/D de MCP3004 con interfaz en serie SPI.

Paso 1

Desde el pastel de Pi para alimentar el pin MCP3004 14 (VDD) y 13 (VREF).
MCP3004

Paso 2

Conectar la tierra de la Pi al MCP3004 pin 7 (DGND) y 12 (AGND).
MCP3004

Paso 3

Conectar patillas SCLK de la Pi y el MCP3004 11 (CLK).
MCP3004

Paso 4

Conectar patillas MISO de la  Pi y el MCP3004 10 (DUDA).
MCP3004

Paso 5

Conectar patillas MOSI de la Pi y el MCP3004 9 (DIN).
MCP3004

Paso 6

Conecte la clavija de la entrada de la selección de chip MCP3004 8 (CS/SHDN) a uno de los pines del chip select Pi, CE0 en este ejemplo
MCP3004

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3004 a tu panel de control usando el chip-select 0.

MCP3204

MCP3204

Use el siguiente diagrama para conectar su Convertidor de A/D MCP3204 con interfaz en serie SPI.

Paso 1

Desde  Pi puede alimentar el pin MCP3204 14 (VDD) y 13 (VREF).
MCP3204

Paso 2

Conectar la tierra del  Pi al MCP3204 pin 7 (DGND) y 12 (AGND).
MCP3204

Paso 3

Conectar patillas SCLK del Pi y la MCP3204 11 (CLK).
MCP3204

Paso 4

Conectar patillas MISO del Pi y la MCP3204 10 (MOSI).
MCP3204

Paso 5

Conectar patillas MOSI del Pi y la MCP3204 9 (DIN).
MCP3204

Paso 6

Conecte la clavija de la entrada de la selección de chip MCP3204 8 (CS/SHDN) a uno de los pines del chip select del Pi , CE0 en este ejemplo.
MCP3204

Paso 7

¡Listo! Ahora puede Agregar el convertidor MCP3204 a su panel de control usando el chip-select 0.

MCP3208

MCP3208

El  MCP3008  es  un conversor A/D de 8 canales de 10 bits de resolución

Use el siguiente diagrama para conectar su Convertidor A/D de MCP3208 con interfaz en serie SPI.

 

Paso 1

Desde el  Pi alimentar el pin MCP3208 16 (VDD) y 15 (VREF).
MCP3208

Paso 2

Conectar la tierra del pastel de Pi al MCP3208 pin 9 (DGND) y 14 (AGND).
MCP3208

Paso 3

Conectar patillas SCLK del  Pi y el MCP3208 13 (CLK).
MCP3208

Paso 4

Conectar patillas MISO del  Pi y el MCP3208 12 (MOSI).
MCP3208

Paso 5

Conectar patillas MOSI del Pi y el MCP3208 11 (DIN).
MCP3208

Paso 6

Conecte la clavija de entrada MCP3208 chip select (CS/SHDN) de 10 a uno de los pines del chip select del Pi , CE0 en este ejemplo.
MCP3208

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3208 a su panel de control usando el chip-select 0.

MCP3008

MCP3008

El  MCP3008  es  un conversor A/D de 8 canales de 10 bits de resolución  de bajo coste (6€)

Use el siguiente diagrama para conectar su convertidor A/D de MCP3008 con interfaz en serie SPI.

Paso 1

Desde el Pi alimentar el pin MCP3008 16 (VDD) y 15 (VREF).
MCP3008

Paso 2

Conectar la tierra del Pi al MCP3008 pin 9 (DGND) y 14 (AGND).
MCP3008

Paso 3

Conectar patillas SCLK del Pi y el MCP3008 13 (CLK).
MCP3008

Paso 4

Conectar patillas MISO del  Pi y el MCP3008 12 (MOSI).
MCP3008

Paso 5

Conectar patillas MOSI del  Pi y el MCP3008 11 (DIN).
MCP3008

Paso 6

Conecte la clavija de entrada MCP3008 chip select (CS/SHDN) de 10 a uno de los pines del chip select Pi Zapatero, CE0 en este ejemplo.
MCP3008

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3008 a su panel de control, usando el chip-select 0.

ADS1115

ADS1115

El  ADS1115 es un convertidor A/D de alta resolucion de 16 bits de 4 canales de un coste muy contenido (unos 4,25€).

El ADS1115 le permite seleccionar esclavo diferentes direcciones para el convertidor. Para este ejemplo usaremos 0x48.

Use el siguiente diagrama para conectar su convertidor A/D de ADS1115.

 

Paso 1

Desde el Pi para alimentar el ADS1115.
ADS1115

Paso 2

Conectar la tierra del  Pi a la ADS1115.
ADS1115

Paso 3

Conecte los pines SCL de la ADS1115   a la  Pi.
ADS1115

Paso 4

Conecte las clavijas SDA de la ADS1115 de  la Pi.
ADS1115

Paso 5

Conecte los pines GND y ADDR en la ADS1115. Esto resultará en una dirección de I2C del 0x48.
ADS1115

Paso 6

¡Listo! Ahora puede Agregar el convertidor de ADS1115 en el tablero de Cayenne, con dirección por defecto de 0x48.

ADS1015

ADS1015

Hablamos del ADS1015  un conversor  A/D de 12 bits  de 5 canales .El ADS1015 le permite seleccionar esclavo diferentes direcciones para el convertidor. Para este ejemplo usaremos 0x48.

Use el siguiente diagrama para conectar su convertidor A/D de ADS1015.

 

Paso 1

Desde el pastel de Pi para alimentar el ADS1015.
ADS1015

Paso 2

Conectar la tierra del  Pi a la ADS1015.
ADS1015

Paso 3

Conecte los pines SCL de la ADS1015 a la Pi.
ADS1015

Paso 4

Conecte las clavijas SDA de la ADS1015 a la  Pi.
ADS1015

Paso 5

Conecte los pines GND y ADDR en la ADS1015. Esto resultará en una dirección de I2C del 0x48.
ADS1015

¡Listo! Ahora puede Agregar el convertidor de ADS1015 en el panel de Cayenne, con dirección por defecto de 0x48.

 

MCP23018

MCP23018

El MCP23018 es un convesor A/D de 12bits de 4 canales  de alta precisión .Use el siguiente diagrama para conectar su MCP23018 IO expansor.

Paso 1

Alimentar 5V desde el zapatero de Pi a VDD (pin 11) en el MCP23018.
MCP23018

Paso 2

Conectarse tierra del Pi el VSS (pin 1) en el MCP23018.
MCP23018

Paso 3

Conectar los pines SCL de la MCP23018 (pin 12)  de su Pi.
MCP23018

Paso 4

Conecte las clavijas SDA de la MCP23018 (pin 13)  a la  Pi.
MCP23018

Paso 5

Alimentar el reset (pin 16) en el MCP23018. Tira de alta Reset es necesario para el funcionamiento normal.
MCP23018

Paso 6

Conectar toma de tierra al pin de dirección (pin 15) en el MCP23018. Esto le dará el expansor de una dirección predeterminada de 0 x 20.
MCP23018

Paso 7

¡Listo! Ahora puede Agregar el MCP23018 en el panel de Cayenne, con dirección por defecto de 0 x 20.

No se preocupe  hay muchos mas posibilidades  que hablaremos en proximos post

Simple modificación de un mando dual para automatización del hogar

Veremos como modificar un sencillo mando de RF para posibilitar el telemando o la operación manual


En el post de hoy vamos a ver como con una  simple  modificación del circuito comercial (concrétamente el kit jm80) de un receptor de un mando dual podemos convertir el circuito de radio control de un sistema eléctrico del hogar ( persiana eléctrica,puerta eléctrica, etc)  en un elemento  que nos abra la puerta a la automatización del hogar gracias  a que nos va a ser posible el control por tres vías posibles:

  • A distancia por el mando
  • Por control manual   por si perdemos el  mando o deseamos inhibir este
  • Por control mediante  un circuito auxiliar (Arduino).

 

conjunto.PNG

El circuito que vamos a usar es un económico kit  de 12€ que se puede comprar en Amazon aqui  .Sus características mas importantes son las siguientes:

  • 433 MHz, 2 Relay, alrededor de 150 metros
  • Incluye palanca/momentáneo/Latching chip
  • Min Voltaje/Corriente de conmutación: 5VDC 100 mA.
  • Max conmutación Voltaje: 110 VDC 240 VAC. Max Corriente de conmutación: 15 A.
  • Potencia de conmutación nominal: 1,875 va 360 W para cada relé
  • Canal: 2 canales
  • Voltaje de funcionamiento: DC 12 V
  • Corriente estática: < = 7ma electrónico contacto
  • Capacidad: 7 A 240 V AC, 10 A 24 V DC
  • distancia de transmisión: 150 – 200 metros (sin obstáculos)
  • codificación tipo: soldado modificar DIP chip de cambio de modo de control
  • Frecuencia de operación: 433 MHz
  • Modos de control: Elija con cierre o non-latching por el cambio un chip DIP carga nominal: 2000 W
  • Dimensión (LWH) (mm): 55 x 40 mm

 

Un  característica interesante para el caso de que montemos varias unidades es que es posible configurar receptor  y transmisores para otras combinaciones modificando los puentes de la combinación de acceso (por fiabilidad han sustituido el conmutador por puentes)

 

placas.PNG

Este kit incluye ingeniosamente tres chips que insertando alguno de estos  en el zócalo DIL del CI  del receptor permiten operar el receptor en tres  modos muy diferentes:

  • Tipo  Latch : al pulsar un botón,el relé interesado se conecta  hasta que pulse el otro. Muy parecido a los botones de velocidad de los ventiladores  que conectan otro bobinado ( y desconectan el anterior ) al activarlo
  • Tipo de non-latch (momentáneo): al pulsar un botón el relé interesado se conecta hasta que  usted lo libera. Al igual que el botón de claxon, si usted pulsa el claxon suena hasta que lo libera ;
  • Tipo de auto-latch (botón): al pulsar un botón el relé interesado se conecta  hasta que usted pulsar una vez más para desconectarlo.Este modo esta claramente ideado por ejemplo para abrir o cerrar la persiana eléctrica completamente sin necesidad de tener que estar pulsando el botón .También es útil para activar  o desactivar a distancia cualquier dispositivo como por ejemplo una TV, un equipo hifi,etc   funcionando en resumen como  la clave de potencia de mando a distancia de TV: al pulsar  TV, se enciende pero si se pulsa  de nuevo, TV se  apaga. Es esta configuración la que viene predefinida en el kit ,por lo que si necesita modificar el tipo de operación en non-latch o latch tendrá que cambiar el chip  que acompaña el kit

placareles1.png

Centrándonos en el receptor que  como vemos opera a 12 V DC, este cuenta con dos reles de  7A (220V).Cada relé cuenta con  un contacto común  y dos contactos móviles : uno abierto (correspondiente a la operación ) y  otro  cerrado (correspondiente al reposo).

En el siguiente esquema podemos ver claramente su significado:

esquema reles.PNG

Aunque el contacto en reposo(CB)   puede servir para muchas aplicaciones, para el  uso “normal ” se  utilizaran los contactos de trabajo( AB) para activar o desactivar las cargas a las que los conectemos estos , como por ejemplo el motor de una persiana eléctrica que tiene dos bobinados ( uno para subida y otro para bajada)

Este equipo , aun como vemos es muy versátil ,sin embargo  no incluye operación manual en el propio receptor ,ni tampoco  ningún tipo de tele-operación para poder activar los reles por medio  de algún automatismo  (Arduino ;Netduino ,Raspberry Pi,etc),lo cual puede ser un inconveniente  con vistas a automatizar nuestro hogar

La  modificación que se propone a este estupendo Kit es la posibilidad de operarlo via diferente a la de radio ,pero al no tener terminales específicos con objeto de no dañar la electrónica de RF ,el latch o los transistores de salida, lo  mejor es operar directamente  con los bobinados de los reles.

La modificación probada para este kit , no puede ser mas sencilla pues simplemente consiste en localizar los bobinados de los reles (diferentes del positivo)   y  soldar  a estos  sendos cablecillos  permitiéndonos  usarlos si lo conectamos a la masa general  tanto para operar manualmente los reles como para tele-operacion por otro circuito

En la siguiente imagen podemos ver dos cablecillos grises soldados a la placa para el control manual de los reles:

 

IMG_20160904_185521[1].jpg

 

En cuanto a las conexiones de los hilos de control  obtenidos, el conexionado no puede ser mas sencillo ,pues  sólo conectaremos los hilos a dos pulsadores (normalmente abiertos)  y después uno  común  que ira a ambos pulsadores  y a la masa común de la alimentación(ov)

 

IMG_20160904_185441[1].jpg

Obviamente los hilos obtenidos  de la conexión de los bobinados de los relés no solo sirven para la operación por pulsadores , también puedes ser utilizados para la tele-operación del circuito vía un circuito auxiliar( por ejemplo constituido un Arduino con un  transistor de pequeña potencia )

Finalmente  para terminar el montaje se recomienda usar dos regletas de terminales  diferenciadas:

  • Una de muy baja tensión para los tres terminales ( los dos relés y la masa) para el tele-control   o para  el accionamiento manual de los pulsadores
  • Una de Baja Tensión  de  al menos 5 terminales para la alimentación del montaje y para apoyar las conexiones de  utilización del receptor ( en la imagen se ve como se alimenta desde ahí a  la fuente del receptor)

 

IMG_20160904_191156[1].jpg

 

Si le interesa hace esta mejora  , el kit que hemos usado en este post lo puede conseguir en Amazon por menos de 12€  , aunque como se ha comentado tendrá que soldar dos cablecillos a la placa ( puede perder la garantía del producto así que se recomienda probarlo antes de emprender esta sencilla modificación) ,pero la mejora sera bastante ostensible pues abre un abanico inmenso de posibilidades