Sensor avanzado para apertura de puerta


En el post de hoy vamos a ver un nuevo sistema de monitorización que se alimenta mediante una simple batería. La versión anterior se basó en una radio XBee y ha estado en servicio durante casi 3 años y medio. El tiempo de duración de la batería real ha sido de alrededor de 3 meses para una pila de botón CR2032, que no está mal del todo, pero aún así como vamos a ver es mejorable.

En el nuevo diseño ,aparte de usar un modulo de radio de 868 MHz RFM69 en lugar del XBee Monteino y, se ha reducido la lista de componentes moviendo la lógica del hardware a lógica de software,lo cual  significa utilizar las capacidades de ahorro energético en modo dormir tanto del ATMega328 y la RFM69 y la codificación de una manera inteligente para reducir el tiempo despertar.

Hardware

monteino.PNG

Moteino es una placa  Arduino inalámbrica de bajo coste basado en el microcontrolador Atmel ATmega328P  .

Para una guía detallada de la placa , consulte esta página dedicada . Aquí están algunas características y aspectos más destacados de Moteino:

  • Arduino bajo costo totalmente compatible con el IDE de Arduino
  • La versión regular incluye un RFM69W / transceptor a bordo HW y la antena de alambre monopolo de 1/4 de longitud de onda por separado
  • Bajo consumo de energía, energía de la batería de usar
  • 3.3V a bordo regulador (MCP1703) proporciona hasta 250 mA, entrada de hasta 16V (3.5-9V recomendado), muy baja corriente de reposo permite que este regulador para hacer funcionar su Moteino con la batería durante un tiempo muy largo
  • Muy pequeño tamaño (1,3 pulgadas x0.9)
  • diseño de tablero de cabecera de usar le permite adjuntar hembra / macho pines del conector en la parte superior o inferior y hacer escudos para ello o sólo lo utilizan en el tablero para prototipos
  • Cabecera de programación FTDI, ofrecemos este consejo adaptador FTDI para la programación de todos los Moteinos
  • DualOptiboot gestor de arranque para la programación rápida y no está en puesta demora. Elija Arduino Uno / Moteino en Herramientas> Juntas de Arduino IDE.
  • LED bordo de pin digital 9 (D9 / PB1) para depurar o indicación visual
  • acabado ENIG (RoHS Sin plomo)
  • Orgullosamente hecho y probado en Michigan EE.UU.-con componentes genuinos!

 

Para hacer un enlace inalámbrico, necesitará al menos 2 Moteinos. Alternativamente, esta es compatible con otros Arduinos que utilizan el transceptor RFM69.

Como ya se ha dicho, el hardware es mucho más simple en esta segunda versión del monitor de la puerta, se puede comprobar aquí ambos lados “generaciones” una al lado de la otra:

Monitor de puerta con XBee y Monteino

Esta segunda generación es básicamente un Monteino con un RFM69W a bordo, un divisor de tensión para controlar la batería, un interruptor de láminas( es decir un rele reed)  con una resistencia de  pull-up(370k) y un terminal de tornillo para conectar una batería.

Las razones para cambiar a una  aruitectura basada en la placa Monteino son:

  • Una mejor personalización. XBees son programables , pero en realidad, ¿quién hace eso?Así que aquí tiene una buena placa Arduino de edad con suficiente capacidad de procesamiento para utilizar prácticamente cualquier sensor que hay.
  • Mayor duración de la batería. Usted tiene más opciones de código, como poner la radio, el chip flash y el propio microcontrolador para ponerlo en modo dormir. Además también admite  una solución de  batería más robusta con 3  baterías AAA con 1000 mAh.
  • Más fácil de usar  gracias al software X-CTU .

Monteno monitor de puerta de esquema con Fritzing

Hay algunas cosas a tener en cuenta en cuanto al hardware. En primer lugar el monitor de la batería se ha diseñado después de John k2ox mensaje en el foro LowPowerLab. El divisor de tensión consiste en una resistencia de  470k y otra de 1 M. La resistencia de pull up no está ligado a GND, pero si al pin digital 12. Cuando este pin está en modo de alta impedancia de los circuitos está desactivado y no se pierde energía. Para medir el voltaje primero tiene que ajustarse para que emita y luego baja, realice una analogRead en A1 y poner de nuevo a D12 ENTRADA.

Divisor de voltaje

En segundo lugar la resistencia de pull-up en el interruptor de láminas fue una adición tardía a comprobar el tiempo hubo una caída en el consumo de energía en comparación con el pull-up interna.

Además, esto podría no parecer importante, pero le puede ahorrar algo de dinero y una gran cantidad de dolor de cabeza. Esos interruptores de láminas son realmente frágiles( el momento crítico es cuando se tiene que doblar sus patas con  un pequeño alicate de  puntas : debe  mantener la pata justo antes del punto de flexión, por lo que la cápsula está protegida en un lado del alicate y doble suavemente el otro extremo).

Doblando una caña piernas del interruptor

Y, por último, comprobar cuál es la mejor posición para el interruptor de láminas y el imán. Para imanes redondos neodinium el interruptor debe ser perpendicular al plano del imán(compruebe la imagen de cabecera en este post) y éste:

interruptor de láminas

firmware

El código es bastante simple, se basa en Felix Rusu y Thomas Studwell RFM69_ATC yRocketScream baja potencia bibliotecas. El interruptor de láminas está ligado a un pin de interrupción que despierta el Monteino cada vez que cambia su estado. A continuación, el código debe  leer  la señal y comprueba si el valor ha cambiado. Se empezo con un tiempo de rebote 25ms y más tarde he comprobado con un  DSO Nano cone 5ms es más que suficiente. Señal y mensajería parece mucho más fiable que con el XBee, donde hay mas rebotes y señales fantasma (una puerta abierta y cerrada gatillo dos mensajes y segundos después, dos mensajes más,etc).

