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/

Como emular un mando con Arduino


A veces   puede ser  interesante emular del comportamiento  de un mando infrarrojo  con el fin de automatizar procesos  que de otra manera  seria mucho mas complejo . Como ejemplo típico de dispositivos que podemos controlar vía infrarojos, hablamos de  reproductores de cámaras, televisores, DVD, VCR, lectores de blueray, equipos de sonidos, descodificadores  y  un largo etcétera 

Aunque pueda parecer descabellado repetir las mismas señales desde una placa Arduino , lo cierto  es que no es descabellado querer emular este comportamiento , porque  podemos  hacer cosas  que seria muy dificultoso  sin la ayuda del procesamiento de señales de infrarojos como por ejemplo  encender automáticamente  el Aire Acondicionado  cuando la temperatura  suba un determinado valor , o se desconecte a una determinadas horas ,  se apague  cuando no haya movimiento  y un largo  etcétera 

Como paso previo  debemos analizar las señales infrarrojas emitidas por el mando usado para el control de ese dispositivo  por lo que deberemos averiguar  cómo recibir los códigos y luego una vez conocidas intentar ver como transmitirlas.

Para nuestra tarea necesitamos :

  • 1 x Arduino (cualquier versión sirve  siempre que pueda procesar señales  “PWM” )
  • 1 x LED IR   (usted puede conseguir éstos de cualquier TV remoto)
  • 1 x receptor IR (usted puede conseguir éstos de cualquier TV remoto)

 

Preparación para recibir señales

Para el análisis  de las señales infrarrojas  producidas por el mando del  dispositivo a controlar en primer lugar necesitaremos  un receptor de infrarrojos ,   que bien  puede proceder de   uno reciclado de cualquier viejo proyecto que ya no utilice  o bien adquirido específicamente  en el comercio

Una interesante opción son los famosos kits para Arduino que integran por unos 4€  todo los necesario para habilitar la comunicación en los dos sentidos  gracias a un led IRDa, un receptor IRDA  y un mando para pruebas.

Kit Modulo Receptor Infrarojo IR Protocolo Nec con Mando a Distancia Arduino

Como sugerencia  para captar el código correcto , deberíamos poner el receptor IR y el mando en una caja opaca  o algo que sea oscuro  lo cual  asegurará que habrá el mínimo de interferencias y  podremos tener el código más claro para que no tengamos que programar  nuestro  Arduino  muchas veces para una simple tarea. También, asegúrese de que estar alejados de personas viendo la televisión.

Realmente el circuito es bastante sencillo pues únicamente tendremos que alimentar con 5v DC  ( que podemos tomar directamente desde nuestro Arduino )   y luego conectar la salida del receptor digital al pin digital A2 de Arduino

 

Picture of Preparing to Receive Signals

Una vez montado el simple circuito del receptor de infrarrojo es hora de  subir el programa a su Arduino  para  poder descodificar la señal infrarroja .

El siguiente programa utiliza el Arduino y un PNA4602 para descifrar IR recibido lo cual se  puede utilizar para hacer un receptor de infrarrojos. (buscando un código en particular) o transmisor (pulsando un LED IR a ~ 38KHz para el duraciones detectadas,

Este código es de dominio público (visite http://www.ladyada.net y adafruit.com), pero en esta ocasión se ha traducido para que sea mas legible y fácil de entender:


// Necesitamos usar los métodos de lectura de pin ‘raw’  porque el tiempo es muy importante aquí y el digitalRead () es un  procedimiento s más lento!

#define IRpin_PIN PIND
#define IRpin 2

// el pulso máximo que escucharemos: 65 milisegundos es mucho tiempo
#define MAXPULSE 65000

// lo que debería ser nuestra resolución de tiempo, más grande es mejor ya que es más ‘preciso’ – pero demasiado grande y no se conseguirá  tiempo exacto
#define RESOLUTION 20

// almacenaremos hasta 100 pares de pulsos (esto son muchos )
uint16_t pulses[100][2]; // par es pulso alto  y bajo 
uint8_t currentpulse = 0; // indice para pulsos que estamos almacenando

void setup(void)

{
Serial.begin(9600);
Serial.println(“Ready to decode IR!”);
}

void loop(void)

{

// tiempo de almacenamiento temporal
uint16_t highpulse, lowpulse;

//empezar sin pulso 
highpulse = lowpulse = 0;

//esto es demasiado lento!
while (IRpin_PIN & (1 << IRpin)) {
// pin esta a nivel alto

// continúa otros microsegundos
highpulse++;
delayMicroseconds(RESOLUTION);

// Si el pulso es demasiado largo, ‘se agotó el tiempo’ – o bien nada / se recibió o el código está terminado, así que imprima lo que  hemos obtenido hasta ahora, y luego reiniciamos
if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse=0;
return;
}
}
// no nos detuvimos, así que escondamos la lectura
pulses[currentpulse][0] = highpulse;

// lo mismo que arriba
while (! (IRpin_PIN & _BV(IRpin))) {
// pin esta aun bajo
lowpulse++;
delayMicroseconds(RESOLUTION);
if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse=0;
return;
}
}
pulses[currentpulse][1] = lowpulse;

// leemos un pulso alto-bajo con éxito, ¡continuamos!
currentpulse++;
}

void printpulses(void) {
Serial.println(“\n\r\n\rReceived: \n\rOFF \tON”);
for (uint8_t i = 0; i < currentpulse; i++) {
Serial.print(pulses[i][0] * RESOLUTION, DEC);
Serial.print(” usec, “);
Serial.print(pulses[i][1] * RESOLUTION, DEC);
Serial.println(” usec”);
}
}


Una vez que hemos subido el código anterior  y  todo está configurado correctamente, abrir el serial monitor haciendo clic en el botón en el programa de Arduino que es el botón de un círculo en la imagen y  ya estára en marcha así que ahora usted necesitará encontrar un control remoto que desee usar para controlar algo con Arduino

