Envio de datos desde Netduino 2+ a thinkspeak


Thingspeak es una plataforma de datos abierta para el Internet de las cosas, que permite la recogida de datos en tiempo real con una API abierta y sofisticadas capacidades de procesamiento de datos y análisis. Con plugins, visualizaciones de datos y la capacidad de integrar sus datos con una variedad de plataformas de terceros, sistemas y tecnologías, incluyendo otras plataformas líderes de la IO como ioBridge y Arduino, ThingSpeak es el complemento perfecto para un sistema empresarial existente para aprovechar el Internet de las Cosas

Las  Características principales de este servicio es de contar  con un  API abierta, integración con Raspberry Pi, Arduino, ioBridge / RealTime.io y Netduino Datos de localización geográfica, procesamiento de datos y visualizaciones, mensajes de estado del dispositivo,integración con redes sociales,integraciones con el análisis de datos y servicios de terceros y todo ello con un costo GRATIS.

 

Gracias al método  HttpWebRequest incluido en el  Micro  Framework 4.2 es posible conectar  con un servidor remoto desde Netduino 2+  de una forma bastante sencilla mediante el citado método :

WebRequest request = HttpWebRequest.Create(url);

Donde en la variable url  preferiblemente se incluirá  a ser posible el nombre del servicio en formato numerico (la direccion IP) en lugar del nombre completo para evitar problemas .Asimismo lo ideal es  acceder al servicio a través de HTTP en lugar de HTTPS pues no hay soporte para SSL en Netduino Plus 2 en el firmware actual.

Además, es posible que desee agregar una «verificación para asegurarse de que mi placa tiene una dirección de Internet» poco de código en la superior si se está utilizando DHCP … en caso de que se necesite unos segundos para obtener y resolver una dirección IP de su router.

Por cierto el código de ejemplo no sólo sirve para enviar información de sensores a la plataforma Think Speak ,pues modificando los valores de configuración del servidor, los valores de api_key y el valor del nombre del campo a enviar , es posible el envío a cualquier otra plataforma de IoT ( por ejemplo cosm.com)

Veamos un ejemplo de  programa que actualiza el estado del interruptor Netduino   Plus para Thingspeak :

/*This program updates the Netduino Plus switch state to Thingspeak*/
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Text;
using System.IO;


namespace LED__control_Thingspeak
{
    public class Program
    {
        public static void Main()
        {
            var SwitchPort = new InputPort(Pins.ONBOARD_BTN, false, Port.ResistorMode.
                Disabled);                                                           //Open the switchport

            bool onned = SwitchPort.Read();//Read the status of switchport

            if (onned)
            {
                update_thingspeak("30");
            }
            else
            {
                update_thingspeak("60");
            }

        }//Main ends

        static void update_thingspeak(string value)
        {
            //Create a http response object
                WebRequest request = HttpWebRequest.Create("http://api.thingspeak.com/update");
            //Setting the request method
                request.Method = "POST";
            //The data to be sent
                string data = "api_key=" + "T5Q1Y9QBY1TULCBG" + "&field1=" + value;
            //Creating the byte array
                byte[] bytearray = Encoding.UTF8.GetBytes(data);
            //Setting the MIME
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = bytearray.Length;
            //Opening the datastream
                Stream datastream = request.GetRequestStream();
            //Writing to the datastream
                datastream.Write(bytearray, 0, bytearray.Length);
            //Closing the stream
                datastream.Close();
            

            //Obtaining a response
                WebResponse response = request.GetResponse();//Creating a response
                datastream = response.GetResponseStream();//Getting the response stream
                StreamReader reader = new StreamReader(datastream);// Read the content.
                string responseFromServer = reader.ReadToEnd();// Display the content.
                Debug.Print(responseFromServer);
            
        }//update_thingspeak ends
    }//class program ends
}//namespace ends




Fuente  aqui

Pequeña placa con Python integrado


Esta pequeña placa llamada Micro Python  basada en un ARM Cortex-M4 STM32F405RG de 32bits y corriendo a 168 MHz integra un interprete python  en tan solo unos pocos centímetros.

Comparado con otras alternativa como PyMite (capaz de ejecutar el interprete de Pyhton en micro controladores de 8bits), esta pequeña placa promete ser muy interesante     aunque lamentablemente no han integrado un interfaz ethernet ni WIFI   ,aunque  en tan diminuto espacio  tenemos 2 puertos SPI, 2 x CAN, 2x I2C, 5 puertos USART a la vez que 30 pines I/O y un pequeño zócalo para tarjetas de memoria Micro SD para almacenamiento.

Micro Python es  un proyecto financiado a través de una campaña de Kickstarter (visite la página de Kickstarter para más detalles).

Micro Python: Python for microcontrollers -- Kicktraq Mini

Micro Python es una implementación de la Python 3 lenguaje de programación que está optimizado para funcionar eficientemente en microcontroladores incluyendo un parser, compilador, máquina virtual completa y el sistema de tiempo de ejecución. Ademas el compilador puede compilar a código de bytes o código máquina nativo (más el uso de memoria, pero una ejecución más rápida), seleccionable por función. Asimismo también es compatible con ensamblador.

Micro Python actualmente soporta procesadores ARM de 32 bits con el conjunto de instrucciones v2 Pulgar, como la gama Cortex-M que se utilizan en los microcontroladores de bajo costo. Ha sido probado en un chip STM32F405.

Micro Python tiene las siguientes características:

  • La plena aplicación de la gramática Python 3.
  • Implementa un analizador léxico, el analizador, compilador, máquina virtual y en tiempo de ejecución.
  • Código Python se compila a un código de bytes comprimido que se ejecuta en la máquina virtual incorporada.
  • El uso de memoria se reduce al mínimo mediante el almacenamiento de objetos de formas eficientes. Los enteros que caben en 31-bits no asignan un objeto en el montón, y así lo requieren memoria sólo en la pila.
  • El uso de decoradores, las funciones pueden ser opcionalmente compilados a código máquina nativo, que tiene más memoria, pero se ejecuta alrededor de 2 veces más rápido que el código de bytes. Estas funciones siguen implementar el lenguaje Python completo.
  • Una función también puede ser opcionalmente compilado asumir que todos los objetos son enteros y así funcionar a velocidades cercanas a la de una función de C equivalente, pero con compatibilidad reducida para el lenguaje Python.
  • Una implementación de ensamblador en línea permite un acceso completo a la máquina subyacente.

La placa MicroPython  es una placa de desarrollo basado en el microcontrolador STM32F405 que correMicro Python. Mide 33 x 40 mm.

Cuenta con una interfaz USB integrado que se presenta como un dispositivo serie (puerto de comunicaciones virtuales) y un dispositivo de almacenamiento extraíble. Cuando se conecta a un ordenador, puede copiar los scripts de Python al sistema de archivos local de la placa , que luego se ejecuta. El dispositivo serie USB dirige stdin / stdout del script Python para su PC.

Alimentado por una batería, la tarjeta puede compilar y ejecutar scripts de Python y sin conexión a ninguna PC. Hay una ranura microSD para almacenar grandes cantidades de datos, 2 LEDs, un conmutador, un acelerómetro, y 30  E / S pins de uso general . Los pines de E / S son: 4 USART, 2 SPI, 2 buses I2C, 14 pines ADC, 2 pins del CAD, y 4 puertos de servo con el poder.

La placa  Micro Python es adecuada para todos, independientemente de los conocimientos en hardware o software. Con unas pocas líneas de código Python en un archivo de texto, cualquier persona puede comenzar a parpadear LEDs y responder a las acelerómetro de entrada sin necesidad de soldaduras o componentes de conexión.

Micro Python y la placa de de Micro Python están actualmente en desarrollo, y estarán disponibles pronto bajo una licencia de código abierto.

Fuente aqui