Este es el código de bucle responsable del sueño y despertar del microcontrolador:

void loop() {
    // We got here for three possible reasons:
    // - it's the first time (so we report status and battery)
    // - after 4*15 seconds (we report status and maybe battery)
    // - after an event (same)
    send();
    // Sleep loop
    // 15 times 4 seconds equals 1 minute,
    // but in real life messages are received every 77 seconds
    // with this set up, so I'm using 13 here instead...
    for (byte i = 0; i < 13; i++) {
        // Sleep for 8 seconds (the maximum the WDT accepts)
        LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
        // At this point either 4 seconds have passed or
        // an interrupt has been triggered. If the later
        // delay execution for a few milliseconds to avoid
        // bouncing signals and break
        if (flag) {
            flag = false;
            delay(DEBOUNCE_INTERVAL);
            break;
        }
        // If the former, check status and quit if it has changed
        if (status != digitalRead(REED_PIN)) break;
    }
}

La variable de estado mantiene el último estado enviado y reconocida por la puerta de entrada . Así que si nos falta un ACK el código intentará enviar el mismo mensaje de nuevo en cuatro segundos . Puede comprobar el código completo en la puerta de el repositorio de monitor en la Bitbucket . Se esta usando una biblioteca envoltorio ( RFM69Manager ) para gestionar la configuración y formato de los mensajes de radio . Los mensajes están en el formato :

key:value:packetID

Al igual que en ” BAT : 4302 : 34 ” . El ID de paquete es opcional pero el RFM69GW lo utiliza para comprobar si hay duplicados o paquetes que faltan. Se puede desactivar cambiando el valor SEND_PACKET_ID en RFM69Manager.h a 0 .

Alimentación

La alimentación  es clave en este proyecto desde el sensor será operado de la batería . En la primera generación , con el XBee , podría funcionar por cerca de 3 meses con una sola pila de botón CR2032 ~ 300mAh ,por eso para esta segunda generaciones se buscaba tanto más autonomía y fiabilidad . La fiabilidad es a menudo un intercambio de energía con el consumo : más controles , más mensajes, más tiempo despierto .
Fuente aqui

Smartwatches en entorno abierto


Aunque suene muy novedoso Secret Labs (los creadores de Netduino)y House of Horology   tuvieron ya hace tres años allá por 2013  tuvieron  una la idea  de crear el primer reloj inteligente abierto   :Agent , un smatwatch  muy  similar a lo que proponen hoy en día  ,pero claramente con recursos innovadores para su época como era  la carga inalámbrica y la pantalla de tinta electrónica.

El reloj cuenta  con procesador  a 120MHz ARM Cortex-M4 con  secundario  AVR co-processor  siendo la pantalla de 1.28 “(128 x 128)con retroiluminación inteligente
lente de cristal anti-reflejo

Lleva integrado  Bluetooth 4.0 BD / EDR + LE,  un acelerómetro de 3 ejes ,Sensor de luz ambiental, motor de vibración y carga inalámbrica Qi

respecto a la batería es muy interesante pues se ha diseñado el reloj para permitir la reparación y reciclaje de este incluyendo la batería reemplazable , teniendo una autonomía de 7 días duración de la batería (típica)  y 30 días en modo de sólo su esfera

Entre sus muchas virtudes este reloj puede ejecutar  aplicaciones escritas en C # utilizando Microsoft Visual Studio 2012 ( incluyendo la edición gratuita Express) desplegando sus propias aplicaciones a través de Bluetooth y por supuesto depurando de forma interactiva .

Para crear apps para este reloj solo  se necesitan tres herramientas gratuitas:

  •  Visual Studio Express 2012
  •  .NET Micro Framework SDK v4.3 QFE1
  • Agente de descarga del SDK v0.3.0 (febrero de 2014 de vista previa)

Asimismo los desarrolladores también pueden utilizar el reloj como una pantalla secundaria , interactuando con él de forma remota a través de Bluetooth de su Objective-C , C #, Java o aplicación de teléfono inteligente .

Y por cierto al igual que su teléfono inteligente, este reloj  ejecuta aplicaciones descargables .Estas aplicaciones pueden hablar con los dispositivos Bluetooth tradicionales, tales como teléfonos inteligentes y monitores de ritmo cardíaco , así como la nueva generación de dispositivos Bluetooth de baja energía, tales como cerraduras de las puertas .Por supuesto la conexión con el smartphone ,permite a las  aplicaciones también recuperar la información desde Internet, que le puede mantener al día con las cosas que son más importantes para usted .

agent.PNG

 

El proyecto se lanzó kickstarter   y  se llama Agent .La friolera de casi 6000 personas (exactamente  5.685 patrocinadores) contribuyeron con  1.012.742 $ para ayudar a dar vida a este proyecto, que aun no ha concluido por los números escollos que ha tenido en el aspecto hardware preveyendo que muy pronto de la luz.

 

En la otra cara de la moneda , tenemos otra propuesta muy diferente llamada culbox,   que pretende ser  el smartwatch de código abierto programable con Arduino

Culbox es una pulsera de código abierto con la que puede interactuar con los proyectos realizados con Arduino. Se puede programar a través del IDE de Arduino, siendo muy sencillo usar las diferentes librerías de Arduino con él..

