Como controlar hasta 10 dispositivos desde Internet


Este proyecto realizado por Miseim utiliza el dispositivo Eléctrico Imp  y es capaz de controlar a distancia 10 dispositivos eléctricos de 220V a través de WiFi, gracias al servicio Internet Imp Cloud.
Básicamente, la «esencia» del proyecto:
  •  El modulo Imp envía una cadena de bits en serie  a un chip conversor de  serie a paralelo digital fabricado por Texas Instruments,envíandose  un valor (0-255 decimal o hexadecimal FF) mediante dos bits del puerto serie UART (patillas 1 y 2).
  • El chip de TI sólo puede recibir bits, por lo que  pin Imp 2 (RX) no se utiliza.
  • El chip TI convierte esa entrada serial en 8 salidas digitales
  • Electrónicamente, desde  esa salida se puede encender o apagar cualquiera de los relés de estado sólido o con relés tradionales.

El chip de TI es direccionable, 0-7 usando 3 bits. Eso significa que técnicamente podría tener hasta 8 de ellos en una línea para conducir 64 salidas digitales. En este proyecto , el chip de TI sólo recibe bits en serie y no envía ningún dato de vuelta (para UART bidireccional tendría que utilizar un método diferente).

Se ha escogido este chip de TI, ya que no necesita de un reloj,se sincroniza automáticamente con base en el momento del primer bit de inicio,lo cual hace que el circuito sea super simple y fácil para que cualquiera lo pueda construir

Para poner en marcha el dispositivo Electric Imp , debemos registrar nuestro disposistivo en el sitio web eléctrico Imp (www.electricimp.com) y crear una cuenta para su dispositivo Electric Imp.

Este seria el esquema  de circuito tabla final  que pude implementarse en una placa protoboard   o bien en una sencilla placa de puntos  soldando los componentes a esta.

En el circuito sólo se  usan los pins Imp 1 y 9 del Electric Imp,lo cual  deja pines extra que puede usarse  para otras cosas. El chip TI es direccionable (3 bits), por lo que podría ampliar este a salidas más digitales.

Los  pines extra del electric Imp no usados en este  aplicacion (5,7,8,9) se podrían utilizar para las entradas procedentes de algunos interruptores externos. No se puede utilizar el pin 2, porque eso está reservado para UART12 (puerto serial, los pines 1 y 2).En esta ocasión  no se usa aquí porque el chip de TI no puede devolver ningún dato.

Relés de estado sólido pueden  montarse  en el lado de la caja, Si se van a utilizar para fines de alto amperaje, tendrían que ser montados en disipadores de calor de algún tipo esos relés . Ademas si usted planea en la conmutación más altas cargas de corriente, consulte con un experto con experiencia para la instalacion apropiada. También se dan cuenta de que todos estos circuitos entran en un cable de alimentación y una toma de corriente doméstica. Tenga cuidado de no sobrecargar una salida, y nunca utilice dispositivos de seguridad tales como fusibles e interruptores de circuito.

Observe también que los cables de extensión no tienen tierra. Una vez más, utilizar el sentido común y la sabiduría en la determinación de qué tipo de cosas que le cambio con este proyecto. Con la construcción adecuada y relés adecuados, esto podría ser utilizado para cambiar los dispositivos de alto amperaje.

A  continuación el listado para el código imp incluyendo  tanto el código para el «Agente», como el código para el «Dispositivo».


REV: 10/06/2013

AGENTE
===========================

http.onrequest (function (req, resp) {
if (req.method == «POST») {
cuerpo local = http.urldecode (req.body);
server.log («Interruptor entrante:» + body.data);
/ / Recibido como dos bytes: 0000 0000
/ / Restablecer todo: 00 (0000 0000)
/ / Switch 1: 01 (0000 0001)
/ / Interruptor 2: 02 (0000 0010)
/ / Switch 3: 04 (0000 0100)
/ / Interruptor 4: 08 (0000 1000)
/ / Interruptor 5: 10 (0001, 0000)
/ / Interruptor 6: 20 (0010, 0000)
/ / Interruptor 7: 40 (0100, 0000)
/ / Interruptor 8: 80 (1000 0000)
device.send («Datos», body.data);
}
resp.send (200, «OK»);
});

DISPOSITIVO
===========================
/ / UART Comunicación de TI SN74LV8153 serie a paralelo de la viruta

