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

Fuses Arduino & Dado electrónico

Construcción de un dado electrónico con Arduino, modificando la configuración (fuses) para que funcione con su oscilador interno de 8 MHz. El dado electrónico se controla con un ATmega8A, alimentado con una batería de 3,7V y gobernado con el pulsador táctil capacitivo TTP223.

Cargador USB con sensor táctil

Programar con ARDUINO

Arduino es una plataforma de desarrollo con código abierto, y dispone de librerías para controlar infinidad de sensores y dispositivos sin apenas tener que escribir código. Esto facilita a cualquier aficionado a la electrónica, para que pueda realizar diseños a medida sin apenas tener conocimientos de programación.  Como consecuencia, Arduino ha tomado una gran popularidad, y actualmente se puede encontrar código abierto para realizar cualquier proyecto que se nos ocurra. A pesar de esto, Arduino es mucho más potente y versátil del uso que normalmente se le está dando, porque la potencia y versatilidad de los procesadores ATmega es muy superior al uso que normalmente se le está dando.

Esquema: Arduino UNO (v3)
Esquema: Arduino UNO (v3)

El IDE de Arduino facilita mucho la programación de un microprocesador ATmega, porque sólo es necesario seleccionar la placa de desarrollo con la que se está trabajando (UNO, Mega, Leonardo) y el IDE se encarga de grabar todos los parámetros de configuración y adaptar el código escrito cuando se realiza la compilación y se programa. En la mayoría de los casos esto es suficiente, pero es posible avanzar un poco más y sacar más provecho en los montajes, reduciendo el tamaño y costo de los componentes. El primer paso sería montar el micro controlador, una vez programado, en un PCB aparte y montar únicamente los periféricos que fueran necesarios. Pero si queremos realizar un proyecto de tipo profesional y venderlo, tendremos que modificar los parámetros de configuración para evitar que alguien pueda leer el código y realizar copias. La manera más fácil de cambiar la configuración de un ATmega, es utilizar AVRDUDE y ejecutar las órdenes a través de la ventana de comandos del PC.

https://j-rpm.com/2018/05/%E2%9C%85-arduino-a-fondo-no-te-lo-pierdas/

Dado electrónico con sensor táctil

Como la mejor forma de aprender algo es hacerlo, he contruido un dado electrónico con un ATmega8A, funcionando con su oscilador interno de 8MHz.

Dado con sensor táctil

Para programar el ATmega8A he utilizado una placa de desarrollo Arduino UNO, haciéndola funcionar como programador ISP. Como el código del programa está escrito en el IDE de Arduino, la compilación la hará para funcionar con un oscilador a cristal de 16 MHz. Lo primero que hay que tener en cuenta para que todo funcione correctamente, es reducir los retardos que hayamos definido en el programa a la mitad, porque cuando cambiemos la configuración del microprocesador para que funcione a 8 MHz, los valores de retardo que hayamos escrito durarán el doble.

Programando FUSES de ATmega8A

Una vez programado el microprocesador, sin desmontarlo del zócalo de programación, abriremos la ventana de comandos de Windows en el PC, y modificaremos la configuración (fuses) del ATmega8A / ATmega328P ejecutando AVRDUDE. Los argumentos que tenemos que añadir al ejecutar AVRDUDE, dependerán del tipo de microprocesador ATmega que estemos programando, y el puerto COM con el que se haya conectado el PC con Arduino.

Ejemplo: ATmega8A en COM3

avrdude -c arduino -p m8 -P COM3 -b 19200 -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m

Ejemplo: ATmega328P en COM3

avrdude -c arduino -p m328p -P COM3 -b 19200 -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m

Firmware

El código de programación de este dado electrónico,  se puede descargar desde el siguiente enlace: Dado electrónico con sensor táctil

 

Cabina acústica para impresora 3D

Construcción de una cabina acústica, para insonorizar una impresora 3D. La impresora se monta en una mesa de 55×55 cms, y se atornilla para evitar las posibles vibraciones durante la impresión. Se refuerza la mesa con un tablero de madera en la parte trasera, y se coloca una repisa para almacenar los rollos de hilo, las herramientas y accesorios. La impresora se alimenta a través de una pequeña UPS, y se controla su encendido y apagado mediante un interruptor inalámbrico, conectado por WiFi. También se añade una cámara de video inalámbrica, para controlar los trabajos de impresión a distancia y poder apagar la impresora cuando finalizan o existe algún problema. La cabina se construye con paneles de poliestireno de 5 cms. de espesor y se aisla acústicamente con multiaislante D160, de 2 cms. de espesor.