Se trata de un reloj de pulsera de código abierto con Bluetooth integrado  contando ademas con diferentes  sensores como son un sensor de movimiento de 6 ejes , sensor de presión de aire ,altimetro,etc.

Cuenta con un procesador de 32 bits ARM Cortex ,, una pantalla de 1.5″OLED, 3 botones, y todo lo necesario en un reloj.

culbox1

CulBox viene con una aplicación tanto para teléfonos Android como para IOS que se puede utilizar como una plantilla para realizar distintos proyectos.

Acepta tarjetas microSD. También hay un puerto de usos múltiples como la carga de la batería o conectar el dispositivo a Arduino para la programación. Enlace al proyecto en Kickstarter. Y a su web.

 

 

Manejo de un robot con node.js


Node.js es un entorno en tiempo de ejecución multiplataforma de código abierto  para  servidor , aunque como vamos a ver,  se puede usar para otros propósitos . Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. 

Es un lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Goog asi que desde este punto de vista Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y JEE de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket.

Como nota  muy diferenciadora,al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor.

Asimismo Node.js implementa algunas especificaciones de CommonJS   e  incluye un entorno REPL para depuración interactiva

Tal es la potencia de  Node.js  que ya existen plataformas basadas en este entorno para intereactuar con placas como Arduino ,Linino. Intel Edison, Raspberry pi,etc  en aplicaciones de Robotica o plataformas de IoT

Johnny – Five    es una Plataforma JavaScript Robótica  e  IO  lanzada por bocoup en 2012  y mantenida por una comunidad de desarrolladores de software apasionados e ingenieros de hardware (más de 75 desarrolladores han hecho contribuciones a la construcción de éste).

onny

Como  ejemplo de “Hola Mundo”  con un LED parpadeante sencilla , el  siguiente ejemplo para Arduino nos muestra lo sencillo que es hacerlo en el entorno de Johnny Five :

 

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var led = new five.Led(13);
  led.blink(500);
});

 

  • Ejecute el  códido Run: npm install johnny-five

 

Como ejemplo mas avanzado en el repositorio de github  (https://github.com/stylixboom/lr_motor ) Siriwat Kasamwattanarote   nos ensela  como podemos  controlar  un coche de juguete  directamente a través de SSH  (mediante  el terminal)  usando  Node.js.

Desde SSH no  se aceptan 2 teclas de flecha al mismo tiempo, es por eso que la forma en que gira a la izquierda / derecha no es tan suave (al cambiar las dos teclas en consecuencia) pero el funcionamiento es muy fluido

Los requerimientos son los siguientes:

 

Este proyecto es pues aprender a controlar dos motores ( izquierda – derecha) mediante el uso de la Raspberry Pi . El código proporcionado  está escrito en Node.js , y requiere un paquete de ‘ Pigpio ‘ para  acceder al puerto GPIO en la Raspberry Pi . ‘ Pulsación ‘ es escuchar a la entrada de teclado de la tecla de flecha ( arriba-abajo – izquierda – derecha) .

Este experimento apoya dos controladores de motor diferentes :

  • Toshiba – TB6612FNG Texas Instruments
  •  L293D

Notas:

-TB6612FNG es más eficiente , pero más caro (unos  10 $ ) , y se necesita soldadura .

 

TB6612FNG
Ref: http://www.robotshop.com/media/files/PDF/Datasheet%20713.pdf
Truth table
Input                           Output
IN1     IN2     PWM     STBY    OUT1    OUT2    Mode
H       H       H/L     H       L       L       Short brake
L       H       H       H       L       H       CCW
L       H       L       H       L       L       Short brake
H       L       H       H       H       L       CW
H       L       L       H       L       L       Short brake
L       L       H       H       OFF(High ohm)   Stop
H/L     H/L     H/L     L       OFF(High ohm)   Standby

-L293D es mucho más barato ( $ 0,6 ) y más fácil de utilizar con una placa.

L293D
Ref: http://www.robotplatform.com/howto/L293/motor_driver_1.html
Truth table
Input                   Function
PWM     IN1     IN2    
H       H       L       Reverse
H       L       H       Forward
H       H       H       Stop
H       L       L       Stop
L       X       X       Stop

En caso de usar la primera opcion , este es el esquema seguido: 





Una vez montado el circuito y ya vez tenga el código descargado  (https://github.com/stylixboom/lr_motor)  ,simplemente para ejecutarlo use :

                        $ sudo node app_t.js

Finalmente en el vídeo que os dejo a continuación podemos ver el conjunto del  robot utilizando una Raspberry Pi combinando NodeJS y el controlador de motores. .

Reconocimiento de imagenes para Raspberry Pi


La famosa librería TensorFlow fue originalmente desarrollada por investigadores e ingenieros que trabajan  dentro de la organización de investigación de la máquina de Inteligencia de Google estando el sistema  diseñado para facilitar la investigación en el aprendizaje de máquina, y para que sea rápido y fácil de transición del prototipo de investigación al sistema de producción.

Aunque se piense que es una librería consolida (la ultima versión es la 10,Release 0)  , TensorFlow no está completa, pues está construida  pensando en ser  mejorada, y extendida. El equipo de desarrollo ha hecho una versión inicial del código fuente, y en la actualidad están haciendo esfuerzos internos de desarrollo a utilizar un repositorio público de los cambios del día a día realizados por el equipo en Google. Esperan construir una comunidad de código abierto activa que impulse el futuro de esta biblioteca, proveyendo de retroalimentación y contribuyendo activamente al código fuente.

 

Nuestro cerebro hacen que la visión parecen fácil pues no se necesita ningún esfuerzo para el ser humano de distinguir un león y un jaguar, leer una señal, o reconocer el rostro de un ser humano. Pero estos son en realidad problemas difíciles de resolver con un ordenador: sólo parece fácil porque nuestros cerebros son muy buenos en la comprensión de las imágenes.

En los últimos años el campo de aprendizaje de la máquina ha hecho enormes progresos en hacer frente a estos problemas difíciles. En particular, hemos encontrado que una especie de modelo  llamado convolutional neural network  puede lograr un rendimiento razonable en las tareas de reconocimiento visual duros igualando o superar el rendimiento humano en algunos dominios.

Los investigadores han demostrado un progreso constante en la visión por ordenador mediante la validación de su trabajo contra IMAGEnet ( un punto de referencia académica para la visión por ordenador). Modelos sucesivos siguen mostrando mejoras, y cada vez que ese consigue un  logro,el  resultado nuevo mejora el estado de la técnica: QuocNet , AlexNet , Inception (GoogLeNet) , BN-Inception-v2 . Los investigadores tanto internos como externos a Google han publicado artículos que describen todos estos modelos, pero los resultados son todavía difíciles de reproducir .En este momento se esta  dando el siguiente paso mediante la liberación de código para ejecutar el reconocimiento de imágenes en nuestro último modelo, Inception-v3 .

Inception-v3 está capacitado para el IMAGEnet grande Reconocimiento Visual Challenge utilizando los datos de 2012. Se trata de una tarea estándar en la visión por ordenador, donde los modelos tratan de clasificar las imágenes completas en 1000 clases , al igual que la “cebra”, “dálmata”, y “lavavajillas “. Por ejemplo, aquí están los resultados de AlexNet la clasificación de algunas imágenes:

 

Para comparar los modelos, examinamos la frecuencia con que el modelo no puede predecir la respuesta correcta como uno de sus 5 mejores conjeturas mediante el denominado “top-5 índice de error” . AlexNet ha logrado mediante el establecimiento de un top 5 , llegar  a una tasa de error del 15,3% en un dataset de validaciones de  2012 . BN-Inception-v2 alcanzan el 6,66% y  Inception-v3 alcanza el 3,46%.Karpathy intentó medir su propio rendimiento y  alcanzó el top-5 tasa de error de 5,1%.

Ahora vamos a ver  un ejemplo  en Python  para cómo utilizar Inception-v3 para  cómo clasificar las imágenes en 1000 clases en Python o C ++ . También es interesante saber cómo extraer características de nivel superior de este modelo que pueden ser reutilizado para otras tareas de visión.

 

Descargue el modelo  classify_image.py  de tensorflow.org cuando el programa se ejecute por primera vez. Usted necesitará unos 200 Mbs de espacio libre disponible en el disco duro.

Las siguientes instrucciones puede ejecutarla  suponiendo  que ha instalado TensorFlow de un paquete PIP y que su terminal reside en el directorio raíz TensorFlow.

cd tensorflow/models/image/imagenet python classify_image.py

El comando anterior clasificar una imagen suministrada de un oso panda.

Si el modelo se ejecuta correctamente, la secuencia de comandos producirá el siguiente resultado:

giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.88493) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00878) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00317) custard apple (score = 0.00149) earthstar (score = 0.00127)