El proceso  esquemáticamente  a seguir es el siguiente :

  1. Encontrar el mando a distancia del dispositivo  que quiere controla
  2. Ejecutar el código del  receptor anteriormente citado
  3. Presione el botón del mando cuyo  código desea obtener 
  4. Ver el Monitor Serial
  5. Pegar el todo el código del monitor serie  en un editor de texto 
  6. Repetir los paso 3, 4 6  con todos los botones del mando que desee descodificar 

 Interpretando las señales

Una vez siga la secuencia de paso anteriores recibirá un montón de números seguidos por “usecs” o “usec”.
Asegúrese de que ha copiado la señal que se desea formateando la salida para más fácil referencia.

Se verá algo como esto:
500 usec, 300 usec
600 usec, usec 1200

Pero habrá números mucho más que eso.

Ahora en el programa emisor  verá esto bastantes veces:

delayMicroseconds();
pulseIR();

Es decir tenemos que  tomar el primer número y poner paréntesis en delayMicroseconds(“here”); el  valor obtenido en el monitor
y a su vez   tomar el segundo número de la misma línea como el de la delayMicroseconds()  valorar y poner en el paréntesis de pulseIR(); valor.

Veamos otro ejemplo .Si conseguimos esto en el monitor serial:

OFF ON
1660 usec, usec 580
1640 usec, usec 560

Ahroa para poner los  correspondiente valores en sus áreas correspondientes lo haremos asi :

delayMicroseconds(1660);
pulseIR(580);
delayMicroseconds(1640);
pulseIR(560);

Como puede apreciar ,la  tarea de transcripción  es muy fácil.

Una vez que tenga los códigos que desee, abra un nuevo  archivo IR_SEND.pde en el programa de Arduino y luego tendremos que  poner  los valores que tiene del monitor de serie entre paréntesis haciéndolo  del mismo modo  que hemos visto anteriormente .

Ahora, una vez que tenemos los códigos que desea y haya cargado el programa con la señal que desea enviar, todo lo que tiene que hacer es conectar el LED IR al pin 13 y luego a tierra  No necesita la resistencia si tiene un Duemilanove Arduino porque tiene una resistencia integrada para PIN 13, por lo que no tiene que preocuparse.


Como ejemplo veamos este código cuando se presiona el botón para subir el canal en un  control remoto de Comcast. . Aquí está el código de Serial Monitor: Recibido:

OFF  ON
36328 usec, 280 usec
820 usec, 300 usec
1580 usec, 320 usec
640 usec, 240 usec
2740 usec, 240 usec
1280 usec, 240 usec
1240 usec, 240 usec
1120 usec, 240 usec
2600 usec, 240 usec
12740 usec, 240 usec
840 usec, 240 usec
980 usec, 240 usec
700 usec, 240 usec
700 usec, 240 usec
720 usec, 240 usec
2460 usec, 260 usec
700 usec, 240 usec
700 usec, 240 usec
14904 usec, 260 usec
820 usec, 240 usec
1660 usec, 240 usec
700 usec, 260 usec
2740 usec, 240 usec
1240 usec, 240 usec
1260 usec, 240 usec
1100 usec, 240 usec
2620 usec, 240 usec
12720 usec, 260 usec
840 usec, 220 usec
2080 usec, 240 usec
1780 usec, 260 usec
700 usec, 240 usec
700 usec, 240 usec
2480 usec, 240 usec
700 usec, 240 usec
700 usec, 240 usec

Aquí está el código realizado a partir de los datos en bruto anteriores  pero no se  asociado al código  

En el siguiente  programa   se ha introducido  un detalla original ; Arduino cambiará el canal cada diez segundos para que se puedan hacer otras cosas , Por ejemplo mientras se ve televisión y esta haciendo otras cosa  así  no tendrá que cambiar el canal de modo que el sw  recorrerá los canales para que tenga las manos libres. (todos sabemos que presionar un botón es tan difícil, ¿por qué no hacerlo de forma automática?)

 

He aquí el programa realizado por Wally_Z:


int IRledPin =  13;    // LED conectado al pin digital 13

// El método setup () se ejecuta una vez, cuando comienza el boceto

void setup()   {               
  // initializa  el pin como salida :
  pinMode(IRledPin, OUTPUT);     

  Serial.begin(9600);
}

void loop()                    
{
  SendChannelUpCode();

  delay(20*1000);  // espera veinte segundos (20 segundos * 1000 milisegundos) Cambia este valor para diferentes intervalos.

}

// Este procedimiento envía un pulso de 38KHz al IRledPin  para un cierto  numero de microsegundos. Usaremos esto siempre que tengamos que enviar códigos.

void pulseIR(long microsecs)

{
  // contaremos desde la cantidad de microsegundos que se nos dice que esperemos

  cli();  // esto apaga cualquier interrupción de fond

  while (microsecs > 0) {
   // 38 kHz tiene aproximadamente 13 microsegundos de alto y 13 microsegundos de bajo
   digitalWrite(IRledPin, HIGH);  //Esto lleva alrededor de 3 microsegundos
   delayMicroseconds(10);         // esperar 10 microseconds
   digitalWrite(IRledPin, LOW);   // esto toma sobre 3 microseconds
   delayMicroseconds(10);         // esperar   10 microseconds

   // asi que  26 microseconds  todo junto
   microsecs -= 26;
  }

  sei();  // esto devuelve el control
}

void SendChannelUpCode()

