Letrero Monocromático con interfaz Android

Este es un letrero que utiliza la técnica de multiplexacion para mostrar caracteres alfanuméricas, esta basado en un microcontrolador de 8bits de Microchip (pic18f4550), ademas de eso el mensaje se lo puede cambia utilizando al aplicación  android.



esta conformado por 16 pixeles de altura y de 96 pixeles de largo las dimensiones en son 32cm por 120cm. el acabo es en aluminio y mica con una protección IP 67.

El funcionamiento lo puedes ver en que esta dirección:

Comunicación Bidireccional con nRFL24L01

Para desarrollar una comunicación inalambrica entre dos microcontroladores se puede hacer de varias formas utilizando modules como: Xbee , Bluethoot 4.0, nRFL24l01 y todo tipo de modulos RF que trabajen en frecuencias que este permitido en tu pais, generalmente las bandas libres son las de 2.4GHz y los 5GHz donde también operan los sistemas wifi. 

El module RF que veremos es el nRFL24L01, por que muestran buenas características lo que me llamo mas la atención es la alcance de distancia que tienen ademas en modo  stanbay el consumo de energía es mínimo y la comunicación con estos módulos RF es mediante el bus SPI.

hice las pruebas a 500 metros al aire libre y llegan los datos sin ningún problema, sin embargo con obstáculos como puertas metálicas y paredes llegue hasta 320m, pero me falto probar poniendo el transmisor en una lugar mas alto, de seguro aumenta la distancia.

la comunicación se realizo con microcontroladores avr (atmega328p) mediante el bus SPI que estos incorporan, la velocidad máxima de roloj SPI es 10MHz pero los modulos RF no lo soportan, segun su hoja de datos de los módulos RF solo soportan como un máximo de 8MHz, esto no es problema por que podemos poner un prescaler y bajamos la velocidad de reloj spi del micro avr.

En la programación se utilizo su librería, esta distribuido con licencia GPL, en realidad hay varias en ingles, pero el mas completo lo vi en esta dirección: http://gizmosnack.blogspot.se/2013/04/tutorial-nrf24l01-and-avr.html

esta bien explicado como inicializarlo basándose en su hoja de datos del nRF.


Mini fuente Ornamental Musical

Esta mini fuente ornamental consiste en ocho mini electrobombas que irán  impulsando agua conforme a las frecuencias presentes en el audio, las ocho mini electrobombas tienen su respectivo banda de frecuencia que van desde los 20hz hasta los 4Khz, es decir en los sonidos graves o bajos (20Hz a 100Hz) entra en funcionamiento el primer mini electrobomba y el siguiente desde los 150Hz hasta los 250Hz así sucesivamente hasta llegar a las frecuencias altas.



El control de las ocho mini electrobombas se realiza por medio de un MCU ATmega328P y unos circuitos integrados de 3 canales pwm y para separar las frecuencias se utiliza el algoritmo de la FFT dentro del programa principal realizado en Atmel studio.


Continuando con una parte del programa:


y para finalizar una demostración en la siguiente dirección: https://www.youtube.com/watch?v=vNNTVcC7XNQ

Contador Binario de 32 bits Con ARM Cortex M3

Vamos a utilizar los famosos microcontroladores de la empresa STMelectronics en especial el STM32F103C8 de arquitectura ARM Cortex M3-32bits. Para visualizar el conteo en 32bits utilizaremos leds y unos registros 74HC595. 


Lo que vamos a realizar es cargar   los registros(74HC595), con el valor de un registro interno del microcontrolador de 32bits, para llevar acabo utilizaremos esta tarjeta que tiene al MCU de 32bits, ademas para programarlo necesitamos de un ST Link. Su forma de uso ya lo mencione en  la pestaña de STM de este mismo blog.

El IDE  es Keil uVision, muy bueno para microcontroladores ARM.

la configuración de los registros 74HC595 es en modo serie. antes de empezar una aclaración importante es que esta tarjeta trabaja a 3.3v y los registros a 5V necesitaremos de un fuente externa de 5v, y los 3.3v  los podemos suministrar con el grabador ST Link.