Si desea suministrar otras imágenes JPEG, puede hacerlo editando el  argumento  –image_file.

Si descarga los datos del modelo en un directorio diferente, tendrá que señalar –model_dir al directorio utilizado.

 

Como ejemplo de uso  se  puede  utilizar  una combinación de OpenCV junto con la librería TensorFlow de Google para utilizar redes de neuronas en Google Cloud para entrenar un modelo de clasificación en la nube.

El japones  Kazunori Sato   ha intentado clasificar verdura ( pepinos )   con el uso de esta  librería implementada  en una Raspberry Pi junto a una webcam para analizar visualmente cada  pieza de verdura  y poder clasificarlos  por tamaños  de una manera eficiente.

Mediante una pequeña máquina casera que han diseñado, a la que  han añadido varios  servos(para expulsar las  muestra clasificadas)  junto a  una cinta transportadora  para transportar las muestras ,  todos controlados  por la raspberry pi  consiguen una eficiencia teórica de más de 95% de acierto,   si bien como se puede ver en el ejemplo, el funcionamiento es algo lento.

En el siguiente video puede ver pues una aplicación practica de uso de esta librería:

 

 

 

 

Para obtener información sobre las redes neuronales en general,l libro online gratis de Michael Nielsen es un excelente recurso. Para las redes neuronales convolucionales, en particular, Chris Olah tiene algunas buenas entradas de blog , y el libro de Michael Nielsen tiene un gran capítulo sobre estas.

Para obtener más información sobre la aplicación de redes neuronales convolucionales, puede mirar el tutorial de TensorFlow sobre  redes convolucionales  o empezar un poco más suavemente con  ML 

 

¿Se puede reparar una batería agotada?


Cuando una batería esta mucho tiempo descargada , o muy vieja , etc… se dice que se ha “sulfatado” porque básicamente , se forman  sales de plomo y azufre (sulfato-de-plomo) que se adhiere a la placa esponjosa del negativo  bloqueando las reacciones químicas. Normalmente llegado a esta batería se da por perdida para siempre y se reemplaza por otra nueva….

Con un poco de astucia ( y sobre todo que ahora que el plomo vale tres  veces mas  ) , las viejas  baterías incluso aunque no sean de plomo o gel (NiCD  o iones de Litio)   aun se puede alargar su vida util¿pero cómo?Pues  vamos a ver dos métodos,  siendo el primero útil solo para las baterías de plomo o las gel de Pb y el segundo método  idóneo para todo tipo de baterías  (Pb ,Gel de Pb  ,NiCd, Li+, etc )