{
  // Este es el código para CHANNEL + para TV COMCAST.
 
  delayMicroseconds(36328);      //Tiempo libre (columna IZQUIERDA)      
  pulseIR(280);                               //Tiempo en (columna DERECHA) <——- NO MEZCLAR ESTOS ARRIBA
  delayMicroseconds(820);
  pulseIR(300);
  delayMicroseconds(1580);
  pulseIR(320);
  delayMicroseconds(640);
  pulseIR(240);
  delayMicroseconds(1280);
  pulseIR(240);
  delayMicroseconds(1240);
  pulseIR(240);
  delayMicroseconds(1120);
  pulseIR(240);
  delayMicroseconds(2600);
  pulseIR(240);
  delayMicroseconds(12740);
  pulseIR(240);
  delayMicroseconds(840);
  pulseIR(240);
  delayMicroseconds(980);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(720);
  pulseIR(240);
  delayMicroseconds(2460);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(14904);
  pulseIR(240);
  delayMicroseconds(820);
  pulseIR(240);
  delayMicroseconds(1600);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(260);
  delayMicroseconds(2740);
  pulseIR(240);
  delayMicroseconds(1240);
  pulseIR(240);
  delayMicroseconds(1260);
  pulseIR(240);
  delayMicroseconds(1100);
  pulseIR(240);
  delayMicroseconds(2620);
  pulseIR(240);
  delayMicroseconds(12720);
  pulseIR(260);
  delayMicroseconds(840);
  pulseIR(220);
  delayMicroseconds(2080);
  pulseIR(240);
  delayMicroseconds(1780);
  pulseIR(260);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(2480);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
  delayMicroseconds(700);
  pulseIR(240);
}

 

Via Instrucables.com

 

 

 

Como controlar cualquier electrodoméstico con mando vía wifi


Modernamente están apareciendo muchos electrodomésticos convencionales como equipos de Aire  Acondicionado , Robots de limpieza , Persianas eléctricas , TV , etc con la opción de poderlos controlar  a distancia gracias  a la  conectividad  WIFI ,lo cual puede ser muy interesante  para configurarlos , programarlos o activarlos no solo desde casa, sino incluso fuera de esta  , y con ello mejorar nuestra calidad  de vida  . El punto  negativo es que en la mayoría de los casos   incrementa  sustancialmente el precio  desgraciadamente frente a los  equipos convencionales que no cuentan  con  dicho control y ademas  si contamos con equipos instalados operativos  pero sin esa funcionalidad de control por wifi   , no es una razón de peso para desechar estos¿no?. 

Asimismo ,como sin duda el lector conocerá, cada día  son mas frecuentes los asistentes de voz  como Alexa de Amazon , Google Home o el propio novedoso Aura de Movistar , todos ellos que poco podrán hacer sobre dichos  equipos  a controlar, si no disponen de los  módulos de control  correspondientes. Por ejemplo   con un Amazon Echo Dot o un Google Home Mini  si quiere enseñarle a encender el aparato de Aire Acondicionado  antes de llegar a casa o encender la TV   cuando olvida el mando a distancia lejos del sofá  no podrá hacerlo fácilmente   directamente  pues estos equipos no están preparados par ser controlados por dichos asistentes ,  pero no se alarme, porque   en efecto  no hace falta invertir una gran suma de dinero en cambiar dicho aparato , pues nos bastara ,  si este equipo es controlable   por infrarrojos o RF , de  instalar  un control remoto de luz infrarroja compatible con Alexa o Google Home  que haga las veces de “puente” entre ambos mundos.

Como opción interesante para controlar nuestros dispositivos en el salón destaca el Broadlink RM mini3, un pequeño dispositivo  que  puede controlar sin limitaciones  a  todos los dispositivos y dispositivos controlados con mandos a distancia por infrarrojos  o  que  emiten radiofrecuencia  en las frecuencias de 433 Mhz y 315 Mhz en toda la casa. ( excepto si el código es variable, Broadlink Rm Pro no puede admitirlo) 

 El BroadLink en cuestión tiene el tamaño de un vaso de chupito   contando con  varios leds de infrarojos  repartidos en la cabeza en forma 360° , que hacen que su área de actuación sea muy buena, por ejemplo  para encender el aire acondicionado antes de llegar a casa o para simular presencia encendiendo la tele  gracias a  una app específica para Europa (Intelligent Home Center For EU  , la cual se rige por el Reglamento General de Protección de Datos de la Unión Europea, famoso por ser estricto con el manejo de datos personales).

 

 Con este tipo de dispositivo podremos reemplazar  todos los controles remotos  por  su teléfono inteligente, pues cuenta con soporte para más de 80,000 dispositivos controlados por infrarrojos como aire acondicionado, TV, DVD, PVR, CD, SAT, aire acondicionado, persianas eléctricas, lámparas, purificadores, WiFi, reproductores BluRay, proyectores , Unidades de CA, salidas de RF, ventiladores y mucho más.

Aunque se ha comentado alguna  vez en este blog ,para saber si un mando es IR o RF, enfoque con la cámara del móvil a la punta del mando que controle ese dispositivo y pulse un botón: si en la pantalla del móvil  se ve un destello de  luz azul/blanca, es IR ( si no se ve nada, es de RF).

 

 

