Controlando placas de IoT desde javascript


Node.js framework  fue  creado por Bocoup para controlar placas de desarrollo en una configuración de host-cliente   aunque   realmente su uso mayoritario sea como plataforma web   siendo    Johnny-Five la plataforma open  source de Robótica e IoT de JavaScript 

En realidad existen diferentes  plataformas donde se puede ejecutar el programa Johnny-Five :

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Johnny-Five como vemos hacer un énfasis especial en la robótica, pero tambien puede hacer muchas cosas diferentes con el software.De hecho ha existido durante hacer  más tiempo que la mayoría de los marcos de JavaScript para hardware . Ademas iene una API clara  y “fresca” ,ambas cosas ideales para los principiantes de hardware.

Lanzado porBocoup en 2012, Johnny-Five esta mantenido por una comunidad de desarrolladores de software apasionados e ingenieros de hardware. De hecho más de 75 desarrolladores han hecho contribuciones para construir un ecosistema robusto, extensible y muy versatil.

 

Hola Mundo! 

A los microcontroladores y las plataformas SoC nos gusta decir “Hola mundo” con un simple LED parpadeante, así  que veamos en primer lugar un ejemplo como lo hariamos  usando el Ide clásico  de Arduino

Como vemos en la imagen ,conectaremos un led entre el pin 13  y masa , respetando la polaridad (el ánodo al pin13 y el cátodo o pin corto a masa )

Para  hacer destellear el citado led,  estos son los pasos básicos  que tenemos que seguir en nuestro sketch  programandolo desde el IDE de Arduino:

  1. Configurar el pin 13 (con LED incorporado) como una SALIDA
  2. Establecer el pin 13 ALTO para encender el LED
  3. Esperamos 500 ms (medio segundo)
  4. Establecer el pin 13 BAJO para apagar el LED

Y este es el código completo para ejecutar desde el Ide de Arduino:

void setup() {
pinMode(13, OUTPUT);    
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);  
delay(500);
}

Y ahora vamos a ver el mismo ejemplo , pero ejecutandolo en Javascript por medio de node-js,

Desgraciadamente  si usamos un Arduino o alguno de sus variantes (Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,)   necesitaremos que el programa JavaScript se ejecute en una máquina host que ejecute Node.js. de modo que el programa transmitirá instrucciones básicas de E / S a la placa a través de una interfaz  serie USB , que actuara como un cliente ligero .

El método host-cliente implica la comunicación a través de una API común entre el host y el cliente. El marco Node.js usado con Arduino y placas similares , Johnny-Five, se comunica (de forma predeterminada) con las placas  utilizando un protocolo llamado Firmata, protocolo que permite que los hosts (computadoras) y los clientes (microcontroladores) intercambien mensajes de ida y vuelta en un formato basado en mensajes MIDI. El protocolo Firmata especifica cómo deben ser esos mensajes de comando y datos. La implementación de Firmata de Arduino proporciona el firmware real que puede poner en su tablero para hacer que “hable” Firmata. Toma la forma de un boceto de Arduino que sube al tablero.

Firmata es lo suficientemente popular como para que los bocetos de Firmata que necesita vengan empaquetados con el IDE de Arduino asi que bastara con subir este a Arduino una única vez  ya que  el código javascript  correra en el host usando node.js.

Puede seguir estos pasos para cargar el interfaz correcto de Firmata en su Arduino  para que se pueda utilizar como cliente en una configuración de host-cliente:

Resumidamente estos son los pasos previos para ejecutar el   mismo  ejemplo del led parpadeante  que hemos visto pero   en  javascript en una placa Arduino;

  • En primer lugar  conectar  su Arduino  mediante USB a  su ordenador
  • Lanzar el IDE de Arduino.
  • Asegurarse que esta configurada la version de su placa,  así como el puerto COM  virtual al que esta conectado
  • Acceda al menú Archivo> Ejemplos> Firmata
  • Seleccione StandardFirmataPlus de la lista y despliegue este sw sobre su Arduino

  • Ahora Instale Node.js   en su pc . Funciona  con ultima version 11.3.0  de  64 bit que incluye  npm 6.4 (no olvidar de chequear que se instalen  otros componentes )Este es el link de descarga https://nodejs.org/en/download/ 
  • En la instalación de Node.js, repetimo  no debemos olvidar de chequear que se instalen  otros componentes  pues  con ellos se   instalara automáticamente
    • Python 2.7.3 (http://www.python.org/getit/releases/2.7.3/)
    • Visual Studio Express 2010 de 32 bits (con  las dependencias de C ++)
    • El comando npm
    • Alternativamente si dispusiésemos de npm podríamos instalar ambos entornos  con  npm --add-python-to-path install --global --production windows-build-tools
  • Este pasos anterior ( instalacion de componentes ) es  innecesario  si chequeamos en la instalación  de node.js  pues se instalaran  esos componentes  automáticamente
  • Ahora instalar node-gyp  medianete  el comando  npm install -g node-gyp (esto instalará node-gyp globalmente)                          
  • Ya puede  crear su primer proyecto Johnny-Five, por lo que en primer lugar cree un directorio para él e instale el paquete framework npm, como se muestra en la siguiente lista:
    • < mkdir hello-world
    • < cd hello-world
    • < npm install johnny-five
  • Ejecute  el comando “npm install johnny-five” desde la carpeta del proyecto
  • Ya por fin podemos crear el fichero javascript  con su editor de texto  que contendrá el código en javascript  . 

Realmente estos son los pasos  que tenemos que seguir:

  1. Requerir el paquete johnny-five
  2. Inicializar un nuevo objeto Board que represente a su placa .
  3. Esperar a que el tablero dispare el evento listo
  4. Crear una instancia de un objeto LED en el pin 13 (el pin LED incorporado de Uno)
  5.  Hacer que el LED parpadee cada 500 ms

Este es el código en js :


const five = require(‘johnny-five’);
const board = new five.Board();
board.on(‘ready’, () => {
 const led = new five.Led(13);
   led.blink(500);
});


Guarde el archivo como hello-world.js  y  conecte su Arduino  a un puerto USB en su ordenador  si aún no está conectado.

En una terminal  de windows  vaya al directorio del proyecto y ejecute este comando:

<node hello-world.js


Verá una salida como la siguiente en su terminal ejecutando hello-world.js en una terminal

 

 

Si el LED incorporado parpadea ,!enhorabuena !  !acaba de controlar una placa Arduino con JavaScript!  ¿a que es realmente sencillo?.

Aunque en el caso de la familia Arduino tiene la innegable penalización de necesitar un host para operar , la ventajas de este  modelo son evidentes pues no tenemos que estar constantemente compilando  y  subiendo el sketch con el ide de Arduino ya que el programa corre en host . Ademas  podemos usar un simple editor de texto para cambiar el código en javascript fácilmente

Asimismo el lenguaje javascript ha ido evolucionando hasta un ritmo que no podemos imaginar   incluyendo muchas características que no son soportadas de forma directa desde Arduino

Por ultimo mencionar la autentica potabilidad del código , pues el código que hemos visto en el ejemplo podremos usarlos  en múltiples plataformas  tan diferentes como Raspberry pi, Intel Edison , etc usando siempre el mismo código fuente aun siendo soportado por placas muy diferentes ¿ a que es interesante?

 

 

Placas soportadas

Johnny-Five ha sido probado con una variedad de tableros compatibles con Arduino . 

Para los proyectos que no están basados ​​en Arduino, los complementos de IO específicos de la plataforma están disponibles. Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware en cualquier idioma que la plataforma hable.

Como comentábamos   existen diferentes  formas de   ejecutar  el programa Johnny-Five  segun la placa:

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2) ,   Es  facil adivinar qeu este es el mabiente ideal   pues dentro de la placa se oprtan tanto el host como el cliente  por lo qeu no ncesitamos conectarnos con otro dispositivo
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente.: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Veamos  ahora cada  caso en concreto;

Arduino Uno 

Ambiente 

  • Firmware / Runtime: : StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

SparkFun RedBoard 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

ping

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

 

Arduino leonardo 

Ambiente 

  • Firmware / Runtime:  StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Mega 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

Arduino Fio 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Micro 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Nano 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Pro Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
ping

BotBoarduino 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

chipkit uno32 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire
Paso a paso
Serial / UART
Dac no
ping

Spider Robot Controller 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere  tetehering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

DFRobot Romeo 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Teensy 3 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping

BeagleBone Black 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

CHIP 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

Blend Micro v1.0 

Ambiente 

  • Complemento IO: BlendMicro-IO ( instrucciones adicionales )
  • Firmware / Runtime: BLEFirmata
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

 Electric Imp  April 

Ambiente 

Plataforma específica 

  • Requiere una conexión WiFi conectada a Internet y está sujeto a la limitación de la tasa de solicitud por parte del servidor de Electric Imp API.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 1 

Ambiente 

Plataforma específica 

  • Las compilaciones que no son IoTKit ya no son compatibles.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 2 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Arduino 

Ambiente 

Plataforma específica 

  • El hardware es capaz de soportar solo 4 salidas PWM. Como resultado, los enlaces nativos no admiten PWM en los pines 10 y 11.
  • Aunque Galileo-io / Edison-io / Joule-io todavía no admite comunicaciones en serie, puede enlazar a / dev / ttyFMD1 en la placa Edison Arduino usando el módulo serialport .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Mini 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

SparkFun Edison GPIO Block 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

SparkFun Arduino Block

Ambiente 

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping no

Intel Joule 570x (Carrier Board) 

Ambiente 

Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

LightBlue Bean

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Linino uno 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

pcDuino3 Dev Board 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Pinoccio Scout 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Raspberry Pi 3 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi 2 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Zero 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi Model A Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Frambuesa Pi Modelo B Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Modelo B Rev 1 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping no

Raspberry Pi Modelo B Rev 2 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no


Particle Core (Spark Core)

Ambiente 

Plataforma específica 

  • Los temporizadores se comparten en grupos: Temporizador 2: A0 , A1 , Temporizador 3: A4 , A5 , A6 , A7 , Temporizador 4: D0 , D1
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping


Particle Photon

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
ping no
Silbido

Sparkfun Photon RedBoard 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping

Tessel 2 

Ambiente 

Plataforma específica 

  • El soporte de servo se proporciona a través de componentes I2C (por ejemplo, PCA9685 )
  • DAC está limitado a Puerto B, Pin 7
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac
ping no

Mas información en  http://johnny-five.io/platform-support/

Anuncios

Monitorización de bebe avanzado con Raspberry Pi


Es realmente sorprendente   hasta donde podemos llegar con una Raspberry Pi  , donde probablemente la única limitación la pongamos nosotros mismos, pues esta versátil placa  esta muy capacitada  para tareas tan complejas , las cuales  hacen tan solo unos años hubiera  sido impensables  que se pudieran realizar  en un hw   como el de esta placa.

Como ejemplo de multi-procesamiento   vamos a ver en este post cómo  Bob Bam Mantell , montó un monitor de bebé con  una Raspberry Pi  recogiendor los datos en Splunk, mediante un lector de registro y  una herramienta de análisis, programando  los datos de una manera significativa . Como resultado de este trabajo tendremos todas las medidas en un único  tablero  de mandos  donde podremos controlar los patrones del sueño, temperatura y humedad. 

Para construir  este  monitor  necesitamos:

Con cierta supervisión y alertas deberíamos ser capaces de mantener  la comodidad óptima del bebé, pero   antes debemos instalar Raspbian. Esta versión  se  descarga a partir de una nueva imagen descargada a partir del sitio  oficial Raspbian ,

En la url de descarga podrá  apreciar en la imagen de abajo ,   se mantienen tanto la imagen de la versión previa mínima (Lite) o la nueva versión Stretch para escritorio:

raspbian.PNG

Lógicamente si la SD es suficiente grande , lo interesante es descargar la primera  en lugar de la versión mínima

Una vez decidida,  descargue la imagen correspondiente  en su ordenador y siga los siguientes pasos:

  • Inserte la tarjeta SD en el lector de tarjetas SD  de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
  • Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
  • Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
  • Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
  • Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
  • Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
  • Haga clic en Escribir y esperar a que la escritura se complete.
  • Salir del administrador de archivos  y expulsar la tarjeta SD.
  • Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los  conectores USB, conectar la  con un cable ethernet  al router  conectividad a Internet y finalmente conectar la alimentación  para comprobar que la Raspberry arranca con la nueva imagen

La versión previa basada  en  Raspbian Jessie ( Debian8 )  ya incluía  características y aplicaciones bastante interesantes así como algunos cambios más sutiles en el diseño del sistema, como por ejemplo,al iniciar ahora su Raspberry Pi que la pantalla inicial  cambiara  mostrando una imagen mas moderna .También  incluía  algunas aplicaciones como un navegador integrado , el  software  de RealVNC, para acceder a la Pi desde un escritorio remoto  , wallpapers nuevos para  decorar el fondo de escritorio de su Raspberry Pi,etc .

Ahora lo mas importante de  esta  nueva actualización es sin duda  la subida de versión hacia Debian 9 ( recordemos que la versión anterior  era Debian 8)  trayendo  ademas un gran número de cambios y mejoras internas respecto a Debian 8 destacando quizás ademas de la subida de version el  incluir un  nuevo asistente de configuración que será mostrado en el primer inicio, lo cual  ayudará a los recién llegados a configurar el sistema Raspbian a su gusto sin tener que buscar los distintos paneles de ajustes.Por supuesto este asistente de configuración se ejecutará de forma automática en el primer inicio del sistema, permitiendo que los usuarios escojan su país, lenguaje, huso horario, configuren un perfil con contraseña, agreguen una red Wi-Fi e incluso instalen actualizaciones disponibles.

Una vez hayamos arrancado la Rasberry Pi con Raspbian,   como vemos en las  pantallas anteriores  seguiremos el asistente de inicio   donde   configuramos la red wifi a la que nos conectaremos desde  la  Raspberry Pi.   

Asimismo necesitamos   permitir tanto los pines de GPIO como el de la  cámara  nativa

Además debemos confirmar que puede conectar mediante el programa SSH para acceder remotamente una vez instalado

Por ultimo  actualizaremos el so  ejecutando el comando de actualización:

sudo apt-get update

Una vez hecho esto, ya tendremos un sistema operativo base  por lo que empezaremos instalando la camara NoIR

Camara NoIr

El NoIR de Pi, es la versión de visión nocturna de la cámara, que NO tiene filtro ( es decir ‘Sin Infra rojo’) , lo que significa, si usted tiene una fuente de luz infrarroja, por la noche, la cámara puede ver en la oscuridad. Puesto que los  bebés suelen descansar  por la noche (con suerte), ese el motivo de necesitar una cámara infrarroja para no despertarlo por lo que si usted quiere imágenes  en  color o prevea usar la cámara  con  luz normal  no utilice esta cámara. El modulo de cámara de Pi  de  infrarrojos   tiene un mayor rendimiento que las cámaras USB,  por lo que lo ideal es usar  cámaras del tipo compatibles con Raspberry Pi  con interfaz . 

Estos  son los pasos para instalar la cámara Noir especifica para su uso , con la Raspberry Pi 3

Localice el puerto de la cámara y conecte la cámara:

Connect the camera

Poner en marcha la Raspberry Pi 3

Abra la Herramienta de configuración de frambuesa Pi desde el menú principal

Raspberry Pi Configuration Tool

Asegúrese de que está activado el software de la cámara

:Camera software enabled

Si no está activado, habilítelo y reinicie su Pi para comenzar.  Es decir resumidamente;  con la Raspberry Pi apagada, debe conectar el módulo de la cámara al puerto de la cámara de la Raspberry Pi, ahora encienda el Pi  y asegúrese de que se activa el software.

Alternativamente   la activación de la cámara  se puede  hacer eescribiendo los siguientes comandos:

sudo raspi-config

Select

Enable camera

Seleccione entrar, cuando haya terminado, le pedirá que reinicie siguiendo las instrucciones.

 

Conexión de un sensor  DHT22

DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

Conectar  el DHT22  a  una Raspberry Pi es  sencillo, simplemente alimentamos al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital . Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output , tarea  que suele hacerse mediante un jumper en la propia placa del sensor

