jueves, 10 de noviembre de 2016

Sistema de alimentación ininterrumpida (SAI) o uninterruptible power supply (UPS) para arduino y ESP8266




Un Sistema de alimentación ininterrumpida (SAI), en inglés uninterruptible power supply (UPS), es un dispositivo que gracias a sus baterías u otros elementos almacenadores de energía, puede proporcionar energía eléctrica por un tiempo limitado y durante un apagón eléctrico a todos los dispositivos que tenga conectados. Otras de las funciones que se pueden adicionar a estos equipos es la de mejorar la calidad de la energía eléctrica que llega a las cargas, filtrando subidas y bajadas de tensión y eliminando armónicos de la red en el caso de usar corriente alterna.

Precisamente, ahora que tenemos el proyecto encauzado y más o menos todo en marcha, es hora de dedicarle un rato a como alimentaremos nuestras placas de arduino y electrónica.
Principalmente, haciendo un repaso me he dado cuenta que solamente trabajaremos con dos voltajes distintos: 3,3v para los esp8266 y 5v para las placas de arduino.

Es importante alimentar de manera correcta, sobre todo los esp8266 porque de no hacerlo, o de tener cortes de corriente, se comportarían de manera bastante peculiar, fallarían, transmitirían caracteres extraños o perderían datos.

Lo que pretendo crear no es una gran reserva de energía que aguante días sin apagarse, sino unas pequeñas baterías con estabilizadores para que una vez se vaya la corriente conmute a las baterías y siga teniendo los 3,3v y 5v que necesito.

Para ello voy a comentar los materiales que yo he escogido y que funcionan bastante bien.

  • Una fuente de alimentación 
He escogido una fuente conmutada y regulada de 2A 5v. La entrada de esta fuente es AC 110/220 +-15% de tolerancia. La salida es DC hacia las placas arduino.

Es una fuente muy asequible, yo la he comprado en www.dx.com por el módico precio de 3,63€. Vemos que a la entrada tiene la oportunidad de tierra. Además está bien protegida por la carcasa metálica y adaptada para montar sobre un chasis dado sun agujeros para ello. Otra cosa que me parece bastante interesante es que tiene un borne para ajustarle los bornes de salida y obtener el voltaje correcto en cualquier caso. Viene protegida también para cortocircuitos, ya que si metes la pata la fuente se protege por si sola y no se quema. El Led de la salida indica que está encendida.

  • Un módulo cargador de 5v 1A
A la salida de la fuente de alimentación irá conectada la entrada de este módulo cargador.
La idea de esta placa es hacer la conmutación entra la batería que tendrá conectado nuestro circuito en cada arduino y la corriente eléctrica cuando la segunda sufra un corte. Además cuando todo funcione correctamente, la batería estará en continua carga.
Para ello he encontrado dos módulos prácticamente iguales, la diferencia entre uno y otro es que en uno solamente tiene un agujero donde soldar los cables que van a la batería y al circuito, y en la otra tiene un agujerito para cada uno.
El modelo en concreto es el TP4056 5v 1A y el precio es irrisorio. Los he comprado en www.aliexpress.com por menos de 0,30€ cada uno.


 Podemos observar un par de Led, uno indica que la placa está cargando una batería y la otra que está completamente cargada.


Por decirlo así, este módulo será el corazón de nuestro SAI. En la imagen superior veis por donde van los tiros a fala de un par de retoques. Las características técnicas más destacables las encontramos a continuación:
Item Name:  5V Mini USB 1A Lithium Battery Charging Board
Charge module: Linear charging
Current: 1A adjustable
Charge precision: 1.5%
Input voltage: 4.5V-5.5V
Full charge voltage: 4.2V
Work temperature: -10℃ to +85℃
Inverse polarity: NO
LED indicator: Red is charging,and GREEN is full charged
Input interface: Micro USB

Obtendremos más información del módulo pinchando aquí.

  • Un portapilas para pila de 3,7v