Los pasos a seguir para la instalación del el Broadlink RM mini3,  son realmente  muy sencillos:

  1. Instalar la app en el móvil ( esta disponible tanto para Android  como para  iOS)
  2. Enchufarle  una conexión de 5v  por el conector micro-USB ( no esta incluido el adaptador )                                                                                     ,
  3. Abriremos la   app   (esta disponible tanto para Android  como para  iOS)  y vincularemos el  Broadlink RM mini3,por  bluetooth a nuestro terminal                                                                       .
  4. Tendremos que conectar  el  Broadlink RM mini3 a nuestra red wifi añadiendo las credenciales  de nuestra red. Este modelo solo es compatible con redes de 2,4 GHz, pero no 5G  y la  contraseña de Wifi debe ser de  menos de 32 bytes, sin espacios y símbolos especiales, solo con alfabeto y número,
  5. Seguidamente añadiremos el  dispositivo a controlar  para lo cual elegiremos el  tipo de dispositivo, buscando  este modelo en la base de datos   que ofrece la propia aplicación  
  6. Probaremos  si funciona el control remoto desde la propia app , pero  si no funciona , cambiaremos  de modelo  hasta que reaccione)
  7. Si el control remoto no reconoce el dispositivo, puede copiar la señal del mando a distancia manualmente (pero los dispositivos que no están en la base de datos de BroadLink no son compatibles con los asistentes de voz)
  8. Repetiremos el proceso  para  todos los dispositivos controlados por infrarrojo que el BroadLink RM mini 3 tenga a su alcance  como puede ser los equipos de  aire acondicionado, televisores, equipos de música,lectores de dvd o blueray , descodificadores  de televisión de pago ,  barra de sonido, robot aspirador, reproductor multimedia, persianas eléctricas, etc..
  9. .El siguiente paso es configurar escenas que luego usaremos como comandos de Alexa o Google Home. Por  ejemplo para el televisor podemos tener varias  escenas para “encender la television”  o apagar la televisión  o incluso subir o bajar el volumen   o para el equipo de aire acondicionado  por ejemplo podemos tener una escena “calienta la casa” que sube la temperatura a 26 ºC y otra  escena “enfría la casa” que baja la temperatura a 18 ºC.
  10. El último paso es conectar la app de BroadLink con el altavoz inteligente. Hay un manual de instrucciones en el menú Más > Añadir servicio de voz, pero en resumen tenemos que abrir la aplicación Alexa o Google Home en el móvil e instalar la skill o servicio correspondiente. El asistente reconocerá automáticamente los nuevos dispositivos y sus comandos o escenas. Llegados a este punto  ya podrá decir “enciende el aire acondicionado”, “pon el aire acondicionado en modo calefacción” o “enfría la casa” para que el altavoz inteligente se comunique con el control remoto y este, a su vez, envíe la orden al aire acondicionado. También puedes decir “enciende la tele”, “silencia la tele” o “pon La Sexta” para que el control remoto envíe esas órdenes al televisor, aunque no sea una Smart TV ni nada parecido.
  11. Si puede  añadir un nivel de complejidad, creando rutinas desde las apps de Alexa y Google Home para encender las luces del salón de un color determinado cuando ponga el fútbol, conectar  la calefacción todos los días a una hora determinada o apagar el equipo de música cuando enciende la tele. 

 

Conclusiones 

Puede ser interesante para poder manejar la tele, aire acondicionado, bomba de calor y decodificador con el móvil pero sobre todo mediante un asistente de voz como  Google Home o Alexa 

Si nos remitimos al móvil , gracias a este dispositivo se pueden manejar multitud de aparatos sin problemas, configurarse  estos  fácilmente desde la aplicación y enseguida se pueden usar todos, desde casa o fuera de ella ( eso si sólo aquellos que usen infrarrojos  no Radiofrecuencia)

La app ademas permite poner temporizadores para que automáticamente la aplicación ejecute la función del aparato que se desee, en una hora o día concreto, o cada cierto tiempo. También existen los ambientes, que permiten ejecutar varios pasos automáticamente que nosotros indiquemos, de uno o varios aparatos, con un solo click. 

La pega viene con su compatibilidad con Google Home ya que no es del todo correcta. Para el RM Mini3 hay dos app, versión global y europea, que se usan igual para configurar los mandos, pero con la primera de ellas, Google Home no integra ni detecta los dispositivos, sólo los ambientes, y no los ejecuta bien. Con la otra, la europea, Google Home integra los dispositivos, pero solo las de tipo lámpara y tipo aire acondicionado, no las TV ni otros aparatos personalizados.

Respecto a Alexa , aunque la configuración a través de ambientes , escenas y rutinas se hace ardua y repetitiva una vez conseguida el funcionamiento es perfecto. Puedes controlar todo aparato que use infrarojos  que tenga en la misma habitación, y la función de aprendizaje de botones te facilita muchas tareas, así como las funciones pre-configuradas que otros usuarios ya han colgado en el servidor.  Es   un aparato imprescindible en dúo con Alexa.

En el siguiente video podemos ver un ejemplo de integración de Alexa con el Broadlink RM mini3,

Por cierto este  puente  de infrarrojos con wifi   se puede comprar  en Amazon por unos 24,99,   pero tenga cuidado porque hay otros modelos de Broadlink  algo mas económicos que no son controlables por asistentes de voz como Alexa o Google Home.Si necesita controlar aparatos que vayan por radiofrecuencia en lugar de infrarrojos necesitarás su hermano mayor…. El pro

 

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 convertir una impresora 3D en una impresora Wifi


Geeetech es un fabricante chino fundada  en 2011, y que se ha dedicado a la I + D integrada, la producción y la distribución de EDB (placas de desarrollo integrada), MCU, así como a hardware de código abierto, destacando por sus desarrollos en impresión 3d. De hecho son una de las compañías más grandes de impresoras 3D en China, ya que han producido más de 100,000 impresoras, siendo ademas de las pocas compañías de impresoras 3D de código abierto en China.

Precisamente  dada su trayectoria no podían olvidar el desarrollo de un modulo que ofrezca  conectividad inalámbrica con el único objetivo de permitir que todos los aficionados a la impresión en 3D puedan controlar su impresora de forma inalámbrica. 

Dicho modulo inalámbrico   llamado 3D WiFi es ampliamente compatible con muchos tipos diferentes de impresoras 3D en el mercado: el único requisito es que el chip conversor de  USB a serie de su impresora pertenezca a uno de estos tres :CH340, FT232 y PL2303   y esté controlado por las instrucciones G.code, así que si cumple esto  dicho o Módulo 3D WiFi puede actualizar su máquina como Wi-Fi habilitada y hacerla comparable a otras impresoras 3D conectadas Wi-Fi prohibitivamente caras.

3D-wifi 10.jpg