El segundo método como vamos  a ver es el mas efectivo y seguro  !incluso  puede ser útil en caso de emergencia para recuperar combinaciones de pilas domesticas alcalinas!

 

METODO  1: AÑADIR AGUA DESTILADA  (BATERÍAS DE GEL O PLOMO)

Bueno la cuestión es que las baterías de plomo ácido  modernas  o las de gel  el electrolito está gelificado y absorbido en los aisladores de entre las placas, que en vez de ser rígidos, son una especie de paño sintético, son baterías “libres de mantenimiento”.Con el correr del tiempo esta se secan, lo mismo que cuando las baterías del auto se quedaban sin agua. Así que el truco consiste en sacar los taponcitos de goma que hay debajo de la tapa que ya sacamos y reponerle líquido (pueden ser dos y hasta tres tapas, según el fabricante)

Para intentar reparar la batería necesitará:

  •  Jeringa de 3 cm
  •  Voltímetro o multímetro
  •  Cargador de batería o fuente de alimentación
  •  Los cables de cocodrilo “que se utiliza con la fuente de alimentación”
  •  Agua destilada
  • Por seguridad gafas  y guantes químicos

Atención !No toque el agua que puede salir  de la batería pues  es ácido que al ser tan  corrosivo podría generarle quemaduras muy graves

El método  es valido  para intentar reparar  baterías de gel, compuestas por ácido y plomo simplemente agregando agua destilada en sus celdas para reactivar su carga original pero también es funcional para baterías de plomo selladas.  El método   funciona en el 90% de  los casos pero en caso de recuperarla  la batería funcionará entre el 50% ~ 70% de la capacidad  que tenia.

gel

PASOS A SEGUIR:

  1. En la batería sellada nos encontraremos con tapa en la parte superior de la batería:simplemente eliminarlo a poco destornillador plano hasta el final donde  nos encontraremos con 3 agujeros cubiertos por tapas de goma. Ahora tenemos que eliminar esta capsula también.
  2. Ahora vamos a medir voltios de esta batería. Por ejemplo  puede ser una lectura de 0,76 voltios,lo cual quiere s decir que la batería esté completamente seco desde el interior
  3. Ahora lo que necesitamos en esta etapa es llenar la batería con agua destilada para activar el ácido de nuevo,por lo tenemos que volver a llenarlo con una jeringa poco a poco o hasta que el agua salga de todos los agujeros y medir la tensión:si  se encuentra que aumentó en mVolts, eso es bueno, así que no se  preocupe
  4. Después de llenar la batería con el agua que necesitamos para asegurarnos de que se mezcla con ácido seca dentro de la batería para reactivar de nuevo  ésta
  5. Debería utilizar cualquier  un cargador   adecuado  a la tensión de la batería y conectarlo  a los bornas
  6. Ahora bien, esperar 5 minutos hasta ver que las burbujas salen de los agujeros. Si no hay burbujas o provienen de cualquiera de los 3 agujeros puede  invertir negativo y positivo y esperar 1 ~ 3 min  máximo (ESTO ES MUY PELIGROSO POR LO QUE DEBE ESTAR PROTEGIDO  Y POR  ELLO  NO DEBE DEJARLA SOLA NI SOBREPASAR EL TIEMPO MÁXIMO DE 3 MINUTOS)
  7. Si salen de los agujeros demasiado rápido como hirviendo cortar de inmediato la alimentación y vuelva a conectar negativa y positiva la derecha de nuevo
  8. Cuando el proceso este regularizado ( salen burbujas por todos los agujeros ) ha terminado el proceso así que puede sacar el  agua no consumida de la parte superior de 3 agujeros con una  jeringa y dejar de cargar la batería
  9. No cubra los agujeros hasta que se recupere la  tensión de la batería (debería  comprobarlo  cada  hora)
  10. Cuando  se seque  el tejido ya puede  cubrir todas los agujeros   reponiendo todos los tapones sacados  en el punto 1
  11. !Felicidades su batería está funcionando de nuevo !

 

Si quiere saber mas detalles de este proceso  consulte este instructable

MÉTODO 2  :  USO DE UN PUENTE DE DIODOS  Y UN CONDENSADOR

Existe un método bastante práctico ,económico y bastante mas seguro que el método anterior para intentar reparar  todo tipo de baterías  (Pb ,Gel de Pb  ,NiCd, Li+, etc )

La versatilidad del  método es tal que incluso   puede ser  utilizado en caso de emergencia para recuperar combinaciones de pilas domesticas alcalinas,pero eso si ,solo  “pilas ”  alcalinas ,basándose es que realmente este tipo de pilas ,aunque le parezca increíble , en realidad si son recargables.

Para intentar reparar una batería necesitará:

  • Un puente de diodos de potencia de 50A  y 10ooV ,como por ejemplo  el modelo KBPC 5010( puede conseguirlo aqui )
  • Un radiador para el diodo
  • Un condensador  entre 10mF a 50mf  1000V no polarizado (dependerá de la capacidad de la batería a recargar). Puede conseguir uno de 2omf y 400V aqui 
  • 2 bornas de cocodrilo
  • 1 cable AC

El Recuperador y cargador de baterías  se basa  en  que las baterías  dejan de admitir carga por la sulfatación de las placas, limpiando  mediante este sistema  el sulfato entre las placas reviviendo las baterías hasta un 85 % de cuando eran nuevas. En el 90 % de los casos son recuperables por bastante tiempo mas de uso usando este sistema

