OLED: SSD1306 ‘Fake in China’ & Sensor de proximidad para invidentes

Sensor de proximidad para invidentes

Construcción de un sensor de proximidad con Arduino, mostrando la información de la distancia en un display gráfico OLED de 0,96″. El display OLED que he utilizado es el SSD1306 y debería tener una resolución de 128×64 pixel, pero como en China ahorran por todas partes, el display muestra los gráficos con una resolución de 128×32… ¿50% de ahorro/estafa?.
Este sensor de proximidad incluye un avisador acústico, y podría ser muy útil como complemento del bastón guía para personas invidentes. En este caso no sería imprescindible instalar el display, y la autonomía de la batería sería mayor.

Medir la distancia por ultrasonidos

Utilizar un sensor por ultrasonidos para medir distancias con precisión no es lo más adecuado, pero puede ser de gran ayuda si se utiliza para detectar obstáculos cercanos. Este sensor podría utilizarse como ayuda al aparcamiento de un coche, aunque hay otros sensores más adecuados (capacitivos, ópticos), porque las cápsulas piezoeléctricas no están pensadas para trabajar en la intemperie. El uso más adecuado para este sensor sería montarlo en un equipo portátil, y utilizarlo como avisador de obstáculos cercanos para personas invidentes (podría utilizarse como complemento del bastón guía).

Sensor HC-SR04

El sensor de ultrasonidos HC-SR04 se puede comprar por menos de 1 dólar en Internet, y tiene un alcance aproximado de 4 metros y medio.

Sensor HC-SR04

Para ver la medida de la distancia he utilizado un diminuto display gráfico de 128×64 pixel, el modelo SSD1306, con  tecnología OLED.

Oled: SSD1306

Este circuito incluye un zumbador piezoeléctrico para realizar avisos acústicos de los objetos más próximos (imprescindible para invidentes).

Esquema: Detector de proximidad

El zumbador empezará a sonar de forma intermitente cuando haya objetos a partir de una distancia de 60 cms., y se irá acelerando la cadencia a medida que se acorta la distancia con el obstáculo. Este sonido intermitente se convertirá en continuo, cuando la distancia del obstáculo esté a 5 cms. o menos del sensor.

Resolución del display SSD1306

El display OLED SSD1306 que he utilizado en este montaje lo compré por Internet, y me ha llegado con ‘sorpresa’. El display incorpora un controlador gráfico de 128×64 pixel de resolución, el cuál controla el encendido de un display OLED de 128×32 pixel. Esto supone un 50% de pérdida de resolución, o visto de otra forma, es necesario enviar al display el doble de la información que va a presentar. Cuando el display muestra textos o números utilizando su font de caracteres, sólo se puede apreciar el problema cuando el tamaño de letra es 1. El problema es que si se carga un gráfico en memoria, se pierde un 50% de su resolución, y se pierde la fidelidad del gráfico por la pérdida de puntos. Observa en la imagen siguiente, que la altura en pixel de los caracteres es la mitad de la que debería ser, teniendo en cuenta que el direccionamiento del cursor si es el correcto.

Resolución SSD1306

 

El proceso que he seguido para cargar el gráfico, ha sido convertir la resolución del archivo original de 128×64 pixel a 128×32, luego corregir con un editor de dibujo los detalles más visibles (Paint o similar), y volver a redimensionar el gráfico a 128×64 pixel para poder utilizarlo en este display sin perder fidelidad.

Si utilizas un display con una resolución correcta (128×64), este último paso no lo tienes que hacer.

Programar gráficos en el display

Si quieres generar tu propio gráfico para que aparezca en el display, puedes sustituir el código del gráfico que yo he puesto por el tuyo. Para crear este código a partir de una imagen BMP,  la forma mas sencilla de hacerlo es mediante el software: LCD Assistant

Software: LCD Assistant

Firmware

El código de programación de este sensor de proximidad,  se puede descargar desde el siguiente enlace: Sensor de proximidad

Linternas LED… dudas

Linternas LED y sus diferentes maneras de construcción. Prueba de funcionamiento de un foco LED de 15W MR16, preparado para funcionar con 12 VAC.

Hay muchas maneras de fabricar una linterna LED: utilizando una agrupación de diodos  de pequeñas dimensiones, con un sólo diodo LED de potencia, incluyendo o no una batería recargable, haciendo regulable su intensidad de luz  para aumentar su autonomía, etc. En este blog se pueden encontrar una gran variedad de montajes, pero también existen otras posibilidades. Por ejemplo aprovechar la batería de la linterna para darle un doble uso como Power Bank, como se muestra en el siguiente esquema.

Linterna & Power Bank

En este montaje se muestra el circuito con un sólo interruptor, conectando la linterna y la salida de carga USB de forma simultánea. Para utilizar ambas opciones de forma independiente, sería necesario montar dos interruptores en lugar de  uno.

Foco LED 12V – MR16

También es posible construir una linterna LED utilizando un foco de uso doméstico MR16, preparado para sustituir a los antiguos halógenos de 12VAC. Dependiendo del fabricante del foco, existen algunos modelos que incluyen en su interior un módulo electrónico para controlar su encendido. En este tipo de foco LED, cuando su electrónica no está preparada para utilizarlos con un regulador de luz externo (Dimmer), disponen de un amplio margen de encendido. Como podemos ver en la imagen siguiente, ese foco LED de 12VAC/15W se enciende con una tensión inferior a 3 VDC.

Tensión de encendido del foco LED

Aprovechando esta característica, es posible fabricar una linterna LED con una batería recargable de Li-ion 3,7V y conectarlo como si se tratara de una bombilla de incandescencia… sin necesidad de incluir electrónica adicional para su funcionamiento.