En resumen estas son las conexiones:

  • Conecte el NARANJA( masa) al Pin 6 de las RP  (GND)
  • Conecte el ROJO(vcc) al  Pin 1 dela Rp
  • Conecte el  MARRON(output) al Pin 22   de la Rp ( GPIO25 )

Los sensores  DHT22 usan su propio sistema de comunicación bidireccional mediante un único hilo , empleando señales temporizadas por lo que en general, lo normal es que empleemos una librería existente para simplificar el procesoPara escribir el software, que puede leer el sensor, vamos a necesitar un par de cosas. Primero asegúrese de que el compilador ya está instalado con el común:

sudo apt-get install git-core

Necesitaremos clonar desde el git  el modulo  WiringPi  con el comando 

git clone git://git.drogon.net/wiringPi

Ahora vaya al directorio creado y compilaremos este modulo

cd wiringPi

git pull origin
   cd wiringPi

   ./build

 

Leer datos desde el sensor DHT22

Utilizado este sitio como una guía para escribir el software que será capaz de leer el Sensor. Aconsejaron que necesitamos utilizar un programa en C para asegurar que siempre lee el sensor. El código original has ido modificado   por  Bam Bam Mantell para evitar bucles y  mejorar el formato de las lecturas mejores para lectura en Splunk pues a Splunk le gusta el formato nombre_variable = valor para identificar fácilmente en el registro del log

Abra su  editor de texto favorito linux y cree  un archivo dat.c

Inserte  este código en ella el archivo dht.c

<p>/*<br> *  dht.c:
 *	read temperature and humidity from DHT11 or DHT22 sensor
 */
 
#include 
#include 
#include 
#include 
 
#define MAX_TIMINGS	85
#define DHT_PIN		3	/* GPIO-22 */
 
int data[5] = { 0, 0, 0, 0, 0 };
 
void read_dht_data()
{
	uint8_t laststate	= HIGH;
	uint8_t counter		= 0;
	uint8_t j			= 0, i;
 
	data[0] = data[1] = data[2] = data[3] = data[4] = 0;
 
	/* pull pin down for 18 milliseconds */
	pinMode( DHT_PIN, OUTPUT );
	digitalWrite( DHT_PIN, LOW );
	delay( 18 );
 
	/* prepare to read the pin */
	pinMode( DHT_PIN, INPUT );
 
	/* detect change and read data */
	for ( i = 0; i < MAX_TIMINGS; i++ )
	{
		counter = 0;
		while ( digitalRead( DHT_PIN ) == laststate )
		{
			counter++;
			delayMicroseconds( 1 );
			if ( counter == 255 )
			{
				break;
			}
		}
		laststate = digitalRead( DHT_PIN );
 
		if ( counter == 255 )
			break;
 
		/* ignore first 3 transitions */
		if ( (i >= 4) && (i % 2 == 0) )
		{
			/* shove each bit into the storage bytes */
			data[j / 8] <<= 1;
			if ( counter > 16 )
				data[j / 8] |= 1;
			j++;
		}
	}
 
	/*
	 * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte
	 * print it out if data is good
	 */
	if ( (j >= 40) &&
	     (data[4] == ( (data[0] + data[1] + data[2] + data[3]) & 0xFF) ) )
	{
		float h = (float)((data[0] << 8) + data[1]) / 10;
		if ( h > 100 )
		{
			h = data[0];	// for DHT11
		}
		float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10;
		if ( c > 125 )
		{
			c = data[2];	// for DHT11
		}
		if ( data[2] & 0x80 )
		{
			c = -c;
		}
				float f = c * 1.8f + 32;
		printf( "Humidity=%.1f Temperature=%.1f\n", h, c );
	}else  {
		printf( "Data not good, skip\n" );
	}
}
 
int main( void )
{
 	if ( wiringPiSetup() == -1 )
		exit( 1 );
	
		
	read_dht_data();
	 
	return(0);
}</p>

 

El código anterior del archivo dot.c ahora necesita ser compilado, para ello  escriba el comando

cc -Wall dht.c -o dht -lwiringPi

A continuación, puede ejecutar el programa con el comando

sudo ./dat

Usted debe ver algunas salida, lo cual sólo funcionará si el sensor está conectado correctamente y el código está trabajando. Se le mostrará una   salida similar a la siguiente:

Humidity=66.9 Temperature=18.3
........

 

Necesitamos  llegar  a utilizar Splunk  para que  lea archivos de registro. Así que los datos que estamos recogiendo de los sensores vamos a escribirlos en un archivo de registro, para que   Splunk pueda monitorear los cambios.

Primero vamos a crear un directorio en la carpeta de inicio pi, llamada registros, para almacenar los archivos :

mkdir /home/pi/logs

Ahora, en el directorio cree un archivo  script de bash  

touch /home/pi/temperature_script.sh

Editar el archivo anterior con su editor de texto favorito  ( vi ) e inserte este código:

#! /bin/bash

log="/home/pi/logs/"

#run the client

"/home/pi/dht" > temperature.txt

OUTPUT=`cat temperature.txt`

# Write values to the screen

TEMPERATURE=`echo "$OUTPUT"`

# Output data to a log file

echo "$(date +"%Y-%m-%d %T" ): ""$TEMPERATURE" >>"$log"temperature.log

Para automtizar la  ejecución de este script  vamos a utilizar Cron en la Raspberry Pi para ejecutar el trabajo, lo cual nos dará la flexibilidad de tiempo ejecutar cada uno de nuestros scripts

El sensor de temperatura requiere acceso de sudo (raíz) para ejecutarlos, así que tenemos que ejecutar el sudo crontab, para ello escriba el comando

sudo crontab -e

Agregue la línea en el archivo;

*/5 * * * * /home/pi/temperature_script.sh

Esto ejecutará el programa de temperatura cada cinco minutos.

 

A partir de este momento ,su registro debe empezar a mostrarse  como en  la siguiente imagen:. 

Picture of Schedule Your Scripts

Usted puede comprobar en el archivo de registro como se escriben nuevos datos  con el comando

cat /home/pi/logs/temperature.log

 Configurar la cámara web

Hemos habilitado anteriormente la cámara pero ahora vamos a instalar algun software para usarlo realmente , isa que  vamos a configurar la cámara web. 

El software se llama motion, y puede ejecutar un servidor web, para su visualización, detección de movimiento y marcos de registro y fotos. En esta configuración, se ve apagar  pues  no se cuenta con un montón de espacio para archivos de vídeo, así que se ejecutara para el control y utilizaremos el registro para el seguimiento de movimientos de sueño.

La instalación por defecto de movimiento no tiene soporte para la cámara de Pi. Así que estamos usando una compilación especial para trabajar con él. La guía completa está aquí.

Escriba el comando

sudo apt-get install motion

Ahora descargue este compilacioon  especial

wget href="https://www.dropbox.com/s/0gzxtkxhvwgfocs/motion-mmal.tar.gz

Ahora descomprimir el sw:

tar zxvf motion-mmal.tar.gz

Abra el archivo config del movimiento mmalcam.conf con su editor de texto favorito y actualize algunos de los ajustes, daemon para que se ejecute en background, aumento de altura video y video de calidad, el archivo de registro a nuestra ubicación y aumentar el nivel de registro para eventos.

daemon on

width=1280

height=720

logfile /home/pi/logs/motion.log

log_level 7

Apague el host local  para  que puede conectarse a él remotamente.

stream_localhost off

Text_Left es el texto que sale en el feed_

text_left Baby's Room %t

Hay una opción para nombre de usuario y contraseña para validarse si se conecta desde internet. De lo contrario dejarlo como está.

Guarde el archivo y empiece  a detectar el movimiento con el comando

sudo ./motion -c motion-mmalcam.conf

Ahora podrá conectarse a la corriente de la web de la cámara

El navegador web, preferentemente Chrome o Firefox en

Y debe recibir un alimento vivo. También puede comprobar el registro de movimiento y ver si se registran eventos.

cat /home/pi/logs/motion.log

Estos eventos de movimiento son lo que vamos a contar para detectar movimientos de sueño.

Si desea apagar el LED rojo, hacer más discreta la cámara, editar la configuración de arranque

sudo vim /boot/config.txt

Agregue estas líneas, y después de reiniciar no vino en.

