ESP8266 – Breve introducción

¿Qué es el ESP8266?

El ESP8266 es un S.O.C. de bajo coste producido por la empresa china Espressif.

Sus especificaciones son:

32-bit RISC CPU: Tensilica Xtensa LX106 running at 80 MHz
64 KiB of instruction RAM, 96 KiB of data RAM
External QSPI flash - 512 KiB to 4 MiB (up to 16MiB is supported)
IEEE 802.11 b/g/n Wi-Fi
Integrated TR switch, balun, LNA, power amplifier and matching network
WEP or WPA/WPA2 authentication, or open networks
16 GPIO pins
SPI, I²C,
I²S interfaces with DMA (sharing pins with GPIO)
UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
1 10-bit ADC

La empresa ha liberado y mantiene dos SDKs para poder programar el módulo. Uno de ellos es el llamado NONOS que se basa en temporizaciones y  callbacks; y el RTOS, basado en FreeRTOS, sistema operativo multitarea de tiempo real.

Basándose en este S.O.C., se han ido componiendo diferentes módulos que se han nombrado ESP01, ESP02… Cada uno haciendo hincapié en algún aspecto que le diferencia (añadirles más pines, diferentes conectores).

Uno de los módulos más interesantes que presentan, es el ESP12, que viene con marcado CE (importante si quieres comercializar algún producto utilizando este módulo), 11 GPIOs, un convertidor analógico/digital y antena wifi integrada.

Para empezar a utilizar el ESP12 nos sería necesario crear una PCB que lo soportara, o utilizar alguna existente. Y ahí es donde aparecen otros proyectos que reutilizando los diferentes módulos y adaptándolos a sus propias PCBs y reinterpretando el Firmware en algunos casos y el SDK en otros,  consiguen unos módulos muy interesantres, baratos y sencillitos de empezar a usar. Se encuentran proyectos donde la gente ha reescrito el firmware, otros reinterpretan los SDK… Gracias a toda esta gente hoy en día podemos programar el ESP8266 desde el IDE de Arduino por ejemplo.

NodeMCU

El más famosos de todos estos módulos derivados del ESP8266, es el proyecto NodeMCU. Se trata NodeMCU, basado en ESP8266de un firmware y SDK que como ellos mismos anuncian, te ayuda a prototipar tus propios
productos IOT (Internet de las Cosas) con unas pocas líneas del lenguaje de scripting LUA. Un lenguaje basado en eventos muy parecido a cómo se estructura Nodejs.

Este proyecto está teniendo mucha continuidad por su sencillez de desarrollo y supongo que por el precio del NodeMCU, que se puede encontrar por 4
$ en muchas webs.

En definitiva, estamos ante un módulo con muchas posibilidades, con unas características muy buenas y con un precio muy competitivo. La pega que tenía hasta ahora era la escasa información sobre el módulo. Pero poco a poco la información que aparece es más extensa y va siendo más sencillo acercarse a su programación. Así que si estás pensando en introducirte al mundo del IOT, no dudes en tener en cuenta al pequeño ESP8266 y sus derivados.

Arduino & Raspberry Pi como estación meteorológica casera

Para un cusro he tenido que montar un ejercicio sencillito sobre Arduino que trataba de regular la intensidad de un led usando una aplicación web como regulador. Cambiando un par de componentes y añadiendo un poco más de código podemos llegar a tener una estación meteorológica muy sencilla que vuelque sus datos en un servidor y así puedan ser consultados desde cualquier dispositivo. Vamos a explicar a continuación como conseguirlo:

¿Qué hemos usado?

Hardware

  • Raspberry Pi con Raspbian instalado.
  • Placa Arduino o similar.
  • Sensor DHT11 (hemos utilizado KY-015 montado en su PCB).

Software

  • NodeJS – La Raspberry Pi la vamos a usar como servidor web usando NodeJS (a continuación explicamos qué versión).
  • Express – Framework para NodeJS.
  • Socket.IO – Librería que facilita la comunicación cliente-servidor en tiempo real.
  • SerialPort – Librería de NodeJS para poder comunicarnos vía puerto serie con nuestra placa Arduino.
  • Plantilla HTML y JS para la visualización de datos a tiempo real

Sigue leyendo

¿Cómo funciona el chip RFID de las mascotas?

En nuestro país los perros y gatos deben de estar controlados mediante algún sistema de identificación. Hoy en día el estándar utilizado es el conocido “chip de las mascotas” o chip RFID.

Chip RFIDEste chip contiene un identificador único de 15 dígitos que viene escrito de serie en formato solo lectura. Es decir, viene de fábrica y nunca se podrá alterar.

Aun con diferencias, en Europa se toma como estándar un tipo de chip diferente al utilizado en América Central y en Norteamérica. Pero esa historia la podemos explicar otro día (tiene que ver con la frecuencia utilizada).

Ley de inducción electromagnética de Faraday-Lenz

Sin perdernos en tecnicismos y fórmulas, diremos que Faraday dijo algo así como que cualquier cambio en el entorno magnético en el que se encuentra una bobina de cable, originará una corriente inducida.

En nuestro caso, nuestro chip está formado por una bobina y una antena. Cuando algún aparato emita un campo magnético con fuerza suficiente, este chip se activará y emitirá su número identificador. Dejará de emitir por la antena cuando el campo magnético cese.

Los lectores de chips serán los encargados en crear ese campo magnético que activará el dispositivo colocado en la mascota. Para ello habrá que acercar el lector hasta una distancia de unos pocos centímetros y activaremos nuestro chip con el campo magnético producido.

GatGracias a esa lectura podremos comprobar siempre en alguna de las bases de datos existentes, a quien pertenece una mascota en caso de pérdida o el veterinario podrá tener un registro de todos los tratamientos recibidos.

Como podemos ver la forma de funcionar del chip RFID para mascotas no es diferente al funcionamiento de nuestra tarjeta del autobús o de cualquier pegatina NFC. La única diferencia es que las mascotas no la llevan en la cartera.

 

Cantabria WordCamp 2015

Las WordCamp son unas conferencias enfocadas al mundillo WordPress. Tanto si eres usuario, desarrollador o simplemente conocedor de la herramienta eres bienvenido a estos eventos que se vienen celebrando a lo largo del planeta.

No es de extrañar que el gestor de contenidos más utilizado actualmente es el que más comunidad y eventos genera. Como muestra un enlace. En el momento que escribo esta entrada se celebran simultáneamente WordCamps en Edimburgo, Saratoga y Nepal.

Los días 7 y 8 de noviembre tocaba el turno en Santander. Una iniciativa llevada a cabo por la gente que hace comunidad “WordPressera” en Cantabria y que olía a buen rollo desde lejos.

Los que me conocen saben lo que he criticado a mi tierra por dar tan pocas facilidades para realizar este estilo de congresos y eventos que traen gente a la ciudad y crean vínculos profesionales muy provechosos para PYMES y autónomos de la región. Pero eso es harina de otro costal y tal vez las cosas vayan cambiando (el Congreso de Seguridad Informática es otro ejemplo más).

El caso es que en mayo de este año conocí en un meetup a la organización de este congreso y decidí echar una mano apuntándome como voluntario para el evento. Había que echar una mano a los valientes que decidieron organizar el cotarro.

Primera sorpresa del congreso: Acreditaciones personalizadas

Primera sorpresa del congreso: Acreditaciones personalizadas

Para celebrar el congreso se reservaron dos salas en el Palacio de la Magdalena. No se me ocurre mejor lugar en Santander para reunirse en un congreso. Y si le sumamos que a pesar de ser noviembre lució un sol de escándalo, nos da como resultado un fin de semana redondo. Los voluntarios quedamos un par de horas antes de abrir al público para ir organizando tareas y preparando las salas (micros, vídeos, ponencias etc…). Y para las 9 y 30 la gente ya accedía al Palacio para coger sitio. Para las 10 de la mañana el llenazo era absoluto y si no andabas con cuidado te quedabas sin sitio en alguna de las charlas. Salvo los errores comunes de cualquier congreso (pilas de micros o algún problemilla de sonido) todo fue sobre ruedas. Los ponentes en su mayoría dieron charlas muy preparadas y con contenidos diversos. Había charlas muy técnicas y charlas enfocadas a usuario no programador. Esto hizo que el público fuera un nutrido grupo de personas con intereses diferentes, lo cual enriquecía las charlas de pasillo en las que me encontré tan agusto. De todas las ponencias que tuve ocasión de ver, tengo que hacer mención especial a dos de ellas. La de Fernando Tellado (@fernandot) pues tocaba dar la primera charla después de comer, una hora muy difícil para captar la atención. Sin embargo, como gran divulgador y ponente que demostró ser, consiguió hacer salir a la gente con muy buena sensación y con ganas de más. Dani Reguera (@dreguera) es un profesor e investigador de la Universidad de Mondragón que cerró las ponencias con una charla muy atractiva sobre visualización de datos. Varios ejemplos visuales sobre librerías estilo D3 captaron mi atención desde el primer minuto, pero sin duda resaltaré el desparpajo y la capacidad para explicarse en púlblico que demostró tener.

Una ocasión de oro para disfrutar de ponencias y charlas muy amenas y de conocer a gente de todas partes y poder hablar de tecnología con todas ellas.

Un fin de semana completo del que me guardo el recuerdo de unos voluntarios volcados y majísimos y de una organización excepcional que llevaba meses trabajando para que saliera rodado. Como así fue.

Foto de familia WordCamp Santander

Foto de familia WordCamp Santander

 

Visión por computador en tractores robotizados para agricultura de precisión

Hace unas semanas, coincidiendo con el ciclo de conferencias del Máster en Ingenierías de sistemas y de control de la UNED, le tocaba turno a Gonzalo Pajares (Profesor titular de la Universidad Complutense de Madrid de la asignatura de visión por computador e investigador en el mismo campo).

El ciclo de conferencias es una idea magnífica de la UNED para los estudiantes, aunque los vídeos están abiertos a todo el público. Se pueden encontrar infinitud de vídeos interesantes en campos de lo más variados y no descarto que en el futuro vuelva a postear alguno de ellos.

En esta ocasión, Gonzalo Pajares nos resume un proyecto europeo centrado en la detección automática de malas hierbas en cultivos de cereales para su eliminación. Todo ello embarcado en un tractor autónomo.

Por lo que nos encontramos ante dos trabajos diferenciados, uno de ellos la conducción automática de un vehículo a través de los cultivos, y otro, la identificación de zonas afectadas con malas hierbas para una aplicación selectiva de productos fitosanitarios o quemas.

Todo ello deriva en un menor uso de productos fitosanitarios o e una quema mucho más precisa de las zonas afectadas. Por lo que se utilizan menos recursos que mejoran la calidad de nuestros cultivos y ahorra costes.

Como curiosidad, en la última parte del vídeo,  se pregunta por la comercialización de los vehículos autónomos y parece ser que todavía el mercado no acaba de ver con buenos ojos un vehículo autónomo por sus cultivos.  Cosas de la innovación y el desarrollo…

Una charla muy interesante que ahora podemos ver a través de la web de la UNED:

En otras entradas del blog ya hemos hablado sobre visión por computador, agricultura de precisión y GIS. Los tres campos que trata fundamentalmente este trabajo.

Si queréis ver más charlas sobre robótica, automática o control, podéis acceder a: Programas de Máster y Doctorado en Ingeniería de Sistemas y de Control

Talleres de información geográfica para la mejora de la viticultura

La semana pasada tuvieron lugar en Logroño los talleres que impartimos mis compañeros y yo sobre la mejora de procesos de la viticultura gracias al software libre orientado a la información geográfica.

En el primero de los talleres realicé una introducción a los Sistemas de Información Geográfica dirigido a trabajadores de explotaciones vitivinícolas.

Uno de los puntos “complicados” en este tipo de cursos es explicar las proyecciones cartográficas a personas que se están adentrando por primera vez en el mundo SIG, para ello encontré este vídeo en YouTube que me pareció el que mejor resume el “problema” de los mapas.

Si quieres ampliar que dimos en dicho curso, esta es la web donde ampliamos los detalles: Información sobre los talleres.

 

Análisis Estadístico de datos con R

Acabo de finalizar el curso de MiridiaX de unas 30 horas estimadas titulado “Análisis Estadístico de datos con R”.

La plataforma MiridiaX sigue creciendo día a día y ofreciendo un amplio abanico de cursos de lo más variopintos.

En este caso, quería recordar temas estadísticos olvidados de la carrera y seguir creciendo en el uso de R, una plataforma que en el ámbito científico está afianzada y en el ámbito profesional se empieza a ver como una herramienta potente y flexible de la que se puede sacar mucho partido.

Este es el vídeo introductorio del curso de unas 6 semanas de duración:

Ganadores del OpenApps4GEO 2014

openapps4geo

La última semana de marzo acudimos tres personas de SGSmap a las 8as Jornadas SIG Libre de Girona por varias razones.

La primera era disfrutar del evento más importante del ámbito SIG en España. Estas Jornadas han sido y son un referente de la comunidad libre SIG.

La segunda razón era para presentar nuestro artículo vintiOS – aplicación de viticultura de precisión. Realicé una presentación sobre software SIG libre aplicado a la gestión vitícola y me acabé centrando en la solución vintiOS basada completamente en software OpenSource.

Foto recogiendo el premioLa tercera razón era la principal de esta entrada en el blog. Recoger el premio de ganadores del concurso OpenApps4Geo que ganamos Jon Ander, Akixe y yo. La historia se remonta a febrero cuando nos apuntamos a este concurso express en el que en tres días tenías que montar una app que sirviera para fomerntar las herramientas y librerías SIG libres.

Decidimos desarrollar GeoPhotoLoc, una app que te lista las mejores fotos de servicios como Panoramio o Flickr filtradas por cercanía a tu posición con la finalidad de encontrar esos rincones perfectos para hacer fotos. Te muestra la ruta a esos puntos desde donde se hizo la foto y ya solo te quedaría sacar la cámara e intentar emular la foto escogida.

Gracias a alzarnos con el premio, conseguimos un premio metálico y licencias anuales de un par de herramientas muy interesantes de las que más adelante prepararé alguna entrada en el blog presentándolas.

Leaflet – Crea mapas de manera sencilla

Varias son las opciones a la hora de insertar un mapa en nuestras aplicaciones web. Podríamos optar por incluir un mapa de Google Maps o Bing Maps (una buena opción si el mapa es estático o con funcionalidades básicas) o bien podríamos utilizar librerías especializadas en la creación de mapas dinámicos por ejemplo OpenLayers o Leaflet.

Esta última se trata de una librería Javascript desarrollada por Vladimir Agafonkin. Leaflet tiene varias virtudes que la convierten en una opción recomendable a la hora de crear mapas dinámicos para nuestras aplicaciones web:

Sencillez: Con poquitas líneas de código podremos tener nuestro mapa ya funcionando.

Escalabilidad: Gracias a su modularidad podremos empezar un proyecto con unas funcionalidades básicas que podrán ir aumentando a la par que tu proyecto vaya creciendo. Una librería inicial de poco más de 30KB a la iremos añadiendo tantos plugins como necesitemos.

Versatilidad: Pensada para utilizarse indistintamente en aplicaciones web ejecutadas en ordenadores comunes y dispositivos móviles.

Vamos a crear un mapa de ejemplo con la librería:

1º Importar la librería y sus estilos (dentro de las etiquetas <head> de nuestro HTML):

<script src=”http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js”></script>

<link rel=”stylesheet” href=”http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css”  />

2º Entre las etiquetas <body> vamos a insertar el código javascript necesario para crear el mapa:


var map = L.map('map').setView([43.2980 , -1.9887], 13);

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

3º Insertamos un marcador y un polígono regular al que le hemos indicado sus coordenadas:


L.marker([43.2980 , -1.9887]).addTo(map)
.bindPopup('Ejemplo de un popup. &lt;br&gt; Hola San Sebastián!')
.openPopup();

var polygon = L.polygon([
[43.30295, -1.95282],
[43.30232, -1.93068],
[43.2932, -1.93153],
[43.2937, -1.95282]
]).addTo(map)
.bindPopup('Ejemplo de un polígono');

Como vemos, el mapa base está formado por imágenes de OpenStreetMap, aunque podríamos cambiar el proveedor añadiendo nuevos plugins (por ejemplo Google Maps). Luego hemos creado un marker y un polígono en base a sus vértices.

Para seguir profundizando sobre la librería os recomiendo echar un vistazo a su API y sus plugins. Entre ellos podréis encontrar algunos tan curiosos como dbpediaLayer, un plugins que te permitirá añadir en el mapa marcadores correspondientes a artículos georreferenciados de la Wikipedia.

Tratamiento de imágenes con canvas (HTML5)

HTML5 es la quinta versión del lenguaje de etiquetado de la World Wide Web. En esta versión se incluyen novedades en cuanto al tipo de etiquetas que posee, como <audio> o <video> .

Una de las novedades es la etiquetas <canvas> con la que podremos renderizar formas 2D e imágenes de mapas de bits.

Dicho elemento Canvas manejado desde Javascript nos abre multitud de posibilidades a la hora de representar imágenes en una aplicación web.

Por ejemplo podemos probar su potencia y además aprender tres formas diferentes de pasar una imagen en color a escala de grises:



¿Qué acaba de suceder?

Dada una imagen hemos creado un “lienzo” (etiqueta <canvas>…</canvas>) en donde hemos ido volcando los diferentes resultados de tratar la imagen píxel a píxel.

Hemos utilizado tres formas diferentes para representar una imagen en escala de grises. El primer botón (Luminosity) corresponde a tratar la matriz RGB de la imagen en color con la siguiente fórmula:

 valorBN = 0.21 R + 0.71 G + 0.07 B

El segundo botón (Ligthness) corresponde a:

valorBN = (max(R, G, B) + min(R, G, B)) / 2

Y el tercer método (Average) no es más que la media aritmética del RGB de cada píxel (corresponde al tercer botón).

Por último he realizado un threshold (función umbral). Un método muy útil en los procedimientos de visión artificial.