El programa es lo siguiente: Empieza por incluir la librerías y definiciones del puerto a utilizar con sus respectivos pines para la comunicación con los registros 74HC595. ademas se declaran unas cuantas funciones para enviar datos a los registros externos (74HC595).


En la siguiente parte del programa: main() esta todo comentado como inicial-izar  los puertos.


y finalmente las respectivas tareas de las funciones declaradas:

Una pequeña guía de la conexión del circuito.  no detallo los pines por que en el programa esta escrito.



Y para terminar los resultados: bueno en esta ocasión solo una foto: 




Matriz modulo 16x32 Rojo

Estos son los famosos módulos fabricados en la república de China, y otros países las podemos encontrar en todas formas y colores y sobre todo económicos, estos módulos led te ahorran bastante tiempo a la hora de implementar un letrero matricial, lo complicado es desarrollar el programa.


Aparte de ser económicos, estos pueden venir con diferentes tipos de protección, IP64, IP67, IP68 es decir si tienen la opción de trabajar bajo la lluvia, polvo y humedad. Para poder controlarlos con microcontrolador, lo primero que deberíamos saber es el tipo de configuración que tienen y que circuitos lo componen, básicamente están hechos a base de un muy conocido integrado 74hc595, estos son fáciles de controlar pero primero debemos encontrar sus pines de conexión es otra tarea, por que al comprar este no te venden con su diagrama circuital, bueno solo nos queda desgranarlo y una ves que tengamos el diagrama circuital podemos empezar  escribiendo el código para cualquier microcontrolador que mas utilices. he incluso podemos hacer una libreria para estos módulos.


En esta entrada mostrare una forma de controlarlos, lo que hace interesante a estos módulos es que puedes controlarlos varias de ellas, conectándolos en serie todos los módulos que se te ocurra y hasta donde la velocidad de tu microcontrolador te alcance. En la nube encontré estas imágenes aun que no ayuden mucho pero al menos es una referencia.


Este  es de un modulo RGB, es similar al de un solo color, pero como podemos observar tiene un pin de reloj y de latch como también un pin datos, pero desconozco los pines A,B,C y D.
Sin mas comentarios, entrare a explicar como funcionan. 

Estos módulos también manejan barridos para mostrar un carácter es decir es casi igual a un letrero matricial que hay bastante información de estos en la nube. pero con una pequeña y ligera diferencia, es que el barrido solo pasa por cuatro filas, al principio me preguntaba por que, llegue a la conclusión de que con este tipo de configuración se logra mayor brillo.



haré una pequeña demostración con un microcontrolador atmega328p y el video lo subiré en esta url: https://youtu.be/9m0-SdXUGGQ para que podes entender mejor el barrido.

A continuación el código en atmel studio v6.2



he aquí algunos resultados que he obtenido es espectacular, subiré el código completo en cuando tenga mas afinado el código

.


Reloj con DS1307 con AM y PM

Este lcd es el mas bueno para empezar, tiene una variedad de caracteres incluidos en el lcd, no es necesario hacer todos lo caracteres, sin embargo iniciarlo el lcd es problema. también los podemos utilizar en modo 4 bits y 8, de esta forma ahorramos mas es bus de un microcontrolador, pero podemos hacer para un bus de 3 hilos, incorporando un circuito integrado latch 74hc595 u otros similares a este C.I. para un mayor ahorro de pines del microcontrolador a usar.

En esta entrada hablare sobre el microcontrolador de microchip(PIC16f877A) y dispositivo ds1307 mas conocido como RTC(reloj en tiempo real), este tiene internamente registros bien organizados para guardar un calendario para 100 años, el bus para comunicarse con este dispositivo es el i2c, ademas es necesario un batería de 3.2v para que este pueda almacenar continuamente el tiempo.


el esquemático: no es muy complejo



