NeonMika.Webserver es un servidor web preconfigurado para Netduino+ yNetduino 2+ fácil de extender de modo que con un código mínimo (o incluso nulo), puede obtener excelentes resultados controlando todos los puertos de su Netduino +, accediendo y cargando archivos, creando servicios web ¡y algunas cosas más!
Si usa el esquema de la cafetera conectada del que hablábamos en un post anterior únicamente puede usar el pin digital D2 como salida y al que conectaremos una economica placa de un relé compatible con Arduino (5V)
Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión de 5V procedente de la placa Netduino, conectar el pin de datos D2 a la entrada IN de la placa del relé y finalmente conectar la carga ( en este caso un cafetera) a los contactos de salida del relé
Gracias a neomikaserver podremos controlar fácilmente la cafetera de una manera muy facil y rapida pero ademas este servidor destaca por la siguientes funcionalidades:
Acceso a la tarjeta microSD
Control de todos lso puertos GPIO
Lectura de todos los puertos GPIO
Control de su Netduino+ usando métodos existentes como setPWM o setDigitalPinState
Permite agregar sus propios métodos similares al servicio web para que pueda expandir NeonMika.Webserver a sus propias necesidades para cada proyecto.
Hay dos directorios de interés para usted:
Framework :contiene el código de la biblioteca para un nuevo proyecto usando NeonMika.Webserver. Consulte esta carpeta si desea agregar NeonMika.Webserver a un proyecto existente.
Executeable: contiene un pequeño proyecto creado usando NeonMika.Webserver. Consulte este si desea obtener una primera experiencia con el servidor. ¡Puede ejecutarlo sin escribir ninguna línea de código!
Para probar NeonMika.Webserver y tener algún código de muestra, simplemente siga estos pasos:
Simplemente descargue el código y vaya a “Executeables”.
Implemente el proyecto en su Netduino Plus. Debería comenzar a funcionar.
Este proyecto de ejemplo que utiliza NeonMika.Webserver tiene el siguiente método xml agregado al servidor web en tiempo de ejecución: netduinoplus / wave … Conecte los LEDs al Pin 0,1,4,5,8,9 y verá que su LED se enciende uno después el otro.
Setup
Como puede ver, solo necesita llamar al constructor para iniciar NeonMika.Webserver.
Server WebServer = new Server(PinManagement.OnboardLED, 80, false, "192.168.0.200", "255.255.255.0", "192.168.0.1", "NETDUINOPLUS");
Los parámetros necesarios son autoexplicativos:
El puerto
DHCP encendido / apagado
Dirección IP
Máscara de subred
Gateway
Nombre de red
¡No necesita nada más para ejecutarlo!
Métodos sopurtados?
Aquí hay una lista con todos los métodos web precodificados que puede usar en su navegador o en cualquier otra aplicación para comunicarse con su Netduino:
echo (devuelve el valor enviado) , ejemplo netduinoplus / echo? value = [a-Z] , por ejemplo http://192.168.0.2/echo?value=markus devolveria “markus”
switchDigitalPin (Cambia el pin seleccionado de verdadero a falso y vis-a-vis) ,ejemplo : -> netduinoplus / switchDigitalPin? pin = [0-13] es decir por ejemplo para encender la cafetera seria http://192.168.0.2/setDigitalPin?pin=2&state=true y para apagarla http://192.168.0.2/setDigitalPin?pin=2&state=flase
setDigitalPin (Establece el pin digital seleccionado al estado seleccionado), ejemplo -> netduinoplus / setDigitalPin? pin = [0-13] & estado = [verdadero | falso]
pwm (establece el PWM del pin para el período y duración enviados, ejemplo -> netduinoplus / pwm? pin = [5 | 6 | 9 | 10] & period = [int] & duration = [int]
getAnalogPinValue (Devuelve el valor del pin analógico seleccionado),ejemplo-> netduinoplus / getAnalogPinValue? pin = [0-5]
getDigitalPinState (Devuelve el estado de su pin seleccionado (on / off)),ejemplo -> netduinoplus / getDigitalPinState? pin = [0-13]
getAllAnalogPinValues (Devuelve el valor de cada pin analógico), ejemplo-> netduinoplus / getAllAnalogPinValues
getDigitalPinState (Devuelve el estado de cada pin digital).ejemplo-> netduinoplus / getAllDigitalPinStates
getAllPWMValues (Devuelve los valores para todos los puertos PWM), ejemplo-> netduinoplus / getAllPWMValues
fileUpload (Carga un archivo en la ruta de la tarjeta SD mediante POST. Debe escribir los datos de archivo (bytes) en el cuerpo POST),ejemplo -> netduinoplus / upload? path = [a-Z]
Respuesta de archivo y directorio: Simplemente escriba netduinoplus / [pathtomyfile] y podrá ver / descargar su archivo. Si la ruta dada es un directorio, se devolverá una vista de directorio
Más para fines de prueba, pero también como parte de NeonMika.Webserver:
xmlResponselist (le da una lista de todos los métodos XML) , ejemplo -> netduinoplus / xmlResponselist
jsonResponselist (Te da una lista de todos los métodos JSON),ejemplo -> netduinoplus / jsonResponselist
multipleXML (Ejemplo sobre cómo usar XML anidado), ejemplo -> netduinoplus / multixml
Algunos ejemplos de uso
Como expandirlo con servicios XML
WebServer.AddResponse(new XMLResponse("wave", new XMLResponseMethod(WebserverXMLMethods.Wave)));
No se ve tan complicado? Eso porque no es complicado.
Este es un ejemplo de cómo escribir un XMLResponse
Parámetro: Solicitud (con esto puede acceder al parámetro escrito en la URL)
Hashtable (aquí usted agrega la respuesta)
Si necesita XML apilado, eche un vistazo al método MultiXML en Server.cs
Cómo escribir una respuesta JSON:
private void ResponseListJSON(Request e, JsonArray j)
{
JsonObject o;
foreach(Object k in _Responses.Keys)
{
o = newJsonObject();
o.Add("methodURL", k);
o.Add("methodName", ((Response)_Responses[k]).Name);
j.Add(o);
}
}
Server setup:
Server WebServer = new Server(PinManagement.OnboardLED,80,false,"192.168.0.200","255.255.255.0","192.168.0.2","NETDUINOPLUS");
WebServer.AddResponse(newXMLResponse("echo", new XMLResponseMethod(Echo)));
WebServer.AddResponse(newJSONResponse("jsonResponselist", new JSONResponseMethod(ResponseListJSON)));
Netduino es una plataforma electrónica de código abierto utilizando .NET Micro Framework basada en un microcontrolador de 32 bits y con un entorno de desarrollo muy rico destinada a ingenieros y aficionados por igual. Netduino Plus ademas añade Ethernet integrado (hay una pila de TCP/IP completa )y una ranura para tarjetas microSD para almacenar archivos .No menos importante esta el tema de las conexiones externas,pues Netduino ofrece 20 GPIOs combinados con SPI, I2C, 2 UARTs (1 RTS/CTS), 4 canales PWM y 6 canales ADC. A gran diferencia con Arduino, para desarrollo se puede usar tanto para Windows ( con Visual Studio,) o con Xamarin Studio en Mac OS X , ambas perfectas para complilar ,depurar y probar nuestra aplicaciones . Incluso se puede utilizar el Netduino en equipo Linux y Mac con Mono en lugar de .NET de código abierto
La familia Netduino se basa en el Cortex-M Micro procesador la v4.3 .NET Micro Framework (NETMF) que como comentabamos está repleto de IO; incluyendo 22 entrada/salida de propósito General (GPIO) puertos, de las cuales 6 apoyo generación de modulación de ancho de pulso (PWM) de hardware, 4 UARTs (comunicación serial), I2C y SPI (Serial Bus de interfaz periférico).
.NET micro Framework combina la facilidad de codificación de alto nivel y las características de los microcontroladores soportando eventos programación multi-threading, depuracion línea por línea, puntos de interrupción y mucho más en clara diferencia con Arduino.
Antes de continuar debemos recordar que Netduino también es pin compatible con Arduino shields permitiendo asi usar algunos escudos de Arduino que ofrecen funcionalidades preconstruidas como localización GPS, servo control , etc .
Realmente la potencia de Netduino+ frente a otras placas de igual factor de forma es su conectividad integrada en la propia placa al no necesitar ningún escudo adicional, lo cual le permite llegar a aplicaciones de una forma muy sencilla y de una forma muy rápida como vamos a ver
En este ejemplo vamos demostrar lo fácil que resulta controlar una cafetera ( o lo que quiera ) desde Internet por medio de una placa Netduino+ que esta conectado a la red ethernet
Para este proyecto únicamente se usara el pin digital D2 que se configurara como salida y al que conectaremos una economica placa de un relé compatible con Arduino (5V)
Aunque es fácilmente construible por nosotros mismso usando un relé ,un transistor y sus componentes asociados , debido al bajisimo precio <2€) de uno ya montado merece la pena adquirirlo asi pues comunicante habrá que conectar a un pin de datos binario de Netduino , alimentarlo con 5v DC ( obtenidos del propio Netduino+) y por ultimo usar los contactos del relé para encender cualquier cosa que se nos ocurra.
Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión de 5V procedente de la placa Netduino, conectar el pin de datos D2 a la entrada IN de la placa del relé y finalmente conectar la carga ( en este caso un cafetera) a los contactos de salida del relé.
Para probar el funcionamiento del circuito , conecte el Netduino+ a su ordenador , inicie Visual Studio 2012 y cree una nueva aplicación .NET MicroFramework llamada Connected_Coffee_SimpleControl, y agregue referencias a los siguientes dlls:
Microsoft.SPOT.Hardware
System
SecretLabs.NETMF.Hardware.Netduino
A continuación, pegue el siguiente código en su archivo program.cs:
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Threading;
namespace Connected_Coffee_SimpleControl
{
public class Program
{
public static void Main()
{
// create an output port (a port that can be written to) and
// connect it to Digital Pin 2
OutputPort relay = new OutputPort(Pins.GPIO_PIN_D2, false);
// run forever
while (true)
{
relay.Write(true); // turn on the relay
Thread.Sleep(5000); // Leave on for 5 seconds
relay.Write(false); // turn off the relay
Thread.Sleep(5000); // leave off for 5 seconds
}
}
}
}
Si observamos que la cafetera se enciende por unos 5 segundos y se apaga por 5 segundos en un bucle indefinido, el circuito funciona perfectamente. así que con todo esto habremos ya construido la base de la cafetera conectada mediante la creación de lo que era esencialmente una toma de corriente inteligente que podre controlar con un Netduino. Ademas después de montar el hardware, implantamos una pequeña aplicación que controla el relé para activar la energía del hogar a la cafetera, efectivamente añadiendo un control muy simple.
Si bien esta aplicación es funcional , vamos a realizar un paso más y añadir una web API a la aplicación Netduino para que nosotros podemos controlar la salida de forma remota.
Una vez tengamos la web API en su lugar, tenemos un punto final que puede ser aprovechado de una variedad de casos de uso. como por ejemplo construyendo una aplicación móvil de Xamarin.Forms que use esa API para controlar la cafetera conectado desde un dispositivo móvil
El código de ejemplo para el proyecto de la cafetera conectado todo se puede encontrar en
github.com/WildernessLabs/Netduino_Samples/tree/master/Connected_CoffeeMaker”>Netduino_Samples/Connected_CoffeeMaker y el código que se ejecuta en el Netduino está en la carpeta de la aplicación de ApplianceHost ( de hecho ese es el código que se va examinar aquí).
Introducción a Maple
Con el fin de exponer la web API para permitir el control remoto de nuestra cafetera, necesitamos un servidor web para acogerla,así que vamos a ver un servidor web especialmente diseñado para Netduino, el Aervidor de maple(github.com/WildernessLabs/Maple).
Maple es un servidor web en código abierto, ultra ligero, habilitada para JSON , soportando RESTful construido específicamente para dispositivos Netduino con capacidades de red. También se publica como un paquete nuget, por lo que es muy fácil de añadir funcionalidades de red a sus proyectos. Este servidor esta diseñado específicamente para Netduino por lo que es increíblemente simple, rápido y super fácil de usar. Debe ejecutarse sin problemas en las placas N3 Ethernet Wifi N3 y N2 +.
A continuación se muestran los comandos con las respectivas asignaciones en RequestHandler.cs:
GET http: // IPADDRESS / status – getStatus ()
POST http: // IPADDRESS / turnon – postTurnOn ()
POST http: // IPADDRESS / apagado – postTurnOff ()
¡Despliegue esto en su Netduino y acceda a estos puntos finales para verlo en acción!
Controladores de solicitudes
Criterios de valoración API web de Maple se definen mediante la creación de clases personalizadas que heredan de la clase RequestHandlerBase. Maple utiliza la reflexión para crear direcciones URL basándose en los nombres de método en las clases personalizadas. Soporta tanto los metodos get y post asi como los nombres de métodos que deben tener el prefijo con cualquiera de esas cadenas para ser automáticamente en un extremo.
Por ejemplo, la siguiente clase expone tres URL endpoints :/Status, /TurnOn y TurnOff.
Como indican los nombres de los métodos, las entradas el estado extremo acepta solicitudes get y los métodos de control de potencia (TurnOff y TurnOn) como se puede ver en el siguiente código:
using System;
using Microsoft.SPOT;
using Maple;
using System.Net;
using System.Collections;
namespace ApplianceHost
{
public class RequestHandler : RequestHandlerBase
{
private static bool _isPowerOn;
public RequestHandler(HttpListenerContext context) : base(context)
{
}
public void getStatus()
{
StatusResponse();
}
public void postTurnOn()
{
TogglePower(true);
StatusResponse();
}
public void postTurnOff()
{
TogglePower(false);
StatusResponse();
}
Cuando se invoquen a esos extremos, se llama al método adecuado. En el caso de nuestro servidor de control; el método getStatus devuelve un mensaje con formato JSON que contiene el actual estado del relé de encendido/apagado, el método postTurnOnactiva el relé y el método postTurnOffdesactiva el relé. También mantiene el LED a bordo en sincronía con la energía al relé como indicador.
Ports se ha definido la clase ports.cs, que proporcionan accesos OutputPort directos a los objetos que representan el LED a bordo y el pin digital 1, que controla el relé:
using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
namespace ApplianceHost
{
static class Ports
{
static Ports()
{
ONBOARD_LED = new OutputPort(Pins.ONBOARD_LED, false);
GPIO_PIN_D1 = new OutputPort(Pins.GPIO_PIN_D1, false);
}
public static OutputPort ONBOARD_LED;
public static OutputPort GPIO_PIN_D1;
}
}
Uso de Maple, que es todo el código que se necesita para exponer una web moderna, RESTful API de un Netduino!
Inicialización de la red
A diferencia de aplicaciones tradicionales de escritorio o móvil en el que la interfaz de red durante mucho tiempo se ha inicializado cuando que se ejecuta una aplicación, usted debe inicializar la interfaz de red y espere a obtener su dirección IP, etc, antes de intentar hacer cualquier acceso a la red . Como tal, antes de iniciar el servidor de arce, estas tareas pero ser ejecutado y esperaron en.
La mayor parte del código en el principal extraido de ithub.com/WildernessLabs/Netduino_Samples/blob/master/Connected_CoffeeMaker/ApplianceHost/src/ApplianceHost/Program.cs hace justamente eso: Inicializa la red, espera a que una dirección IP y también hace una solicitud web para la validación. Mayoría del código está dedicado a la depuración y salida de información para ilustrar el proceso y proporcionar información para la instrucción y tiempo de desarrollo de exploración. Esta bien documentado en developer.wildernesslabs.co/Netduino/Input_Output/Network/ y de hecho estan trabajando en el envío de un paquete nuget que controlará todas esta cosas caja negra, en el futuro será aún más fácil de añadir a tus proyectos. Como tal, no voy a cubrir en detalle aquí, excepto to decir que si copia el código de inicialización de la red en su propia aplicación, debe llamar al método y comprobar que es el regreso (de éxito) antes de comenzar cualquier tratamiento que incluye acceso a la red :
InitializeNetwork true
if (InitializeNetwork())
{
// start the maple server
// and start your application processing here
}
Iniciar servidor de Maple
Una vez que la red se ha inicializado, servidor Maple necesita ser instanciado y comenzar con método Start : >MapleServer server = new MapleServer(); server.Start(); Para la mayoría de los casos, esto debe ir directamente después de la llamada de inicialización de red, sin embargo, dependiendo de sus necesidades de aplicación, puede iniciarlo cuando sea necesario.
Configuración de la red
El último paso necesario para configurar la muestra ApplicationHost es configurar la red. Algunas piezas de la red, tales como el nombre de red WiFi y la contraseña (si corresponde), necesita ser configurado en implementar tiempo. Si usted está desarrollando en una máquina Windows, puede utilizar MFDeploy, que se instala como parte del SDK .NET MicroFramework. Para desarrolladores de Mac, existe MacDeploy, que proporciona la misma funcionalidad: Si está usando el WiFi con Netduino 3, la autenticación y opciones de cifrado pueden ser un poco confusos, sin embargo, si se está conectando a una red WiFi moderna que requiere una contraseña, usted probablemente necesitará ajustar la autenticación para Compartido y la configuración de cifrado WPA. Además, el SSID se refiere al nombre de la red WiFi.
Probar el servidor de Control de aplicaciones API
Una vez que la red se configura y se implementa la aplicación, ya está listo para probar la funcionalidad de Maple. Si todo va bien, la ventana de Salida de la aplicación en Visual Studio, debe tener algo similar a lo siguiente:
Getting all the network interfaces.
Found 802.11
WiFi Interface MAC Address: 60-D7-E3-A0-02-CB
DHCP enabled: True
Dynamic DNS enabled: False
IP Address: 0.0.0.0
Subnet Mask: 0.0.0.0
Gateway: 0.0.0.0
SSID:Cabin in the Woods Found 802.11
WiFi Interface No IP Address
DHCP is enabled, attempting to get an IP Address Sleep while obtaining an IP Sleep while obtaining an IP Sleep while obtaining an IP Got IP
Address: 172.16.42.8
Necesitará la dirección IP para probar el punto final de la API. El extremo del estado es fácil de comprobar a través de un navegador; Asegúrese de que usted está en la misma red que el Netduino y abra una ventana del navegador y vaya a la url. Debe mostrar una respuesta JSON. Sin embargo, recomiendo conseguir el programa Postman para probar los extremos. Es gratuito y diseñado específicamente para probar interfaces RESTful. Le permite publicar solicitudes además de obtener, así como una mirada de otras cosas útiles, incluyendo análisis automático de respuestas JSON de la forma http://direccion_ip/Status
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):
En efecto hoy en día ya no es necesario abonarse a un costosísimo sistema de alarma ni tampoco adquirir un nuevo sistema de alarma pues hoy en día si tiene un viejo smartphone que ya no use, gracias a la nueva aplicación Seguricasa free disponible gratuitamente para su descarga en Google Play , se pueden enviar notificaciones automáticamente por correo electrónico ( o por SMS en la version premium ) en el momento que se detecte la apertura o cierre de la puerta gracias al sensor de proximidad que incluye cualquier Smartphone. Asimismo, también puede enviar notificaciones si se detecta corte de red ya que dejaría de estar alimentado externamente el Smartphone (por el cargador del terminal), circunstancia que puede ser monitorizada y procesada dentro de la aplicación y que fácilmente podemos entender como falta de red de corriente alterna.
Seguricasa es una solución ideal por tanto para aquellos que no están dispuestos a pagar una cuota por un sistema de alarma, pero les gustaría saber lo que ocurre en sus propiedades.
La solución es única, pues no es necesario adquirir ningún hardware adicional, ya que se basa en un Smartphone con SO Android 4.1 (Yelly Bean) o superior, para gestionar tanto los accesos, como los cortes de red del suministro eléctrico de una vivienda o local.
Basta con insertar una SIM en su viejo Smartphone, instalar la aplicación Seguricasa y mantener el Smartphone conectado al cargador, para que desde ese momento, en cuanto defina el número del teléfono y las cuentas de correo de origen y de destino, pueda recibir a voluntad notificaciones por SMS o por mail, de cualquier anomalía que suceda en el suministro de corriente alterna de su vivienda.
En el caso de que se desee también monitorizar los accesos, tampoco se necesita ningún hardware especial: simplemente tendrá que fijar su viejo Smartphone cerca de la puerta de acceso mediante un velcro o similar , y colocar un soporte solidario a la puerta que pueda cubrir aproximadamente al menos 1cm la parte superior del Smartphone, para que en cuanto abramos la puerta automáticamente oculte el sensor y de esta forma ser envíen según se defina, notificaciones por SMS o por mail de cualquier acceso ( obviamente si ha definido el número del teléfono y las cuentas de correo de origen y de destino dentro de la propia aplicación).
Montaje
Pare este montaje vamos a necesitar instalar la aplicación “Seguricasa ” en un Smartphone con SO Android 4.1 (Yelly Bean) o superior. También es importante destacar que si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.
El montaje es muy sencillo, pues solo habrá que descargar versión gratuita de la aplicación Seguricasa desde Google Play aqui (o bien la versión premium que por poco mas de 1€ permite enviar SMS’s en las condiciones que deseemos)
.
El terminal Android debe tener SO Android 4.1 (Yelly Bean) o superior y no es fundamental que tenga la pantalla perfecta ( o la batería) ya que la interacción con el terminal solo sera necesaria para configurar cuales van a ser las notificaciones y los destinatarios de estas ( es decir este terminal puede ser perfectamente reciclado o incluso en mal estado ) .
El siguiente paso si vamos a enviar SMS ( versión premium) o si vamos a usar la conexión GPRS en caso de corte de la wifi por falta de suministro eléctrico , es insertar la SIM en el terminal si es que vamos a enviar SMS o emails estando sin suministro eléctrico , ya que normalmente cuando no haya red eléctrica tampoco solo tenemos tener wifi. Dependiendo de lo que deseemos (sms o emails ) necesitaremos un plan mas o menos ajustado ,pero ene general con una tarjeta prepago debería ser suficiente .
Ahora lo siguiente debería ser fijar el terminal a un extremo de la puerta si es que vamos a usarlo también para notificar los accesos a la vivienda o local. Un buen sistema por ejemplo puede ser un belcro auto-adhesivo pegado en la parte de atrás del terminal , aunque en el mercado obviamente también existen soportes para fijar el terminal de forma vertical de una manera muy simple.
Fijado el terminal ya solo nos quedaría si lo que deseamos es controlar el acceso fijando un cartón al extremo de la puerta con cinta adhesiva de modo que al abrir la puerta este tape el sensor de proximidad del terminal tal y como se ve en la fotografía siguiente
Una vez fijados el terminal y el cartón es hora de conectar la alimentación por medio del cargador original o en su defecto cualquier cargador con salida micro-usb .En este sentido tenga en cuenta que el cargador debe permanecer siempre enchufado de modo que pueda ser motorizado el estado de la red eléctrica por lo que este debería ser preferentemente el original o por lo menos de buena calidad.
Ya tenemos todo preparado , así que arrancaremos la aplicación y podemos configurar todos los parámetros como vamos a ver a continuación.
Manejo de la aplicación
Para iniciar la aplicación basta con pulsar sobre el icono “Seguricasa”.
Inmediatamente al iniciar la aplicación, aparecerá la pantalla principal de la aplicación donde se muestra la información básica del estado de los sensores, la cual incluso cerrándola queda en segundo plano con objeto de seguir monitorizando la vivienda o inmueble.
La información mostrada por la aplicación en la pantalla principal es la siguiente:
Nivel de carga de la batería expresada en tanto por ciento.
Temperatura del terminal en grados centígrados.
Estado de suministro eléctrico expresado en voltios.
Estado del sensor de proximidad.
Bajo el icono del botoncito de la esquina superior derecha se muestra el nivel de batería expresado en tanto por uno
Asimismo, la aplicación cuenta con tres botones gráficos:
Ayuda( ?): pulsando aquí se accede al menú básico de ayuda en línea
Histórico(brujula): se accede al log de envíos de correos o SMS ’s enviados desde la propia aplicación.
configuración( caja de herramientas): se accede al menú de configuración de la aplicación
AYUDA EN PANTALLA
Desde la pantalla principal pulsando el menú ayuda, se accede a una pantalla auxiliar donde se explica sucintamente el sentido de esta aplicación.
Para volver a la pantalla principal, pulsar el botón volver del terminal, o simplemente se puede pulsar el botón cerrar de esta pantalla.
LOG DE EVENTOS
Desde la pantalla principal, pulsando el menú histórico se pueden acceder al log de envíos de correos o SMS ’s enviados desde la propia aplicación.
Siempre que se haya definido un nombre valido de fichero en la pantalla de configuración, y el terminal cuente con al menos con 128MB de espacio en la SD externa para almacenamiento de logs, se mostrara en cada línea del log la fecha y hora junto el tipo de notificación (SMS o e-mail) y los motivos (corte o vuelta de red y puerta abierta o cerrada).
Para volver a la pantalla principal pulse el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.
Es interesante destacar que, en esta pantalla que , en cuanto se supera el tamaño visualizable en la pantalla del terminal, sobre esta se podrá hacer scroll vertical para poder acceder al resto de información.
En caso de no que no interese mantener este fichero de log, el usuario siempre puede acceder al administrador de ficheros y acceder a la raíz de la SD para proceder a mover o eliminar dicho fichero de log.
Obviamente si desea personalizar el nombre del fichero de log, simplemente deberá cambiar el nombre del fichero personalizado de fichero de log en la opción Fichero de Log→Carpeta
También si desea no registrar los eventos, simplemente deberá borrar el nombre del fichero personalizado de fichero de log en la opción Fichero de Log→Carpeta
CONFIGURACÓN DE LA APLICACIÓN
Hay una opción muy importante referida a la configuración de la aplicación, la cual se accede pulsando el botón contextual del terminal de Android o directamente sobre el botón de la caja de herramientas.
Una vez ahí, pulsando sobre el ítem, se mostrara el submenú de configuración de la aplicación:
La pantalla está divida por seis secciones claramente identificadas:
Avisos por SMS.
Avisos por email.
Números de teléfono para SMS.
Correo electrónico destino.
Usuario Gmail para envíos.
Fichero de log.
Avisos por SMS.
Esta opción esta reservada para la version premium disponible en Google Play ( coste aprox 1€).
La conectividad a internet de los terminales de última generación junto con el crecimiento exponencial tanto de las redes sociales como los de servicios de mensajería no han frenado la expansión de los mensajes SMS a nivel comercial.
Está claro que los nuevos métodos de comunicación han tomado la delantera en lo que se refiere a las comunicaciones personales y grupales ,pero a cambio han dejado a los mensajes SMS cómo líderes absolutos de las comunicaciones de empresas como bancos, empresas de transporte público, empresas de telecomunicaciones , compañías de seguros, hospitales ,otras instituciones públicas y un largo etcétera las cuales han adoptado los mensajes SMS como método para enviar notificaciones, confirmar transacciones, recordar citas, etc.
Precisamente pensando en la gran seguridad, accesibilidad y confianza que ofrecen los SMS’s frente a otros servicios de mensajería, en esta aplicación se ha optado por permitir él envió de mensajes de forma selectiva según las necesidades de los usuarios.
Clicando en cualquiera de las tres opciones de este submenú automáticamente se enviaran un SMS al número que se defina ante las siguientes circunstancias:
Corte de suministro de corriente alterna mediante la el suministro de tensión externa al terminal ( opción “Cortes de electricidad”)
Aperturas o cierres de la puerta ocultando el sensor de presencia(opción “Aperturas puerta”)
Al iniciar por primera vez la aplicación Seguricasa (opción “Al iniciar esta app”).
Avisos por e-mail.
Estar dado de alta en una cuenta de correo electrónico, hoy en día es una realidad pues todos los usuarios de la red disponen de una dirección de correo electrónico y lo utilizan diariamente.
En la actualidad, el uso del correo electrónico, se puede dividir en diferentes ámbitos como académico, laboral y personal, por lo que es muy interesante también poder avisar por e-mail ante cualquier evento de acceso o anomalía en el suministro de corriente alterna desde el Core de esta aplicación.
Los avisos por e-mail en esta aplicación son personalizables mediante esta sección:
Clicando en cualquiera de las tres opciones del submenú de avisos por e-mail, automáticamente se enviaran un email a la cuenta de correo electrónico que se defina ante las siguientes circunstancias:
Corte de suministro de corriente alterna mediante la el suministro de tensión externa al terminal (opción “Cortes de electricidad”).
Aperturas o cierres de la puerta ocultando el sensor de presencia (opción “Aperturas puerta”).
Al iniciar por primera vez la aplicación Seguricasa (opción “Al iniciar esta app”).
Número de teléfono para envíos SMS
Complementando el submenú de avisos por SMS ’s disponible en la version Premium se incluye esta sección, donde se definirá el número de teléfono al que se deseen dirigir los mensajes de texto.
Tenemos que definir sobre todo el número del Teléfono hacia el que quieren dirigirán los SMS ‘s ante los eventos que se deseen auditar chequeados en el submenú de avisos por sms’s.Opcionalmente, también se puede asignar una cadena de texto en la opción Usuario que nos permita por ejemplo identificar el número de teléfono que hayamos asignado.
Es interesante destacar que si no informamos del número de teléfono destinatario de los SMS ‘s y clicamos alguna opción de SMS, nos saltara un error de número no definido.Si introducimos el numero o el nombre de usuario en esta sección, para volver a la pantalla principal, pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.
Correo electrónico destino
Complementando el submenú de avisos por mail, se incluye esta sección donde se definirá la cuenta de correo electrónico al que se deseen dirigir los mails.
Tenemos que definir el correo electrónico destino hacia el que quieren dirigirán las e-mail ante los eventos que se deseen auditar chequeados en el submenú de avisos por e-mail
Clicaremos en la copión E-mail y sobre la caja de texto cumplimentaremos el destinatario donde se dirigirán el e-mail ante los eventos que se deseen auditar chequeados en el submenú de avisos por e-mail.
Es interesante destacar que si no informamos de la cuenta de correo y clicamos alguna opción de envíos de correos, nos saltara un error de mail no definido.
Para volver a la pantalla, el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.
Usuario Gmail para envíos
Complementando el submenú de avisos por mail, en esta sección se definirá la cuenta de correo electrónico de Gmail desde donde se enviaran los mails.
Obviamente se podría haber definido otro tipo de servidor de correo saliente, pero por simplicidad dado que los usuarios de Android están obligados a tener una cuenta vinculada a una dirección de correo de Gmail para instalar nuevas aplicaciones en su terminal , este es el candidato ideal como servicio de envió de e-mails.
Dada la facilidad de envíos de correos electrónicos ante las circunstancias definidas, tenemos que definir el correo electrónico origen desde donde se dirigirán las e-mail ante los eventos que se deseen auditar chequeados en el submenú de avisos por e-mail
La cuenta de Gmail pues se cumplimentara en la opción “cuenta” mediante el formato establecido completo (es decir con el formato [email protected]).
Para volver a la pantalla principal, basta pulsar el botón volver del terminal, o simplemente pulsar el botón cerrar de esta pantalla.
Dado que usaremos la cuenta de Gmail, para poder enviar correos desde esta cuenta, necesitamos cumplimentar en el apartado “Clave” la password de la cuenta de Gmail.
Como vemps en la pantalla anterior al cumplimentar la password de la cuenta de Gmail se ocultara su contenido tanto cuando estamos cumplimentándolo como cuando los revisamos pudiéndolo actualizar o eliminar en cualquier momento desde esta opción.
Es interesante destacar que si no informamos de la cuenta de correo y clicamos alguna opción de envíos de correos, nos saltara un error de mail no definido.
Para volver a la pantalla principal pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.
Fichero de log
Es importante destacar que si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.
Si deseamos registrar los logs de aviso por email o por SMS, simplemente necesitamos apuntar en el apartado “Carpeta” el nombre del fichero que deseamos usar para registrar todos estos eventos en el root de la microsd.
Para volver a la pantalla principal pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.
En el siguiente vídeo podemos ver mas claramente el funcionamiento de todas estas opciones comentadas;
Requisitos
Smartphone Android con SO Android 4.1 (Yelly Bean) o superior.
Tarjeta SIM (puede ser de Prepago).
Cargador original.
Es importante destacar que si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.
Opcional: sistema para fijar el smartphone a la pared y soporte solidario a la puerta de acceso que tape parcialmente el sensor de presencia del Smartphone al abrirse.
Muy resumidamente LattePanda es un un mini ordenador completo con Arduino integrado que ejecuta la versión completa de Windows 10. Incluye todo lo que un PC normal tiene pudiendo hacer cualquier cosa que hace un PC normal. Es ademas compatible con casi todos los aparatos que conoce como impresoras, joysticks, cámaras y más. Todos los periféricos que funcionan en su PC funcionaran en LattePanda.
Ademas LattePanda viene pre-instalado con una edición completa pre-activada de Windows 10.
Utilizando las API existentes, puede desarrollar sus propios proyectos de software y hardware en LattePanda como lo haría en un PC normal usando C #, JavaScript, Ruby y así sucesivamente de modo que no necesita su ordenador portátil para construir una aplicación con el
Pero no sólo puede ser utilizado como un ordenador normal de bajo costo con Windows pues LattePanda también está diseñado con un compatible co-procesador Arduino, lo que significa que se puede utilizar para controlar y detectar el mundo físico, al igual que una placa Arduino!
Si usted es un desarrollador de Windows, un desarrollador de la IO, un fanático de hardware de bricolaje, diseñador interactivo, robótica genio o un fabricante, LattePanda puede ayudar a su proceso creativo con los proyectos informáticos físicos!
LattePanda puede ejecutar la versión completa de Windows 10 y Ubuntu.
Funcionamiento del sistema: Pre-instalado preactivado completa edición de Windows 10 (versión Inicio)
Ram: 2 / 4GB DDR3L
Capacidad de almacenamiento: 32 / 64GB
USB: 1 x USB 3.0, USB 2.0 x 2
HDMI de salida de vídeo y el puerto Ethernet
3,5 mm de salida de audio jack
Ranura para tarjeta Micro SD
Toque y Conector de pantalla
Plug and Play Conectores de sensor
WiFi y Bluetooth 4.0
Coprocesador: ATmega32u4
GPIO: 2 GPIO de chips Intel, 20 GPIO para Arduino
Potencia: 5v / 2A
Dimensiones: 3.46 “x2.76”
Peso: 100 g
Pines
Debajo de cuadros es un diagrama básico que muestra todos los pines del bus de expansión:
Distribución de los pines en el área U1 se asignan a la base de X-Z8300. Por el momento, no hay información disponible.
Distribución de los pines en el área de U2 se asignan al núcleo ATmega32u4.Cada uno de los 20 pines digitales (A0 – A5, D0 – D13) en la zona de U2 se puede utilizar como una entrada o salida, cada uno operando a 5 voltios. Cada salida puede fijar o recibir 40 mA y cada uno tiene una resistencia de pull-up (desconectada por defecto) de 20-50k ohmios.
Precaución: Superior a 40 mA en cualquier pin de E / S puede causar daños permanentes en el ATmega32u4.
Algunos pines tienen funciones especializadas:
Entradas analógicas: A0 – A5, A6 – A11 (en D4, D6, D8, D9, D10, D12 y). El LattePanda tiene 12 entradas analógicas, etiquetados A0 a A11, todos los cuales también pueden ser utilizados como I / O digital. Cada pin tiene una resolución de 10 bits (es decir, 1024 valores diferentes). Por defecto se miden desde el suelo a 5 voltios.
De serie: D0 (RX) y D1 (TX). Se utiliza para recibir (RX) y transmitir datos en serie (TX) TTL.
Las interrupciones externas: D3 (interrumpir 0), D2 (interrumpir 1), D0 (interrumpir 2), D1 (interrumpir 3) y D7 (interrumpir 4). Estos pines pueden ser configurados para desencadenar una interrupción en un valor bajo, un flanco ascendente o descendente, o un cambio en el valor.
PWM: D3, D5, D6, D9, D10, y D13 proporcionan salida PWM de 8 bits.
SPI: D16 (MOSI), D14 (MISO), D15 (SCK).
LED: D13 Hay un LED integrado impulsado por pin digital 13. Cuando el valor del pin es alto o bajo
TWI: D2 (SDA), D3 (SCL).
Otros pines de la placa:
Reset: Lleva a este BAJA línea para reiniciar el microcontrolador. Normalmente se utiliza para añadir un botón de reinicio para escudos que bloquean la una en la mesa.
¿Cuál es el propósito de este proyecto?
En este ejemplo vamos a aprender, cómo nos comunicamos entre Arduino (chip de Arduino interna en LattePanda) y Microsoft Visual Studio y envían los datos desde el Arduino para utilizar una aplicación de Windows. Aquí vamos a medir la temperatura y humedad ambiental y enviar los datos del sensor de DHT Thingspeak.
Cómo acceder a la disposición de patillas de Visual Studio
LattePanda.Firmata es una biblioteca de código abierto Firmata proporcionada por LattePanda, que es adecuado para aplicaciones de Windows desarrollado en Visual Studio. Esta clase le permite controlar Arduino GPIO desde aplicaciones de Windows, con funciones que incluyen:
La lectura y escritura a los pines digitales
La lectura de las entradas analógicas
El control de servomotores
El envío de datos a los dispositivos y los dispositivos de recepción de formularios de datos a través del bus I2C
Para este proyecto, he hecho algunos cambios en la biblioteca Firmata de datos del sensor DHT leer o cualquier otro sensor.
3 pasos para su proyecto Arduino remoto
Descarga e instalación de Visual Studio 2015
Configurar el Arduino (Es pre-instalado, a menos que cambiara el programa de Arduino)
Crear un proyecto o utilizar el proyecto de ejemplo
Descarga e instalación de Visual Studio 2015
En el primer paso, es necesario instalar Visual Studio en LattePanda. No se instala por defecto.
Activar el modo de programador en su sistema operativo, para este fin, vaya a Configuración>Actualización y seguridad> en la sección para desarrolladores> Selección de Modo desarrollador
Estableció el Arduino
Descargar este archivo y abra el archivo en Arduino. (Este archivo reemplaza con StandardFirmata . Algunos cambios se han hecho en este archivo)
Seleccione Arduino Leonardo del Board sección. A continuación, seleccione el puerto COM correcto, cargar el último boceto.
Cableado
El objetivo de este proyecto es leer los datos de temperatura y humedad por el sensor DHT11 conectado a LattePanda(se puede utilizar en lugar de DHT21 o DHT22).
El sensor se debe conectar como en la imagen siguiente ,es decir el pin de la izquierda (Data) al terminal D7 de LattePanda, el terminal central del sensor al pin +5V de LattePanda y por ultimo el terminal de la derecha al ping de GND de LattePanda.
Leer Temperatura y Humedad
Descargar este archivo y abra el archivo con Microsoft Visual Studio.Registrarse en Thingspeak y crear un nuevo canal con dos campos. ( Field 1de la temperatura y Field 2 de la humedad). Después Save Channel , en la API Keys pestaña, copia Key valor y pegar en Program.cs archivo en lugar deTHINGSPEAK_KEY_HERE .
Guardar el archivo y haga clic Start botón. La salida será como se muestra a continuación:
Salida
Al final, los datos se pueden ver en el servidor deThingspeak apareceran como se muestra a continuación:
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).
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)
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
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:
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:
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)
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)
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
En efecto , aunque hemos hablado en muchísimas ocasiones de múltiples ejemplos en c# usando la plataforma Netduino es poco frecuente ver aun ejemplos que usen la plataforma de desatollo de Microsoft de IoT en otros entornos.
Precisamente en el siguinte ejemplo de como implementar una estación meteorológica en una Raspberry Pi , se demuestra cómo aprovechar la potencia de Windows 10 IO Core, y crear una estación meteorológica con un escudo de Sparkfun(Sparkfun DEV-12081) en una Raspberry pi que corre Windows 10 (puede ser la versión 2 o también la 3).
Este proyecto forma parte de la iniciativa de Microsoft llamada Hack the Home, que proporciona componentes de código abierto para minimizar el esfuerzo en la creación de interfazes con los dispositivos y servicios a usar para enfrentarse a sus hogares.
Antes de describir como lo han hecho en el vídeo podemos ver una introducción a la plataforma de windows IoT;
El nuevo espacio de nombres Windows.Devices de las API de Windows Plataforma universal (UWP) en Windows 10, permite a los desarrolladores aprovechar la potencia de Windows en la interacción con el mundo real a través de sensores y actuadores utilizando el bus I2C y los puertos de uso general de entrada / salida (GPIO) disponibles en el Raspberry Pi 2, para crear una estación meteorológica conectada a Internet utilizando la protección contra la intemperie Sparkfun.
Las instrucciones proporcionadas darán un desarrollador de primera mano la configuración del hardware requerida junto con la escritura y depuración de Windows recientemente disponible en windows 10 llamada UWP Windows.Devices API’s.
En este ejemplo, también se demostrará cómo agregar sus datos en la nube utilizando el Azure Event Hub y ConnectTheDots API.
Para empezar , lo primero es conexionar los pines desde la Raspberry Pi 2 a la placa Sparkfun(Sparkfun DEV-12081)
Este es el conector de la Raspberry Pi 2:
El diagrama de conexiones de la Raspberry Pi hacia la placa de Sparkfun es el siguiente:
GND (negro) —— GND
5V (rojo) ——— VIN
3V3 ——- (marrón) —— 5V (escudo truco; no es un error)
GPIO2 —– (amarillo) —- SDA
GPIO3 —- (naranja) —- SCL
GPIO5 —– (verde) —– D8
GPIO6 —– (azul) ——- D7
Para identificar los pines de GPIO ,observer que el pin 1 está marcada con una almohadilla de soldadura cuadrada:
Cableado de primer plano del carril interior (marrón, amarillo, naranja, verde, azul)
Con la placa Weather Shield es muy fácil de hacer funcionar con Arduino ofreciendo de por sí la presión barométrica, humedad relativa, luminosidad y temperatura. También hay conexiones para sensores opcionales tales como la velocidad del viento, dirección, pluviómetro y GPS para la ubicación.
Utiliza el sensor de humedad HTU21D, de presión barométrica MPL3115A2, un sensor de luz ALS-PT19 y se basa en la librería HTU21D y MPL3115A2 para Arduino. Dispone de dos posiciones para soldar conectores RJ11 (para sensores opcionales de lluvia y viento) y un conector GPS de 6 pines (para conectar un GPS opcional). Puede funcionar desde 3.3V hasta 16V y tiene un regulador de voltaje integrado.
En cuanto al sw de la estación meteorológica en realidad se compone de dos aplicaciones:
La primera es una bucle largo por tiempo indefinido, que trabaja de fondo leyendo el estado de los sensores y actúando como un servidor de estación meteorológica.
La segunda, una interfaz de usuario que realiza una solicitud al puerto 50001 del servidor mostrando los datos. La aplicación de interfaz de usuario es universal y se puede implementar en cualquier dispositivo Windows desde el Raspberry Pi 2 hasta el final a un PC de escritorio – y en cualquier lugar en el medio!
Es necesario encontrar la siguiente línea en el archivo `Mainpage.xaml.cs` del proyecto` build2015-tiempo-station`, y vuelva a colocar el nombre del equipo, “MINWINPC”, en la dirección URL con el nombre de su dispositivo IO.
//TODO: On the following line, replace "minwinpc" with the computer name of your IoT device (ie "http:// :50001").
private Uri weatherUri = new Uri("http://minwinpc:50001");
Activar la pantalla “Lista de tareas”
Haga doble clic en cualquier elemento de la lista y pasar directamente al código fuente:
Cada // TODO: es precedida por comentarios y consejos para ayudarle con las secciones que faltan.
Instalar la aplicación estación meteorológica:
1-Clonar el repositorio relacionado (con --recursive flag))
Seleccionar la rama “TAb” (por defecto), si quiere aprender el nuevo UWP Windows.Devices API y completar el código manualmente
Seleccionar la rama “master” si desea que el código completo
Abrir “WeatherStation \ WeatherStation.sln” en Visual Studio 2015
2-Vaya a “WeatherShield.cs” en el panel “Explorador de soluciones”
3-Si ha elegido la rama de laboratorio, vaya a “Ver >> Otros >> Lista de tareas de Windows”, para ver el resto del trabajo (se representa más arriba).
Usted notará que hay poco de detalle en loss comentarios para ayudarle a completar la tarea. Sin embargo, si todavía necesita mas ayuda extra, habrá una “pista” proporcionado para recordarle que debe mirar al código cercano en busca de ayuda (véase el dibujo).
4-Una vez que el TODO //: ‘s se han completado, haga clic en el elemento de menú “Test“, y seleccionar “Propiedades WeatherStation …”
5-En la pestaña “Debug” (Depuración), en la sección “Opciones de inicio”
Seleccione “Dispositivo remoto” como “dispositivo de destino:”
Introduzca la dirección IP de su dispositivo de Windows Core IO en la “máquina remota:” campo
6-Implementar en el dispositivo Windows Core IO
Interfaz con y / o depurar la aplicación:
Hay dos vias para depurar la aplicación recién implementada:
VIA 1
Establecer un punto de interrupción en “WeatherStationTask.cs”, en la función “PopulateWeatherData”
Paso a través de las transacciones I2C individuales a medida que se producen
VIA2:
Haga ping a la dirección IP de su dispositivo Windows Core IO en el puerto 50001 en una ventana del navegador de Internet (por ejemplo, http:.. // Xxx xxx xxx xxx:. 50001)
Integración con connectthedots en la nube de Azure:
2
1-Seleccione la rama “lab_ConnectTheDots”, si desea aprender a utilizar connectthedots y completar el código manualmente
2-Abrir “WeatherStation \ WeatherStation.sln” en Visual Studio 2015
3-Vaya a “WeatherStationTask.cs” en el panel “Explorador de soluciones”
4-Utilice la “Lista de tareas” para saltar a cada “TODO //:” y escribir el código necesario
Los archivos AppSettings, ConnectTheDotsSensor, y ConnectTheDotsHelper son parte del código creado para ayudarle a utilizar la interfaz connectthedots al Hub Evento Azure.
AppSettings: Guarda los ajustes para la conexión al hub de eventos
Esta información se puede encontrar bajo su ServiceBus en Azure.
5-Vaya a su “* ns” instancia ServiceBus -> Evento Ejes -> ehdevices -> Información de conexión -> Busca el SAS “D1”
6-Copiar la cadena de conexión que debe tener este aspecto (Contiene información para sus AppSettings)
7-Una vez que haya que desplegado, debe iniciar el envío de datos al cubo evento y los datos debe ser visible en http://iotbuildlab.azurewebsites.net/ o en su propio sitio web.