sábado, 9 de abril de 2016

MB102 - Alimentación para breadboards





En este entrada queríamos hablar cómo alimentar nuestras placas de prototipado sin la necesidad de preocuparnos por nada.

La forma más simple de alimentar nuestras placas es usando una fuente de alimentación estable y conectarla al bus de la breadboard. En nuestro caso, usaríamos nuestro Arduino.


Pero si nuestra electrónica va a tener un consumo algo elevado, por ejemplo por encima de los 500mA, lo suyo sería alimentar de forma independiente nuestro Arduino de nuestra placa.

pero esto supone un problema, porque si lo que estamos conectando al jack es por ejemplo una pila de 9V, o un rack de baterías de 1.5V, tendríamos que implementar un sistema para regular la tensión que vamos a suministrar a nuestro sistema, de forma que siempre sea constante. En nuestro caso para obtener 5 voltios.




Y nos quedaría algo con un aspecto parecido a esto

Con esto, ya tendríamos una alimentación regulada de 5V aislada y independiente de nuestro Arduino.  Pero ¿qué nos sucedería si además en nuestro proyecto, estuviéramos usando sensores que funcionaran a 5 voltios y otros que funcionaran a 3.3 voltios? En ese caso, tendríamos que buscar otro regulador adicional que nos dieran 3.3 voltios, incluir más condensadores y además conectar las salidas de éstos a los buses de alimentación de la placa. 

Pero como los reguladores consumen tanta más potencia cuanto mayor es la diferencia entre la tensión de entrada y la tensión de salida, si estamos alimentando nuestra breadboard con 9 voltios y queremos regular a 5 voltios y a 3.3 voltios de forma independiente, consumiríamos mucha más energía que si nuestra batería regulara de 9 voltios a 5 voltios, y la segunda etapa la reguláramos cogiendo la salida de 5 voltios y enchufándole el otro regulador a 3.3 voltios. Dado que en este segundo caso, la diferencia de tensiones sería solo (5-3.3)=1.7voltios, en lugar de los (9-3.3)=5.7voltios que obtendríamos si no lo colocáramos en cascada. Por lo que tendríamos que montarlos como sigue:


quedándonos algo parecido a esto



Ahora sí que tenemos dos buses de alimentación regulada, independiente de nuestro Arduino. 


Pero si tenemos que hacer esto con cada uno de nuestros proyectos,  es posible que más pronto que tarde, nos equivoquemos en alguna conexión y tengamos un problemilla. Entonces lo suyo sería poder encontrar algo parecido pero de forma compacta. Y esto es de lo que queríamos hablar hoy. En la foto os mostramos el modelo de YwRobot,  


pero existen muchos otros equivalentes, por ejemplo este otro que incorpora el mismo tipo de fusibles que usa nuestra placa Arduino y que presentamos en la entrada donde explicábamos los detalles de la regulación de la placa Arduino.



Esta solución, se puede encontrar por menos de un euro (50-90 céntimos), mucho menos de lo que nos costaría cualquier componente de lo que lleva montado y tienes unas características estupendas:

  • Compatible con alimentación a partir de un puerto USB o un jack que suministre tensiones en el rango de 6.5-12 voltios en dc.
  • Suministra dos tensiones de salida independientes que pueden ser iguales o diferentes a 3.3voltios y 5.0 voltios. 
  • Es capaz de suministrar alimentación hasta 700mA.
  • Su tamaño es totalmente compatible con cualquier breadboard: 53mm x 35mm


Pues ya que tenemos solucionado el problema de como aislar la alimentación de nuestra electrónica de nuestro Arduino, vamos a echarle un vistazo a ver cómo funciona nuestro nuevo módulo, y para ello hemos preparado un pequeño esquema eléctrico que cubre a muchas de las versiones que existen en el mercado.

3.3v 5v breadboard power supply module


En la siguiente entrada veremos más de cerca este módulo y cómo verificar que está funcionando correctamente, y recordaremos lo que aprendimos del regulador AMS1117, en la entrada sobre la el circuito de regulación del Arduino.

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a



e intentaremos responder a vuestra pregunta lo antes que podamos.  




sábado, 2 de abril de 2016