/ / Receptora que botón es apretado …
/ / Hay un par de maneras de hacer esto …
/ / Se puede realizar un seguimiento de lo que los interruptores están encendidos o apagados dentro
/ / El script en línea (PHP, Perl, javascripting) y enviar una
/ / Valor único que consigue entregada al chip TI. Que
/ / Valor incluirá las posiciones actuales de todos los interruptores.
/ / O …
/ / Usted puede enviar un valor que indica que se ha pulsado solo interruptor.
/ / Lo estoy haciendo de esta manera. Cada vez que se hace clic en un interruptor, que
/ / Envía el valor correspondiente a un bit. Ese valor es entonces
/ / Convertido a un entero. Haciéndolo de esta manera, es posible
/ / No saber qué posición del interruptor es pulg Este método
/ / Se debe utilizar para pulsadores momentáneos en una página web. Estoy
/ / Uso de interruptores deslizantes jQuery, por lo tanto cambiar de encendido a apagado o
/ / Apagado a encendido envía el mismo bit individual. Siempre empiezo por
/ / Desactivar los interruptores de gráficos (en off), y restablecer la
/ / IMP a 00 (cero). Una variable global «máscara» se utiliza para mantener
/ / Seguimiento de la posición actual de los interruptores. Cuando un nuevo
Se recibe / / bits, máscaras que poco (XOR bit a bit) con la «máscara»
/ / Y que crea el nuevo valor para el envío al chip TI.

writeSerial función (valor) {
/ / Hacer un OR exclusivo (XOR) para cambiar sólo la parte que se recibió (alternar él).
nuevovalor locales = valor ^ máscara;
if (value == 00) {
/ / Se ha recibido un cero, por lo que hacer un reinicio (apagar todas las salidas)
nuevovalor = 00;
}
hardware.pin9.write (0);
salidas locales = NewValue;
dirección local = 0x00; / / escribir a la dirección 0 de chip
/ / Enviar datos en serie a chip de TI
hardware.uart12.write (formato («% c% c», 0x01 | (Dirección << 1) | (salidas y 0x0f) << 4, 0x01 | (Dirección << 1) | (salidas y 0xf0)));
server.log (formato («WiFi señal:% d dBm», imp.rssi ()));
Intensidad de la señal / / Imp RSSI
/ / Abajo -87 cero (aún conectado, pero apenas)
/ / -87 .. -82 1
/ / -82 .. -77 2
/ / -77 .. -72 3
/ / -72 .. -67 4
/ / Por encima de -67 5
hardware.pin9.write (1);
enmascarar = nuevovalor;
}

/ / Convertir cadena hexadecimal a un entero
hexToInteger función (hexadecimal) {
de resultado local = 0;
cambio locales = hex.len () * 4;

/ / Para cada dígito ..
for (d locales = 0; d = 0x61)
dígitos = hex [d] – 0x57;
else if (hex [d]> = 0x41)
dígitos = hex [d] – 0x37;
más
dígitos = hex [d] – 0x30;

/ / Acumula dígitos
cambiar – = 4;
resultado + = dígitos << turno;
}
return resultado;
}

/ / Pin9 es un indicador blip LED siempre que los datos se envía al chip de TI
hardware.pin9.configure (DIGITAL_OUT);
hardware.uart12.configure (19200, 8, PARITY_NONE, 1, NO_CTSRTS);
/ / La variable global «máscara» hace un seguimiento de la situación actual de los interruptores.
/ / Estoy haciendo esto en la imp. Como alternativa, puede realizar un seguimiento de los interruptores
/ / Dentro de la secuencia de comandos web y enviar las posiciones correctas de los 8 interruptores a la vez.
máscara agent.on («datos», la función (valor) {
valor = hexToInteger (valor);
writeSerial (valor);
});
writeSerial (00);

/ / Registrar con el servidor
imp.configure («TI_SN74LV8153», [], []);

Para ver un ejemplo de trabajo del panel de control de usuario página web (ver imagen superior) Ir a: http://www.catpin.com/demo

1) Puede ver la demo en su smartphone y ver cómo funcionan los interruptores deslizantes.
2) Puede ver el código fuente HTML para ver el JQuery y scripts (utilizando su navegador, ver el código fuente HTML).
3) El script PHP actual que el valor de POST al imp se muestra en la imagen de arriba.

Con el código Imp, se usa un  sitio web que utiliza jQuery y / o jQuery Mobile para enviar un interruptor de presión momentánea al imp. Presione ON, OFF Press. Usted puede utilizar cualquier tipo de página web que desee, y  javascripting o HTML5 ,aunque en el ejemplo se esta usando PHP scripting del lado del servidor a POST el valor (s) a la imp(es posible que prefiera Perl, o algún otro método de servidor).