El módulo  3D WiFi compone principalmente de dos partes: placa de control y módulo Wi-Fi  siendo de tamaño muy pequeño ( mas o menos como una caja de cerillas)  pero  lo suficientemente potente como para conectar su impresora 3D con el servidor en la nube de Geeetech, para  controla un dispositivo desde la aplicación EasyPrint 3D sin mas configuraciones dado que el módulo de WiFi en 3D está listo para usar de inmediato: solo necesita conectar su impresora 3D al puerto USB del este dispositivo y finalizar las configuraciones simples por medio de  la aplicación para Android EasyPrint 3D y a partir de ahí  ya puede  comenzar a controlar su impresora de forma inalámbrica.

 A través de la aplicación EasyPrint 3D, es extremadamente simple y conveniente controlar directamente su impresora en cualquier lugar y en cualquier momento pues solo necesitara conectar su impresora 3D al puerto USB del módulo 3D WiFi , completar configuraciones sencillas en la aplicación 3D EasyPrint ( que vamos a ver )  y ya luego puede controlar su dispositivo inalámbrico y comenzar a imprimir  .Además, se da a acceso a una gran galería en la nube( al estilo thinginverse ) , que cubre 9 categorías de modelos 3D para imprimir desde hobby, hogar, moda, arte a gadgets, herramientas, juguetes, educación y piezas de impresión en 3D. 

También se puede grabar y compartir  diseños desde  la aplicación EasyPrint 3D en segundos .

Quizás una de las facilidades mas interesantes es la de control remoto  su impresora 3d en tiempo real. Incluso puede configurar los parámetros de impresión relevantes y recibir notificaciones instantáneas durante su trabajo de impresión.

Ademas de ser compatible  3D WiFi  con todas las impresoras de Geetech, se ha probado con la siguientes impresoras:

Creality-CR-10.jpg
Anycubic-I3-Mega.jpg
Anet-A8.jpg
Monoprice2.jpg
Monoprice1.jpg


El módulo 3D WiFi   también es compatible con impresoras 3d controladas por las siguientes placas:

Arduino-Mega-R3.jpg
Iduino-Mega-R3.jpg
Rumba.jpg.

Carastericticas del 3D WiFi  

  • Alimentación: 5V DC
  • Corriente de trabajo: 150mA (en promedio), 500mA (pico)
  • USB 2.0 de velocidad completa
  • Soporte de tarjeta TF: SDSC, SDHC (<32G); CLASS2, CLASS4
  • WIFIFrecuencia: 2.4G ~ 2.5G (2400M ~ 2483.5M)
  • Potencia de transmisión: 802.11b: + 20 dBm / 802.11g: +17 dBm / 802.11n: +14 dBm
  • Sensibilidad de recepción: 802.11b: -91 dBm (11 Mbps) / 802.11g: -75 dBm (54 Mbps) / 802.11n: -72 dBm (MCS7)
  • Antena: antena PCB a bordo
  • Modo Wi-Fi: Estación / SoftAP 
  • Estándar WLAN: 802.11 b / g / n /
  • Mecanismo de seguridad: WPA / WPA2
  • Tipo de cifrado: WEP / TKIP / AES
  • Protocolo de red: IPv4 、 TCP / UDP / HTTP / FTP / MQTT
  • Tamaño: 49.37 * 25.87 * 16.5mm
  • Tamaño de empaquetado: 52.44 * 28.94 * 17 mm

 

Aplicación EasyPrint 3D

EasyPrint 3D se desarrolló como una aplicación de impresión 3D, estando orientada tanto para principiantes en impresión 3D como para profesionales experimentados, con el objetivo de llevar la tecnología de impresión 3D a nuestra vida diaria. Usa  un interfaz de usuario simple y elegante  proporcionando un flujo de operación fácil y una experiencia de usuario receptiva.

EasyPrint 3D viene con cuatro características principales:

  • Monitorizacion en tiempo real: con EasyPrint 3D, un colaborador considerado, le resultará conveniente monitorear el estado de su impresora y el progreso de la impresión en tiempo real cuando está ocupado completando su trabajo, haciendo footing, comprando o visitando amigos.
  • Control remoto: al conectar su impresora con EasyPrint 3D, puede dirigir el control remoto sobre el proceso general de impresión. Le permite elegir un modelo 3D favorito de la tarjeta SD y la galería de aplicaciones en la nube. Solo unos pocos clics en su teléfono para configurar su máquina, obtener una vista previa del archivo de modelo, calibrar y nivelar su impresora, modificar la temperatura de la extrusora y el semillero y la velocidad de impresión, y comenzar a imprimir. Durante la impresión, recibirá de inmediato una notificación cuando se corte la energía. En este caso emergente, la impresora se detendrá y guardará el estado de impresión en tiempo real de inmediato. Cuando encienda la impresora la próxima vez, aparecerá un mensaje emergente para que usted elija reanudar la impresión anterior o iniciar una nueva.
  • Cloud slicer: esta característica le permite transformar archivos .stl en comandos g.code en su palma de la mano. Eficiente y conveniente.
  • Una galería en la nube de modelos en 3D: esta galería en la nube cubre 9 categorías de modelos 3D GRATIS, que incluyen arte, moda, hogar, pasatiempos, educación, partes de impresoras 3D, dispositivos, juguetes y herramientas. El desarrollo de una galería de nubes de este tipo surge de nuestra idea: compartir y desarrollar. En la próxima versión, puede tener acceso a un gran volumen de modelos 3D gratuitos compartidos por aficionados a la impresión en 3D de todo el mundo.

Veamos a continuación los pasos para configurar el modulo 3D WiFi :

  • Descargue la aplicación EasyPrint 3D aquí e instálela siguiendo las instrucciones o también puede descargar la aplicación EasyPrint 3D en Google Play y App Store.
  • Abra la aplicación EasyPrint 3D. Haga clic en el botón [Iniciar sesión] en la interfaz [Me] para finalizar su registro.