# Turn off camera Red LED
disable_camera_led=1

 

Instalar Splunk y promotor Universal

No vamos a entrar en mucho detalles sobre el servidor de Splunk. Se puede instalar en cualquier sistema operativo  que se desee (Mac OSX ,  Linux,etc ). Tan sólo tiene que seguir la Guía de Splunk. Una vez tenga instalado Splunk, asegurase  que  se consiguió al menos una conexión receptora. El puerto predeterminado es 9997. Una vez que esto se realiza, y suponiendo que no hay cortafuegos bloqueará, puede configurar un promotor Universal para enviar datos.

Ir a Splunk y obtener el promotor universal para Linux. Necesita para obtener la versión para ARM .Siga las instrucciones en Splunk.

Ejecute al instalador de Splunk cuando tenga el archivo

tar xvzf splunkforwarder-<…>-Linux-arm.tgz -C /opt

Configurar el promotor para apuntar a su servidor de Splunk.

Editar el archivo en

sudo vim opt/splunkforwarder/etc/system/local/outputs.conf

Si su servidor es 192.168.0.10. tendrá que poner:

[tcpout:default-autolb-group]
server = 192.168.0.10:9997

Guardar y cerrar, ya puede comenzar a promotor de splunk

/splunkforwarder/bin/splunk start

No añadir un motor a nuestra ubicación archivo de registro

sudo /opt/splunkforwarder/bin/splunk add monitor /home/pi/logs

Nuestro promotor de Splunk ahora debe comenzar a recoger registros en ese directorio. Usted puede comprobar el registro de transportista de Splunk si su no va a verificar los problemas de

sudo cat /opt/splunkforwarder/var/log/splunk/splunkd.log

Crear un panel de control

Ahora inicie sesión en el servidor de Splunk y confirmar si los datos está llegando.

Realizar una búsqueda de eventos

index=main source="/home/pi/logs/temperature.log"

Si se cambia a modo detallado de Splunk, deben identificar las variables de temperatura y humedad. Ahora usted puede ver a través de una búsqueda de Splunk, como;

index=main source="/home/pi/logs/temperature.log"| timechart max(Temperature)

Puede crear una línea para la temperatura, ejecutar el debajo de buscar y salvar a un tablero de instrumentos nuevo, darle un nombre “Baby Monitor”

index=main Temperature source="/home/pi/logs/temperature.log" | stats first(Temperature)

Y otra vez para humedad, seleccione Visualización, manómetro Radial. Guardar como un tablero panel, el Panel existente, “Baby Monitor”

index=main Humidity source="/home/pi/logs/temperature.log" | stats first(Humidity)

Si el registro de movimiento es ingresado con éxito debemos tener eventos para él en Splunk ahora. Si buscamos eventos detectados, nos deberíamos volver resultados

index=main detected

Si tenemos resultados las podemos ver. Vamos a ver el volumen de eventos. Esto nos mostrará cuánto movimiento se detectó en el tiempo.

La consulta se ve así

index=main detected | timechart count span=5min

Combinando estas búsquedas y agregar a un panel de control podemos construir una gran cantidad de métricas útiles en interior y las temperaturas exteriores y movimientos del bebé.

La consulta para el interior y temperatura exterior juntos se ve así:

index=main source="/home/pi/logs/outside_weather.log"   OR source="/home/pi/logs/temperature.log" | timechart max(Temperature) AS "Baby's Room" max(Outside_Weather) AS "Outside" span=30min

 

Picture of Create a Dashboard

 

Via instructables

Como conocer el consumo eléctrico de una forma barata


La potencia consumida , es la potencia capaz de transformar la energía eléctrica en trabajo dado que los diferentes dispositivos eléctricos existentes convierten la energía eléctrica en otras formas de energía(mecánica, lumínica, térmica, química, etc) .Esta potencia se designa con la letra P y se mide en vatios —watt— (W) o kilovatios —kilowatt— (kW). De acuerdo con su expresión, la ley de Ohm y el triángulo de impedancias:

{\displaystyle P=I_{e}\cdot V_{e}\cdot \cos \phi =I_{e}\cdot Z\cdot I_{e}\cos \phi =I_{e}^{2}\cdot Z\cdot \cos \phi =I_{e}^{2}\cdot R\,\!}

Debido a la gran importancia de la potencia eléctrica sobre las características del suministro eléctrico , hay algunos casos en los que puede ser conveniente cambiar la potencia contratada pues en la practica nos limitara o permitirá usar un determinado numero de dispositivos  eléctricos  simultáneamente

En este sentido, deberíamos estudiar  si necesitamos  un aumento o una reducción de la potencia contratada pues según la potencia que tengamos contratada con nuestra compañía suministradora     pagaremos  mas o menos  en nuestra factura mensual en concepto de potencia contratada  ademas de los kw/h que consumamos.

Precisamente para controlar este termino surge.el  Interruptor Controlador de Potencia o llamado también ICP  que corta el suministro  cuando detecta que la instalación eléctrica de la vivienda está haciendo uso de más cantidad de energía de la que tiene contratada obligando a  desconectar  aparatos y volver a subir el interruptor. Tradicionalmente estos dispositivos se instalaban  la derecha del cuadro de distribución de ca sellándose el  acceso a este en un compartimiento aparte, pero actualmente van integrados en los llamados contadores inteligentes , los cuales incluso pueden ser programados para aumentar o reducir la potencia contratada sin tener que cambiar físicamente el dispositivo

 

Si el limitador sea del modelo que sea  salta continuamente significa que hay menos potencia de la necesaria por lo que habrá que solicitar un aumento  (  y tendremos que pagar un poco mas en concepto de potencia contratada )  pero, si no es así ,y  se quiere ahorrar en las facturas de luz se puede  solicitar una reducción de la potencia contratada , !pero ojo si realmente se ha comprobado que hay más potencia contratada de la que se necesita ! ( por ejemplo instalando en casa  un watimtro como vamos a ver)  

 

Precisamente para concienciarnos  de lo que consumimos en nuestra vivienda en tiempo real  para poder tomar medidas correctoras  o para contratar mayor o menor potencia , existen unos sencillos  comprobadores multifuncionales , que nos pueden aportar esa información instantáneamente  de un modo bastante sencillo y económico , pues el  modelo que vamos a ver KKmoon AC 80-260 V 100A es muy económico  ofreciéndonos en tiempo real la siguiente información: 

  • Tensión de entrada de ca de la red de ca en voltios
  • Intensidad  de entrada expresada en amperios
  • Potencia activa expresada en watios
  • Potencia acumulada en Watios/Hora
  • Alarma en caso de sobrepasar un determinado umbral de potencia activa programada previamente

 

Este modelo con gran pantalla retroiluminada   y persistente (almacena los datos cuando cesa el suministro ) , como vemos se aleja de los anticuados instrumentos de aguja  no solo ofreciendo mas información integrada en un único aparato,pues  también incluye al función de alarma de sobrecarga pudiéndose programar  la  potencia a partir de la cual  dará un aviso visual cuando se superan el valor por defecto.

Este instrumento se controla con un solo pulsador  que esta a la izquierda de la pantalla  permitiendo    controlar la pantalla, energía, límite de alarma activada por defecto de energía de la nueva colocación.

Estos son los tres modos de operación actuando  sobre ese pulsador:

  • RETROILUMINACION:Mediante   una pulsación corta se activa o desactiva la retroiluminación  estando  por defecto encendida. En caso de programar alarma de umbral  solo se enciende  unos instantes
  • RESET;Mediante una pulsación larga de 5 segundos hasta que el numero en el display empiece a parpadear entonces liberar ,pulsar otra vez  y entonces el valor de la energía se borrara y dejara de parpadear ( sino quiere esto vuelva a pulsar por 5 segundos  hasta que el numero deje de parpadear lo que significara que el el valor de energía no se ha borrado  y saldrá del estado de reset
  • PROGRAMACIÓN DEL UMBRAL:Pulsando hasta que aparezca SET CLr  y después liberando  entramos en modo programación del umbral de la alarma. En la pantalla  se visualizara el valor de la alarma y el ultimo dígito parpadeando, entonces si pulsa cambiara el valor ,pero si no se pulsa en tres segundos cambiara al siguiente dígito automáticamente y así sucesivamente. Se finaliza la programación si pulsamos mas de 5 segundos  lo cual automáticamente salvara el umbral  y quedara configurado ese valor.

 

 

Instalación

Realmente es bastante sencillo de instalar  ese  dispositivo  kkmon  pues funciona de manera parecida a una pinza amperimetrica y solo necesita que pase por el interior de l a bobina que suministran  SOLO  uno de los cables que alimenta la vivienda  para poder dar las medidas.

En  primer lugar habrá que decidir el lugar   donde ubicarlo , siendo lo mas aconsejable que este cerca del cuadro de distribución de ca pues necesitamos atravesar uno de los cables  de la distribución de  ca  (no importa que sea la fase o el neutro)  por la bobina del instrumento

En el esquema de mas abajo de una instalación típica de una vivienda  podemos ver   algunos de los puntos donde podríamos intercalar la bobina ( solo debe pasar  un cable  por la bobina de medición)

Recordamos  que  como hay que soltar el cable en los puntos mencionados ,hacer pasar por el cable la bobina  y volverlo a colocar en su lugar el citado cable , debe extremar las medidas de seguridad  para evitar exposición a la c.a. asi que si no tiene experiencia, rogamos solicite la ayuda de un profesional.

En todo caso ,antes de desconectar algunos de los cables propuestos   en alguno de estos puntos, desconecte el interruptor general  ( en el dibujo es el magnetotérmico  que esta mas a la izquierda)y compruebe con un buscapolos o un multimetro que efectivamente no hay tensión en el cable a desconectar . Hecho este desconecte , intercale la bobina entre el cable  , vuelva a conectar en el original  y ya puede volver a conectar la ca

 

instalacion

Una vez decido el punto donde intercalar la bobina, soltaremos ,pasaremos el cable  y volveremos a conectar   y luego si estaba protegido con cinta volveremos a cubrir la conexión con este

IMG_20180914_191355[1]IMG_20180912_124923[1].jpg

En el montaje hemos decidido instalar en la vieja caja ict , ya que al contar con contador inteligente el ict esta integrado en este, así que practicaremos un agujero de d 89,6 x 49,6 aprox.   en el frontal de dicha caja

 

IMG_20180914_191058[1]

Opcionalmente se puede colocar otros elementos  como por ejemplo un cargador usb  para alimentar en un futuro algún dispositivo que envié las mediciones  para  poder ser consultadas remotamente.

 

IMG_20180914_191050[1]

Ahora ya insertaremos el medidor en el frontal de la caja ict

IMG_20180912_124844[1].jpg

La iluminación de la pantalla es genial y permite ver en todo momento con claridad.

IMG_20180914_191623[1]

Nos  queda conectar  también el  aparato de medición a la ca , bien a una toma de ca con un enchufe , o bien , ya que estamos en el cuadro de distribución de ca,  a la salida de alguno de los magnetotérmicos de salida  de los circuitos  de la vivienda.

RECODAMOS TENGA MUCHA PRECAUCIÓN A LA HORA DE MANIPULAR LOS CABLES DE CA

IMG_20180914_191708[1]

Probaremos como va antes de atornillar la   tapa a la caja

IMG_20180914_192512[1]

!Trabajo  finalizado!  Con esto concluimo la instalacion del dispositivo

IMG_20180914_192105[1]

Ajustes  finales

Mediante   una pulsación corta  de 5  segundos del pulsador de la izquierda del instrumento se activa o desactiva la retroiluminación  estando  por defecto encendida. En caso de programar alarma de umbral  solo se enciende  unos instantes

Mediante una pulsación larga de 5 segundos del mismo pulsador hasta que el numero en el display empiece a parpadear entonces liberar ,pulsar otra vez  y entonces el valor de la energía se borrara y dejara de parpadear ( sino quiere esto vuelva a pulsar por 5 segundos  hasta que el numero deje de parpadear lo que significara que el el valor de energía no se ha borrado  y saldrá del estado de reset

Pulsando hasta que aparezca SET CLr  y después liberando  entramos en modo programación del umbral de la alarma. En la pantalla  se visualizara el valor de la alarma y el ultimo dígito parpadeando, entonces si pulsa cambiara el valor ,pero si no se pulsa en tres segundos cambiara al siguiente dígito automáticamente y así sucesivamente. Se finaliza la programación si pulsamos mas de 5 segundos  lo cual automáticamente salvara el umbral  y quedara configurado ese valor.

 

 

Por cierto, si le interesa este instrumento , se puede comprar en Amzon  por menos de 14€

Interactuar con Netduino via twitter


ThingSpeak™ es un servicio web gratuito muy veterano  y del que hemos  hablado en este blog en numerosas ocasiones   que  permite recopilar y almacenar datos de sensores  conectados a Rasberry Pi, Arduino ,Netduino  entre otros  para enviarlos  hacia  un servicio de datalogger  en la nube.

Asimismo  también sirve para  desarrollar aplicaciones de Internet de las cosas como por ejemplo desencadenar ciertas acciones  ante determinados cambios en las medidas  , tal y como vamos a ver en este caso desencadenando envíos de tweets con  el motivo de la alerta.

 

 

bandwidth close up computer connection

Photo by panumas nikhomkhai on Pexels.com

 

El servicio de web de ThingSpeak es uno de los servicios mas veteranos  en la red proporcionando  aplicaciones que le permiten analizar y visualizar los datos en MATLAB®y luego actuar sobre los cambios en esos  datos desencadenando acciones.

Los datos de los sensores pueden enviarse a ThingSpeak desde  un  Arduino®, Raspberry Pi™, BeagleBone Black  asi como  desde Netduino+  entre otras  plataformas

 

En este post vamos a intentar  ver  cómo se puede enviar un tweet cuando los datos de punto de rocío superan un umbral  usando dos  aplicaciones  como son ThingTweet y React :

  •  ThingTweet  sirve  para vincular una cuenta Twitter® a su cuenta ThingSpeak. Sus dispositivos pueden enviar alertas a través de Twitter utilizando la API de TweetContol. Por ejemplo, puede hacer que un dispositivo tuitee cuando la temperatura de su invernadero disminuya o cuando las baterías de un dispositivo se estén agotando. Los pasos son sencillos : entraremos c en Link Twitter Account para vincular una cuenta de Twitter a su cuenta ThingSpeak y cuando se le pida que autorice a ThingTweet a usar su cuenta ingresaremos el nombre de usuario y contraseña de Twitter marcando la casilla Recordarme para guardar en caché las credenciales de Twitter en su pc  y por supuesto haciendo clic en Autorizar aplicación
  • React funciona con las aplicaciones ThingHTTP, ThingTweet y MATLAB Analysis para realizar acciones cuando los datos del canal cumplen una determinada condición. Por ejemplo se  puede hacer que una aplicación móvil informe su latitud y longitud a un canal ThingSpeak, de modo que cuando su posición esté dentro de una cierta distancia de su casa,  ThingHTTP encienda las luces de su sala.

Como pasos previos para poder usar ambos servicios  se requiere que ya han realizado estos pasos:

  • Crear una cuenta de  Twitter® .
  • Iniciar sesión a su cuenta de MathWorks®   o la cuenta de ThingSpeak™ , o crear una nueva cuenta de MathWorks .
  • Crear un canal como el canal calculados del   punto de rocío.
  • Leer los datos de estación meteorológica( por ejemplo desde una placa Netduino)  en su canal y calcular el punto de rocío como vimos en el post anterior

Nota : En este  ejemplo vamos a  utilizar una medida   intermedia que es calculada en función de la humedad  y temperatura  , pero lógicamente  los desencadenantes se pueden  lanzar desde medidas sencillas   que no requieran un calculo intermedio .

Vincular  la cuenta de Twitter  a ThingSpeak

Para empezar  tenemos que vincular una cuenta de twitter a  nuestra cuenta de thingspeak . Para ello  puede seguir lo siguintes  pasos:

  1. Validese en su cuenta de ThinSpeak
  2. Ir a aplicaciones(Apps) > ThingTweet.
  3. En la página ThingTweet, haga clic en (enlace de cuenta de Twitter (Link Twitter Account ) para vincular su cuenta de Twitter a tu cuenta de ThingSpeak.
  4. Tiene que autorizar el acceso a su cuenta de twitter desde ThingSpeak
  5. Introduzca su nombre de usuario de Twitter y contraseña y haga clic en Autorizar la aplicación.

  6. En la página de autorización , haga clic en volver a ThingTweet(back to ThingSpeak).   Nos avisara de que su cuenta de Twitter está relacionada con ThingSpeak  devolviendonos  el valor del APIKEY   , el cual por cierto podemos fiorzar a cambiar  gracis  al boton  Regenerate API Key.
  7. Si queremos  deshacer este cambio simplemente pulsaremos sobre el botón  desenlazar cuenta  (“Unlink Account”)

Reaccionar al cambio en el punto de rocío

Una vez vinculada   su cuenta de twitter a thingspeak    ya podemos indicar a React que  envie un tweet cada vez que el nivel de punto de rocío supere  un valor va sobre 15ªC , testeando el  canal cada 10 minutos.

Estos son los pasos para hacerlo:

  1. Ir a aplicaciones > react  hacera clic en Reaccionar de nuevo.
  2. Nombre este react por ejemplo como  “Tweet de punto de rocío.”
  3. Defina el tipo numérico.
  4. Ajuste la Frecuencia de la prueba a cada 10 minutos.
  5. Establecer la condición cuando el valor de la humedad en su canal alcanza o supera los 60:
    • Si canal: seleccione el canal de medición de punto de rocío.
    • campo: seleccione 3 (punto de rocío).
    • Para el tipo de condición, seleccione es mayor o igual a.
    • El valor de condición, entre 60 (se refiere a grados Fahrenheit)

    • Ajuste acción en ThingTweet.
    • Entrar en esta cadena en tweet a continuación:
      Turn off that humidifier! It's above 60F
    • Seleccione su cuenta de Twitter con la cuenta de Twitter.
    • En Opciones, elija Ejecutar acción cada vez que la condición se cumple.

    Click Save React.

El tweet se envíara cada vez que el nivel de humedad supere los 15,5ºC o 60 ° F.

Es evidente que esta facilidad de ThingSpeak   ,que sinsisteimo es soportado por un amplio abanico de hardware (como Raspberrry, Arduino o el propio Netduino), tiene una utilidad indudable para infinidad de condiciones  que nos pueden facilitar la vida como por ejemplo  apertura de puertas o ventanas,  temperaturas anómalas , caídas de tensión ,  y un largo etcétera.

Análisis de datos con MathWorks y Netduino


Este ejemplo muestra cómo leer datos de temperatura y humedad de ThingSpeak  ( del canal 12397)  , que recoge datos meteorológicos de un  dispositivo de  Iot que perfectamente  puede ser una placa  Arduino , Raspbery Pi o incluso  un Netduino.
La idea es enviar a los datos de temperatura y humedad en el canal de medición de punto de rocío, y calcular con arreglo a estos  datos el punto de rocío  utilizando ThingSpeak™ para visualizar los resultados en su canal.
El punto de rocío o temperatura de rocío es la más alta temperatura a la que se condensa el vapor de agua contenido en el aire, produciendo rocío, neblina, cualquier tipo de nube o, en caso de que la temperatura sea lo suficientemente baja, escarcha.

Este ejemplo  requiere que ya han realizado estos pasos:

  • Iniciar sesión a su cuenta de MathWorks®  o en la cuenta de ThingSpeak  o crear una nueva cuenta de MathWorks .
  • Crear un canal como el canal de medición de punto de rocío.

Leer datos de un canal

Leer la temperatura y humedad en el canal público de WeatherStation campos 3 y 4 y escribir los datos en campos 2 y 1, respectivamente, de su canal de medición de punto de rocío. Punto de rocío es calculado y escrito a campo 3.

Para usar el análisis de   MATLAB®  para leer, calcular y escribir los datos siga los siguientes pasos:

  1. Ir a la pestaña de aplicaciones y haga clic en Análisis de MATLAB.
  2. Haga clic en nuevo. Seleccione la plantilla personalizada y haga clic en crear.
  3. En el campo nombre , escriba.Dew Point Calculation
  4. En el campo de código MATLAB, introduzca las siguientes líneas de código.
    1. Guardar la estación pública canal ID y tu ID de canal de medición de punto de rocío a las variables.
      readChId = 12397;
      writeChId = 677;  % replace with your channel number
    2. Guardar su clave de API de escribir en una variable.
      writeKey = 'F6CSCVKX42WFZN9Y'; % Replace with your channel write key

      Para encontrar su canal ID y Write API Key, consulte información del canal en la pestaña de Mis canales .

    3. Leer los últimos 20 puntos de datos de temperatura con las marcas de tiempo y la humedad en el canal público de la estación meteorológica en las variables.
      [temp,time] = thingSpeakRead(readChId,'Fields',4,'NumPoints',20);
      humidity = thingSpeakRead(readChId,'Fields',3,'NumPoints',20);

Calcular el punto de rocío

Agregue el siguiente código MATLAB para calcular el punto de rocío con las lecturas de temperatura y humedad:

  1. Convertir la temperatura de Fahrenheit a Celsius.
    tempC = (5/9)*(temp-32);
  2. Especificar las constantes de vapor de agua () y (presión barométrica). bc
    b = 17.62;
    c = 243.5;
  3. Calcular el punto de rocío en grados Celsius.
    gamma = log(humidity/100) + b*tempC./(c+tempC);
    dewPoint = c*gamma./(b-gamma)
  4. Convertir el resultado a Fahrenheit.
    dewPointF = (dewPoint*1.8) + 32;
  5. Escribir datos en el canal de medición de punto de rocío. Este código entradas todos los datos en una operación e incluye las marcas de hora correcta.
    thingSpeakWrite(writeChId,[temp,humidity,dewPointF],'Fields',[1,2,3],...
    'TimeStamps',time,'Writekey',writeKey);

    El bloque completo de código aparece ahora como:

    % Enter your MATLAB Code below
    readChId = 12397;
    writeChId = ZZZZZ;              % Replace with your channel number
    writeKey = 'XXXXXXXXXXXXXXXX';  % Replace with your channel write key
    [temp,time] = thingSpeakRead(readChId,'Fields',4,'NumPoints',20);
    humidity = thingSpeakRead(readChId,'Fields',3,'NumPoints',20);
    tempC = (5/9)*(temp-32); 
    b = 17.62;
    c = 243.5;
    gamma = log(humidity/100) + b*tempC./(c+tempC);
    dewPoint = c*gamma./(b-gamma)
    dewPointF = (dewPoint*1.8) + 32;
    thingSpeakWrite(writeChId,[temp,humidity,dewPointF],'Fields',[1,2,3],...
    'TimeStamps',time,'Writekey',writeKey);
  6. Haga clic en Guardar y ejecutar para validar y procesar el código.Cualquier error en el código se indica en el campo de salida .
  7. A ver si el código funcionó con éxito, haga clic en su enlace de canal de Medición de punto de rocío en el panel de Información del canal .

El canal de medición de punto de rocío ahora muestra gráficos con datos de un canal de cada campo.

Código del calendario

Utilizaremos  la aplicación TimeControl para programar el cálculo del punto de rocío en el código de analisis MATLAB programando este  para leer los datos de la estación cada 30 minutos y calcular el punto de rocío

Estos son los pasos a seguir:

  1. Desplácese hasta la parte inferior de la página de MATLAB análisis cálculo de punto de rocío. Haga clic en TimeControl para abrir la aplicación MATLAB análisis pre-seleccion en el campo de acciones y el cálculo del punto de rocío como la ejecución de código.
  2. Nombre de su nuevo TimeControl Dew Point TC
  3. Elegir recurrentes en el campo de frecuencia .
  4. Elegir el minuto en el campo de la repetición .
  5. Seleccione 30 en el cada — minutos campo.
  6. Mantener el Tiempo de inicio en el valor predeterminado.
  7. Verificar que la acción es, y el código a ejecutar es el.MATLAB AnalysisDew Point Calculation
  8. Haga clic en Guardar TimeControl

Nota:Configurar un TimeControl para escribir datos en el canal utiliza mensajes disponibles en su cuenta de ThingSpeak. Esta acción puede agotar eventualmente mensajes disponibles, que se traduce en rechazo del canal de alimentación de actualizaciones. Asegúrese de que los datos que escribes a un canal de no se superponen en el dominio del tiempo como hace uso innecesario de los mensajes.

Visualizar medida de punto de rocío

Se puede utilizar la aplicación visualizaciones de MATLAB para visualizar los datos de punto de rocío medido, la temperatura y la humedad de tu canal de medición de punto de rocío. Este ejemplo utiliza la función Mostrar todos los puntos de tres datos en una única visualización.thingSpeakPlot

Ir a aplicaciones > MATLAB visualizacionesy haga clic en nueva para crear una visualización.

Alternativamente, usted puede hacer clic en Visualización de MATLAB en su punto de vista del canal de medición de punto de rocío.

Seleccione la plantilla personalizada y haga clic en crear.

  1. Nombre de la visualización “Punto de rocío.”
  2. Crear variables para su ID de canal de medición de punto de rocío y su clave de API de lectura. Sustituya los valores en el código con tu canal ID y la clave de API de lectura.
    readChId = 677
    readKey = '36LPYCQ19U37ANLE'
  3. Leer datos de los campos de canal y obtener los últimos 100 puntos de datos para:
    • Temperatura: De campo 1
    • Humedad: Del campo 2
    • Punto de Rocío: de campo 3
      [dewPointData,timeStamps] = thingSpeakRead(readChId,'fields',[1,2,3],...
          'NumPoints',100,'ReadKey',readKey);
  4. Parcela los datos x y y las etiquetas, un título y una leyenda.
    thingSpeakPlot(timeStamps,dewPointData,'xlabel','TimeStamps',...
        'ylabel','Measured Values','title','Dew Point Measurement',...
        'Legend',{'Temperature','Humidity','Dew Point'},'grid','on');

    El código se verá similar a este código:

    % Enter your MATLAB code below
    readChId = ZZZZZ              % Your Channel ID                 
    readKey = 'XXXXXXXXXXXXXXXX' %Your Read API Key
    [dewPointData,timeStamps] = thingSpeakRead(readChId,'fields',[1,2,3],...
        'NumPoints',100,'ReadKey',readKey);
        thingSpeakPlot(timeStamps,dewPointData,'xlabel','TimeStamps',...
        'ylabel','Measured Values','title','Dew Point Measurement',...
        'Legend',{'Temperature','Humidity','Dew Point'},'grid','on');
  5. Haga clic en Guardar y ejecutar. Si su código MATLAB no tiene errores, la salida de trama es similar a la trama que se muestra a continuación:

 

Fácil monitorización de temperatura con Cayenne


Gracias  a la plataforma de Cayenne , de la que hemos hablado en este blog en numerosas  ocasiones es bastante sencillo monitorizar cualquier variable física  de un modo realmente sencillo  simplemente  haciendo drug &drop desde el panel de control de Cayenne

En este ejemplo  vamos a  ver lo facil que es crear monitor temperatura con Cayenne  , el  cual  utilizando internet sin tener conocimientos  de programación conseguir controlar o monitorizar lo que quiera  en tan solo unos minutos

En efecto   gracias  a un  framework  genérico desarrollado por  myDevices IO Project Builder llamado Cayenne , los desarrolladores , fabricantes y  también aficionados  pueden  construir rápidamente prototipos y proyectos que requieran controlar o monitorizar   cualquier cosa conectada a  una placa  con conectividad  , permitiendo con una sóla cuenta gratuita de Cayenne, crear un número ilimitado de proyectos  mediante una solución  muy sencilla  basada en arrastrar y soltar 

Obviamente el punto fuerte de cayenne  son las  capacidades de  IO  para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos  de GPIO con almacenamiento ilimitado de datos recogidos por los componentes de hardware,   triggers y alertas,  que proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. Ademas también puede crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.

Resumidamente algunas  características clave de esta novedosa  plataforma son las siguientes:

  • Una aplicación móvil para configurar, el monitor y los dispositivos de control y sensores desde cualquier lugar.
  • Fácil instalación que conecta rápidamente los dispositivos, sensores, actuadores, y las extensiones en cuestión de minutos.
  • Motor de reglas para desencadenar acciones a través de dispositivos.
  • Panel personalizable con widgets de visualización de arrastrar y soltar.
  • Programación de las luces, motores y actuadores
  • Control de puertos que se pueden configurar desde una aplicación móvil o  desde un navegador
  • Acceso remoto instantáneo desde su smartphone o con un ordenador
  • Para construir un proyecto de la IO a partir de cero se ha logrado el objetivo de proporcionar  un Proyecto Generador de IO que reduce el tiempo de desarrollo de horas en lugar de meses.

Como veremos , hablamos de un constructor de sitio web fácil de usar, pero para proyectos de IOT, así que veamos  los pasos para crear un proyecto de IoT con esta potente herramienta usando  en esta ocasión un clon de Arduino con wifi : el ESP8266

Hardware y Software

Picture of Hardware and Software  Picture of Hardware and SoftwarePicture of Hardware and Software

El hardware  y software a que necesitaremos es el que siguiente:

 

Sensor DHTXX

DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino o ESP8266.

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

Conectar el DHT11   o el DHT22  a  un Arduino o ESP82366  es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino. Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El esquema eléctrico queda como la siguiente imagen:

arduino-dht11-dht22-esquema

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional mediante un único hilo , empleando señales temporizadas por lo que en general, lo normal es que empleemos una librería existente para simplificar el proceso.Por ejemplo podemos usar la librería de Adafruit disponible en este enlace.

Conexión de DHT22 a  ESP12E

El  ESP12E    esta basado en Arduino  pero cuenta   también conectividad wifi integrando la propia antena en la placa de circuito impreso en unas  dimensiones de  25.6mm x 34.2mm .  Además, por motivos de reducción de espacio esta placa no integra conexión usb  , para lo cual necesitaremos un USB FTDI   para programarlo o un  controlador Setup CH340g.

Esta placa cuenta con 11 pines digitales de entrada / salida, todos los pines tienen interruptor / pwm / I2C / 1-wire    siendo su chip principal el  ESP8266 CH340G

Una gran diferencia con una placa Arduino es que solo cuenta  con 1 entrada analógica (entrada máxima de 3,3 V)

 

Como  vemos el circuito para conectar al  ESP12E      un sensor de temperatura  no puede ser más sencillo, pues     simplemente alimentaremos con 3.3v DC tanto el DHT22 como el  ESP12E        en sus  pines correspondiente     sin olvidar  que la salida de datos del DH22(pin datos )    tenemos que conectarla al  pin 5 del GPIO

 

 

 Programar el  ESP12E

Para  probar Cayenne  con el  ESP12E       necesitamos  programar su ESP-12E para conectarse a su punto de acceso wifi   . El código fuente a subir  se puede descargar desde https://codebender.cc/embed/sketch:398516

Básicamente  el código a subir al    ESP12E     usa 5 librerías:  tres de Cayenne donde  tendremos que definir el SSID y la pwd de la red wifi asi como las credenciales de Cayenne    , una cuarta de temporización para enviar muestras a intervalos prefijados ( que obviamente podemos cambiar ) y por último la mencionada para la gestión del DTHXX

Es de destacar  la creación  de  dos puertos virtuales  para capturar  los valores  en tiempo real de la temperatura  y la humedad tomadas ambas  del DHTXX  , lo cual nos van a permitir comunicarnos con el API de Cayenne

 

#include "CayenneDefines.h"
#include "CayenneWiFi.h"
#include "CayenneWiFiClient.h"
#include <SimpleTimer.h>
#include "DHT.h"

#define CAYANNE_DEBUG
#define CAYANNE_PRINT Serial
#define DHTPIN 5
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
// Change the value of token, ssid, and pwd to yours
char token[] = "xxxxxx";
char ssid[] = "xxxxxx";
char pwd[] = "xxxxx";
DHT dht(DHTPIN, DHTTYPE);

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Cayenne.begin(token, ssid, pwd);
dht.begin();
}

CAYENNE_OUT(V0)
{
float t = dht.readTemperature();
Cayenne.virtualWrite(V0, t); //virtual pin
}

CAYENNE_OUT(V1)
{
float h = dht.readHumidity();
Cayenne.virtualWrite(V1, h); //virtual pin
}

void loop() {
Cayenne.run();
}

Importante:  Necesitaremos actualizar  en el código anterior cambiando el valor de ssid, contraseña  configurandola para la red wifi de su hogar y  también no olvidar   registrar  el  token de Cayenne que previamente habrá solicitado  desde la propia web de cayenne.

Configuración Cayenne Dashboard

Hemos hablado en  muchas ocasiones de Cayenne  pues en realidad está concebido para  que su manejo sea realmente sencillo   de configurar

Nos iremos a  su   url :   https://cayenne.mydevices.com/  

Tras registrarnos nos iremos  al panel de control   ,clicamos en  Add new   y seleccionamos generic ESP8266

A continuación nos ofrece  la API key que deberemos añadir al sw del   ESP12E      y tras reiniciarlo  ya debería poderse  comunicar con el node de Cayenne

 

Si la placa  pues   está configurada con el MQTT  ( username /pwd)     asi como con conectividad  wifi ,  ya   debería  de  poder conectarse al framework de Cayenne   y podemos seguir hacia adelante añadiendo sensores que deberan estar de acuerdo con el sw instalado en el ESP12E

En este caso como hemos definido  dos puertos virtuales para temperatura y humedad el firmware del ESP12E  , necesitamos añadir dos widgets  asociados a esos dos canales:

Para la temperatura  no olvidar que habíamos asignado el primer puerto virtual, el cual ue debemos asignar al widget:
Para la humedad   no olvidar que habíamos asignado el segundo puerto virtual, el cual ue debemos asignar al widget:
Finalmente al asignar los dos widgets  , si esta la placa conectada , debería mostrar un panel similar al siguiente  en el que se jha añadido un widget nuevo asociado al puerto analogico

Configuración de su primer  trigger

Los triggers  o disparadores en Cayenne son una forma de hacer que su placa  reaccione a un cambio  de un sensor conectado a él. Esto podría ser algo tan simple como un valor de temperatura superior a un cierto valor o incluso sólo si el ESP12E pierde la conexión, lo cual como se podría imaginar puede ser muy potente en la creación de dispositivos inteligentes que reaccionan a los alrededores ( como por ejemplo, si la habitación se pone demasiado fría, encienda un  calefactor, etc ).

El proceso de agregar un disparador es muy sencillo como vamos a ver a continuacion:

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar un trigger desde el cuadro de abajo.
  3. El nombre de su trigger, voy a llamar a la mía “demasiado caliente”.
  4. Ahora arrastrar y soltar su  ESP12E  desde la esquina izquierda en el caso de la caja.
  5. Por debajo de esto seleccionar el sensor de temperatura y tienen casilla junto a “por encima de la temperatura” seleccionado. (Si las opciones del dispositivo no se muestran simplemente actualizar la página)
  6. Ahora en el cuadro de selección a continuación, notificación y agregar una dirección de correo electrónico o número de teléfono de un mensaje de texto (puede agregar ambos).Asegúrese de marcar las casillas de verificación también.Dispara demasiado caliente
  7. Ahora haga clic en “Save trigger”.
  8. Ahora se debe guardar y le enviará una alerta cada vez que el sensor de temperatura es más de 40 grados Celsius.
  9. También puede arrastrar el ESP12E en el cuadro a continuación, y tienen que hacer muchas cosas, incluyendo el control de los dispositivos de salida. Por ejemplo, puede  añadir un LED que se activará cuando la temperatura supere los 40 grados Celsius.
  10. Para hacer clic en el gatillo de disparo LED de nueva situada en la parte superior de la página. Nombre esta activar el gatillo LED.
  11. Ahora arrastrar el Pi en el caso de la caja y luego seleccione el sensor de temperatura de nuevo con 40 grados centígrados por encima.
  12. Ahora arrastrar el ESP12E  en cuadro a continuación. Seleccione nuestra salida digital y marque la casilla de verificación activada.
  13. Ahora haga clic en Save trigger.
  14. Ahora, cada vez que nuestro sensor de temperatura conectado al Pi informe una temperatura superior a 40 grados Celsius, enviará un correo electrónico y encenderá el LED.También necesitará agregar otro disparador para apagar el LED cuando caiga por debajo de los 40 

Mydevices cayennem Disparadores

 

 

 

Sin duda hay infinitas posibilidades como el lector   puede imaginar

 

Innovador termostato inteligente para climatizacion


Tadoº es una empresa, acelerada por los fondos Amérigo, que ha desarrollado un original  termostato de climatización inteligente  así como un termostato inteligente ,que a gran diferencia de  otros equipos  que requieren intercalar electrónica en el sistema de calefacción o climatización , con este nuevo sistema  simplemente se  envían las órdenes por infrarrojos  correspondientes al equipo climatizador que se tenga  en el caso del sistema de climatización inteligente o bien se coloca directamente sobre las válvulas de los radiadores en el caso de los termostatos inteligentes.

En el caso  de climatización , el  dispositivo  funciona con casi todos los aires acondicionados  pues es compatible con aquellos que se controlen  con un mando a distancia por infrarrojos  que muestre los ajustes actuales del aire acondicionado :por ejemplo, el modo, la temperatura de consigna y la velocidad del ventilador,  puesto que la instalación se hace con el mando a distancia de modo   muy fácil.

Con el modo de aprendizaje, tado° puede aprender los comandos desde su viejo mando a distancia y a partir de ahí   ya se podría  controlar desde el mando del dispositivo  o desde la app   dado que el dispositivo  se conecta a internet a través de Wi-Fi.

 

tado.PNG

Este equipo a diferencia de los convencionales, los cuales se limitan a programar unas horas y temperaturas, tiene en cuenta la ubicación de sus usuarios para determinar si es necesario adelantar el encendido de la calefacción o el sistema de climatización  o si puede demorarlo para no gastar dinero innecesariamente.

Gracias a la ubicación de una App en el teléfono del usuario, tado° ajusta el aire acondicionado de manera automática, es decir, pre-enfría antes de llegar a casa y apaga el aire al estar ausente, lo que permite ahorrar hasta un 40% en los costes de la factura de energía sin sacrificar el bienestar y el confort

 

Los dispositivos pueden ser controlados de forma remota a través de una unidad de control central. Por ejemplo, un teléfono móvil puede establecer la conexión a través de internet en cualquier momento y en cualquier lugar. Con la app móvil de tadoº, es posible controlar y regular el sistema de aire acondicionado de forma flexible informando desde la app  de la temperatura actual de tu hogar, los ahorros que esto supone y  permitiendo controlar su aparato de aire acondicionado  de forma remota desde cualquier lugar.

 

Utiliza control por geolocalización: para maximizar el ahorro, tado° usa la ubicación de los residentes para asegurarse de que el aire acondicionado se apaga automáticamente cuando la última persona salga de casa, y empezará a enfriar de nuevo cuando detecte a la primera persona volver  permitiendo ahorrar de este modo  hasta un 40% en gastos de energía.

 

Gracias al internet de las cosas, las familias y las empresas pueden reducir los costes de energía de manera significativa por ejemplo según sus creadores afirman con el control inteligente  es posible ahorrar hasta un 31% en los costes de energía.

Además de ahorrar en los costes, el IoT garantiza la reducción del consumo de energía y el uso de recursos eficientemente puesto  que el sistema  apaga la climatización de forma automática cuando el último residente sale del edificio y la vuelve a encender justo cuando detecta a la primera persona volver.

La conexión de los dispositivos, ofrece un incremento de calidad de vida y más confort,pues estos  sistemas  regulan su sistema de calefacción o aire acondicionado automáticamente sin tener que realizar ninguna modificación adiciona simplificando la  vida de las personas que lo usan.

Por ultimo en el el caso de Tado este sistema de Climatización Inteligente ofrece distintas posibilidades de integración, como Google Home, Amazon Echo para controlar tu calefacción con  comandos de voz o  crear Applets con IFTTT para conectar con otras aplicaciones y dispositivos inteligentes.

 

 

Mas información en  https://www.tado.com/es/