Poco hay que decir de esto, también por www.ebay.com, albergaran una pila de 3,7v que será la que haga de nuestra batería. La idea de tener un portapilas y no soldar una pila directamente al circuito es que estas pilas, aunque son de Li-ion, sufren desgaste y empeora su capacidad con el tiempo, por lo que tendré una manera cómoda de abrir las cajas y cambiar las baterías cuando quiera.
 El precio ha sido alrededor de 1€ cada uno.

  • Una pila de 3,7v recargable de Li-ion.
Este modelo es en concreto un UltraFire SZ 18650 de 9900mAh 3,7v. Aunque poco importa el modelo de pila que sea, sirve cualquiera que entre en el portapilas de 3,7v.
Según el fabricante, son de Li-on, no tienen efecto memoria y están protegidas contra corcocircuito y protección contra descarga. Además dice que la vida del PCB es de alrededor de 10 años. Es "GREEN".
Por el módico precio de 1,50€ las encuentras en www.dx.com



  • Un step-up de 3v a 5v 1A
Necesitamos un elemento que nos levante la corriente de los 3,7v de la pila de Li-Ion a 5v para alimentar al arduino en caso de que la corriente eléctrica falle. Si nunca fallase la corriente sería totalmente innecesario, pero si se corta y tiene que tirar todo el circuito de la pila, solo obtendría los 3,7v de la pila y sería insuficiente para alimentar nuestra placa de arduino. 

Este modelo en concreto lo he comprado en http://www.banggood.com por 1,14€.
A continuación teneis las características técnicas:

propiedades del módulo: no aislado módulo elevador (boost)
voltaje de entrada: 2.5-6v
tensión de salida: 4-12 v (ajustable (Necesidad de la sustitución de la resistencia a los ajustable), El valor predeterminado 5 v)
corriente de salida: 1000mA (max)
Eficiencia: 92% (max) (cuanto mayor sea el voltaje de entrada, mayor es la eficiencia)
frecuencia de conmutación: 1MHz
rizado de salida: 20mV (máximo)
temperatura de funcionamiento: industrial (-40 ° C a + 85 ° c)
regulación de voltaje: ± 2.5%
protección del cortocircuito: Ninguno (por favor utilice la batería de litio con la protección)
de entrada: + en algo positivo, en - negativo
Salida: La salida usb
tamaño: 3 x 1.3 x 0.8cm


  • Step-Down de 3,7v a 3,3v o regulador de tensión a 3,3v
La idea es que a la salida de la batería podamos también conseguir 3,3v para alimentar los ESP8266 en caso de corte de corriente. Con el Step-Up lo que conseguíamos era conseguir 5v a la salida para los arduino, pues bien, para los ESP8266 como funcionan a 3,3v es necesario el Step-Down que como su propio nombre indica sirve para bajar el voltaje.



El modelo que he escogido es el LM2596S. Este modelo, a diferencia de los otros, puede regular hsta 3A. Es además destacable que tiene el regulador de salida para manejar el voltaje dentro de los rangos que acepta de tensión.
Lo he comprado por www.ebay.com  por menos de 1€ cada uno.
Las especificaciones técnicas son las siguientes:
Input: DC 3V to 40v
Output: DC 1,25v to 35v



NOTA: Tanto el StepDown, como el StepUp, van pinchados en el mismo sitio. En los bornes de la batería.


Un consejo: Si podéis, todos los módulos que podáis en cuánto a corriente, aunque sean un poco más caros, comprad los con un regulador de tensión. Ya se sabe que los módulos electrónicos chinos no son la panacea de lo calibrados que vienen, y con el regulador y un buen polímetro podréis ajustarlos según convenga. 
Y si ya queréis tener todo de manera profesional, un voltímetro integrado, aunque puede que sea de mala calidad y no mida lo mismo que un buen polímetro, pero para la primera impresión de donde puede haber un error son suficientes.  


En este momento, y si disponéis de unos cuántos cables y estañador en mano o protoboard por el medio, ya estáis en condiciones de conectar todo el circuito. Y os enseñaré como mediante este tosco esquema: 