El problema esta en el código, vamos utilizar ccs v5.015 para desarrollar el programa, para no complicarnos la vida, el ccs nos facilita librerías, por ejemplo la librería del lcd esta incluido en el programa, sin embargo la del ds1307 no existe, buscando en la nube o internet encontré unas librerías para controlarlo de la manera mas fasil posible el ds1307, pero aun así tenia problemas, en casi todas las librerías no incluyen el AM y PM, sabemos que esto es muy importante a la hora de escoger el modo de 12horas, es que el ds1307 tiene estas dos formas el modo 12hr y el 24hr. 

A mi personalmente me gusta trabajar en modo 12Hrs. sin embargo para lograr configurar en modo 12Hrs el ds1307 es necesario comprender la hoja de datos del ds1307. lo que realmente hice es modificar una librería que lo descargue.

este es el MAIN del programa general:


En esta dirección descargar la simulación y el programa completo: https://mega.nz/#!KtZ0ED5D. también esta incluido la librería que modifique para el ds1307, antes de utilizar verifique la versión de su CCS pueda que no sean compatible la librería del LCD, sin embargo puedes pedírmelo. la versión del programa con lo que trabajees  CCS c compiler v5.015.

y finalmente una imagen de los resultados finales.



Display TFT full color mas DS1307

Este integrado ds1307 puede ser configurado para mantener la hora y la fecha durante 100 años, ademas de utilizar solo un par de hilos para su comunicación con cual quier microcontrolador que tenga el bus i2c. lo que veremos a continuación es como mostrar la hora en un display TFT con microcontrolador avr de 8 bits.



Mostrando Datos En LCD TFT 240x320 full color

Es este uno de los LCD de color mas económicos que podemos encontrar. los lcd de crystal de 2x16 son mas caros y ni hablar de los GLCD´s, pero el problema esta en como controlarlos de hecho es mas complejo que el 2x16, si controlaste alguna vez el glcd de 64x120 es de un solo color, pero este ultimo es un poco igual al lcd TFT solo que este incluye colores en cada pixel.



Estos tienen la capacidad de comunicarse con un microcontrolador por medio de diferentes buses, por ejemplo el bus spi, modo 8 bits o 16 bits, sin embargo este solo tiene implementado el bus SPI, pero no es un gran problema para empezar, a no ser que quieras mostrar un video, para video  si necesitamos mas velocidad y necesariamente el bus de 16bits para una mayor transferencia de datos en pocos microsegundos, y puedas visualizar un video de por lo menos de 30 a 60 cuadros por segundo. 

Como este no tiene el bus de 16 bits, solo es por spi, muy aparte de esto este tiene la capacidad de ser touch es decir tiene un sensor táctil implementado junto a la pantalla.


En esta entrada hablaremos de como controlarlos con un microcontrolador de solo 8 bits con un atmega328p y por supuesto que se puede con otros microcontroladores como el PIC o el STM32F que son de muy buena velocidad. y son bastantes ideales para controlar este tipo de pantallas lcd full color. lo malo es inicializarlos y tratar de hacer su librería.


En esta entrada hablare como controlarlos con solo 4 hilos utilizando un microcontrolador de 8bits Atmega3228p utilizando el bus SPI. 

Como pueden ver en esta imagen del costado se puede ver el mini chip que controla toda la parte del touch, es bastante bueno en otra entrada comentare sobre  este minicontrolador y también demostraremos como manejarlo.

Mostrando Datos Analogicos en Smartphone Android

Básicamente lo que pretendo hacer, es mostrar los datos capturados por un puerto analógico del microcontrolador atmega328p, y enviarlo al smatphone, y que este pueda mostrarlo mediante un gráfico con coordenadas x.y, la señal adquirida por el microcontrolador es enviado vía bluetooth.


La aplicación fue desarrollada en APP inventor2, no es muy complicado solo se utiliza, el CANVAS es una herramienta muy útil para esta aplicación aun lo estoy desarrollando, pero a qui unos avances, sin embargo cada uno puede darle diferentes usos, como por ejemplo:  un osciloscopio o tal vez un interfaz gráfico de un controlador PID. 

Contador con 74HC595

Generalmente un contador se hace con decodificadores, sin embargo aveces es necesario controlar varios display de 7 segmentos, como por ejemplo en un marcador deportivo, cronometro, reloj, contadores y muchas otras aplicaciones, mientras mas displays aumenta la cantidad de decodificadores ademas se necesita de varios puertos de un microcontrolador.

En esta entrada nueva comentare sobre una forma de controlar mas de 100 displays con solo 4 lineas de comunicación utilizando un circuito integrado 74HC595 muy comercial ademas de un bajo precio. como pueden observar en la imagen solo es necesario un microcontrolador de 8 bits.

El código esta escrito en XC8 no es muy complejo, solo necesitamos ver la hoja de datos del integrado 74hc595, y también podemos encontrar bastante información en la nube de este integrado.




El programa esta realizado para un pic 16f628A, la frecuencia de reloj es modificable por el que tengas presente. Lo que hago en estas lineas de código es declarar las variables y pines del microcontrolador que se van utilizar para el control del integrado 74hc595. y ademas declaramos dos funciones que a continuación se muestran sus rutinas.

La primera función, init_Reg74hc595(), realiza las inicialisación de los puertos, y la siguiente función send_reg74hc595(), lo que hace básicamente es  desgranar los datos almacenados NUM_DISPLAY[] y va enviándolo uno a uno por el PIN_DAT con su respectivo pulso de reloj.



La tercera función,  numero_a_bcd(); esta rutina se encarga de convertir un integer a código BCD para su posterior envió.


y finalmente el programa principal, lo único que hace es enviar la variable cont mediante las funciones anteriormente descritas cada 100 mile segundos la variable cont se va incrementado.

aquí tienes un vídeo de la simulación en proteus.

https://youtu.be/KYDplRiCBjQ

Aquí puedes descargarlo su simulación y respectivo código desarrollado en MPLAB 



Letrero RGB de 8x16 pixeles

Este es un mini letrero rgb, quiere decir que utilizo leds de tres colores estan controlados por un at89s52 no tiene ningun tipo de interfaz y ni tampoco algún tipo de comunicación, solo una par de efectos.


Dimer digital con cruce por zero

Es un circuito que controla la fase de disparo del triac, de esta forma al controlar la fase podemos variar la potencia que le llega al bombillo es decir variamos el brillo del bombillo de 220V.


En la imagen anterior podemos ver el pic16f628A controlando la fase del señal alterna claramente se puede observar que el bombillo esta a 20% de brillo total.

En la siguiente imagen se puede ver las señales del cruce por cero y la señal que emite el microcontrolador y ademas de la señal de 220 ac en el TRIAC. la simulación esta hecha en proteus.

no entrare en detalle de la teoría del cruce por cero por que hay bastante información en la nube, lo que trato de mostrarles es de que funcionan y esta implementado.


El esquemático lo subiré y el código realizado en CCS en estos días posteriores.



Letrero led de 8x64 pixeles

Este es un letrero monocromatico de ánodo común, que tiene las siguientes características:

  • Incluye interfaz rs232 para PC.
  • Incluye una aplicación para smartphone android.
  • Capacidad de mostrar reloj en tiempo real.
  • Temperatura en tiempo real.
  • Todos los caracteres alfanuméricos.
  • Velocidad de desplazamiento modificable.
  • Brillo controlado por interfaz rs232.
  • Tiene siete efectos.
  • Siete mensajes pre grabados cada uno con un máximo 250 caracteres.
  • Un mensaje modificable por el usuario.

Decodificando Tramas de protocolo NEC con AVR

Es bastante bueno implementar,  en nuestro proyecto microcontrolado un control remoto LG, lo interesante de estos controles es lo que envían una señal modulada a 38Khz  o tal vez mas o menos depende de la empresa que los fabrica y que protocolo deciden ponerlos. En este caso hablaremos del protocolo NEC hay bastante información en la nube sobre el protocolo NEC.


EN el mercado podemos encontrar variedad de controles remotos lo que necesitamos es uno que utilice el protocolo NEC o trabaje con señal modulada ha 38KHz, el otro dispositivo indispensable es el TSOP4838 este se encarga de demodular la señal emitida por el control remoto, sin embargo puedes sustituir por otros modelos como el TSOP1738, solo tenemos que fijarnos la frecuencia que trabajan, estos dos que he mencionado trabajan a 38KHz y su hoja de datos los puedes buscar en tu navegador.