Inicia sesión.jpg
  •  Para principiantes, haga clic en [Cuenta] para registrarse. Ingrese su propia información de cuenta.(Nota: no hay espacio en el nombre de usuario. Para usuarios extranjeros, seleccione “Inglés” para la dirección de su servidor).
15 register.jpg   16 register.jpg  17 register.jpg
  •  Haga clic en [Registrarse ahora] y aparecerá una interfaz emergente para que revise su correo electrónico.
20 register.jpg
  •  Haga clic en OK y revise su correo electrónico.
  •  Inicie sesión con la información de su cuenta.

Enlazar la impresora 3D a la aplicación EasyPrint 3D

  • Inicie sesión y enlace la impresora. En [Me] – [Mi impresora 3D], finalice el proceso de encuadernación siguiendo las instrucciones de la aplicación.
  •  Haga clic en [Mi impresora 3D].
13 Me.jpg
  • Haz clic en el botón “Comenzar para enlazar”.
21 empezar a bind.jpg
  • Haga clic en el botón en la imagen de abajo para ingresar el número de serie manualmente.
Image021.jpg   22 número de serie.jpg
  • Haga clic en “Siguiente” y aparecerá la siguiente imagen para informarle que el proceso de encuadernación es exitoso.
Image024.jpg
  • Luego verá la siguiente interfaz, que muestra que la impresora está fuera de línea.
Imagen026.jpg
  • !Ese es todo el proceso de unión.! 

En el siguiente punto, terminaremos las configuraciones de Wi-Fi paso a paso.

Configuración de Wi-Fi

Los procedimientos de configuración detallados son los siguientes:

  •  Conecte su impresora 3D al puerto USB del módulo WiFi 3D con su cable USB para la transmisión de datos. Use el cable de alimentación para conectar el módulo WiFi 3D con su adaptador para encenderlo.
33 (1) .png
  • Compruebe si los tres indicadores luminosos están encendidos: Wi-Fi, USB, fuente de alimentación de izquierda a derecha en orden. Inserte la tarjeta TF en la ranura.
11- (1) .png
  •  Presione prolongadamente el orificio etiquetado con “establecer” con un alfiler, hasta que la luz de Wi-Fi se apague y parpadee rápidamente. Afloje el pin y el Wi-Fi 3D entrará en el modo de configuración. Nota: Si no afloja el pin, la luz parpadeará lentamente para entrar en el modo de reinicio.
  • Abra la aplicación EasyPrint 3D y haga clic en “Imprimir”. En la página de la ventana emergente, haga clic en el ícono “Wi-Fi” para ingresar al modo de configuración de Wi-Fi, como se muestra en la imagen a continuación.
Image032.jpg Image034.jpg Imagen036.png
  • Haga clic en [Siguiente] para comenzar a detectar el Wi-Fi integrado en la impresora. Si se detecta la conexión Wi-Fi, podría ver la siguiente imagen.
Imagen038.png
  • Si no se detecta, aparecerá un mensaje emergente “La impresora no se detectó Wi-Fi”. Haga clic en [Aceptar] y nuevamente haga clic en [Siguiente] para volver a detectar.
Imagen040.jpg
  •  Después de detectar el Wi-Fi integrado en la impresora, haga clic en [Siguiente] y elija un punto de acceso Wi-Fi, como se muestra en la imagen a continuación.
  • Haz clic en [Siguiente]. Si el punto de acceso Wi-Fi necesita una contraseña, la interfaz mostrará el cuadro de entrada de la contraseña de Wi-Fi.Simplemente ingrese la contraseña correcta y luego haga clic en [OK], como se muestra en la imagen a continuación. (si no es necesario ingresar la contraseña, continúe con el siguiente paso).
Image044.png

 

  • Cuando logre conectar la red Wi-Fi, la interfaz mostrará que la configuración ha finalizado. Haga clic en [Aceptar] y la interfaz mostrará que la impresora está en línea.
Imagen046.png Image048.jpg


Hasta aquí, la configuración entre la aplicación y su impresora ha finalizado. Ahora puede imprimir y controlar la impresión a través de la aplicación EasyPrint 3D.

  •  Haga clic en [Siguiente] para comenzar a detectar el Wi-Fi integrado en la impresora. Si se detecta la conexión Wi-Fi, podría ver la interfaz de “Configuración” en su teléfono.
Imagen036.png Image051.png
  • Haga clic en el botón de Wi-Fi para conectar la zona activa “Geeetech-Printer”, como se muestra en la imagen.
Image053.png
  • Haga clic en el botón [Siguiente] en la imagen de abajo.
Image055.png
  •  Ingrese el nombre WLAN y la contraseña de su router. Haga clic en [Aceptar] para conectar su Wi-Fi.
Image057.png
  • Cuando logre conectar el Wi-Fi, la interfaz mostrará que la configuración ha finalizado, como se muestra en la imagen a continuación.
Imagen046.png
  • Haga clic en [Aceptar] y la interfaz mostrará que la impresora está en línea.
Image048.jpg


Hasta aquí, la configuración entre la aplicación y su impresora , de modo  que ya ha finalizado todos los ajustes oportunos. Ahora puede imprimir y controlar la impresión 3d con el modulo  3D WiFi  a través de la aplicación EasyPrint 3D.

 

Resumiendo en el siguiente vídeo podemos ver  todos los pasos de configuración de este modulo 3D WiFi    con la  aplicación easyprint3d:

 

 

 

 

 

Como saber el consumo diario por horas sin ningún hw adicional


En este blog hemos hablado en numerosas ocasiones de sistemas para monitorizar el consumo energético  de una vivienda,  por ejemplo  usando un contador con salidas de pulsos  o directamente con un sencillo watimetro digital  de panel.