Poco tenemos que explicar de él que no hallamos hecho ya pieza por pieza.
En resumen, la fuente de alimentación alimenta el módulo de carga que por un lado tiene conectada la batería y por el otro el Step-UP y el Step-Down.
De manera habitual, la fuente de alimentación dará las dos salidas a 5v y a 3,3v además de cargar la batería de Li-Ion.
Si se corta la corriente de la fuente de alimentación, el módulo de carga conmutará, y la batería será la que alimente el Step-Up y el Step-Down. Tendremos tiempo más que suficiente para tomar acciones en caso de que no sea un corte de suministro momentáneo puesto que nuestra pila es casi de 10A.

Aquí os muestro como quedó nuestro circuito propio montado sobre una protobard






Los 4 pines que están sueltos corresponden a las salidas de 5v y 3,3v del circuito.

Y por último unas pruebas con el multímetro donde os enseño la conmutación del módulo de carga. En un vídeo la salida de 5v y en el otro la de 3,3v.










lunes, 7 de noviembre de 2016

Diferentes modelos del módulo Wifi ESP8266

Hola a todos en otro nuevo día,

en la entrada anterior del blog dejé clara mi intención de seguir trabajando con los ESP826 de manera rotunda a partir de ahora debido a las pruebas un poco decepcionantes realizadas con los módulos Cisexo XRF, así que no está de más presentar los diferentes modelos y características que andan por el mercado.

No pretendo recopilar de manera exhaustiva todo el tipo de módulos existentes, porque en esto del IoT cada día surgen nuevos modelos y modificaciones del mismo, adaptadores, shields, mejoras, distintos firmware para el mismo modelo, etc... y básicamente en lo que se diferencian es en el número y tipo de pines de las placas.

El Chip


Lo único que tienen en común es el tipo de chip. Independientemente de la manera en que se suministre al mercado.

Está diseñado y pensado para ser la solución ideal para todo el que necesite un “Todo en uno WIFI” para proyectos de hobby, IOT o producto comercial sin complicaciones.

  • Procesador interno de 32 bits a 80 MHz y se le puede subir hasta 160Mhz.
  • 80K de DRAM.
  • 35K de IRAM , memoria rápida para el procesador.
  • 1 Mb de memoria Flash para nuestros programas.
  • Stack TCPIP WIFI a 2.4 Ghz.
  • 30 Metros de alcance teórico.
  • 16 pines GPIO programables disponibles.  
  • Full TCPIP stack incluido.
  • Gestión completa del WIFI con amplificador incluido.
  • 802.11 protocol y Wifi Direct (P2P) Soft-AP.
  • Regulador y unidad de alimentación incluidos.
  • Consumo en reposo <10 mW.
  • Soporta antena externa para mayor alcance.
  • Soporta el bus SPI.
  • 1 entrada analógica (Muy mal documentada)

Hasta ahí son las características del chip, que lo comparten todos los modelos, y ahora pasamos a describir los modelos:


ESP8266 modelo ESP-01 


 












 Es el modelo más utilizado en el mercado desde que apareció. Es el que se utiliza en la mayoría de tutoriales y reviews en la red y permite conectarlo al puerto serie de nuestros Arduinos y aceptar comandos AT. Incluye un par de pines digitales disponibles GPIO0 y GPIO2, pero si al arrancar el modulo el GPIO0 está a GND, entra en modo de programación por lo que no conviene usarlo como entrada sino solo como salida. Los pines del módulo no vienen preparados para pincharlos en una protoboard, aunque existen diversos adaptadores para tal fin.
En ebay su precio oscila entre los 2€.


ESP8266 modelo ESP-02 














Tiene 3 pines digitales al exterior GPIO0, GPIO2, y GPIO15 y además acepta una antena WIFI externa lo que le hace muy interesante, para montajes que requieran alcance de la señal WIFI.
En ebay su precio oscila de 2 a 3€.


ESP8266 modelo ESP-03














Es uno de los módulos más interesantes porque dispone de más pines que el ESP-01, Saca los pines GPIO 2, 12, 13, 14, 15,16 e incluye una antena cerámica.
Este módulo tampoco puede conectarse a la protoboard directamente y necesita un adaptador.
Su precio en ebay oscila en los 2€.


ESP8266 modelo ESP-05



  











Su mayor interés es para usarlo con Arduino y otros micros como un simple módulo WIFI con comandos AT. No tiene ningún PIN extra, pero se puede conectar a la protoboard.
Su precio en ebay ronda los 2€.



