Watimetro con Esp8266


Éste proyecto se aprovecha de que los contadores modernos  inteligentes  incluyen en el frontal un LED que parpadea cada 1kW consumido, de modo que conectando un par de  cables a dicho LED y montando una pequeño circuito   basada en el módulo Wifi ESP8266, podemos medir con bastante precisión el consumo producido.

Obviamente  no es  legal abrir el contador  inteligente de nuestra vivienda para soldar un para de  cables al LED del watimetro, básicamente porque el equipo no nos pertence  ya que las compañías suministradoras  lo suelen  ofrecer en modo alquiler , pero debe saber que  éste tipo de contadores  también lo podemos instalar en nustra vivienda  o local   en el cuadro de distribución de corriente alterna en un carril DIN, normalmente a a la salida del magneto-térmico general  que alimenta a todos los circuitos que haya instalados en  nuestra vivienda.

Por ejemplo el modulo  XCSOURCE® Medidor Energía KWH Kilovatio Hora LCD CA 50Hz Fase Simple Riel DIN 230V BI04   se puede comprar por unos 14€ en  Amazon siendo la instalación de riel DIN estándar de 35mm, y ademas cumpliendo con el estándar DIN EN 50023   y con el ancho del poste sencillo (módulo de 17.5mm), que cumple con el estándar DIN 43881.

El modulo en su configuración Estándar  tiene una ventana de visualización de 7+1 dígitos  (9999999.1kwh) mediante un LCD blanco y negro así, como también una salida con un led verde para el estado de suministro de energía y Rojo para la señal de impulso de energía  como el de los contadores “inteligentes”.

Además , no necesitamos desmontar el modulo para capturar la salida del led de consumo pues tiene una salida SO Estándar donde  podemos conectar el circuito qeu vamos   a ver (respetando la polaridad)

Realmente como vemos en el esquema de conexiones de watimetro este  se alimenta por los terminales  1 y 4 (terminales de arriba)   y su salida ira a lo terminales 3 y 6  que conectaremos a la carga ( es decir el resto de circuitos de nuestro vivienda o local) , y resaltar que precisamente en lo terminales 20 (+) y 21(-)  tenemos la salida standar  SO   de pulsos de 50ms por 1wh

 

El circuito final que el autor propone para mejorar la visualizacion de watimetro  , cuenta de los siguiente elementos:

  • De  un ESP8266-12E como corazón del diseño
  • Una  pantalla OLED
  • Una conexión para programación via conversion usb-serie
  • Una fuente de almentacion de 3.3V
  • Un  circuito de  entrada procedente de la señal SO del watimetro
  • Una entrada adicional opcional para medir consumos individuales de una carga sin watimetro exterior

 

El circuito propuesto es el siguiente:

 

.

 

Hardware

  • ESP8266-12E
  • ACS712 Current Sensor
  • 0.96″ OLED Display
  • BT136 Triac
  • MOC3021 Opto-triac
  • MCT2E
  • LM11173.3V LDO Regulator
  • 5V SMPS Module

 

Software

 

Y a continuación el código fuente  Arduino  que deberíamos grabar en el el ESP8266

 

Codigo Arduino

/***********************************************************************************/
/* This is an simple application to illustrate IoT Home Automation. /
/ This is an example for our Monochrome OLEDs based on SSD1306 drivers /
/ Pick one up today in the adafruit shop! /
/ ——> http://www.adafruit.com/category/63_98 /
/ This example is for a 128×64 size display using I2C to communicate /
/ 3 pins are required to interface (2 I2C and one reset) /
/ Adafruit invests time and resources providing this open source code, /
/ please support Adafruit and open-source hardware by purchasing /
/ products from Adafruit! /
/ Written by Limor Fried/Ladyada for Adafruit Industries. /
/ BSD license, check license.txt for more information /
/ All text above, and the splash screen must be included in any redistribution /
/************************************************************************************/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#include / Local DNS Server used for redirecting all requests to the configuration portal /
#include / Local WebServer used to serve the configuration portal /
#include <WiFiManager.h> / https://github.com/tzapu/WiFiManager WiFi Configuration Magic */

#define VOLTAGE_DIVIDER 10.0f
#define REF_VOLT 0.9f
#define RESOLUTION 1024
#define WATTS_THRES 25.0
#define AC_VOLT 230.0
#define VPP_RMS 0.3535
#define BASE_PRICE 125
#define UNITS_UPL_FREQ 30 /* In 2Sec /
#define THEFT_THRESHOLD 15
#define VperAmp 0.1f / See AC712 Datasheet */
#define TRUE 1
#define FALSE 0
#define OLED_RESET 4
#define SSD1306_LCDHEIGHT 64
Adafruit_SSD1306 display(OLED_RESET);

const char* ssid = “IotEM”; /* Device SSID /
String apiKey = “GBH1K3293KFNO8WY”; / Replace with your thingspeak API key /
const char server = “api.thingspeak.com”;

/* Create an instance of the client */
WiFiClient client;
WiFiManager wifiManager;

/* Port Pin Definition */
int InVolPin = A0;
int LoadPin = 14;
int PulsePin = 12;
struct {
unsigned char LdCon: 1;
unsigned char Units:1;
} Flags;

double Voltage, VRMS, AmpsRMS, Watts;
volatile byte interruptCounter = 0;
int Pulses = 0;
int PrevUnits = 0;
int PrevMUnits = 0;
int Units, MeasUnits;

#if (SSD1306_LCDHEIGHT != 64)
#error(“Height incorrect, please fix Adafruit_SSD1306.h!”);
#endif

#define LoadOn() digitalWrite(LoadPin, 1)
#define LoadOff() digitalWrite(LoadPin, 0);

static void DispInfo (void);
static void DispStat (void);
static void SendUnits (void);
static void SendTheftInfo (void) ;
static void SendSMS (int8_t Type);
static void DisplayUnits(void);
static void TheftOccurred (void);

ADC_MODE(ADC_TOUT);

void setup(void) {
Wire.begin(0,2);
Serial.begin(9600);
pinMode(InVolPin, INPUT);
pinMode(LoadPin, OUTPUT);
pinMode(PulsePin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PulsePin), handleInterrupt, FALLING);
Flags.LdCon = FALSE;

display.display();
delay(500);
LoadOn();
ConnectAP();
DisplayUnits();
}

void loop() {
static unsigned long i = 0, j = 0, l = 0;
VRMS = getVPP() * VPP_RMS;
AmpsRMS = VRMS / VperAmp;
Watts = AmpsRMS * AC_VOLT;
if (Watts >= WATTS_THRES)
Flags.LdCon = TRUE;
else
Flags.LdCon = FALSE;
#ifdef DEBUG
Serial.print(Watts);
Serial.print(AmpsRMS);
Serial.println(” Amps RMS”);
#endif
if (Flags.LdCon) {
#ifdef DEBUG
Serial.println(MeasUnits);
Serial.println(Pulses);
Serial.println(l);
#endif
if (MeasUnits == Pulses)
if(++l > THEFT_THRESHOLD) TheftOccurred();
}
if (i++ >= UNITS_UPL_FREQ) { /* End of Day /
Units = Pulses – PrevUnits;
PrevUnits = Pulses;
SendUnits();
i = 0;
}
if (interruptCounter > 0) {
interruptCounter–;
Pulses++;
MeasUnits = Pulses;
l = 0;
#ifdef DEBUG
Serial.print(“Total Units: “);
Serial.println(Pulses);
#endif
DisplayUnits();
}
delay(1000);
}
void handleInterrupt() {
interruptCounter++;
}
static void TheftOccurred(void) {
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(3);
display.setTextColor(WHITE);
display.print(“!THEFT!”);
display.display();
SendTheftInfo();
delay(5000);
LoadOff();
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(WHITE);
display.print(” Contact CESCOM”);
display.display();
delay(2000);
ESP.deepSleep(0, WAKE_RF_DEFAULT); / RIP /
for(;;);
}
void DisplayUnits(void) {
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(3);
display.setTextColor(WHITE);
display.print(Pulses);
display.setCursor(90,13);
display.setTextSize(2);
display.setTextColor(WHITE);
display.print(“Kwh”);
display.display();
}
void ConnectAP(void) {
#ifdef DEBUG
Serial.print(“Connecting Wifi: “);
Serial.println(ssid);
#endif
display.clearDisplay(); / For Display /
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(“Connecting”);
display.display();
wifiManager.autoConnect(ssid);
#ifdef DEBUG
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
IPAddress ip = WiFi.localIP();
Serial.println(ip);
#endif
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(“Connected”);
display.display();
delay(1000);
}
void SendTheftInfo(void) {
if (client.connect(server,80)) {
String postStr = apiKey;
postStr +=”&field2=”;
postStr += String(1);
postStr += “\r\n\r\n”;
client.print(“POST /update HTTP/1.1\n”);
client.print(“Host: api.thingspeak.com\n”);
client.print(“Connection: close\n”);
client.print(“X-THINGSPEAKAPIKEY: “+apiKey+”\n”);
client.print(“Content-Type: application/x-www-form-urlencoded\n”);
client.print(“Content-Length: “);
client.print(postStr.length());
client.print(“\n\n”);
client.print(postStr);
}
client.stop();
}
void SendUnits(void) {
if (client.connect(server,80)) {
String postStr = apiKey;
postStr +=”&field1=”;
postStr += String(Units);
postStr += “\r\n\r\n”;
client.print(“POST /update HTTP/1.1\n”);
client.print(“Host: api.thingspeak.com\n”);
client.print(“Connection: close\n”);
client.print(“X-THINGSPEAKAPIKEY: “+apiKey+”\n”);
client.print(“Content-Type: application/x-www-form-urlencoded\n”);
client.print(“Content-Length: “);
client.print(postStr.length());
client.print(“\n\n”);
client.print(postStr);
}
client.stop();
}
float getVPP() {
float result;
int readValue; //value read from the sensor
int maxValue = 0; // store max value here
int minValue = 1024; // store min value here
uint32_t start_time = millis();
while((millis()-start_time) < 1000) //sample for 1 Sec
{
readValue = analogRead(InVolPin);
// see if you have a new maxValue
if (readValue > maxValue)
{
/record the maximum sensor value/
maxValue = readValue;
}
if (readValue < minValue)
{
/record the minimum sensor value*/
minValue = readValue;
}
}
// Subtract min from max
result = (((maxValue – minValue) * REF_VOLT) / RESOLUTION) * VOLTAGE_DIVIDER ;
return result;
}

 