¿Qué diferencias hay entre Arduino y el ESP8266?





Hace tiempo os presentamos la principales diferencias entre los tipos de placas Arduino más habituales, que a modo repaso os las resumimos a continuación:

Característica de Arduino
UNO
Mega 2560
Leonardo
DUE
Tipo de microcontrolador
Atmega 328
Atmega 2560
Atmega 32U4
AT91SAM3X8E
Velocidad de reloj
16 MHz
16 MHz
16 MHz
84 MHz
Pines digitales de E/S
14
54
20
54
Entradas analógicas
6
16
12
12
Salidas analógicas
0
0
0
2 (DAC)
Memoria de programa (Flash)
32 Kb
256 Kb
32 Kb
512 Kb
Memoria de datos (SRAM)
2 Kb
8 Kb
2.5 Kb
96 Kb
Memoria auxiliar (EEPROM)
1 Kb
4 Kb
1 Kb
0 Kb

En otra entrada os presentábamos las limitaciones que podíamos encontrar entre ellas en términos de la resolución en voltaje que sus entradas analógicas podían presentar. En esta ocasión os hemos remarcado los datos complementarios a la tabla anterior que nos van a permitir comparar con el módulo ESP8266




Lo primero que vemos que para tener frecuencias de reloj más allá de los 16MHz, debemos abandonar la familia  de microcontroladores AVR y optar por las ARM de 32 bits, en la que no solo mejoramos la velocidad de reloj, sino también la potencia del micro, que pasaría de ser capaz de procesar instrucciones de 8bits a procesar instrucciones de 32bits. Lo que viene a significar más velocidad y más potencia.

Vemos también que además de ello,  el Arduino DUE, ofrece 12bits de resolución en los pines analógicos, será capaz de detectar variaciones de voltaje del orden de 0.8 milivoltios, cosa que con los de 10 bits del resto de la familia Arduino, solo podríamos conseguir detectar fluctuaciones mayores de 4.9 milivoltios.

Pero lo que también vemos es que independientemente de que hayamos mejorado la potencia, la velocidad y la resolución, tenemos un problemilla con su capacidad de conexión a Internet. Algo para lo que tendríamos que requerir hardware adicional. Por ejemplo un Arduino WiFi Shield.


Pues bien es a partir de este punto donde nuestro módulo ESP8266 marca su diferencia.

Aunque parezca un simple circuito integrado, el  ESP8266, es lo que se conoce como un SoC, System on Chip. Un SoC embute todo los circuitos electrónicos requeridos para correr una función completa en un único chip. Por ejemplo, un SoC de un teléfono móvil puede incluir gráficos, audio, video y procesamiento de imágenes de forma compacta un un solo circuito. De este modo, se permite miniaturizar más los terminales, simplificar los diseños y reducir los consumos.


En nuestro caso, podemos ver perfectamente todas las funciones que implementa nuestro ESP8266, echándole un vistazo a la siguiente figura


Donde podemos identificar, que a diferencia de las placas Arduino que presentamos anteriormente, el ESP8266, incluye su propio sistema de recepción y transmisión WiFi, su CPU, su bloque de memoria, así como el resto de bloques asociados a comunicaciones y gestión de GPIOs.

Si esto mismo lo quisiéramos implementar en nuestro Arduino, deberíamos instalarle un shield específico, y aunque las características pudieran parecernos similares, hemos reseñado claramente la ventaja que ESP8266 nos aportaría.


En definitiva la solución Arduino, nos costaría unos 100 euros comparados con los escasos menos de 5 euros de la opción ESP8266.




No por nada, Arduino ha diseñado una nueva solución integrada y compacta con características parecidas. Hablamos del MKR1000.


En próximas entradas os compararemos ambas soluciones.

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a
e intentaremos responder a vuestra pregunta lo antes que podamos.


viernes, 1 de abril de 2016

¿Qué es un ESP8266?


ESP8266 NodeMCU v2



En la entrada de hoy, vamos a presentaros un módulo que se está haciendo cada día más famoso en el mundo de IoT (Ïnternet of Things, o Internet de las Cosas para nosotros). Se llama ESP8266 y se distribuye desde China a todos los rincones del mundo por precios que van desde poco más de 1 euro hasta un máximo de 5 euros.