ESP8266 modelo ESP-12















Este es probablemente uno de los modulas más interesantes, porque te da acceso a todos los pines del ESP8266, 11 GPIOs más 1 convertidor analógico a digital con antena integrada y buen alcance.
Como siempre su mayor defecto es que no puede insertarse en protoboard para pruebas, pero existen, naturalmente, adaptadores para ello.
Ha sido el modelo estrella hasta hace unos pocos meses que aparecieron los modelos de Olimex y NodeMCU, y es un modelo de lo mas interesanta para incluir en producto final si necesitas mas pines de las que dispone el ESP-01, pero para hacer prototipos sigues necesitando un adaptador FTDI a USB.


ESP8266 modelo ESP-07




















Es el que yo he utilizado. Exactamente igual que el anterior, pero con la mejora de que trae una antena cerámica y además un conector externo para poder acoplarle antenas externas, como ya hicimos en entradas anteriores de este blog.
Su precio oscila en los 2€ también pero no viene adaptado para pinchar en protoboard.

El shield que yo he estado utilizando es muy básico y requiere tener habilidad para soldarlo encima, aunque es también muy barato, no llega al euro. Seguro que os suena de verlo en entradas anteriores.

Y por último lo que está de moda a día de hoy... 


ESP8266 modelo NodeMCU

















NodeMcu son una iniciativa open Source para el desarrollo de un modelo sencillo de integrar la IOT en donde haga falta. Para ello desarrollan modelos de hardware y software que facilite el desarrollo de programas y aplicaciones basados en WIFI.
Aquí tenéis su página por si queréis ver lo que hacen NodeMCU.
Todos los pines disponibles del ESP8266 disponibles en el exterior, en un montaje que se puede colocar en una protoboard y además incluye un conector mini USB para programar el chip interno y comunicarse con el PC si es necesario, con lo que nos evitamos el adaptador FTDI a USB que siempre es engorroso.
Además soporta, tanto el modo Arduino o un modo propio de desarrollo con un lenguaje reminiscente de Basic que pueden ser cargados mediante actualizaciones firmware.

Digamos de manera muy grotesta que puede ser el sustituto de los Arduinos puros, puesto que combina los pines de los arduino con la wifi de los esp y tenemos un todo en uno. Su precio ronda los 5€.

viernes, 4 de noviembre de 2016

Ciseco XRF (Alternativa a los Wifi ESP8266)

En esta entrada dejaremos un poco de lado los módulos que hemos estado probando y configurando hasta ahora para hacer pruebas de cobertura con otros dispositivos alternativos a los ESP8266.