Y por cierto para los incredulos en el siguiente video podemos ver el circuito en funcionamiento

 

Anuncios

Ambilight para nuestro PC


Ambilight es una tecnología diseñada para mejorar la experiencia visual  analizando las señales entrantes y produciendo una  luz lateral ambiental adecuada al contenido que se está visualizando en la pantalla un resultado bastante atractivo , el cual  además de la sensación de estar viendo una pantalla aun mayor.

Hasta hace muy poco este efecto solo se podía conseguir si comprábamos un TV que contara con ese sistema y no había otra opción, pero recientemente  con la aparición de placas con suficiente capacidad computacional, se puede emular gracias al uso por ejemplo de una Raspberry Pi .  Aun mas sencillo  y facil es hacerlo a través una placa Arduino UNO (o incluso Arduino nano), un ordenador,y una tira de 50 leds para iluminar una televisión de 47 pulgadas..!Y todo sin tener que soldar nada!.

 

 

Antes de empezar  con el montaje ,  la tira de  leds   RGB   direccionable es muy importante que este basada en el chip  ws2801 (LEDs WS2801) pues el menos no nos  dará  ningún tipo de problemas usando una Placa Arduino,  siendo ademas la mas utilizada para este tipo de montajes.

Existen tiras basadas en el chips WS2801   en formato “luces de navidad”,pero lo mas habitual es adquirirla en forma de cinta autoadhesiva.

Un ejemplo de tira es  esta  que puede comprarse en Amazon por menos de 27€

tira de leds.png

Una peculiaridad  de esta tiras ,es que se pueden cortar según la longitud que se requieran , así como además que también es posible ampliarlas gracias a  los conectores que llevan en cada extremo, pudiendo  unirse  entre ellas hasta donde se necesite.

conector.png

Asimismo, para alimentar dicha tira  también  necesitaremos aparte  una fuente de alimentación  dimensionada para el números de leds que vayamos a adquirir , como puede ser una fuente de  5v y 2A  (para 50 leds)

La tira de leds por simplicidad la conectaremos a una placa  Arduino UNO , el cual puede adquirirse en Amazon por menos de 10€

Arduino UNO comparado a la versión anterior, usa el  Chip alternativo Atmega 16U2 8U2, lo que quiere decir una tasa más alta de transferencia y memoria.Ademas esta versión cuenta con la interfaz SDA y SCL .

Los datos de LED y las líneas de reloj los conectaremos  a la salida SPI de Arduino,es decir  los datos SPI salen del pin digital 11 y  el reloj es el pin digital 13.

Los LED deben ser alimentados externamente fuera de la linea de +5V de  Arduino 5V, pues podrían estropear el regulador de este . La masa o  tierra, por el contrario, si debe ser conectada a  la masa de Arduino.

Normalmente las tiras de leds WS01  ,suelen tiene 6 cables : tres de ellos lo  conectaremos los pines (11,13 Y GND) del Arduino, y los otros dos  conectaremos  a la fuente de 5V.

La forma de conectarlos todo esto es según el siguiente esquema :

  • El cable VERDE proveniente del pin SD de la tira de leds al pin 11 del Arduino Uno.
  • El cable ROJO proveniente del pin CK  de al tira de leds al  pin 13 del Arduino Uno.
  • El cable NEGRO proveniente del pin  GND de la tira de leds al pin GND del Arduino Uno.
  • El cable AZUL proveniente del pin +5V de al tira de leds lo dejaremos sin conectar
  • El cable Rojo grueso en paralelo con el azul  proveniente de la tira de leds a la conexión +5v de la fuente auxiliar
  • El cable NEGRO en paralelo con el  negro  proveniente del pin  GND de la tira de leds al GND de la fuente auxiliar

arduino.png

Conectamos pues  la tira de leds  por un lado a una fuente de 5V /2amp .  y por el otro a Arduino , por uno de los extremos y las otras 2 o 3 tiras con los adaptadores macho hembra adecuados   a continuación siguiendo la flecha  de las tiras  haciendo un rectángulo que rodeara nuestro monitor o TV .  Evidentemente en uno de los extremos de inicio es donde haremos las conexiones  y todas la demás se harán por medio de los  conectares .

Hemos de tener cuidado ya que uno de los extremos de la tira de luces es pues para conectar la primea tira al arduino y a la fuente :de esta forma, en cada extremo quedan sueltos los cables opuestos (normalmente el cable rojo es el positivo y el azul el negativo.) que conectaremos también entre si para dar alimentación a  los leds ( aunque los conectores también den energía  ya que llevan las 4 conexiones incluida los 5v y GND)

 

 

 SOFTWARE EN EL ARDUINO

Para gobernar , la tira de leds la conectaremos a  un   Arduino   que  ademas  hará de “puente” entre el ordenador host y la tira basado en WS2801 . Los datos de LED se transmiten, y  no se almacenan en búfer, lo que significa que si  hay mas código en Arduino  podrían generar demoras debido a la RAM limitada del Arduino,pero no obstante el algoritmo ejerce cierto esfuerzo para evitar las pérdidas de buffer

 El protocolo de cierre WS2801, basado en retardo, podría desencadenarse inadvertidamente si el bus USB o la CPU  está desbordada con otras tareas. Este código almacena datos entrantes en serie e introduce pausas intencionadas si hay una amenaza del buffer  lleno prematuro.

El costo de esta complejidad es algo que  reduce el rendimiento, pero la ganancia es muy buena  evitando  la mayoría de los fallos visuales  incluso aunque finalmente una función de carga en el bus USB y  host CPU, quede  fuera de  control.

 

Si no lo tenemos, descargaremos el software de arduino (Página oficial de arduino) y lo instalamos.

Conectamos el arduino uno a nuestro pc con el cable usb. Si pide los drivers, se pueden encontrarlo en la carpeta arduino-1.0.4\drivers.

Descargaremos  esta biblioteca:fastled biblioteca descarga, la cual  importaremos  al Arduino IDE.

Ahora toca cargar el sketch para lo cual  descaremos el código Adalight para las luces  aqui 

Descomprimireos el archivo y  añadimos los archivos que acabamos de descargar en la carptea Mis documentos/ Arduino  y ng

Arrancaremos el software de arduino y  configuramos en el ide la placa Arduino en Herramientas –>Placa Arduino Uno ( o la placa que tengamos)   sin  olvidar el puerto de comunicaciones

Iremos a  File> Sketchbook> Arduino> Adalight  y uan vez cargado el sketch debemos ajustar el numero de leds  (88 en nuestro casoo) que  tengamos en la instalación  así como la velocidad máxima (500000 )

 #define NUM_LEDS 88 // Max LED count
#define LED_PIN 11 // arduino output pin – probably not required for WS2801
#define GROUND_PIN 10 // probably not required for WS2801
#define BRIGHTNESS 255 // maximum brightness
#define SPEED 500000 // virtual serial port speed, must be the same in boblight_config

Ahora ya podemos   compilar el software( botón primero que  pone un v de verificar).

 

adalight.PNG

 

Si no ha habido errores ahora podemos subir  el sw pulsando el botón de Upload( flechita a la derecha  en el software de Arduino.

Al contrario de lo que sucede  con el sketch LedlIght donde se iluminan las luces  de 3 colores rojo, verde y azul si todo ha ido bien, si tenemos conectadas los leds al arduino y a la fuente externa, cuando carguemos este  código dentro del Arduino solo lucirá el primer led de la cadena lo cual significará que estamos en buen camino.

IMG_20170221_170329.jpg

 

El código dentro de Arduino es no volátil, así que no se borrará aunque desconecte la tarjeta.

 

Sw en el PC

Una vez tenemos el sw de Adalight en un Arduino, toca instalar  el programa de captura que  envíe las señales correspondiente a nuestro Arduino

Entre los programas de captura  ambibox es el mejor especialmente con  windows 10, ya que no solo  tiene la capacidad para capturar su escritorio  sino de poner un fondo personalizable, convertir la tira en luces psicodelicas en función del audio,fondo variable automático ,plugins, etc

Se  puede encontrar aqui, tanto el software como el add-on para XBMC.

 

Una vez   descargado , durante la instalación se puede seleccionar  la opción de instalación completa ,marcando ademas la opción de descarga e instalación de playclaw.

Empezamos la configuración, pulsamos sobre el botón de mas ajustes :

more

En la parte inferior ,como vemos seleccionaremos como Device  Adalight , elegiremos  el puerto de comunicaciones ( el mismo al que este conectado el Arduino) y en el numero de zonas, coloremos  el numero de leds total que tengamos instalados ( en el ejemplo 88).

Asimismo no olvidar orden de colores,lo cual podemos obtener   fijando un color mediante el selector de Mode:Static Background   ,pinchando en el color ( aparecerá la paleta),pinchando en el check de Use baclight   y seleccionando en el combo order of colors la opción adecuada   hasta que el color de los leds sea similar al de paleta ( en mi caso es BGR)

 

fondo.PNG

IMG_20170221_204134.jpg

En este programa no olvidar  en salvar cada cambio en “Save Setting”  pues si no lo hacemos perderemos cualquier cambio que hagamos

Con las nuevas opciones ya podemos avanzar en la  configuración de nuestra instalación para lo cual seleccionaremos en Mode  :Screen capture

 

capturawindiow.PNG
Acto seguido configuramos la ubicación de los leds, pulsando  sobre SHOW AREAS OF CAPTURE y sobre el asistente de configuración,elegimos si queremos una instalación de 3 lados o 4. También  es importante la cantidad de leds que tenemos en cada lado de la TV especialmente horizontal o verticalmente.
Marcamos asimismo el orden de los leds, de izq->der o de der->izq.
Con esto ultimo ya tenemos nuestro software listo para funcionar

2017-02-21_20h59_23.png.
Este programa además tiene unas opciones muy interesantes, en esta pantalla:

adicional.png

Podemos configurar muchos parámetros de cada led, aplicar correcciones de color y gamma ,brillo ,etc

También podemos activar un servidor web para controlar el software desde el teléfono

servidor

 

El siguiente paso es instalar el add-on para el XBMC.Para ello Lo descompriremo y lo ponemos  en la ruta:”Users/Username/AppData/Roaming/XBMC/addons”

Ahora en el  apartado de add-on ( en el  menú de la izquierda ) se puede configurar un poco el comportamiento, aquí cada cual que lo puede personalizar a su gusto.

Una solución para que funcione a pantalla completa es usando el software playclaw.
Para ello, se pueden  es crear 2 perfiles dentro de ambibox, uno para el escritorio y otro para XBMC.
En este ultimo el sistema de captura que elijo es playclaw de modo que cuando se inicie un video en XBMC  dará la opción de elegir que perfil cargar, de modo que se  puede  elegir el perfil XBMC y asi  cuando se  salga de XBMC se  puede vplber   al perfil de escritorio.
Por supuesto se debe tener corriendo el software playclaw para que esto funcione.

 

Por ultimo  hay  un  modo  que haya las delicias de los que les guste la música  : el modo Color music , el cual permite modular las luces en función  de lo que se este escuchando por el canal de sonido principal.

 

musica.PNG

 

Obviamente si queremos que las luces acompañen a la imagen de video de la pantalla principal el modo de captura de pantalla elegido sera  [Software] Screen capture  y el Método  Windows 8  ( aunque tengamos Windows 10 instalado en nuestro equipo)

windows8.png

Para terminar dejamos dos test de vídeo , que a pantalla completa,  nos pueden servir para testear si nuestro sistema responde correctamente.

 

 

Cómo probar una tira de leds WS2801


Es muy frustrante adquirir  una costosa tira de leds  WS2801 ( ni importa que sea SMD o en formato “luces de navidad”) ,  adherirla y fijarla  con mucho esmero a nuestro TV o monitor ,siguiendo  cuidadosamente los muchísimos tutoriales que hay en Internet (por ejemplo para simular  con esta  el famoso  sistema ambilight ),   y al final no conseguimos obtener nada  quizás porque nuestro hardware esta mal conectado (o tenemos algo estropeado)  o bien no hemos  configurado el sw ,o una mezcla de ambas cosas.

Antes de abandonar veamos  con la ayuda de una placa Arduino Uno conectada a nuestro PC  , vamos  a ver algunas pautas que seguro  nos resuelven el misterio:

 

En primer lugar usaremos una  placa Arduino UNO , para lo cual usaremos sólo  tres cables para  conectar a uno de los  extremos de la tira de leds a Arduino . Las conexiones estandarizadas que haremos sea cual sea la modalidad de la tira de leds son las siguientes:

  • CK de la tira WS2801  al pin GPIO 13(reloj del SPI)
  • SD de la tira WS2801  al pin GPIO11 (SPI MOSI).
  • GND de la tira WS2801 al GND de Arduino
  • +5v   de la tira WS2801  a  una fuente de alimentación aparte de mínimo 2Amp ,5VDC

En algunas tiras formato “luces de navidad” el hilo azul es  GND , el . Verde  es CK  y amarillo es SD ,y el cable rojo es +5V ,  pero esto no es norma porque las tiras SMD   suelen tener un cable rojo para CK, otro verde para SD , el negro para GND  y un violeta para +5V  , lo cual como vemos no sigue para nada la pauta anterior

Aunque no es necesario  también se puede utilizar un Arduino Mega, conectando  reloj del SPI al pin 52   ,  conectando SD al   pin 51 SPI MOSI  y por supuesto las masas.

Es importante destacar que los cables extra rojo y azul son para conectar  5V DC   de al menos 2 Amp ( en función del numero de leds que vayamos a conectar)  lo cual no deberíamos extraer de la placa Arduino sino de una fuente auxiliar DC de 5V    no  olvidando de unir ambas masas ( la de Arduino y de la fuente externa).

En el siguiente esquema podemos ver claramente este montaje.
led_pixels_wiring-diagram.png

Para probar   la tira  de leds    necesitamos si aun no lo tenemos dos herramientas :

  • El IDE de Arduino :Si no lo tiene ya instalado , descargar el Arduino IDE (entorno de desarrollo integrado) de la Web de Arduino. Seleccione la versión del software para su tipo de computadora: Windows, Mac o Linux   Es un poco diferente para cada uno de los tres sistemas operativos.
  • El IDE de Processing:A continuación, descargue el IDE de processing del sitio de procesamiento.Descomprima el fichero y cópielo al  directorio  c:\archivos de programa\ . Es importante que descargue la versión processing 2.2 pues la  versión 3.0  con el codigo Adalight  tendra  errores con él.
El IDE de Arduino y Processing  son  muy similares pero son dos programa muy distintos para diferentes funciones como vamos a  ver

Descargar Adalight ZIP

Por último, visite la página Adalight en Github y descargue el archivo ZIP. El botón de descarga está cerca de la parte superior izquierda de la página:

Después de descomprimir el archivo ZIP, necesitará mover algunos archivos en su lugar.

Si ha ejecutado el Arduino o el IDE de processing  debería haber  dos  correspondientes carpetas llamadas “Arduino” y de “Procesing” dentro de su carpeta personal de “Documents” (o “Mis documentos” en Windows). En ese caso, mover el contenido de la Arduino y procesando carpetas desde el archivo ZIP de Adalight en las carpetas correspondientes de documentos.

Si las carpetas de Arduino y Processing todavía no existen en el sistema,  puede copiar estas desde el archivo ZIP de Adalight a la carpeta de documentos.

Los otros archivos y carpetas en el archivo ZIP pueden ser ignoradas ya  que son para usuarios avanzados y no son esenciales para su uso.

Salga del Arduino y Processing  si se están ejecutando  pues las carpetas recién instaladas no serán visibles hasta la siguiente vez que inicien  estos programas.

Programar Arduino

Para  probar la tira de leds  en caso de que no lo tenga instalado deberá instalar  el IDE de Arduino.Si no lo tiene instalado el IDE de Arduino conecte la placa Arduino al ordenador con un cable USB A-B. Cuando conecta por primera vez, Windows los usuarios le pedirá que para instalar a un controlador.

Iniciar el IDE de Arduino. Después de un momento, debería ver una ventana azul y blanca simple con algunos botones.

En el menú archivo , seleccione Sketchbook,   y elegir  LEDstream. .

En el menú herramientas , seleccione la  placa  luego Arduino Uno (o tipo de cualquier placa Arduino que está usando).

En el menú herramientas , seleccione el Puerto Serial y luego el puerto correspondiente a su placa de Arduino.

Haga clic en el botón de subir cerca de la parte superior izquierda de la ventana:

ledsstreamarduino

Después de que el código sea cargado, si los LEDs están conectados correctamente conectados y la fuente de alimentación está conectada, todos  los LEDs deben encenderse en una secuencia  primero todo todos en flash rojo, luego  verde y después en azul aproximadamente un segundo cada uno, y luego se apagan todos. Se trata de un diagnóstico que indica el LED Arduino están trabajando correctamente y ahora están en espera de datos de que se  envíen desde nuestro ordenador con otro sw.

Gracias    a que el Arduino almacena el programa en memoria no volátil, sólo necesita hacer este proceso de carga una vez, no cada vez que desee utilizar Adalight.

Si los LED no parpadean, asegúrese de que el cableado coincide con la página anterior, y que la fuente de alimentación está conectada.
Si persiste el error  deberíamos probar la salida digital de los  pines 11 y 13 por si estuviesen defectuosas, para lo cual conecte dos leds normales  entre GND  y los pines 11 y 13  y cargue en Arduino el siguiente código de ejemplo:
void setup(){
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);//10 ok 11 ok
}void loop(){digitalWrite(13,HIGH);
digitalWrite(11,LOW);delay(1000);

digitalWrite(13,LOW);
digitalWrite(11,HIGH);

delay(1000);

Al subir el código anterior en nuestro Arduino ,  ya deberían parpadear ambos leds , lo cual sera un claro indicio que la placa Arduino esta bien:

led13

 

Una vez hayamos probado que la placa Arduino esta correcta  con el simple test anterior,  lo que nos queda es volver a cargar el sketch de  probar LedStream cargado inicialmente pues  hay evidencias  de que algún (o algunos) modulo(s)  mal que esta bloqueando el resto de módulos

En el caso de que sólo los primeros pocos LEDs respondan  y ,el resto permanece apagado o parpadea aleatoriamente o incluso no se encienda ninguno, tendrá que estudiar cual de  los módulos esta mal  .

Dentro de cada píxel  hay  una pequeña placa de circuito con el CI WS2801   el led RGB   y algunos componentes adicionales . Si no funciona  el primer píxel apretar las conexiones  donde el cable de cinta se une a la placa  e intente comprobar la conexión ,Si no  funcionase , puede recortar  ese modulo , conectando las conexiones al siguiente  píxel   y seguir la  dirección de conexión ( en el montaje SMD  llevan una flecha  que indica claramente el orden de conexiones)

ws2801

Si consigue que algunos  leds  funcionen pero aún así  algún  led posterior  parpadea ,y fallan después todos los siguientes en la cadena ,también  es muy  posible que ademas  haya algún  otro chip defectuoso  más ,  así que el proceso  anterior lo  deberá repetir  cortando el  led asignado a ese  IC defectuoso y restituyendo las conexiones soldando cablecillos entre el modulo anterior y el siguiente .

img_20170219_222107

Obviamente este proceso tendrá  que repetirlo  hasta que  el test de leds ejecutado desde el  sketch de ledstream haga que se enciendan completamente todos los ledss de un color en las tres secuencias.

Ejecutar el Software de Processing

Este paso debe realizarlo solo cuando el  test de ledStram muestre la secuencia de arranque de rojo, verde y azul apagándose todos después.

Inicie  el programa Processing ejecutando el archivo “C:\Program Files\processing-2.2.1-windows64\processing-2.2.1\processing.exe”. Después de un momento, debería ver una ventana simple de blanca y gris  muy similar al IDE de Arduino.

En el menú archivo , seleccione carpeta de bocetos,  y seleccionar el último primero: Colorswirl.

 

color
Es muy importante anotar el numero de leds( en el ejemplo 88)   tras el primer import:

import processing.serial.*;int N_LEDS = 88; // Max of 65536

Haga clic en el botón Ejecutar cerca de la parte superior izquierda de la ventana: si el Arduino esta arrancado con el sketch (LedStram ) y por supuesto conectada la tira de leds a este  y alimentada con la tensión de 5V  se  debería ver un arco iris colorido de animación sobre los LED.

Si  no pasa nada , entonces usted tendrá que editar el código alrededor de la línea 26, buscando esta declaración:

myPort = serie new (this, Serial.list() [0], 115200);

Necesitaremos cambiar el código  que abre la conexión serie con el Arduino. Una ruta es a través de ensayo y error: tratar  Serial.list() [1], entonces Serial.list() [2]y así sucesivamente, volver a arrancar el programa cada vez para ver si funciona.

Para un enfoque más científico, añadir una nueva línea de código antes de ejecutar el sketch:

println(Serial.list());

Cuando se ejecuta, muestra una lista de todos los puertos serie o dispositivos. Si sabe que dispositivo o puerto COM corresponde al Arduino, puede cambiar la línea original para incluir estos datos.

Por ejemplo, ahora se puede leer:

myPort = serie new (this, “COM6”, 115200);

Obviamente esto será diferente en cada sistema, por lo que dependerá de cada situación..

Si aun tiene dudas ,otra manera de localizar el nombre del puerto, es en el IDE de Arduino, pues  el puerto seleccionado se ve  en el menú Tools→Serial Port antes de programar el chip.

Una vez conseguido este efecto sobre los leds , este resultado es sinónimo que absolutamente todos los leds son direccionables por lo que ya puede usar su conjunto de tiras de leds  para cualquier aplicación con la certeza de que ya  le debería funcionar.
Si planea organizar los LEDs de manera similar a los ejemplos  entonces tendrá nada más que cambiar  el software. Si utiliza un diseño diferente, necesitará realizar algunos ajustes en el código  para identificar su distribución concreta

Como nota ultima :Antes de montar los LEDs detrás del monitor o TV , nunca se olvide de ejecutar el software con los LEDs sueltos en su escritorio para confirmar que todo funciona. !Esto ahorrará tiempo y angustia en el raro evento que un led vuelva a estar mal  tenga que sustituirlo!.

img_20170219_225945

 

Tipos de tiras de leds RGB


Antes de comenzar un proyecto que involucre tiras de leds SMS como por ejemplo la famosa emulación del sistema Ambilight de Philips , probablemente deberíamos identificar las diferencias entre las tiras de leds  comerciales  , las cuales actualmente están basadas en WS2801, WS2811  o en el  WS2812 (también llamadas “strips”).

La mayoría de los proyectos y las descripciones que circulan por la red  están a veces mezclados, y cuando uno se sumerge en tiras de LED por primera vez, estos números de los modelos puede ser un terreno  bastante confuso.

Realmente los números de modelo WS2801, WS2811 y WS2812 se refieren realmente a diferentes “cosas”. El WS2801 y el WS2811 son circuitos integrados de  gestion de LEDs RGB .Estos IC pueden controlar hasta 3 LEDs, típicamente Rojo, Verde y Azul  de modo que  se colocan  cerca  de cada led , así que usted como espectador verá el resultado del color mezclado. El WS2812 sin embargo es un WS2811 colocado dentro de un paquete 5050 LED.,el cual  es un paquete muy común de 3 LED (rojo, verde, azul), en un compartimento  de 5 mm x 5 mm.Es decir,  un  WS2812 es el mismo paquete pero con un controlador adicional de LED WS2811 IC incluido.Resumiendo :un WS2812 combina un LED RGB 5050 con un controlador WS2811

Otras diferencia bien acusada  de los strips  de leds  , es que mientras  las tiras WS2801 necesitaban 4 hilos, las tiras WS2811 / WS2812 sólo necesitan 3 hilos.

En efecto el WS2801 utiliza una línea de reloj independiente, lo cual puede verse como una ventaja,  puesto que  el WS2811 / WS2812 no lo lo requiren.De hecho los modelos de tiras de leds   WS2811 / WS2812 dependen del envío de datos que coincidan con un tiempo muy ajustado.

Adicionalmente  la ventaja de la WS2812, sin embargo, es que la producción de estos combos en tiras es más fácil y por lo tanto más barato, y cada RGB LED toma mucho menos espacio en tiras lo cual también tiene innegables ventajas.

 

A continuación  mostramos  una lista de  chipsets  así como algunas notas sobre ellos  extraída de las hojas de datos o de la experimentación

 

Chipset Supporte libreria Fastled Conexiones Color Bits Data Rate PWM Rate Chipset Power Draw
APA102/DOTSTAR 4 8 ~24Mbps 20khz [email protected]
WS2811 3 8 800kbps 400Hz 5mw / [email protected]
WS2812B/NEOPIXEL 3 8 800kbps 400Hz 5mw / [email protected]
TM1809/TM1812 3 8 800kbps 400Hz 7.2mw / [email protected]
TM1803 3 8 400kbps 400Hz 7.2mw / [email protected]
TM1804 3 8 800kbps 400Hz 7.2mw / [email protected]
WS2801 4 8 1Mbps 2.5kHz 60mw / [email protected]
UCS1903 3 8 400kbps unknown ?
UCS2903 3 8 800kbps unknown ?
LPD8806 4 7 1-20Mbps 4kHz ?
P9813 4 8 1-15Mbps 4.5kHz ?
SM16716 4 8 ? ? ?
TM1829 X 3 8 1.6Mbps/800kbps 7kHz [email protected]
TLS3001 X ? 12 ? ? ?
TLC5940 X 4 12 ? ? ?
TLC5947 X 4 12 ? ? ?
LPD1886 X 3 12 ? ? ?

Chipset power draw es la cantidad de potencia que un solo chip extrae cuando los leds están apagados, pero la alimentación está conectada

 

Veamos  ahora algunas notas  de sus características :

  • Ws2801 : más antiguo, barato,  pero lento (1Mbps).  Es propenso a fallar en longitudes más largas, y sobre todo si la aplicion usa mayores tasas de datos .   

 

ws2801

  • Tm1809 / 1804/1812 : Es muy similar en el protocolo al ws8211 y el coste similar. Utiliza  un IC por 3 rgb leds.Puede haber interferencia de línea (el 1809 controla 3 rgb píxeles, los 1804 controles 1 )
  • Tm1803 : versión más lenta de la tm1809, vendido principalmente por radio shack.
  •  APA102 – Adafruit  los vende estos como dotstars. La velocidad de datos soportada  es muy rápida (llega a 24Mhz) y son  validos para aplicaciones que requieran  alta tasa de actualización. Recomendados estos sobre casi cualquier otra cosa si se busca  actualizaciones frecuentes.
  • Ws2811 / ws2812 / ws2812B -Adafruit vende estos modulos como “neopixels”.  Muy bien precio:(30 leds / m por $ 6, 60 leds / m por $ 11!).  Velocidad de datos es muy lenta (800Kbps).  También  muchas de las tiras sconstan de  1 led, 1 controlador, por lo que puede cortar cada modulo por  cada led. Incluso mejor, es la variante ws2812, que  el  led y el chip van en un solo paquete por lo que puede ser muy compacto (en algunas sitio en internet  todavía lo venden como ws2811 – pero el protocolo es el mismo). Desafortunadamente, su protocolo de datos requiere interrumpir las interrupciones en el avr mientras se escriben los datos, por lo que el uso de estos leds interferirá en procsos interbnos de la CPU como las bibliotecas de IR ,  el uso de i2c  o serial.
  • Lpd8806’s – menos barato (más cerca de $ 16 / meter enviado por 48 / m), pero súper rápido (!llega  a más de 22Mbps!). Además, están emparejados, por lo que implementa un controlador por 2 rgb píxeles. A tener en cuenta que estos sólo realmente  pueden  mostrar 7 bits por canal, ( y no 8,) por lo que sólo puede mostrar 128 niveles diferentes de luz para cada canal de color. API de programación sigue siendo 8 bits, pero el bit bajo no tiene sentido.
  • P9813 – Éste es el chipset usado en la iluminación de Control Total de Cool Neon.
  • UCS1903 – similar a tm1809 / ws2811.  Muy  lento protocolo, pues opsorta cerca de 400kbps.
  • UCS1904 / 2903 – más cerca en el tiempo de la ws2811. Algunas personas lo encuentran interesante
  • SM16716 – no muy conocido .Usa un protocolo complejo.
  • GW6205 – no muy conocido.
  • LPD1886 – un chipset de 3 hilos que es de 12 bits por píxel en lugar del normalmente 7/8-bit por píxel como  la mayoría de los chipsets restantes vistos  hasta ahora
  • Controladores DMX (DMXSIMPLE o DMXSERIAL) – si controla sus leds usando DMX desde un arduino, esto requerida  DMX usando el resto de la #include <DmxSimple.h> led – Tenfg en cuenta que #include <DmxSimple.h> o #include <DmxSerial.h> antes de #include <FastLED.h> para utilizar la salida DMX.
  • Adafruit Pixie leds (PIXIE) – Son led superpotentes de 3W . Tambien con el fin de utilizar estos leds necesita #include <SoftwareSerial.h> antes de #include <FastLED.h> .
  • TM1829 – similar a la TM1809 / WS2811, pero también permite establecer 32 niveles de corriente base para el control de brillo / uso de energía 
  • TLS3001 – Es de 12 bits por color frente a 8 bits para la mayoría de los chipsets 
  • TI TLC5940 – Soporte de color de 12 bits,  que ayuda la la corrección del color, 16 canales llevados por la placa que hace RGBW con las configuraciones como esto.
  • TI TLC5947 como anteriormente, pero con 24 canales

 

 

En resumen su selección   depende del tipo de microcontrolador que vaya a utilizar y de cuáles son compatibles con la aplicación o biblioteca que va a utilizar.

Por ejemplo, en los proyectos basados en Arduino funcionaran  bien con cualquiera de estas  tiras  de led   ya que todo se ejecuta en tiempo real.
Sin embargo cuando se utiliza una Raspeberry  Pi , con un WS2811 / WS2812 puede ser un poco más difícil debido a las necesidades de tiempo estricto. Un Raspberry Pi normalmente ejecuta Linux, que no es un llamado Sistema Operativo en tiempo real, donde la temporización prevista podría ser interrumpida por otras actividades de fondo.

Aunque el WS2801 solía ser el mas  popular, poco a poco  tanto el WS2812 como el  WS2811 parecen a  ser los mas usados quizás porque son mucho mas económicos y requiren menos conexiones .

Usos supercondensadores


En un post anterior   hablábamos de las múltiples ventajas del usos de los condensadores  como son  prácticamente ilimitada ciclo de vida,elevada potencia específica; tiempo de cargas en segundos, carga simple, excelente rendimiento de carga y descarga de baja temperatura y seguros (al no contener productos químicos ácidos o corrosivos)

Una de las aplicaciones interesantes de los supercondensadores es el uso como fuente de energía ya que  somos capaces de poder gestionar la carga de una manera muy rápida limitada por la corriente máxima que queremos que circule así como también gracias a un convertidor dc-dc aplanar la salida de esta .

Veamos en este post algunos ejemplos reales de aplicaciones comerciales de estos componentes

 

 

Alimentación  con carga ultrarápida para Arduino

Afortunadamente  los precios bajan   y por fin en   nuestros diseños podemos añadir los supercondensadores , pues  actualmente  es posible adquirir un supercondensador de la marca  ILS  de 2.7 V y un capacidad   500 F por menos de 8€ en Amazon

Las medidas   son de  35 x 60 mm  con un peso de 68 gr

supercondensador

Para alimentar una placa Arduino , Netduino o una Raspberry pi   hay que combinar dos en serie , con lo que la capacidad total resultante sera de 250F  /5.4V   mas que suficiente para alimentar   una placa Arduino durante 20 horas (con un LED). ! Y  puede recargar los dos  condensadores en apenas dentro de 30 segundos con una fuente convencional de 5VDC!.

Por supuesto  ademas  estos supercondensadores se puede utilizar en juguetes eléctricos, módems inalámbricos, controladores de motor, terminales portátiles, duplicadores (calefacción rápida), audios de coche, controladores remotos (carga auto-eléctrica), AMR (lectura automática de medidores), alimentación ininterrumpida Válvulas, actuadores, velocidad del viento (control de paso), dispositivos de alarma / seguridad.

 

 

Cámara de vigilancia para coche

 

camara
Utilizar un supercondensador como  fuente de alimentación  ( es decir no una   batería interna) es muy interesante  en un vehículo  en primer lugar porque estos soportan  mucho mayores rangos de temperatura para que usted no tenga  que preocuparse por  el sobrecalentamiento de su cámara  lo que lo convierte en la elección ideal para los conductores en climas calurosos.

Ademas  en las baterías tradicionales la duración de la batería especialmente se degrada con el tiempo, de hecho  con tan sólo meses de uso , el acortamiento la vida de la batería comienza a notarse   hasta terminar fallando , de modo que  las baterías  son a menudo el primer componente de una cámara salpicadero a fallar, requiriéndose costosas  reparaciones.

Mediante el uso de un supercondensador como  fuente de alimentación, el modelo  a118-c prescinde de  las  baterías tradiciones  usando un  supercondensador o como su fuente de alimentación que le permite soportar hasta  140 °F  otorgandole  por tanto una mejor tolerancia a temperaturas extremas y una mayor durabilidad

camarabis

 

El A118  es extremadamente compacto y  se combina a la perfección con el exterior del espejo, haciendo que parezca que cualquier otra parte de su coche. El soporte de la cámara se fija al parabrisas con un adhesivo de doble cara incluido, lo que le permite deslizar su cámara fácilmente  fuera de la posición de grabación

Algunas de su características:

  • Grabacion en Full HD de 1080p de grabación de vídeo a 30 fps y 720p a 60 fps con visión nocturna, tecnología WDR y detección de movimiento automático
  • Angulo extendido de visión 170 ° – proporcionado calidad de sus grabaciones con una panorámica que abarca ambos lados de la carretera, y su entorno
  • Integra chip Novatek NT96650 
  • Altavoz integrado
  • Cuenta con Chipset Aptina AR0330 con lente  proporcionando imágenes con bajo consumo de energía, compresión de vídeo de alta definición y suave
  • Pantalla HD de 1.5″

 

En resumen   el A118 es una innovadora  cámara para coche  alimentada por supercondensador  que   permite grabar en alta definición 1080p de resolución de 1080p a 30 fps o 720p a 60 fps. durante el día que cuenta con un diseño compacto y contorneado para disimilar cámara oculta  pareciéndose a cualquier otra parte de su coche.

Por cierto el precio es muy similar al de otras cámaras: unos 51€ en Amazon

 

 

 

Atornilladores electricos

Una aplicación interesante es un destornillador eléctrico equipado con el supercondensador como fuente de energia

atornillador

Al parecer el único destornillador inalámbrico  que equipa supercondensadores es el  BLUCAVE DSD-46FL-2BLU Flashcell  que pesa menos de 1 libra, que gracias  a su tecnología Super Capacitor FlashCell, es uno de los destornilladores tecnológicamente más avanzados del planeta pues en  tan sólo 60 segundos, usted estará en su manera de completar esos trabajos de trabajo ligero en ningún momento.

Su publicidad alude a no esperar más horas para cargar su taladro o destornillador inalámbrico con baterías. Sorprendentemente, el destornillador inalámbrico BluCave FlashCell no usa baterías! Es ecológico y recarga al menos 100.000 veces.
También puede dejar que el destornillador inalámbrico BluCave FlashCell se siente en la base de carga y continúe cargando sin perder ninguna capacidad de tiempo de ejecución. Eso significa que no hay pérdida de memoria.

Carastericticas

  • 60 segundos de carga rápida
  • Peso ligero bajo 1lb.
  • Manija de 2 posiciones
  • Nueva tecnología FlashCell Super Capacitor
  • No necesita baterías – nunca!
  • Incluye 5 piezas de accionamiento: PH1, PH2, PZ1, PZ2, FLAT 1/2 “y extensor
  • 4,6 voltios
  • Par de giro máximo: 3.32 ft-lb
  • 110-120V AC
  • Velocidad sin carga: 200 RPM
  • Ecológico
  • 100.000 recargas
  • Diseñado para caber en el gabinete de transporte BluCave – utiliza 3 de 10 ranuras
  • Incluye funda blanda con logotipos bordados BluCave y FlashCell
  • Manual de seguridad y funcionamiento incluido

 

Este atornillador  claramente se ve encarecido por el supercondensador con el cuenta , pero si tenemos en cuenta que la vida de este componente  es prácticamente ilimitada quizás no tenga tan mal precio ( 116€ en Amazon)

 

Por lo visto ya son muchos  fabricantes que empiezan  a usar este tipo de tecnología ,por lo que confiemos que pronto todos nuestro gadgets se alimenten con supercondensadores

Si conoce algún otro gadget que se alimente con supercondensadores no dude en compartirla con toda la comunidad !Gracias!

 

 

Construyase su propio sistema ambilight casero (1 de 2)


Si siempre quiso expandir su TV  mas allá de la pantalla  mediante luces de colores brillantes que  acompañan al contenido que se esta visualizado imitando el famoso efetcto ambilight ..  ¿por qué no hacerlo por su cuenta adaptando un sistema que lo emule en su propio TV ? Pues hoy en día ,es posible  gracias  a la potencia  y precio  de una Raspberry Pi (que soporta un centro de medios ) y un controlador LED  que  incorpore  la interfaz de bus SPI .

Ademas gracias al uso de tiras de SMD LED con chips WS2801 se simplifica aun mas el montaje gracias a la cinta adhesiva en la parte posterior de la tira pues es mucho mas simple de instalar comparando este sistema  con otros sistemas basados en  leds RGB  individuales  que van con  cables fisicos uniendo led a led

 

ELECCIÓN DE LEDS

Hay varios modelos de leds RGB direccionables  , pudiendoloe encontrar en formato tira auto-adhesiva o en formato “luces de navidad”. Cada modelo tiene sus ventajas e inconvenientes. La tira de leds es muchísimo mas  fácil,limpia ,rápida y profesional para  montar en una TV  pues llevan un pegamento autoadhesivo que hacen muy sencillo y compacto su montaje . El único problema que tienen es que se deben  soldar con 4 hilos en cada una de las 4  esquinas  o adquirir 3 conectores para hacer la conexión ( hablamos de 3  pues en la primera esquina es donde se introducen los cables que ya vienen así de fabrica así que ya tenemos sólo 3) .

Debido al asunto de las esquinas, justo en éstas ,algunas personas opinan que el colocar una distribución de leds en tiras puede que  no sea tan homogéneas  como el formato de tiras de navidad  , aunque obviamente hay un cierto grado de margen para colocarlos ,pues  podemos medir ambas paralelas ,cortar las tiras y luego colocarlas perfectamente centradas, y ademas  un argumento que claramente lo contradice es que el formato de leds individuales si no se fijan con precisión exquisita nunca tendrá la linealidad de los leds fijados en una tira de led cuya separación es inamovible.

 

Existen  también  distribuciones de leds tipo” luces de navidad”  donde  la única ventaja es poder distribuir más o menos leds en un mismo espacio ,pudiendo dirigir la luz, pero con el  grave inconveniente es que el montaje es mucho mas laborioso y menos compacto .Ademas en este caso no nos guiamos por metros sino por  número de leds a montar siendo  variable(cuantos más leds montemos mejor). Por ejemplo para una TV de 40” se podrían poner 50 leds (como cada 25 leds se necesita 1 Amperio, se necesitaría  una fuente aparte  de 2 Amperios )..

leds

Respecto al montaje con tiras autoadhesivas de leds, este es  mucho mas simple como vamos a ver  ,pues ademas de ser mucho mas sencillo el cableado ( se reduce a conectar las esquinas) , el resultado final peude ser mucho mas limpio   y  “profesional” que un montaje con leds individuales

En cuanto a la hoja de especificaciones, una  tira 5 V LED consume aprox. 7,68 vatios por metro o lo que es lo mismo : 1,5 A. Para calcular el consumo total de energía, es necesario medir la cantidad de LEDsque  podemos poner en la parte posterior del televisor. Por ejemplo para un TV de  55 pulgadas , se necesitan  3,8 m de la tira LED SMD  . El consumo de energía total para el ejemplo seria por tanto  3,8 m tira de LED x 1,5 A 1,0 A =5,7Amp

Afortunadamente, la Raspberry  Pi requiere también 5V,asi que sumando la potencia consumida por esta ( <1 amp)  seria  capaz de encender la tira y el Pi con la misma fuente de alimentación de 5V, pero eso si alimentando ambas partes desde dos conexiones diferentes : es decir la tira de leds directamente desde la fuente  y la raspberry con su conexión aparte (para ello no se olvide de pedir un adaptador de enchufe de la corriente continua para una fácil conectividad de al menos 7 A 35 W / – 5V fuente de alimentación).

Antes de seguir una advertencia: elija un montaje  basado en leds individuales o se decida o por las practicas tiras de leds,  asegúrese siempre que  la que adquiere  use  el chip WS2801, pues todo el sw actual que existe actualmente usa justamente ese protocolo

 Montaje tira de leds

 

Si decidimos montar una tira de leds,  una vez calculada la longitud necesaria ,lo primero es cortar la tira en 4 piezas que respondan a la dimensión de su TV. Para una fácil sustitución de una tira de LED rota o bien porque  mueve la instalación a otro televisor, lo mas sencillo es usar  conectores en todo los extremos como en la imagen.

Las tiras de LED WS2801 siempre tienen cuatro conectores .Ademas suelen ir indicados en la propia serigrafia, asi que típicamente son estas las patillas de salida:

  • 5V
  • GND
  • SD
  • CLK

 

Tenga cuidado, no torsionando  las  tiras  de leds  y por supuesto si necesita cortarlas cortelas  exactamente  por la linea serigrafiada en cada bloque de led+CI  .También hay una flecha en la tira, que marca la entrada / salida. Asegúrese de que usted es capaz de conectar las tiras de entrada a salida con los conectores de cable flexible o bien .

Es más fácil soldar los conectores en la placa  flexible SMD si se pone un poco de soldadura para cada una de las cuatro contactos  con antelación. Una vez solados los 4 cablecillos , se puede proteger  con tubo autoretractil (para una mayor flexibilidad use calor para encoger el  tubo)

Es fácil de montar las tiras porque elegimos componentes de montaje superficial y ademas porque  sólo tiene que utilizar la cinta adhesiva y pegarlas  a los 4 lados del TV. Es esencial que se inicie el montaje de la parte inferior derecha, visto desde la parte posterior del televisor con la flecha apuntando en la tira a la derecha.

 

Más tarde, usted establecerá una conexión desde el GPIO desde el RPI directamente a esta entrada de la banda. Y luego seguir adelante hacia la izquierda, conectando la salida de la primera banda a la entrada de la segunda tira y así sucesivamente hasta llegar a la parte inferior izquierda. La salida de la última tira se deja vacía, por lo que las tiras no están conectados en un bucle.Segun la tira que adquiera incluso puede 

El cableado  de la tira  hacia la raspberry Pi se muestra en el siguiente diagrama creado por Philip Burgess

Tenga en cuenta, el diagrama que se muestra, es para la Revisión Rpi 1.0( podría cambiar ligeramente con revisiones posteriores) .

Asegúrese de que los conectores de 5V / GND de la fila de entrada + y los conectores de alimentación Raspbery  Pi se conectan directamente al Adaptador de enchufe de alimentación de CC (DC Jack) si es que se va a alimentar todo el conjunto desde un única fuente .

Conectar WS2801 de Frambuesa Pi Modelo B

Es importante destacar que con este montaje no hay necesidad de alimentar  por el puerto micro USB la Raspberry Pi,por lo que si usa este sistema   no se debe  alimentar  la RP desde el conector de alimentación

En el conector hembra situado al lado del primer led, verás 2 cables sueltos (rojo y azul), coja esos 2 cables y conéctelos al conector DC hembra. Recuerde que el negativo es el azul y el positivo es el rojo:

Image

En el conector hembra le quedarán 3 conexiones por hacer: cable blanco, azul y verde. Coja tres cables de color blanco, azul y verde y pínchelos en su color correspondiente. Esos 3 cables irán al puerto GPIO de su Raspberry:

  • El de color azul es “tierra” (ground), en la raspberry2 . Como thay varios “ground”, utilize el que quiera (por ejemplo él el pin 09).
  • El cable  blanco va en el pin MOSI (21)
  • El verde en el CLOCK (23).

 

Abajo dejamos un mapa del puerto GPIO, la posición de los pines y su nombre.

gpio

 

Enchufe su transformador de corriente de 5V y 2A  (!pueden ser más Amperios, pero no menos!) y encienda la Raspberry! Es posible que algunos leds se enciendan y se apaguen, es normal. También es posible que ningún led se encienda, no se preocupe. !Vayamos ahora a configurar el software…!

SOFTWARE: Hyperion o Boblight

Bien, ya tenemos terminada la parte más complicada. Toca instalar ahora el software que nos controlará los leds,para lo cual actualmente tenemos 2 opciones; utilizar Boblight o Hyperion. A efectos visuales, ambos son iguales y de hecho pueden generar el mismo efecto, los mismo colores etc… pero Hyperion es muchísimo mejor que Boblight, razones:

  •  Hyperion se ha construido pensando en las limitaciones de CPU y RAM de Raspberry
  • Boblight está diseñado a modo cliente-servidor, consume más CPU. Hyperion es x15 más rápido
  • Hyperion levanta un puerto JSON que permite ser manipulado desde el exterior (por ejemplo puede controlar los leds con una App para SmartPhone)
  • Boblight funciona a modo de addon sobre Kodi por lo qeu necesita Kodi para funcionar.
  • Hyperion funciona como servicio, corriendo independientemente por lo que no está limitado a Kodi unicamente
  • Hyperion da soporte ambilight a programas externos como RetroPie o Moonlight

Dadas las grandes ventajas  pues vayamos a por Hyperion el cual es una implementación de código abierto Ambilight que se ejecuta en muchas plataformas.Las principales características de Hyperion son:

  • Baja carga de la CPU. Para una cadena de 50 leds llevado al uso de la CPU será típicamente por debajo del 2% en un Pi no overclockeado.
  • Interfaz JSON que permite una fácil integración en las secuencias de comandos.
  • Una utilidad de línea de comandos permite la comprobación fácil y configuración de las transformaciones de color (configuración de transformación no se conservan durante un reinicio en el momento …).
  • Canales de prioridad no se acoplan a un determinado proveedor de datos llevado lo que significa que un proveedor puede enviar datos dirigidos y salir sin la necesidad de mantener una conexión con Hyperion. Esto es ideal para una aplicación remota (como nuestra aplicación de Android).
  • Inclute HyperCon,una herramienta que ayuda a generar un archivo de configuración de Hyperion. La herramienta también recordará la configuración de la ejecución anterior.
  • Aplicacion Remota Android de control para ajustar un color estático.
  • Kodi ortográfico que comprueba el estado de la reproducción y el protector de pantalla de Kodi y decide si o no para capturar la pantalla. El corrector también detecta si Kodi se está reproduciendo contenido de vídeo 3D.
  • Detector de borde negro
  • JSON / Proto transportista para enviar la imagen actual a una segunda instancia de Hyperion
  • Un motor de secuencias de comandos efecto.
  • Boblight servidor de interfaz para permitir el uso de clientes escritas para Boblight.
  • Arquitectura genérica de software que  apoyo facilmente a nuevos dispositivos y tambien nuevos algoritmos e.
  • Un montón de hardware es compatible con Hyperion, como PhilipsHue, AtmoOrb y otros dispositivos agradables!

 

Pasemos a ver como instalar este sw, por lo que lo primero que tiene que hacer es habilitar la interfaz SPI de su Raspberry, para los cual  edite el fichero config.txt y añade al final el siguiente texto

dtparam=spi=on

Para algunos modelos de  Raspberry  puede  que no sea necesario,pero en todocaso si lo edita,reinice la Raspberry para que cargue el SPI correctamente.

Activado el SPI lo siguiente  que haremos  seria la instalación de este sw de Hyperion

Éstos  comandos son  para instalar Hyperion sobre OpenELEC:

curl -L –output install_hyperion.sh –get [url]https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh[/url]
chmod +x install_hyperion.sh
sh ./install_hyperion.sh

Para instalar Hyperion sobre Raspbian Jessie usaremos estos  otros comandos:

sudo apt-get update
sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 ca-certificates
wget -N [url]https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh[/url]
chmod +x install_hyperion.sh
sudo sh ./install_hyperion.sh

Si queremos que se auto ejecute al arrancar  en lugar del bloque anterior podemos hacer la misma instalación  pero siguiendo estos pasos:

En primer lugar para preparar la instalación seguiremos estos pasos:

// Create new folder in the pi user home
mkdir hyperion

cd hyperion

// Download hyperion installation script
wget -N https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
// Make the install script executable
sudo chmod +x install_hyperion.sh
// Make sure boblight is not running in the background
sudo /sbin/initctl stop boblight

Y ahora añadimos Hyperiorn para que su arranque sea  automático.

// Install all necessary packages for hyperion
sudo apt-get update && sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates
// Execute the hyperion installation script
sudo sh ./install_hyperion.sh
// Hyperion should be running now, stop it again
sudo initctl stop hyperion

Tras unos segundos Hyperion quedará instalado, los leds deberían encenderse con un bonito efecto arcoíris, acto seguido deberían encenderse para reproducir los colores actuales de su TV (ya sea un video, Kodi, un juego, etc…).

Toca  ahora  configurar Hyperion para “decirle” que tenemos 50, 54 o 100 leds y en que posición están, función que haremos gracias el  software Hipercon que por su extensión lo veremos en un próximo post

 

Fuente aqui

IoT con LattePanda


Muy resumidamente LattePanda es un un mini ordenador completo con Arduino integrado   que ejecuta la versión completa de Windows 10. Incluye todo lo que un PC normal tiene  pudiendo hacer cualquier cosa que hace un PC normal. Es ademas compatible con casi todos los aparatos que conoce como  impresoras, joysticks, cámaras y más. Todos los periféricos que funcionan en su PC funcionaran en LattePanda.

Ademas LattePanda viene pre-instalado con una edición completa  pre-activada de Windows 10.


Utilizando las API existentes, puede desarrollar sus propios proyectos de software y hardware en LattePanda como lo haría en un PC normal usando  C #, JavaScript, Ruby y así sucesivamente de modo que no necesita su ordenador portátil  para construir una aplicación con el

Pero no sólo puede ser utilizado como un ordenador normal de bajo costo con  Windows pues LattePanda también está diseñado con un compatible co-procesador Arduino, lo que significa que se puede utilizar para controlar y detectar el mundo físico, al igual que una placa Arduino!

Si usted es un desarrollador de Windows, un desarrollador de la IO, un fanático de hardware de bricolaje, diseñador interactivo, robótica genio o un fabricante, LattePanda puede ayudar a su proceso creativo con los proyectos informáticos físicos!

LattePanda puede ejecutar la versión completa de Windows 10 y Ubuntu.

ESPECIFICACIÓNES

  • Procesador: 1,8 GHz Intel Cherry Trail Z8300 Quad Core
  • Funcionamiento del sistema: Pre-instalado preactivado completa edición de Windows 10 (versión Inicio)
  • Ram: 2 / 4GB DDR3L
  • Capacidad de almacenamiento: 32 / 64GB
  • USB: 1 x USB 3.0, USB 2.0 x 2
  • HDMI de salida de vídeo y el puerto Ethernet
  • 3,5 mm de salida de audio jack
  • Ranura para tarjeta Micro SD
  • Toque y Conector de pantalla
  • Plug and Play Conectores de sensor
  • WiFi y Bluetooth 4.0
  • Coprocesador: ATmega32u4
  • GPIO: 2 GPIO de chips Intel, 20 GPIO para Arduino
  • Potencia: 5v / 2A
  • Dimensiones: 3.46 “x2.76”
  • Peso: 100 g

 Pines

Debajo de cuadros es un diagrama básico que muestra todos los pines del bus de expansión:

LattePanda pines

 

Distribución de los pines en el área U1 se asignan a la base de X-Z8300. Por el momento, no hay información disponible.

Distribución de los pines en el área de U2 se asignan al núcleo ATmega32u4.Cada uno de los 20 pines digitales (A0 – A5, D0 – D13) en la zona de U2 se puede utilizar como una entrada o salida, cada uno operando a 5 voltios. Cada salida puede fijar o recibir 40 mA y cada uno tiene una resistencia de pull-up (desconectada por defecto) de 20-50k ohmios.

Precaución: Superior a 40 mA en cualquier pin de E / S puede causar daños permanentes en el ATmega32u4.

Algunos pines tienen funciones especializadas:

Entradas analógicas: A0 – A5, A6 – A11 (en D4, D6, D8, D9, D10, D12 y). El LattePanda tiene 12 entradas analógicas, etiquetados A0 a A11, todos los cuales también pueden ser utilizados como I / O digital. Cada pin tiene una resolución de 10 bits (es decir, 1024 valores diferentes). Por defecto se miden desde el suelo a 5 voltios.

De serie: D0 (RX) y D1 (TX). Se utiliza para recibir (RX) y transmitir datos en serie (TX) TTL.

Las interrupciones externas: D3 (interrumpir 0), D2 (interrumpir 1), D0 (interrumpir 2), D1 (interrumpir 3) y D7 (interrumpir 4). Estos pines pueden ser configurados para desencadenar una interrupción en un valor bajo, un flanco ascendente o descendente, o un cambio en el valor.

PWM: D3, D5, D6, D9, D10, y D13 proporcionan salida PWM de 8 bits.

SPI: D16 (MOSI), D14 (MISO), D15 (SCK).

LED: D13 Hay un LED integrado impulsado por pin digital 13. Cuando el valor del pin es alto o bajo

TWI: D2 (SDA), D3 (SCL).

Otros pines de la placa:

Reset: Lleva a este BAJA línea para reiniciar el microcontrolador. Normalmente se utiliza para añadir un botón de reinicio para escudos que bloquean la una en la mesa.

¿Cuál es el propósito de este proyecto?

En este ejemplo  vamos a aprender, cómo nos comunicamos entre Arduino (chip de Arduino interna en LattePanda) y Microsoft Visual Studio y envían los datos desde el Arduino para utilizar una aplicación de Windows. Aquí vamos a medir la temperatura y humedad ambiental y enviar los datos del sensor de DHT Thingspeak.

Cómo acceder a la disposición de patillas de Visual Studio

LattePanda.Firmata es una biblioteca de código abierto Firmata proporcionada por LattePanda, que es adecuado para aplicaciones de Windows desarrollado en Visual Studio. Esta clase le permite controlar Arduino GPIO desde aplicaciones de Windows, con funciones que incluyen:

  • La lectura y escritura a los pines digitales
  • La lectura de las entradas analógicas
  • El control de servomotores
  • El envío de datos a los dispositivos y los dispositivos de recepción de formularios de datos a través del bus I2C

Para este proyecto, he hecho algunos cambios en la biblioteca Firmata de datos del sensor DHT leer o cualquier otro sensor.

3 pasos para su proyecto Arduino remoto

  • Descarga e instalación de Visual Studio 2015
  • Configurar el Arduino (Es pre-instalado, a menos que cambiara el programa de Arduino)
  • Crear un proyecto o utilizar el proyecto de ejemplo

Descarga e instalación de Visual Studio 2015

En el primer paso, es necesario instalar Visual Studio en LattePanda. No se instala por defecto.

  • Activar el modo de programador en su sistema operativo, para este fin, vaya a Configuración> Actualización y seguridad> en la sección para desarrolladores> Selección de Modo desarrollador

Estableció el Arduino

  • Descargar este archivo y abra el archivo en Arduino. (Este archivo reemplaza con StandardFirmata . Algunos cambios se han hecho en este archivo)
  • Seleccione Arduino Leonardo del Board sección. A continuación, seleccione el puerto COM correcto, cargar el último boceto.

Cableado

El objetivo de este proyecto es leer los datos de temperatura y humedad por el sensor DHT11 conectado a LattePanda(se puede utilizar en lugar de DHT21 o DHT22).

El sensor  se  debe conectar como en la imagen  siguiente ,es decir el pin de la izquierda (Data) al terminal D7 de LattePanda, el terminal central del sensor al pin +5V de LattePanda  y por ultimo el terminal de la derecha al ping de GND de LattePanda.

 

 

Leer Temperatura y Humedad

Descargar este archivo y abra el archivo con Microsoft Visual Studio.Registrarse en Thingspeak y crear un nuevo canal con dos campos. ( Field 1de la temperatura y Field 2 de la humedad). Después Save Channel , en la API Keys pestaña, copia Key valor y pegar en Program.cs archivo en lugar deTHINGSPEAK_KEY_HERE .

Guardar el archivo y haga clic Start botón. La salida será como se muestra a continuación:

Al final, los datos se pueden ver en el  servidor deThingspeak  apareceran  como se muestra a continuación:

Recursos

Fuente   aqui