Desgraciadamente en ambos casos aunque el hw no es nada costoso  , según el tipo de  montaje, hay que soltar al meno uno de los  cables de la acometida  en caso del display hacer pasar por el cable la bobina y volverlo a colocar en su lugar ,  o bien conectar un watimetro de montaje din en derivación  con la salida del magenetotérmico general    

En resumen seria un esquema muy similar al siguiente tal y como hemos comentado en otros posts:

 

 

instalacion

En cualquier caso  , como podemos intuir , deberíamos extremar las medidas de seguridad  para evitar exposición a la c.a. , de modo  que si no tiene experiencia, es mejor recurrir a un profesional lo cual lamentablemente  hará aumentar nuestro  presupuesto .

Pero no se desanime , pues pensándolo mejor ¿Y si esta información ya estuviese disponible? Pues en efecto  dado que  en muchos países es ya  obligatorio el uso de contadores inteligentes , en la mayoría de los casos , aunque quizás no lo sepa ,   toda la información de consumo desglosada incluso  por horas  (o por días)  en efecto   ya esta disponible por parte de la mayoría de las distribuidoras  , teniendo únicamente que recurrir   al sitio  web del suministrador  para obtenerlo.

En este post vamos  a poner como  ejemplo la obtención de las lecturas en caso de que su  suministrador  sea  Endesa, pero en caso de que este no sea el suyo , el procedimiento esa muy similar 

Para obtener dicha información por tanto nos iremos a la web oficial de Endesa:  https://www.endesaclientes.com

Lógicamente deberíamos tener credenciales de acceso por lo que   si aun no se ha interesado  en acceder  a dicho sitio , debería  proceder antes a registrarse en la siguiente  url  para lo cual ademas de los datos personales necesitara una factura en papel  para  confirmar  que  es usted quien dice ser  

A continuación , nos validaremos con nuestras credenciales de usuario  y pwd  de Endesa 

 

area cliente

Al validarlos en este sitio nos manda directamente al apartado  “Tus  consumos”   ,  donde en caso de  tener varios contratos , tendremos que seleccionar cual de ellos  nos interesa pinchando en la flecha azul de la derecha del  contrato visualizado por defecto:

 

 

En este  primer ejemplo en el combo de vista  elegiremos  “Por día”  y a continuación seleccionaremos aquel día que nos interese investigar:

 

A continuación  nos dará pormenorizado el desglose del consumo total en kw/h  por franjas horarias para ese día

 

 

Observe que estos resultados se puede exportar a diferentes formatos como por ejemplo  una hoja excel   , precisamente  para salvar dicha información  en nuestro ordenador

 

Aun  mas interesante  que el dato anterior , puede ser seleccionar el combo de Vista por factura pues ahora nos aparecerá desglosada el consumo por día para analizar  pautas que podemos seguir en aras de intentar  disminuir  nuestro consumo eléctrico,

Asimismo  ,como vemos  mas abajo , también se pueden exportar dichos datos a una hoja excel ,    para no solo guardar estos en nuestro ordenador ,sino también para poder realizar cálculos sobre estos datos.

En este punto  también hay  una importante razón  para haber seleccionado la vista  por consumo  ( es decir la vista por días  ) , pues  si conectamos varios enchufes inteligentes,  como por ejemplo   el modelo  MSS310    al ofrecernos este el consumo diario del equipo conectado a este podemos ir restando del valor total  por día estas cantidades   para llegar al origen del mayor  consumo .

Por ejemplo  electrodomésticos destinados a  ser responsables del mayor consumo  no podemos olvidar equipos tan  gastosos como el termo eléctrico, el horno, la vitroceramica y la nevera  entre otros, por lo que quizás sea ahí donde podremos fijar nuestro enchufes inteligentes por ejemplo  modelo  MSS310  

 

Asimismo mediante la activación de diferentes skills o funcionalidades (es decir como  las apps para los samrtphones , pero en este caso para ejecutar en un altavoz inteligente ), es posible pedirle a Alexa( de Amazon )  de viva voz  ademas de que  ponga música, e lea un libro o que diga qué tiempo va a hacer mañana, gracias a  la nueva skill de Endesa,  preguntar por voz   por su  consumo de  energía asi como  tener más cerca que nunca el asesoramiento energético personalizado que le permita ahorrar en sus facturas.

Lógicamente  se necesita ser cliente de Endesa y tener alguno de los diferentes modelos de altavoces inalámbricos de  Amazon Echo

 

 

Ejemplos de coas que podemos preguntarle a Alexa:

  • ¿Estamos gastando más luz que el mes anterior?El primer paso para controlar tu consumo es descubrir cuándo te estás pasando.

  • ¿Cuánta energía hemos consumido el último mes? ¿Y el anterior?
  • ¿Está pagada mi última factura?

  • ¿Hay alguna tarifa nueva que pueda adaptarse a nuestro perfil de consumo y así ayudarnos  a ahorrar?

  • Dudas sobre  facturas y contratos Endesa

  • Etc.
Básicamente para poder usar esta funcionalidad, primero deberemos activar el skill de Endesa en nuestro Altavoz, para lo cual solo tenemos que ir a la página de skills de Alexa y activar dicho skill (necesitara tener cuenta en amazon) , aunque  dicho skill sea gratuito
Una vez activada, tenemos  que conectar el skill   a nuestro  usuario de endesaclientes (si es cliente de Endesa pero aún no tiene usuario necesitará , regístrase aquí.) , También si esta registrado pero no recuerda sus datos, puede recuperar su contraseña o incluso  recuperar su usuario.  A partir de aquí ya podrá hacer las preguntas anteriormente citadas  y todas las que se le ocurran. ! quien sabe a lo mejor nos sorprende !

Un paso más hacia el coche autónomo


Telefónica ha presentado esta semana en Talavera de la Reina(Toledo )  el primer caso de uso de 5G con un minibús eléctrico EZ10 de conducción autónoma, lo que supone el hito inicial del proyecto Ciudades Tecnológicas 5G .