Se trata de los módulos Ciseco XRF, la mayoría de la documentación existente menciona los módulos XBee, que permiten a sus arduinos hablar sin cables entre sí. Sin embargo, los módulos de Xbee que he visto tienden a funcionar a 2,4GHz (junto con todos los dispositivos inalámbricos en mi casa y las casas de mi alrededor. Así que los Ciseco XRF son una buena alternativa a esta banda. Además, los XBee son moderadamente caros según sean de más o menos alcance en mW.
Por unos 10€, se puede obtener un módulo inalámbrico compatible con Xbee (Serie 1) que funciona en un rango de frecuencias diferentes dependiendo de como se configure (868.3MHz por defecto, pero también 315MHz, 433.5MHz, 868MHz, 903MHz y 915MHz), y tiene una gama estándar de aproximadamente 300 metros (aunque se gamas de más de 3km). Esto es en teoría, porque como veremos a continuación, leyendo estos alcances teóricos te esperas grandes resultados con estos módulos, pero los resultados que yo he obtenido con antenas de 3db dejan bastante que desear, llegando incluso a alcances similares de los ESP8266 y la cobertura tradicional de los puntos de acceso tradicionales.

Para las pruebas que vamos a llevar a cabo vamos a necesitar:

2 Arduino Uno
2 Módulos Cisexo XRF
2 Shield Xbee compatible V1 (yo tengo en concreto Keyes Xbee Shield)

La shield de Xbee se necesita porque los pins que traen por defecto los Ciseco son demasiado pequeños para montarlos en una protoboard.

Nota: Si quereis más información de pin, datos de conexión, etc... como son compatibles con Xbee versión 1 es mejor si buscais información acerca de ellos qu de los XRF propios. Encontrareis más de donde tirar del hilo.

Aquí teneis unas imágenes del material utilizado










El arduino Uno lo conocemos de sobra, así que me ahorro cargar de imágenes la entrada.
Como vemos, tiene un trozo de cable soldado en la salida inalámbrica y viene configurado por defecto en 868MHz, así que haremos las pruebas en esta banda.
Como este modelo fue prestado, mi director de proyecto cortó el trozo de cable que funcionaba a forma de antena y soldó un conector rp-sma base para poder enroscar antenas convencionales. Se verá en las fotos de a continuación.


Empezamos con la prueba rápida de cobertura...

 Los XRF son bastante simples de utilizar, simplemente es una cuestión de:

  1. Conectar las 3 PCB juntas (Shield de Xbee encima del Arduino, XRF encima de la shield).
  2. Habilitar el módulo XRF pinchando el pin 8 a High (3,3v).
  3. Lectura/Escritura entre los arduinos usando los comandos estándar Serial.read() / Serial.wite(). 

Las conexiones que hay que hacer básicamente son:


Los pines de los Xbee se leen de arriba a la izquierda a abajo, y a continuación de arriba a la derecha hacia abajo. Siendo el pin número 1 el de arriba a la izquierda y el 20 el de arriba  a la derecha.


El Pin 1 del shield a 3,3v
El Pin 2 del shield a Rx del Arduino
El Pin 3 del shield a Tx del Arduino

Pincharemos también un LED que alumbrará cuando un arduino reciba la señal del otro y un buzzer que sonará a la vez que el LED se ilumina.

El LED podemos pincharlo directamente en la placa Arduino en el PIN 13 el positivo y el PIN negativo (la patilla corta) al pin GND que tiene exactamente a su izquierda tal y como muestra la imagen. (En el ejemplo que utilizo yo uso una protoboard para pinchar el LED con una resistencia y darle corriente al buzzer de manera más cómoda, pero serviría también pincharlos directos en la placa sin resistencia).






Para conectar el Buzzer, lo haremos de la misma manera que un LED, pero en nuestro ejemplo lo pincharemos el polo positivo en el PIN7, en lugar del 13 como se enseña en la imagen. El dibujo es meramente orientativo para saber como pincharlo. En mi ejemplo lo pincharé también en la protoboard.




Si ya hicisteis todas las conexiones solo falta añadir una más. Es la última, pero no por tanto menos importante, sino que diría que incluso la más importante, ya que sin esta última conexión, según nuestro código el XRF no funcionará.

Se trata de pincha el pin 8 de la shield del Xbee a Vcc (3,3v). Es el PIN que indica al Shield que esté activado.

Si no quereis hacer distinción entre emisor y receptor podeis realizar dos esquemas exactamente iguales, y luego cargarle a cada placa de arduino sketch diferentes. Funcionará lo mismo, solo que en el emisor no alumbrará ni se escuchará nada, solo en el receptor. 

Cuando haceis todas las conexiones debe de quedar de un estilo como el siguiente




Son dos equemas exactamente iguales de montaje.

Para terminar, falta cargar los sketch correspondientes en cada Arduino.
Antes de empezar tengo que decir, que si os da fallo al cargar los sketch en los arduino, desconecteis todo, cargueis los sketch y luego volvais a conectar los cables. A mi me pasó eso y lo logré cargar de esta manera.

La prueba que realizaremos es muy básica:
El Arduino emisor emitirá un mensaje por el puerto serie que el otro arduino tendrá que recibir y reenviar por el puerto serie otro mensaje. Si el primer arduino recibe la respuesta del segundo arduino al mensaje enviado, emitirá un sonido y el led se encenderá durante un instante. Esto es lo que tendremos en cuenta para saber que los dos arduinos aún están en línea y hacer pruebas de cobertura. 
 Esto se repitirá continuamente. Si los conectais a un pc en lugar de a una batería a 5v y abrís la consola del puerto serie a 9600 podeis ver los mensajes que envian y reciben uno del otro, pero esto no es completamente necesario. Los detalles de la programación os los muestro el código de cada arduino a continuación:

Sketch para el emisor:



sketch para el receptor:



Nota: El emisor envía una "H" por cada mensaje que tiene que recibir el receptor, y el receptor devuelve una "K" en respuesta que recibe e imprime el emisor por cada mensaje devuelto en respuesta.


Cuando tuve todo listo hice pruebas de cobertura básica. La verdad es que me decepcionaron bastante en cuánto a longitud, pero en potencia a corto alcance funcionan bastante bien.
Hay que decir que las pruebas las hice en la casa donde estoy implantando el proyecto, desde la punta más abajo hasta la punta más arriba, muros de hormigón de arriba abajo, con piedras, hierro en la estructura,... y los módulos respondieron bien, sin perder conexión en ningún momento. Hablamos aproximadamente que tuvieron que traspasar de media unos 7 u 8 muros de este tipo.

Pero a largo alcance, cuando me esperaba obtener una amplia distancia, en unos 70 metros con visión casi directa pero con algunos obstáculos de diversos tipos por el medio empezaron a perder la señal.
Lo más que pude obtener como muestro en alguna imagen de a continuación fueron unos 100 y pico metros en visión directa, y aún así depende de la posición en la que los pusiesen cogían cobertura o no.

Hasta unos 50 metros hay que decir que con visión directa funcionaron sin problema.





Hasta 100 metros con visión directa funcionaba, pero tenía que ser visión muy directa, sino dejaba de funcionar.








Agradezco a mi padre los servicios prestados...  Es el que sale con el círculo rojo en las imágenes. Además nos cogió un día malo porque llovía bastante.

Y por último un video de como debería funcionar el sistema si lo montasteis bien




Conclusiones:

Ahora que tenemos un par de posibilidades probadas para formar nuestro sistema es necesario hacer un review de los pros y los contras para así poder decantarse por uno u otro, aquí o en otro proyecto, así que evaluaremos un poco los dos sistemas con sus pros y contras.

Wifi ESP8266

Extremadamente barato, los puedes conseguir por menos de un euro.
Capaces de albergar un servidor web en sí mismos y recibir órdenes a través de navegador.
Funcionan bien si la red wifi sobre la que están montados funciona bien.
Pila TCP/IP asociada al módulo con cobertura B/G/N y encriptado WPA2 entre otros.
Documentación abundante, posibilidad de expansión mediante otras placas o pines disponibles en sí mismas según el modelo de ESP. (puede que dedique una entrada del blog para ver los distintos modelos que hay de este módulo).
Usan la banda inalámbrica 2,4GHz. Esto puede ser un pro o un contra según se mire.

Cisexo XRF

Son más caros que los Wifi ESP8266, pero muchísimo más baratos que los Xbee puros. Alrededor de los 10 euros cada módulo.
No se les puede meter un servidor web en ellos. No tienen una pila TCP/IP implementada.
Poca documentación, la documentación se confunde con los de la versión Xbee V1
Usan distintas frecuencias para comunicarse mediante su programación dejando la banda inalámbrica libre. Esto es lo único que destacaría de ellos en mejora respecto a los ESP.


Reedito este documento porque en las primeras pruebas que hice me quedé bastante con la mosca detrás de la oreja en cuánto alcance de estos módulos. Comentándolo con mi director de proyecto me dijo que el poco alcance de estos módulos podía ser debido a que las antenas que utilicé estaban más orientadas a la banda 2,4Ghz que a la 800 que usan los ESP. Además, utilicé directamente la alimentación USB de dos portátiles, y no reparé en que el amperaje que pueden demandar los XRF en ocasiones es más alto que el que pueden entregar los USB. 

Pues bien, he suplido estas carencias gracias a los nuevos SAIS que he inventado en esta entrada del blog  y con las antenas que me ha prestado, que en teoría tenían que funcionan mejor. 

Y siento decirlo, pero he obtenido los mismos resultados que cuando no había modificado nada de lo comentado.


Dicho esto, ya sabéis con cual seguiremos trabajando a partir de ahora...
Un saludo a todos.