El circuito como puede ver en  el esquema de mas abajo ,no puede ser mas simple ,  pues  como adelantábamos,   solo se utiliza un puente de diodos de potencia ( es muy conveniente acoplarle de hecho un radiador ) y un condensador  no polarizado  de unos 400V  (normalmente usados en el arranque de  motores de alterna)

 

supercargador

 

Como punto muy importante,para seleccionar el condensador  es qeu debe estar dimensionado para que no proporcione mas de 1/1o la intensidad máxima soportada por la batería , es decir la batería debe ser cargada con un 10 % del amperaje total de la misma.

 

Por ejemplo  si la batería tiene una capacidad de 10 amperios/hora  (10AH) , la carga deberá ser como máximo de 1 amperio, regulándose precisamente este amperaje  con la capacidad del condensador (a mayor capacitancia, mayor amperaje de carga),resultando  el voltaje   de salida que recibirá la batería  variable yendo  acomodándose  a medida que adquiera carga

Es muy importante anotar  que la tensión de alimentación de  este circuito sera de 220 o 110 voltios de alterna por lo que habrá que extremar la precauciones  sobre todo a la hora de manipular el circuito,

 

Como referencia  tenemos aquí una tabla que relaciona  capacidades de condensadores para obtener la corriente necesaria(:

 

4,5V ( 3 pilas AAA en serie) 1,5mF
 5,5V /4 pilas AA en serie)  1,5mF
 bateria de 12V 1,2AH  2,5mF
 Bateria de 3,7V Iones Litio 2,2AH  2,5mf
 Bateria de gel 12v 2,3AH  3,75mf
 Bateria de gel de 4v  4,5AH  5mf
 Bateria de gel 6v 5AH 5mf
 bateria de gel  12v 4,5AH  5mf
 Bateria de gel 12v  7AH  10mf
 Bateria de gel  12v 12AH  15mf
 Bateria Pb 12v  45AH  50mF

Nota: si no se dispone o no conoce la capacidad del condensador necesaria  empiece  por la mas baja  y vaya subiendo el valor de este. Si no dispone de condensador de la capacidad adecuada también puede asociar condensadores en paralelo para obtener la capacidad necesaria( en paralelo se suman las capacidades)

 

Es muy interesante  destacar que, como básicamente  el método para obtener la corriente adecuada esta basado en la experimentación , es muy interesante  que en la carga usemos un voltimetro  y un amperimetro para vigilar  tanto la tensión de la batería  como la corriente absorbida , variando en función de esto el condensador  siguiendo la regla de no superar 1/10 el valor de la capacidad de la batería.

 

Y un ultimo apunte:  el tiempo necesario dependerá de  la capacidad de la batería : como sabe la capacidad en amperios x hora y sabe la corriente aplicada  en amperios simplemente    tendrá que  dividir  ambos valores para obtener el tiempo en horas  necesarias para  que este cargado su batería

 

NOTA: Si la tensión es anormalmente alta o muy baja  es síntoma de que la batería no se puede recuperar…!lo siento!

 

 

Simple modificación de un mando dual para automatización del hogar


En el post de hoy vamos a ver como con una  simple  modificación del circuito comercial (concrétamente el kit jm80) de un receptor de un mando dual podemos convertir el circuito de radio control de un sistema eléctrico del hogar ( persiana eléctrica,puerta eléctrica, etc)  en un elemento  que nos abra la puerta a la automatización del hogar gracias  a que nos va a ser posible el control por tres vías posibles:

  • A distancia por el mando
  • Por control manual   por si perdemos el  mando o deseamos inhibir este
  • Por control mediante  un circuito auxiliar (Arduino).

 

conjunto.PNG

El circuito que vamos a usar es un económico kit  de 12€ que se puede comprar en Amazon aqui  .Sus características mas importantes son las siguientes:

  • 433 MHz, 2 Relay, alrededor de 150 metros
  • Incluye palanca/momentáneo/Latching chip
  • Min Voltaje/Corriente de conmutación: 5VDC 100 mA.
  • Max conmutación Voltaje: 110 VDC 240 VAC. Max Corriente de conmutación: 15 A.
  • Potencia de conmutación nominal: 1,875 va 360 W para cada relé
  • Canal: 2 canales
  • Voltaje de funcionamiento: DC 12 V
  • Corriente estática: < = 7ma electrónico contacto
  • Capacidad: 7 A 240 V AC, 10 A 24 V DC
  • distancia de transmisión: 150 – 200 metros (sin obstáculos)
  • codificación tipo: soldado modificar DIP chip de cambio de modo de control
  • Frecuencia de operación: 433 MHz
  • Modos de control: Elija con cierre o non-latching por el cambio un chip DIP carga nominal: 2000 W
  • Dimensión (LWH) (mm): 55 x 40 mm

 

Un  característica interesante para el caso de que montemos varias unidades es que es posible configurar receptor  y transmisores para otras combinaciones modificando los puentes de la combinación de acceso (por fiabilidad han sustituido el conmutador por puentes)

 

placas.PNG