En esta dirección de AliExpress por ejemplo lo podíais encontrar por 2.74 euros http://goo.gl/g5ixOP.

Pero aparte del precio, ¿qué es?

Bien lo primero que tenemos que decir, no es qué es, sino quiénes son. Y decimos quienes y no quién, porque aunque este dispositivo es relativamente joven, a fecha de esta edición, existen más de 12 versiones diferentes


por lo que entendemos que nos cause cierta ansiedad no estar al tanto de tantas opciones.

Pero antes de entrar en ver las diferentes opciones, vamos a comenzar por el principio, explicando qué es el ESP8266.

El ESP8266 es un chip WiFi de  bajo costo de la empresa china Espressif, que lleva su propio microcontrolador. El chip se hizo popular en occidente en agosto del 2014 cuando salió el módulo ESP-01, fabricado por el fabricante AI-Thinker. Este pequeño módulo permitía conectar a cualquier microcontrolador a una red WiFi y ejecutar conexiones TCP/IP simples (las mismas que podemos ejecutar nosotros desde nuestro propio explorador de internet).

Pero en aquel momento no existía demasiada documentación escrita, pero con un precio tan pequeño y una potencialidad tan grande, muchos desarrolladores empezaron a traducir toda la documentación en chino que podían conseguir.

En octubre del 2014, Espressif lanzó su propio SDK (Software Devolopment Kit, o Kit para Desarrollos de Programas) y esto todavía aceleró más la penetración de este chip en el mundo maker. Con este SDK, ya no hacía falta ponerle una "antena WiFi" a nuestro microcontrolador, o dicho de otro modo, ya no necesitábamos un microcontrolador externo, este SDK te dejaba programar el propio microcontrolador que el módulo WiFi llevaba integrado. Un microcontrolador, que como veremos en próximas entradas no tiene nada que envidiarle a los que existía en el mercado.

Pero fue a partir de que el IDE de Arduino en su versión 1.6.4, en mayo del 2015, incluyera la posibilidad de incorporar tarjetas del tipo ESP8266, cuando realmente empezó la gran revolución de este módulo. Llegado a este punto, cuál era la necesidad real de adquirir una placa Arduino, si el módulo ESP8266 montado en su propia placa de expansión, podría darte más potencia que la que podríamos obtener con nuestra placa Arduino más un módulo WiFi, a un precio económico y en mucho menos espacio.

en la próxima entrada, explicaremos las características concretas y las compararemos con las de nuestro Arduino preferido.

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a




e intentaremos responder a vuestra pregunta lo antes que podamos.




e

viernes, 1 de enero de 2016

¿Qué son las interrupciones para Arduino?





Llegados a este punto, imagino que ya tenemos bien claro como funciona un sketch de Arduino y cómo podemos programar las tareas para que se vayan ejecutando una tras otra de forma ininterrumpida.

Podemos hacer que nuestro Arduino vigile quién entra en nuestro cuarto, usando por ejemplo un sensor de ultrasonidos, o bien, monotorice la temperatura de una habitación y nos la muestre en pantalla. Podemos hacer básicamente lo que queramos con tal de que definamos bien la lista de tareas y el orden en el que queremos que se ejecuten.

Pero como cualquier persona, nuestro Arduino tiene unos recursos limitados y si queremos que nuestro Arduino nos prepare una rica cena, le podría pasar que el ruido de los fogones no le permita escuchar que como tenemos la puerta abierta, unos ladrones han entrado a robar en la casa.

  • La solución es bien simple, pues que se quede esperando en la puerta. El problema es que si se queda esperando en la puerta entonces nadie nos hace la cena.  
  • No pasa nada, podemos decirle que cierre la puerta y que cada pocos minutos se acerque a ver si alguien está esperando. Pero claro con ese trajín, no puede atender bien la cocina, y algunas cosas se queman, u otras no terminan de prepararse bien. 
  • Entonces es cuando se da cuenta de la utilidad del timbre, y decide poner un pequeño altavoz en la cocina de modo que le permita escuchar cuando alguien llama, y solo entonces dejar de cocinar para atender, durante un breve instante, abrir la puerta y luego volver a sus labores.


Pues es justo de eso de lo que vamos a hablar hoy, de las interrupciones. Y cómo nuestro Arduino gracias al buen uso de ellas, puede dedicarse a sus tareas y olvidarse del mundo hasta que no suene "el timbre".



Para ello lo primero que tenemos que hacer es conectar al timbre para que podamos escucharlo, y tras ello tenemos que saber donde está el botón que abre la puerta principal desde la cocina. No basta con oir que llaman a la puerta, hay que saber donde está el pulsador que permitirá "abrir la puerta" y proseguir con nuestra tarea.


Incluso puede ser más complicado, imaginaros que vivimos en un edificio en el que para acceder a nuestro apartamento  pueden entrar bien en coche o bien a pie,  si entran directamente nuestro garaje en su coche tendremos que abrirle la puerta del parking, y si entran a pie, pues tendremos que abrirle la puerta principal del edificio.

En ese caso antes de abrir la puerta, tendremos quién es el que llama (no a todo el mundo vamos a dejarle entrar), saber qué puerta queremos abrir (puede que tengamos más de una), y qué debemos hacer (puede que sólo sea abrir la puerta, o puede que queremos también encender la luz de la entrada, poner música ambiente, y encender la calefacción). Y hacerlo todo rápidamente y para volver  corriendo a nuestras labores en la cocina.


Pues bien, lo primero lo primero. ¿Cuántas llamadas diferentes podemos atender?, o lo que es lo mismo ¿cuántas interrupciones diferentes puedo gestionar sin volverme loco? La respuesta está en el tipo de placa Arduino que tengamos entre manos.  Si estamos trabajando con la placa más popular, la Arduino UNO, tendremos solo la posibilidad de gestionar dos "timbres", si nuestro proyecto necesitara estar pendiente de más eventos, tendríamos que saltar a la placa Micro, la Leonardo, la Mega o la DUE.

Un breve resumen de ello lo podemos encontrar en la tabla adjunta.



Llegados a este punto, todo parece bien sencillo, programamos nuestro sketch y justo cuando sucede lo que queremos monitorizar, se disparará el trozo del programa que hayamos programado para esa ocasión. En nuestro ejemplo, sería a activar un relé para que se abriera la puerta que queramos.

En la siguiente entrada veremos cómo debemos encapsular este código para que se ejecute sólo si sucede el evento.  No os la perdáis, veréis que fácil es esto de manejar interrupciones con nuestro Arduino.

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a



e intentaremos responder a vuestra pregunta lo antes que podamos.

s.

¿En qué se diferencia un PinOut de un PinMap?



Esta entrada va a ser muy corta pero esperamos que muy reveladora. Trata sobre dos términos que normalmente nos encontramos en las descripciones de nuestras placas Arduino, o en general la de cualquier microcontrolador, pero que a veces confunden su significado. Una cosa es el PinOut de la placa y otra el PinMap.

Imaginaros que tenemos estamos pensando en usar una placa Arduino Beetle para una aplicación donde nos basta y sobra con la potencia del microcontrolador ATMega32U4, pero que se monta en una plaquita de tal solo 20mm X 22mm:


a bote pronto nos parece evidente el número de pines digital y analógico que dispondremos, simplemente leyendo lo que viene escrito sobre cada IO, pero ¿qué hay del resto de los pines? ¿donde está el famoso D13 con su LED?, ¿ o donde están los pines de recepción y transmisión, RX y TX?. ¿Puedo usar el protocolo de transmisión de datos SPI? Si es  así, ¿cuáles son los pines MOSI, MISO, SCLK, y SS?

A fin de cuentas el microcontrolador tiene 44 patillas, y en el Arduino Beetle Beetle solo veo 10 pines más el conector microUSB, ¿cómo puedo acceder al resto de los pines del microcontrolador que lleva montado?

La respuesta está en la apropiada definición del PinOut y del PinMap.

Si le echamos un vistazo al PinOut del microcontrolador ATMega32U4, independientemente de sobre qué placa o versión de placa se monte, siempre será exactamente el mismo