En efecto gracias  a la cobertura 5G de una unidad móvil de Telefónica ,donde se ha desplegado una antena 5G de Ericsson  que usa  la banda 3,5 GHz,  se ha podido  demostrar  eel funcionamiento de     un vehículo eléctrico autónomo  sin conductor  de la compañía EasyMile en el que se ha instalado un terminal 5G de Ericsson

easymile

EasyMile EZ10  es un autobús eléctrico autónomo alimentadado  por una batería de 8 kWh Litio LiFePO4 en 48V de tensión  continua que le ofrece unas 14 horas de autonomia .

Este vehículo es bastante pequeño pues tiene unas medidas de 4mt de longitud por 2 metros de ancho  y unos 2.75mt de alto  con 2.8mt de distancia entre ejes pero aun asi tiene capacidad para hasta ocho personas y permite que otros siete pasajeros viajen de pie o puedan acomodar una silla de ruedas, con el objetivo de ayudar a recorrer el primer trayecto a de un viaje como por ejemplo de conexión entre la linea de metro y una terminal de aviación .

Este modelo EZ10  ya se ha desplegado en más de 100 ciudades y 29 países.

El  vehículo eléctrico de EasyMile cuenta con la tecnología más avanzada en conducción autónoma, integrando numerosos sensores :

  • LIDAR
  • GPS
  • Videocámaras
  • Sensores de poroximidad
  • etc

Todos estos , permiten analizar el entorno y crear un mapa tridimensional del mismo.

Este  vehículo autónomo, al estar permanentemente conectado, puede gestionarse remotamente gracias a la tecnología 5G permitiendo el acceso en tiempo real a sus datos de telemetría internos (sensores, localización extremadamente precisa, velocidad, rango de giro, etc)  de modo que se puede actuar sobre él en cualquier instante.Para que nos hagamos una idea del volumen de datos de la información recogida por los sensores puede llegar hasta 4TB de información diaria por lo que se requiere de un gran ancho de banda para transferir estos datos en tiempo real al borde de la red y de una latencia extremadamente baja. Todo ello de cara a procesar conjuntamente los datos recibidos por los vehículos de una determinada área y proceder a la toma de decisiones, aumentado de este modo la seguridad en entornos  donde cobiven  vehiculos y peatoness.

Con esta demostración, dislumbramos  lo que puede ser al futuro mostrando cómo las capacidades del 5G pueden beneficiar a la conducción autónoma, un ejemplo del gran abanico de nuevas posibilidades del 5G, permitiendo a Ericsson y Telefónica posicionarse como líderes en la transformación de España hacia 5G.

Estimaciones indican que en 2022 existirán unos 10 millones de vehículos autónomos, muchos de ellos recogiendo pasajeros 24 horas al día  asi que etste vehiculo es un buen puento de partdia

Lanzadera de EZ10

EasyMile es pues una empresa pionera en tecnología de vehículos autónomos y soluciones inteligentes de movilidad que desarrolla software para automatizar las plataformas de transporte sin necesidad de infraestructura dedicada .Fundada en junio de 2014, EasyMile SAS desarrolla y comercializa vehículos autónomos.

Fue formalmente una empresa conjunta formada por Ligier y Robosoft Technology PTE Ltd (Francia).

EZ10 se desarrolló con la ayuda del proyecto CityMobil2 cofinanciado por el Séptimo Programa Marco de la Unión Europea para investigación y desarrollo tecnológico

En enero de 2017, se anunció que Alstom había invertido € 14 millones en Easymile y las dos compañías habían firmado un acuerdo de asociación comercial.

En julio de 2017, Continental también anunció una inversión en EasyMile.
EasyMile es una de las empresas líderes que se especializa en tecnología de vehículos autónomos y tiene un alcance global con oficinas centrales en Toulouse (Francia) y oficinas regionales en Denver (EE. UU.), Berlín (Alemania), Melbourne (Australia) y Singapur.

Con más de 100 empleados altamente capacitados y apasionados con experiencia en robótica, visión artificial y dinámica de vehículos, EasyMile suministra soluciones de movilidad inteligente y tecnologías autónomas para vehículos sin conductor: desarrollo de software que permite la automatización de diversas plataformas de transporte, una poderosa gestión interna de flotas solución para vehículos autónomos, y suministro de soluciones de movilidad inteligentes para transportar pasajeros o logística en sitios privados, urbanos, suburbanos o rurales en diversos entornos.

La lanzadera sin conductor EZ10 ya se ha desplegado en 20 países de Asia-Pací fi co, Medio Oriente, América del Norte y Europa. Además de los fundadores, Alstom y Continental también son accionistas de EasyMile.

Por su parte, CarMedia Solutions es una startup española creada con la visión de que el coche conectado y autónomo revolucionará la movilidad y se convertirá en esta Quinta Pantalla.

Un resumen estas son algunas de las características del vehiculos:

  •  100% vehículo eléctrico driverless
  •  Viaja hasta 45 km/H
  •  LLeva hasta 15 pasajeros
  •  Rampa de acceso incorporada para pasajeros con movilidad reducida
  • Opera en rutas fijas o bajo demanda
  •  Supervisado por el software de gestión de flotas EASYMILE
  •  Opera en carreteras existentes sin necesidad de infraestructura adicional

El caso de uso en Talavera de la Reina se enmarca en el proyecto Ciudades Tecnológicas 5G, puesto en marcha por Telefónica el pasado mes de enero, para convertir Talavera de la Reina y Segovia en laboratorios vivos 5G donde realizar en paralelo tanto el despliegue tecnológico como los casos de uso que permitan poner en valor las capacidades del 5G.

Fuente https://www.telefonica.com/es/web/sala-de-prensa/-/telefonica-presenta-el-primer-caso-de-uso-5g-con-conduccion-autonoma-y-consumo-de-contenidos