Este kit incluye ingeniosamente tres chips que insertando alguno de estos  en el zócalo DIL del CI  del receptor permiten operar el receptor en tres  modos muy diferentes:

  • Tipo  Latch : al pulsar un botón,el relé interesado se conecta  hasta que pulse el otro. Muy parecido a los botones de velocidad de los ventiladores  que conectan otro bobinado ( y desconectan el anterior ) al activarlo
  • Tipo de non-latch (momentáneo): al pulsar un botón el relé interesado se conecta hasta que  usted lo libera. Al igual que el botón de claxon, si usted pulsa el claxon suena hasta que lo libera ;
  • Tipo de auto-latch (botón): al pulsar un botón el relé interesado se conecta  hasta que usted pulsar una vez más para desconectarlo.Este modo esta claramente ideado por ejemplo para abrir o cerrar la persiana eléctrica completamente sin necesidad de tener que estar pulsando el botón .También es útil para activar  o desactivar a distancia cualquier dispositivo como por ejemplo una TV, un equipo hifi,etc   funcionando en resumen como  la clave de potencia de mando a distancia de TV: al pulsar  TV, se enciende pero si se pulsa  de nuevo, TV se  apaga. Es esta configuración la que viene predefinida en el kit ,por lo que si necesita modificar el tipo de operación en non-latch o latch tendrá que cambiar el chip  que acompaña el kit

placareles1.png

Centrándonos en el receptor que  como vemos opera a 12 V DC, este cuenta con dos reles de  7A (220V).Cada relé cuenta con  un contacto común  y dos contactos móviles : uno abierto (correspondiente a la operación ) y  otro  cerrado (correspondiente al reposo).

En el siguiente esquema podemos ver claramente su significado:

esquema reles.PNG

Aunque el contacto en reposo(CB)   puede servir para muchas aplicaciones, para el  uso “normal ” se  utilizaran los contactos de trabajo( AB) para activar o desactivar las cargas a las que los conectemos estos , como por ejemplo el motor de una persiana eléctrica que tiene dos bobinados ( uno para subida y otro para bajada)

Este equipo , aun como vemos es muy versátil ,sin embargo  no incluye operación manual en el propio receptor ,ni tampoco  ningún tipo de tele-operación para poder activar los reles por medio  de algún automatismo  (Arduino ;Netduino ,Raspberry Pi,etc),lo cual puede ser un inconveniente  con vistas a automatizar nuestro hogar

La  modificación que se propone a este estupendo Kit es la posibilidad de operarlo via diferente a la de radio ,pero al no tener terminales específicos con objeto de no dañar la electrónica de RF ,el latch o los transistores de salida, lo  mejor es operar directamente  con los bobinados de los reles.

La modificación probada para este kit , no puede ser mas sencilla pues simplemente consiste en localizar los bobinados de los reles (diferentes del positivo)   y  soldar  a estos  sendos cablecillos  permitiéndonos  usarlos si lo conectamos a la masa general  tanto para operar manualmente los reles como para tele-operacion por otro circuito

En la siguiente imagen podemos ver dos cablecillos grises soldados a la placa para el control manual de los reles:

 

IMG_20160904_185521[1].jpg

 

En cuanto a las conexiones de los hilos de control  obtenidos, el conexionado no puede ser mas sencillo ,pues  sólo conectaremos los hilos a dos pulsadores (normalmente abiertos)  y después uno  común  que ira a ambos pulsadores  y a la masa común de la alimentación(ov)

 

IMG_20160904_185441[1].jpg

Obviamente los hilos obtenidos  de la conexión de los bobinados de los relés no solo sirven para la operación por pulsadores , también puedes ser utilizados para la tele-operación del circuito vía un circuito auxiliar( por ejemplo constituido un Arduino con un  transistor de pequeña potencia )

Finalmente  para terminar el montaje se recomienda usar dos regletas de terminales  diferenciadas:

  • Una de muy baja tensión para los tres terminales ( los dos relés y la masa) para el tele-control   o para  el accionamiento manual de los pulsadores
  • Una de Baja Tensión  de  al menos 5 terminales para la alimentación del montaje y para apoyar las conexiones de  utilización del receptor ( en la imagen se ve como se alimenta desde ahí a  la fuente del receptor)

 

IMG_20160904_191156[1].jpg

 

Si le interesa hace esta mejora  , el kit que hemos usado en este post lo puede conseguir en Amazon por menos de 12€  , aunque como se ha comentado tendrá que soldar dos cablecillos a la placa ( puede perder la garantía del producto así que se recomienda probarlo antes de emprender esta sencilla modificación) ,pero la mejora sera bastante ostensible pues abre un abanico inmenso de posibilidades

 

 

Proyecto en c# para Raspberry pi


 

En efecto , aunque hemos hablado en muchísimas ocasiones de múltiples ejemplos en c# usando la plataforma Netduino  es poco frecuente ver aun ejemplos que usen la plataforma de desatollo de Microsoft de IoT  en otros entornos.

Precisamente  en el siguinte  ejemplo  de como implementar  una estación  meteorológica  en una Raspberry Pi , se demuestra cómo aprovechar la potencia de Windows 10 IO Core, y crear una estación meteorológica con  un escudo de Sparkfun(Sparkfun DEV-12081)  en una Raspberry pi que corre Windows 10 (puede ser la versión  2 o también la  3).

Este proyecto forma parte de la iniciativa de Microsoft llamada  Hack the Home , que proporciona componentes de código abierto para minimizar  el esfuerzo en la creación de  interfazes con los dispositivos y servicios a  usar para enfrentarse a sus hogares.

Antes de describir   como lo han hecho en el vídeo podemos ver  una introducción a la plataforma de windows IoT;

 

El nuevo espacio de nombres Windows.Devices de las API de Windows Plataforma universal (UWP) en Windows 10, permite a los desarrolladores aprovechar la potencia de Windows  en la interacción con el mundo real a través de sensores y actuadores utilizando el bus I2C y los puertos de uso general de entrada / salida (GPIO) disponibles en el Raspberry Pi 2, para crear una estación meteorológica conectada a Internet utilizando la protección contra la intemperie Sparkfun.