Dimensiones de la cabina

Gearbest Impresora Anet A6Impresora Anet A6

Estructura de la cabina

Para construir la estructura de la cabina se utilizan 4 paneles de Poliestireno extruído de 5 cms. de espesor. Al ser el poliestireno un material rígido, muy liviano y buen aislante térmico, podremos construir una cabina móvil y mejorar el rendimiento eléctrico de la impresora.

Armazón con paneles de poliestireno extruído

Las juntas de los paneles se montan haciendo un machihembrado en los laterales, con el fin de dar rigidez al conjunto. Los paneles van pegados con un adhesivo  de secado rápido, especial para poliestireno.

Panel de aislamiento acústico

Para mejorar el aislamiento acústico durante la impresión, forré el interior de la cabina con aislante acústico de 2 cms. de espesor. Este aislante se compra en planchas de 2 metros, pero es muy flexible y se puede transportar en un rollo. El aislante va pegado en el interior de la cabina con cola de contacto,  pero con cola especial para poliestireno (sin disolventes).

Acabado de la cabina

El problema que tiene el poliestireno es que es muy frágil, y por eso es conveniente proteger todas sus bordes. Yo utilicé cantoneras de imitación a madera para las aristas, y zócalo del mismo material para construir el marco del cristal frontal.

Tapado de las grietas

 

Antes de pintar es conveniente tapar todos los desperfectos y juntas con algún tapa grietas, y una vez seco, alisar todo con la ayuda de una lija de grano fino.

 

Pintado de la cabina

Los paneles los pinté con pintura plástica normal para paredes (pintura al agua).

Ventilación

Al montar la impresora dentro de un habitáculo cerrado se mejora el rendimiento acústico, térmico y eléctrico (se reduce el consumo)... pero un aumento de temperatura no es nada bueno para los componentes electrónicos. Para evitar el recalentamiento de la CPU, construí una nueva tapa con la misma impresora 3D, y sobre ella monté un ventilador de 40×40 mm. a 12VDC. La alimentación del ventilador va conectada en la toma de entrada que alimenta la CPU. Así el ventilador permanecerá funcionando siempre que esté alimentada la CPU.

Ventilador para la CPU

Para facilitar la ventilación en el interior de la cabina, construí también una rejilla de 50×50 mm. con acceso al exterior. Esta rejilla la he montado en la pared lateral de la izquierda de la cabina, y está alineada con la salida de aire del ventilador de la CPU.

Ventilación de la cabina

Descargar ficheros .stl

Anet A6, ventilation of the CPU inside an acoustic cabin

Visualización y apagado remoto

Los trabajos de impresión 3D suelen durar horas, y en algunos casos más de un día. Con el fin de evitar una posible interrupción del proceso de impresión, provocada por un fallo eléctrico de corta duración (fluctuación de red, salto del diferencial) la impresora la tengo alimentada a través de una pequeña UPS.  Como también me pareció interesante el poder comprobar a distancia el proceso de impresión, he instalado una pequeña cámara  y un interruptor de red con control remoto.

Control de impresión remoto

Tanto el interruptor de red como la cámara de video van conectados por WiFi, y se pueden controlar a distancia desde cualquier dispositivo móvil  que disponga de una conexión a Internet.

En el siguiente video puedes ver con más detalle todo el proceso de fabricación de esta cabina acústica:

Reproductor Bluetooth – ICStation

Montaje de un reproductor de audio Bluetooth, lector MicroSD/USB de 3+3 vatios estéreo, con receptor de radio FM y mando a distancia. Se monta el módulo CT10E-BT de ICStation, como sustitución del módulo CT14. El reproductor se alimenta con una batería de Li-ion de alta capacidad. Para cargar la batería se monta el módulo de carga con protección TP4056, y se utilizan un par de altavoces reciclados. Se monta todo el conjunto en una caja de madera hecha a medida. También se construye una carcasa fabricada con PLA, para montar el reproductor en la parte superior de la caja de madera.

CT10E-BT

Módulo CT10E-BT