El propósito del script PHP para POST es para ocultar la URL agente imp del usuario. Si codifica el POST usando jQuery, el usuario será capaz de ver la URL en el código HTML. Con PHP (server-side), esa URL se mantiene en secreto.

Básicamente, la «esencia» del proyecto: Se envía el Imp un valor (0-255 decimal o 00-FF hexadecimal) y envía esa corriente de bits del puerto serie UART (patillas 1 y 2). El chip de TI sólo puede recibir bits, por lo pin Imp 2 (RX) no se utiliza.

Desde el botón o interruptor de cambio en la página web a la luz real de encender o apagar tardará aproximadamente 1 segundo, dependiendo de lo rápido que el Internet es para usted. Esa velocidad incluye la velocidad de conexión (DSL, banda ancha, etc.) 1 segundo parece rápido, pero en esta industria «, aproximadamente 1 segundo» no es instantáneo, y no es predecible, así que tengalo en cuenta si el tiempo es crítico.

COMO HACER UNA BREVE PRUEBA SIN EL SCRIPT PHP SIN PROBLEMAS …

Para probarlo con un script HTML «minimalista», copie este script de prueba y súbalo a su sitio web.Ponga en su propio ID de agente. Introduzca los valores tales como, 01,02,04,08,10,20,40,80 … esos son los 8 bits para los relés respectivos.

«Test.html» … un super simple script HTML para probar el circuito completo ….

<html>
<form action="https://agent.electricimp.com/nH58i4tGp5ur/" method="post">
Valor: <input type="text" name="data">
<input type="submit" name="submit" value="Submit">
</ Form>
</ Html>

Lista de componentes:
Todo, excepto los relés de estado sólido se puede construir por menos de $ 100USD.

  •  Caja de plástico que puede soportar condiciones climáticas exteriores. Utilice plástico para proteger a la electrónica   asi como la recepcion  WiFi(puede usar  una vieja caja de herramientas de plástico barato. Impermeable, w / asa de transporte).
  •  Eléctric Imp (Sparkfun Cat No. WRL-11395 (aprox. $ 30 USD) 
  • April Electric Imp breakout board Sparkfun Cat No. BOB-11400  (approx $13USD)
  •  TI (Texas Instruments) Serial to Parallel chip: Mouser Electronics Cat No. 595-SN74LV8153N (approx $2USD)
  •  Placa del proyecto en blanco 
  •  7805 Regulador de Voltaje 5VDC  (menos de $ 1 USD) 
  •  Relés de estado sólido (SSR) 3-32VDC de entrada/ Salida 120-240VAC( son caros, pero se pueden encontrar usadas en Ebay )
  •  Varios LED, resistencias y condensadores, soldadura, alambre de conexión
Fuente  aqui

Controla cualquier cosa desde Internet con Electric Imp


BlinkUp TM es una tecnología muy novedosa pendiente de patente para obtener  dispositivos habilitados en línea para el dispositivo Electric Imp. Este post le llevará a través del proceso de creación de una cuenta Electric Imp y conseguir ejecutar su primer prototipo funcional que permitirá activar o desactivar  cualquier dispositivo desde Internet.

Este es el resumen  de los pasos que vamos a seguir:

  • Crear una cuenta Electric Imp
  • Descargar y configurar la aplicación para movil
  • BlinkUp su Elctric imp

Cuenta de Electric Imp

  • Crear una cuenta en electric Imp
  • Visita la página de registro y crear una cuenta. Una vez que haya creado una cuenta, debe iniciar sesión en la eléctrica Imp IDE basado en el navegador .

Descarga de  la aplicación móvil 
La aplicación móvil le permite introducir la información de su cuenta, el SSID de la red y la contraseña, y enviarlo a la imp. La aplicación móvil no envía el SSID o la contraseña de la red a los servidores Imp eléctricos.Esta disponible tanto para iOS como para Android pero sólo es necesario la aplicación móvil para configurar el Eelctric imp, así que si usted no tiene un teléfono inteligente o una tableta a mano, puede utilizar el dispositivo móvil de otra persona – sólo tiene que utilizar sus credenciales de cuenta Imp eléctricas para iniciar sesión en la aplicación.

Introduzca las credenciales en aplicaciones móviles
Abra la aplicación móvil, e introduzca su nombre de usuario + contraseña electric Imp  (si está utilizando la aplicación para Android, debe iniciar sesión con su dirección de correo electrónico + contraseña).

Una vez que ha iniciado sesión en la aplicación, seleccione la red inalámbrica a la que desea conectarse. Si no ve la red a la que desea conectar su imp a (o es una red oculta), seleccione otra red y luego introduzca el nombre de la red.

El  sw es capaz de determinar qué tipo de seguridad (WEP, WPA, WPA2, etc) utiliza la red – por lo que todo lo que tiene que hacer es introducir la contraseña wifi. Si se está conectando a una red no segura, simplemente deje en blanco el campo Contraseña.

El poder de su electric imp
Conecte el extremo pequeño del cable Mini USB en la toma USB , y el otro extremo a un puerto USB en su computadora.

Inserte su tarjeta electric imp en la ranura SD en su adaptador especial. Si todo funciona correctamente, un LED dentro de la electric imp debe comenzar naranja parpadeando (si se trata de una nueva marca imp, o, posiblemente, rojo, si no es nuevo).

Si está utilizando el Sparkfun eléctric Imp Breakout  tendrá que rellenar el jumper de 3-pin y ponerlo en modo «USB».

BlinkUp
Si está usando la aplicación para Android, y no ha parpadeado esta electric imp antes, hay que seleccionar el modo de herencia para los mejores resultados.

Haga clic en el BlinkUp en la aplicación móvil y, a continuación, mantenga la pantalla de su teléfono al ras con el borde de la imp. Para obtener los mejores resultados, se recomienda lo siguiente:

La colocación de teléfono adecuado para BlinkUp fiable

Mantenga la pantalla del teléfono lo más cerca posible del sensor óptico (a ras si es posible)
El pulgar debe cubrir la, parte superior expuesta de la imp (donde dice «Developer Edition»).
Trate de bloquear cualquier luz / BlinkUp brillantes directos en la sombra.
Trate de mantener el dispositivo aún durante el proceso.
Usted siempre debe realizar BlinkUp con la pantalla mirando hacia adelante y hacia el dispositivo que se está configurando, especialmente si usted sufre de una condición médica que le hace susceptible a la luz estroboscópica. Puesto que hay mensajes de audio tanto en el inicio y el final, puede cerrar los ojos durante el proceso.

¡Enhorabuena!:Su imp ahora debe estar parpadeando en verde, lo que indica que está conectado a Internet (y la nube Imp).

Ahora  se  mostra cómo programar su imp utilizando el IDE en línea .

Hello World

Esta guía le llevará a través de su primer proyecto imp habilitado. .

En este proyecto, vamos a construir un circuito simple para hacer  parpadear un LED.

Circuito

  1. Conecte el cable positivo (largo) del LED para PIN9 del imp.
  2. Conecte el cable negativo (corto) del LED a un extremo de una resistencia de 330Ω.
  3. Conecte el otro extremo de la resistencia 330Ω al pin GND del imp.

Crear un Nuevo Modelo

  1. Inicie sesión en el ID
  2. Haga clic en nuevos dispositivos para expandir el menú desplegable. Usted debe ver el dispositivo que has BlinkedUp.
  3. Haga clic en el dispositivo para abrir la ventana de configuración del dispositivo.
  4. Si lo desea, puede darle a su equipo un nombre (* nota – este nombre se asocia con el consejo abril conectó su imp en, no la propia imp *). Vamos a llamar a nuestra de 01 de abril.
  5. Haga clic en el menú desplegable a continuación modelo asociado y escriba el nombre para el nuevo modelo que desea crear. Vamos a llamar a nuestro «Hello World».
  6. Haga clic en Guardar cambios.
  7. Usted debe ver el modelo que acaba de crear aparecerán en la barra de navegación izquierda. Si hace clic en él, y luego en el dispositivo, se abrirá el editor de código.

El Editor de código

El editor de código consta de tres ventanas (agente, dispositivo y troncos):

Agente

La ventana agente es donde usted escribe su código de agente. Los agentes son trozos de código de ardilla que se ejecutan en la nube Imp, y le permiten hacer cosas como procesamiento pesado de descarga, la marca y el procesamiento de las peticiones HTTP, y pequeñas cantidades de datos de la tienda.

Dispositivo

La ventana del dispositivo es donde se escribe el código que se ejecutará en el propio dispositivo. Dado que este ejemplo no se va a utilizar agentes, aquí es donde todo nuestro código irá.

Registros

La ventana de registros (en la parte inferior de la pantalla) muestra varios trozos de información desde el dispositivo seleccionado. Esto incluye la información del sistema (dispositivo en línea, fuera de línea, actualizaciones de firmware, nuevo código, etc), información sobre los errores en tiempo de ejecución, y cualquier cosa que se registra conserver.log .

Código

// configure the imp (best practice)
imp.configure(«Hello World», [], []);

// create a global variabled called led,
// and assign pin9 to it
led <- hardware.pin9;

// configure led to be a digital output
led.configure(DIGITAL_OUT);

// create a global variable to store current
// state of the LED
state <- 0;

function blink() {
// invert the value of state:
// when state = 1, 1-1 = 0
// when state = 0, 1-0 = 1
state = 1-state;

// write current state to led pin
led.write(state);

// schedule imp to wakeup in .5 seconds and do it again.
imp.wakeup(0.5, blink);
}

// start the loop
blink();
view rawblink.device.nut hosted with ❤ by GitHub

Copia y pega el código en la ventana del dispositivo, haga clic en el botón Generar y ejecutar.

Usted debe ver los siguientes mensajes en la ventana de los registros:

 [Status] Downloading new code [Status]
 Device configured to be "Hello World"

Usted acaba de escribir su primer programa de imp,ahora ya puede controlar un Led por internet mediante https

Visión de conjunto

Esta guía le llevará a través de su primer proyecto conectado a Internet imp habilitado! Vamos a construir una API simple para un LED. Se supone que ya ha creado el ejemplo anterior , y vamos  a utilizar el mismo circuito.

Código de dispositivo

// configure the imp (best practice)
imp.configure(«LED Api», [], []);

// create a global variabled called led,
// and assign pin9 to it
led <- hardware.pin9;

// configure led to be a digital output
led.configure(DIGITAL_OUT);

// function to turn LED on or off
function setLed(ledState) {
server.log(«Set LED: » + ledState);
led.write(ledState);
}

// register a handler for «led» messages from the agent
agent.on(«led», setLed);

Si llegamos a generar y ejecutar en este punto, nuestro equipo no va a hacer nada interesante. La parte realmente importante e interesante de este código es la siguiente línea:

 agent.on("led", setLed);

Esta función registra un listeer de mensajes enviados por el agente. Cada vez que el agente envía un mensaje al dispositivo llamado «llevó», se ejecutará la función setled.

Código de Agente

// Log the URLs we need
server.log(«Turn LED On: » + http.agenturl() + «?led=1»);
server.log(«Turn LED Off: » + http.agenturl() + «?led=0»);
 
function requestHandler(request, response) {
try {
// check if the user sent led as a query parameter
if («led» in request.query) {
 
// if they did, and led=1.. set our variable to 1
if (request.query.led == «1» || request.query.led == «0») {
// convert the led query parameter to an integer
local ledState = request.query.led.tointeger();
 
// send «led» message to device, and send ledState as the data
device.send(«led», ledState);
}
}
// send a response back saying everything was OK.
response.send(200, «OK»);
} catch (ex) {
response.send(500, «Internal Server Error: » + ex);
}
}
 
// register the HTTP handler
http.onrequest(requestHandler);

En el código de agente, registramos y controladores HTTP. El controlador de HTTP se ejecuta cada vez que una petición HTTP se hace a la dirección URL agente (que se muestra en la parte superior de la ventana de código de agente).

En nuestro controlador HTTP, comprobamos para ver si se suministra un parámetro de consulta denominado led lo fuera, le enviamos un mensaje al dispositivo, junto con el valor del parámetro de consulta led.Enviamos el mensaje al dispositivo mediante la siguiente línea:

 device.send("led", ledState);

Cuando esta línea se ejecuta, envía un mensaje al dispositivo que se traduce en setled (ledState) se está ejecutando.

Pruebas

Copia y pega el agentURL en una nueva ventana y agregar? Led = 1 (para encender la lámpara encendida)o? Led = 0 (para apagar el dado). Debe ser algo como esto:

 https://agent.electricimp.com/a1b2bc3d4?led=1
 https://agent.electricimp.com/a1b2bc3d4?led=0

¡Enhorabuena!

Usted acaba de conectar un LED a Internet. Si lo desea, envíe la URL a tus amigos y haga que traten de controlar el LED desde cualquier lugar del mundo: siempre que tengan una conexión a Internet,deberán  ser capaz de controlar su LED.

Por supuesto este ejemplo es extropolable  a los 6 salidas más y obviamente en lugar de hacer lucir un led puede mediante el circuito adecuado puede  activar un relé para comandar cargas mayores.

Fuente aqui