Las instrucciones proporcionadas darán un desarrollador de primera mano la configuración del hardware requerida junto con la escritura y depuración de Windows recientemente disponible en  windows 10 llamada UWP Windows.Devices API’s.

En este ejemplo,  también se demostrará cómo agregar sus datos en la nube utilizando el Azure Event Hub y  ConnectTheDots API.

Para  empezar , lo primero es conexionar   los  pines desde la Raspberry Pi 2 a la placa Sparkfun(Sparkfun DEV-12081)

Este es el conector de la Raspberry Pi 2:

GPIO esquemática (pata 1 está marcada con una almohadilla de soldadura cuadrada)

El diagrama de conexiones de  la Raspberry Pi  hacia la placa de Sparkfun   es el siguiente:

  •  GND (negro) —— GND
  • 5V (rojo) ——— VIN
  • 3V3 ——- (marrón) —— 5V (escudo truco; no es un error)
  • GPIO2 —– (amarillo) —- SDA
  • GPIO3 —- (naranja) —- SCL
  • GPIO5 —– (verde) —– D8
  • GPIO6 —– (azul) ——- D7

Cableado de cerca del carril exterior (negro, rojo)

 

Con la placa Weather Shield es muy fácil de hacer funcionar con Arduino  ofreciendo  de por sí la presión barométrica, humedad relativa, luminosidad y temperatura. También hay conexiones para sensores opcionales tales como la velocidad del viento, dirección, pluviómetro y GPS para la ubicación.

Utiliza el sensor de humedad HTU21D, de presión barométrica MPL3115A2, un sensor de luz ALS-PT19 y se basa en la librería HTU21D y MPL3115A2 para Arduino. Dispone de dos posiciones para soldar conectores RJ11 (para sensores opcionales de lluvia y viento) y un conector GPS de 6 pines (para conectar un GPS opcional). Puede funcionar desde 3.3V hasta 16V y tiene un regulador de voltaje integrado.

 

En cuanto al sw de  la estación meteorológica  en realidad se compone de  dos aplicaciones:

  • La primera es una bucle largo por tiempo indefinido, que trabaja  de fondo leyendo el estado de los sensores y actúando como un servidor de estación meteorológica.
  • La segunda, una interfaz de usuario que realiza una solicitud al puerto 50001 del servidor mostrando los datos. La aplicación de interfaz de usuario es universal y se puede implementar en cualquier dispositivo Windows desde el Raspberry Pi 2 hasta el final a un PC de escritorio – y en cualquier lugar en el medio!

Es necesario encontrar la siguiente línea en el archivo `Mainpage.xaml.cs` del proyecto` build2015-tiempo-station`, y vuelva a colocar el nombre del equipo, “MINWINPC”, en la dirección URL con el nombre de su dispositivo IO.

//TODO: On the following line, replace "minwinpc" with the computer name of your IoT device (ie "http:// :50001").

private Uri weatherUri = new Uri("http://minwinpc:50001");

 

1-Seleccione la rama “lab_ConnectTheDots”, si desea aprender a utilizar connectthedots y completar el código manualmente

2-Abrir “WeatherStation \ WeatherStation.sln” en Visual Studio 2015

3-Vaya a “WeatherStationTask.cs” en el panel “Explorador de soluciones”

4-Utilice la “Lista de tareas” para saltar a cada “TODO //:” y escribir el código necesario

Los archivos AppSettings, ConnectTheDotsSensor, y ConnectTheDotsHelper son parte del código creado para ayudarle a utilizar la interfaz connectthedots al Hub Evento Azure.

AppSettings: Guarda los ajustes para la conexión al hub de eventos

Esta información se puede encontrar bajo su ServiceBus en Azure.

5-Vaya a su “* ns” instancia ServiceBus -> Evento Ejes -> ehdevices -> Información de conexión -> Busca el SAS “D1”

6-Copiar la cadena de conexión que debe tener este aspecto (Contiene información para sus AppSettings)

"Endpoint=sb://iotbuildlab-ns.servicebus.windows.net/;SharedAccessKeyName=D1;SharedAccessKey=iQFNbyWTYRBwypMtPmpfJVz+NBgR32YHrQC0ZSvId20="

  • servicio de espacio de nombres de autobús (Ej: “iotbuildlab-ns”)
  • nombre del evento cubo (Ej: “ehdevices” – siempre usar esto)
  • nombre de la clave (Ej: “D1”)
  • clave (Ej: “iQFNbyWTYRBwypMtPmpfJVz + NBgR32YHrQC0ZSvId20 =”)
  • nombre de visualización (Ej: “WeatherStation1” – Esto le da un nombre a los datos del dispositivo)
  • organización (Ej: “Construir la IO Lab” – Cambio de personalizar)
  • ubicación (Ej: “EE.UU.” – Cambio de personalizar)

ConnectTheDotsSensor: Contiene la información de un sensor

  • GUID
  • mostrar nombre
  • organización
  • ubicación
  • nombre de la medida
  • unidad de medida
  • hora de creación
  • valor

ConnectTheDotsHelper: Las funciones auxiliares para inicializar el Hub de eventos

  • establece la conexión
  • crea los tokens de autenticación

Si desea iniciar su propio concentrador de sucesos de servicios de fondo, siga las instrucciones del connectthedots GitHub repositorio:https://github.com/msopentech/connectthedots/blob/master/Azure/AzurePrep/AzurePrep.md

.

7-Una vez que haya que desplegado, debe iniciar el envío de datos al cubo evento y los datos debe ser visible en http://iotbuildlab.azurewebsites.net/ o en su propio sitio web.

 

Fuente  aqui