Pero si le echamos un vistazo al PinOut de la placa Arduino Beetle, veremos qué igual que usamos un mapa cuando vamos a montarnos en el METRO, aquí también necesitaremos un mapa, para indicarnos por cada una de estas bocas de METRO (los pines de la placa), cómo llegar al destino que deseamos (los pines del microcontrolador). El plano de nuestro METRO en este caso se llama PinMap.



Así que a medida que vayamos trabajando con más y más placas diferentes, y con más y más versiones de cada una de ellas, si no queremos volvernos locos es importante que  nos hagamos siempre con la versión actualizada del PinOut del microcontrolador que lleve montado y el PinMap que nos indique claramente en nuestra placa concreta quién es quién.

En resumen:

PinOut =  Son los pines que físicamente puedes ver en la placa
PinMap = Es el la tabla que indica cómo cada uno de los pines de la placa está conectado al microcontrolador. Y donde veremos más claramente

  1. todas las funciones de cada uno de los pines de la placa que tenemos entre manos,
  2. qué pines del microcontrolador está accesible a traves de los pines físicos de la placa, y
  3. qué pines del microcontrolador NO están accesible a través de los pines de nuestra placa. No es raro encontrarnos una placa que no usa toda la potencia o capacidad del microcontrolador que monta.



¿Quién fabrica los Arduinos?




El proyecto Arduino es parecido al enfoque que se sigue con el software libre, en este caso en lugar de open-source software, se llama open-source hardware. El Equipo Arduino cree que la gente debe ser capaz de estudiar el hardware Arduino y entender como funciona, hacer cambios en él, y distribuir al mundo estos cambios. Es por ello por lo que el Equipo Arduino hace disponible todos los ficheros de diseño, esquemáticos y otros documentos que permiten a cualquiera construirse su propio Arduino, todo bajo la licencia Creative Commons Attribution-ShareAlike 3.0.

La única restricción impuesta es que no se use el nombre Arduino, que debe aplicar solo a los productos diseñados, fabricados y soportados por el Equipo Arduino.

Es por ello por lo que en este proyecto todo el mundo tiene cabida.

El fabricante Arduino oficial de la mayoría de las placas es Smart Projects y está localizado en Italia (www.smartprj.com). Adicionalmente, SparkFun Electronics en USA (www.sparkfun.com) fabrica la Arduino Pro, una versión minimalista tan pequeña que no lleva ni conexión USB y requiere de un adaptador externo para poder cargarle los programas, Arduino Pro Mini y LilyPad. La placa Arduino Nano se fabrica por Gravitech también en USA.

Adicionalmente, un montón de fabricantes hacen y venden sus propias placas y shields (placas de expansión) compatibles, fomentando el objetivo del Equipo Arduino  de hacer disponible el hardware y el software a tanta gente como sea posible.

Uno de los muchos ejemplos que podemos encontrar serían placas del estilo


O versiones que incluyen algunas funcionalidades añadidas, como la ZUM BT-328 de BQ



como puede ser, la incorporación de bluetooth, incremento de la corriente máxima, la incorporación del botón reset en un lateral, la introducción de pines periféricos (GND, V, y Señal) en colores diferenciados para permitir la conexión de electrónica externa de forma directa, etc...


El problema es que incluso con organizaciones sin ánimo de lucro como Arduino, en estos días que corren, se respeta los derechos de propiedad, y se falsifican sin escrúpulos todos los detalles de las placas originales Arduino por fabricantes desalmados.

A veces será evidente la diferencia, y a veces no. Incluso muchas de ellas llevan chips falsificados marcados como de FTDI pero que no lo son


Es por eso, por lo que si queremos comprarnos una auténtica placa Arduino, mejor antes verificar en la web de Arduino, si el nombre del proveedor que está suministrándola se corresponde con alguno autorizado http://arduino.cc/en/pmwiki.php?n=Main/Buy.

Y si queremos comprar algo compatible, más económico, solo debemos intentar no incentivar las falsificaciones que fomentan la destrucción de la imagen de honestidad de los objetivos del Equipo Arduino

Nota: Con el objetivo de hacer más fácil que identifiquemos las falsificaciones en la página oficial de Arduino nos podemos encontrar algunos consejos: http://arduino.cc/en/Products/Counterfeit