El código esta implementado en Atmel studio 6, lo puedes descargar AQUI es bastante sencillo solo tienes que agregar las librerias InfrarrojoNEC.h y InfrarrojoNEC.c a tu proyecto si quieres darle un nuevo uso. estas librerias  estan desarrollado por mi persona a si que es libre y modificable, falta mejorar y lo cual significa que esta en beta, pero funciona muy bien  en atmega328p a 20Mhz, puedes probar con otros atmegas modificando la libreria.

Programa principal: esta bien descrito con los comentarios verdes.

Lo que es extraño en estas lineas de código principal. es la comparación de DATO_IR con 0xB4B4E619, esto salio del control LG que utilice, es decir cada boton de tu control remoto esta asignado un dato, como en el mio es 0xB4B4E619, tienes que ver su hoja de datos de tu control remoto y ver los datos de cada boton.

En caso que no puedas encontrar los datos asociados para tu control remoto, los podemos encontrar solo necesitamos una lcd 2x16 para visualizarlos, y no quiero alargar mas esta entrada por lo tanto creare una nueva donde explicare como visualizar los datos de un control remoto con codificación NEC.

Esta implementado y probado podemos ver el vídeo grabado en el siguiente link: https://www.youtube.com/watch?v=VJFYo8Hs3Ls&feature=youtu.be



Cinta Led Pixel WS2812B Full Color

Cinta fabricada por Adafruit clik Aqui para visitar la pagina, no es común encontrarlos en las tiendas de electrónica, sin embargo aun así puedes hacer pedidos en ebay, aliexpres u otros mercados virtuales. Esta cinta Led modelo WS2812b, el metro de 30 leds esta alrededor de unos 45 nuevo soles o 15 dolares, son tres veces mas caros que la cinta Led modelo 5050 debido a que cada led o pixel tiene un controlador de 3 canales pwms con entrada de datos de un solo hilo.




Este tipo de leds te facilita enormemente en la parte del armado físico, por ejemplo hacer una matriz de leds RGB ya es muy facil, compras y cortas la tiras en pedazos del tamaño del  matriz  que necesitas y es mas puedes tener un letrero full color maleable es decir una cortina de leds como pantalla. vaya que facil, lo complicado esta en programarlo, pero sin embargo hay controladores que puedes comprar en el mercado están al rededor de 100 dolares. Como lo que vez en la siguiente figura:


Sin embargo para los aficionados a la electrónica pueden controlarlo con un microcontrolador atmega328p, cuesta al rededor de 12 soles unos 3.4 dolares mas una fuente de 5v -1A que bien puedes tomarlo de un cargador de un celular en desuso. el esquemático es básico:

El oscilador externo es de 20MHz tambien  trabaja a 16MHz, pero para trabajar ha 16MHz hay que modificar el programa no es mucho solo es corregir los tiempos.

se preguntaran por que no utilice un pic16fxx o un 18fxx es simple, los microcontroladores  de microchip dividen la frecuencia de su reloj internamente entre 4 esto se debe a la arquitectura de estos MCU's, es decir son un poco lento.

Esta cinta led demanda de una velocidad de entrada de datos de unos 800KHz esto hace que el pic se ponga en aprietos, pero para una atmega es suficiente por que este no divide su reloj como en los pics.

Comparacion sencilla: Cada uno con su frecuencia máxima de operación. 

  1. PIC16f628A  va a 20MHz pero como lo divide entre 4 queda en 5MIPS.
  2. PIC18f4550 va  a 48MHz al dividirlo entre 4 nos quedan 12MIPS.
  3. ATMEGA328P va a 20MHz sin ninguna división nos da 20MIPS 

MIPS ( millones de instrucciones por segundo). el mas ideal para este trabajo es el atmega y sin mencionar su precio es tres veces mas bajo que un 18f2550.

El programa esta hecho en C atmel studio 6. y no es complejo solo hay que leer la hoja de datos del WS2812B.

y sincronizar el tiempos que nos pide el fabricante.



El programa lo podes ver a continuación:



primero declare una mapa de bits para un total de 28 Leds WS2812B, como cada led consume 3 Bytes, en total  la mapa de bits es de 3*28=84 bytes, estos bytes tienen los datos correspondientes para visualizar el arco iris en la cinta led. A continuación el programa principal. 

Esta parte del programa se encarga de enviar los datos a la cinta de acuerdo a los tiempos que el fabricante indica. se puede haber hecho con los temporizadores o por PWM del microcontrolador, esto lo dejo al criterio de usted.

Las siguientes lineas de código es una función que hace el rotamiento de bytes, esto es para ver en movimiento los colores de cada pixel como un efecto mas que le añadí. 


En el siguiente imagen podrás apreciar la conexión de la cinta led modelo ws2812b, solo es  conectar en serie los pedazos y darle la forma que tu necesites. las hojas de datos lo puedes descargar directamente Aqui.


A continuación en las siguientes imágenes tendremos el armado en el protoboard y su funcionamiento.



Funcionamiento en protoboard:





Y con mas imaginación esta cinta, los podemos hacer un arreglo como para mostrar mensajes y animaciones a full color y muchas otros arreglos mas. si alguien se pregunta cual es la cantidad maxima de pixeles a controlar es de unos 2000, pero esta cantidad puede mejorar si consigues un microcontrolador de mucha mas velocidad, pero sin elevar mucho los costos, por ejemplo tenemos ATxmega32D4 van 32MIPS  y están al rededor de 25 soles, estos incluyen dos canales DMA que es ideal para un transferencia masiva de datos sin cargar al procesador de tareas pesadas. 

En fin puedes utilizar el controlador que tienes en casa o el que mas te agrade, con los pics se puede, pero suben los precios,  ejemplo el pic18f46k22 es una muy buena opción corre a 64MHz sin embargo el precio esta alrededor de 60 soles, esto no va conmigo pero si no es problema el precio puedes hacerlo tu propio controlador con un núcleo de Microchip o tal vez con un Raspberry.


Eso es todo Gracias por ver mi blog siempre estaré compartiendo ideas con ustedes, si tienen  alguna preguntas me ponen como comentarios y responderé lo mas pronto posible.

Control de Cinta Led RGB 5050 por BLUETOOTH

Esta cinta led RGB  ya es común verlos en nuestras tiendas favoritas de electrónica, he incluso ya vienen con su propio control remoto que son por Infrarrojo, Bluetooth o por wife. sin embargo hacértelo tu mismo tu propio control es algo que se siente bien he incluso puedes adaptarlo para todos tus artefactos de tu habitación. en esta sección tratare de explicarme bien el Control por Bluetooth, lo hice en uno de mis tiempos libres.

Todos tenemos un smartphone con android o un móvil con android, el requisito principal para la construcción de tu propio control remoto por un móvil con android es necesario que este cuente con BLUETOOTH.



La imagen anterior es un aplicación para android desarrollado para controlar cinta led RGB modelo 5050  mediante bluetooth, y esta hecho en app inventor 2. no es tan complicado pero si tienes que haber estudiado el SDK para que desarrolles tus propias aplicaciones. pero voy ha subirlo en este enlace para que podes descargar la aplicación. Click Aqui.


En el esquemático se puede apreciar los componentes necesarios, todos son familiares excepto el WS2801 este integrado tiene 3 canales de PWM´s para controlar los LED'S RGB y Mediante los mosfets de canal N (IRF540) este puede soportar un corriente max de 30A es decir si cada cinta de led de 5 metros consume 6A entonces  tendríamos para 25m de cinta led RGB.

El código para el microcontrolador 16f628A se desarrollo en CCS, trabaja con un crystal externo de
16MHz, el modulo bluetooth las conexiones están en el esquemático.

descarga AQUI el código en C para el controlador, es libre puedes codificarlo y mejorarlo a tu medida por que fue desarrollado por mi persona. Fue implementado y podemos verlo un breve vídeo en este enlace: https://youtu.be/vtfarRp5QH4