El módulo CT10E-BT permite la reproducción de archivos de audio desde un dispositivo remoto, mediante una conexión Bluetooth. También puede reproducir el audio de una memoria externa, conectada en alguno de sus dos conectores MicroUSB/USB.

Módulo: CT10E-BT

Otra característica de este pequeño módulo reproductor, es que incorpora un sintonizador de radio FM, un amplificador estéreo de 3+3 vatios y se puede controlar todo mediante su pequeño mando a distancia IR.

Amplificador de audio

El reproductor CT10E-BT utiliza dos pequeños amplificadores de audio de reducidas dimensiones y gran rendimiento. Utiliza dos circuitos integrados NS8002, que pueden funcionar con una batería de 3,7V y proporcionar una potencia de sonido más que aceptable, en cuanto a potencia y distorsión.

Amplificador NS8002

El circuito integrado NS8002 dispone de un pin de control (SD),  para deshabilitar su funcionamiento  y reducir el consumo al mínimo <1uA.

Control remoto

El reproductor CT10E-BT se puede controlar a través de sus cuatro pulsadores que tiene en el frontal, o mediante un mando a distancia IR. El control con el mando a distancia es más completo, porque dispone de teclado numérico para acceder directamente a la pista de audio o memoria que se quiera reproducir (hasta 99), silenciar el audio (Mute), controlar el ecualizador de audio (6 preset definidos) o apagar/encender el módulo. Es importante destacar que la función de apagado no es muy aconsejable, porque su consumo en reposo es alto (50mA aprox.) y en caso de que la alimentación sea con batería, se podría descargar por completo en pocas horas.

Control remoto IR

El funcionamiento de un mando a distancia IR se puede comprobar con una cámara de fotos o video. Apuntando el diodo LED del control remoto hacia la óptica de la cámara y pulsando alguno de sus botones, se tiene que apreciar el parpadeo rápido del diodo IR.

Descargar fichero .stl  >>> Bluetooth audio+FM player

Descuento ICStation

Módulo CT10E-BT

Código del cupón de descuento: raics
15% de descuento
Uso máximo: 1 (uno por usuario)
Límite: 300 usuarios

Amplificador Bluetooth – ICStation

Montaje de un amplificador de audio Bluetooth de 5+5 vatios estéreo. Partiendo del módulo CT14 de ICStation, se construye un amplificador estéreo inalámbrico. El amplificador se alimenta con una batería de Li-ion de alta capacidad. Para cargar la batería se monta el módulo de carga con protección TP4056, y se utilizan un par de altavoces reciclados. Se monta todo el conjunto en una caja de madera hecha a medida. También se construye un soporte fabricado con PLA, para montar en el interior de la caja los dos circuitos impresos y la batería.

Amplificador Bluetooth

Módulo CT14

Este amplificador está construido a partir del módulo CT14, el cuál incorpora el circuito de control inalámbrico Bluetooth y dos amplificadores de audio de 5W.

Módulo amplificador Bluetooth CT14

Los amplificadores de audio son dos circuitos integrados NS4165, de reducido tamaño pero con grandes prestaciones.

Amplificador NS4165

Montaje

Para alimentar este amplificador se utiliza una batería de Li-ion de alta capacidad (la capacidad que muestra la batería que utilicé es falsa).  A pesar de que el módulo CT14 dispone de una toma Micro-USB para cargar la batería, he utilizado un circuito de carga independiente; es el módulo TP4056 con protección. Como el circuito de carga que incluye el módulo CT14 no dispone de ningún control, se podría acortar la vida útil de la batería en caso de que se utilizara para este fin.

Esquema del amplificador Bluetooth

Para utilizar este amplificador sin batería, se puede alimentar el módulo CT14 a través de su conector Micro-USB, utilizando cualquier cargador de 5VDC. En este caso, no sería necesario montar el circuito de protección y carga TP4056.

Mecanizado

Para ensamblar los 2 PCB’s y la batería, he construido un soporte con la impresora 3D. Soporte de los 2 PCB's y la bateríaDescargar fichero .stl  >>>  Bluetooth stereo amplifier

El conjunto de los dos altavoces y la electrónica de control lo he montado en una caja de madera (DM de 10mm) hecha a medida. Todos los detalles de montaje y configuración del dispositivo móvil con este amplificador, los puedes ver en el siguiente video: