Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Arduino

Juegos con Arduino y LCD 5110

¿Recuerdas el mítico Nokia 5110? El teléfono, obviamente, ya no se vende, pero su pantalla sigue siendo muy valorada por los makers y aficionados a la electrónica. La razón es que, gracias a su interfaz SPI es muy sencilla de manejar desde un microcontrolador. Como hace tiempo que tengo uno dando vueltas por mis cajones me he animado a probarlo, así que os traigo un pequeño montaje realizado con un Arduino Nano, un potenciómetro y, por supuesto, un LCD 5110. Y que mejor que un juego para probar este pequeño LCD. Las siguientes imágenes muestran la pantalla LCD por delante y también por la parte trasera donde se pueden ver las patillas de conexión. Hay que tener cuidado, ya que he encontrado este mismo LCD con diferente patillaje. El que yo he usado es como éste . La pantalla es monocroma con una resolución de 84x48 píxeles. Utiliza el controlador PCD8544 y dispone de LEDs para iluminar la pantalla. Se alimenta con una tensión de 3.3V, y sus los pines digitales también fun...

Gestión de interrupciones con Arduino

Cuando se diseña un programa, lo habitual es pensarlo como un flujo de instrucciones que se ejecutan una detrás de otra siguiendo una ejecución secuencial. En el contexto de los microprocesadores y los microcontroladores, si estuviéramos limitados sólo a este modelo secuencial, el desarrollo de aplicaciones sería más complicado. Os pongo un ejemplo muy simplificado: si el sistema que estamos diseñando tiene que atender una serie de actuadores (por ejemplo un botón), tendremos que andar sondeándolos periódicamente para ver si se pulsó el botón. ¿Pero qué ocurre si se pulsa un botón mientras el programa anda ocupado en otra tarea y justo en ese momento no se está sondeando la entrada del actuador? En este caso el sistema no será capaz de detectar la pulsación. La solución en este caso es el uso de interrupciones. Cuándo se dispara una interrupción, el procesador detiene la ejecución del programa que está corriendo, almacena el estado de los registros (incluido el contador de programa)...

Juegos con matrices de LEDs y Arduino

En una entrada anterior ya utilizamos una matriz de LEDs junto con el integrado max7219. Una de las virtudes de este integrado es que facilita la conexión de varias matrices usando un bus serie SPI , así como otros tipos de displays, como los de siete segmentos. En este artículo vamos a utilizar dos matrices para construir un pequeño juego tipo Pong, Arkanoid o, en fin, ya sabes a lo que me refiero, una raqueta que controla el jugador y una pelotita que hay que evitar que se salga por la parte inferior. He montado el circuito sobre una protoboard usando un Arduino Nano, dos matrices de LEDs y un potenciómetro conectado a una entrada analógica del Arduino para controlar la raqueta. El esquema del circuito es el siguiente. Como ves, el circuito no tiene nada de particular. Los pines D8, D9 y D10 de Arduino se conectan a los pines CS, CLK y DIN del bus SPI de la matriz de LEDs. Además, obviamente, de conectar VCC y GND. El integrado max7219 nos provee, en la parte superior de la...

Calabaza diabólica para Halloween con Arduino

Hoy os traigo un montaje muy apropiado para estas fechas. Una calabaza diabólica basada en Arduino que se activa por proximidad, habla y enciende sus ojos. Para detectar la proximidad de un individuo tenemos varias opciones. Yo he optado por un sensor de ultrasonidos HC-SR04. Quizá no sea lo más óptimo pero es lo que tenía más a mano. También necesitaremos un par de LEDs con sus respectivas resistencias de 1K y un pequeño altavoz o speaker (cuidado, no lo he probado, pero me temo que con un piezoeléctrico no funcione bien). La idea es que cuando alguien se acerque a la calabaza, emita un sonido digitalizado y encienda sus dos ojos (LEDs). Éste es el circuito. El altavoz se conecta a tierra y al pin 11, el sensor de ultrasonidos a los pines 9 y 10 (además de a VCC y GND), y finalmente, he usado los pines 2 y 3 para controlar el encendido de los LEDs. La cosa queda así. Otro asunto es cómo meter todo en la calabaza. La mía, de plástico, era un poco pequeña y me ha costado ac...

Termómetro sentimental con DHT11 y MAX7219

Admitámoslo, los LEDs molan, y una matriz de LEDs de 8x8 mucho más. En esta ocasión os presento un pequeño proyecto donde volvemos a usar el sensor de temperatura/humedad DHT11 y, por supuesto, una matriz LED controlada por un MAX7219 . Se trata de un termómetro sentimental. Esto quiere decir que según la sensación térmica, la matriz mostrará una carita sonriente, normal o triste. Para el prototipo de este proyecto he usado un Arduino Nano montado sobre una protoboard. El conexionado completo de todo el sistema es el siguiente. No voy a volver a hablaros del funcionamiento del DHT11 porque ya lo vimos en un artículo anterior . Sin embargo, el MAX7219 sí es nuevo para nosotros. El MAX7219 es un chip que nos permite controlar de forma sencilla juegos de LEDs de varios tipos, como pueden ser de siete segmentos normales o matrices de LEDs como la que vamos a usar aquí. Lo bueno es que este chip nos permite encadenar elementos usando un bus SPI, de forma que podríamos controla...

Protocolo I2C y Arduino.

El protocolo I2C (Inter-integrated Circuit) es de uso común en multitud de dispositivos electrónicos y sensores. Permite la comunicación serie entre distintos elementos, por ejemplo, entre un microcontrolador y una pantalla LCD. Te preguntarás qué ventaja puede aportar I2C sobre un enlace serie normal (tipo RS-232 ). La primera diferencia es que I2C sigue un esquema maestro-esclavo en el que un maestro (por ejemplo, un microcontrolador) puede conectarse a múltiples esclavos (hasta un total de 1008 dispositivos). Otra diferencia es que, al contrario que RS-232, se trata de un protocolo síncrono, lo cuál simplifica bastante la circuitería y evita el uso de componentes adicionales como una UART . Existen alternativas como SPI ( Serial Peripheral Interface ) que permiten la interconexión de más de un dispositivo, sin embargo, cada dispositivo que se añade complica el conexionado, ya que, como se ve en el siguiente esquema, se necesita una señal SS (Slave Select) para seleccionar el di...

Placa de control para seis servos basada en Atmega328 (Arduino)

A la hora de diseñar un robot que utilice varios motores servo, nos encontramos con un problema: hay que alimentarlos y son bastante glotones. Un robot articulado normalmente necesitará al menos cuatro servos, lo cual es un problema ya que, dependiendo del tipo de servos, un Arduino podría no ser capaz de proporcionar la intensidad de corriente necesaria para manejarlos. Hay que alimentarlos aparte, lo que también es engorroso, ya que hay que andar distribuyendo cables de alimentación para cada motor. Hay varias soluciones comerciales, pero como es más divertido hacérselo uno mismo, os presento una placa basada en Atmega328 con seis conectores alimentados para servos. Sin más preámbulo, os muestro el esquema y comentamos sobre él. El circuito se ha diseñado para trabajar con 9V, y un 7805 , junto con el condensador electrolítico C4, se encarga de regular la tensión a 5V. La salida de 5V se distribuye a las patillas 7 y 20 del Atmega328, pero también a los seis conecto...

Un (molesto) theremin con Arduino y un HC-SR04

El theremin o eterófono es un instrumento muy peculiar. Se basa en el hecho físico de que un cuerpo dentro de un campo electromagnético producido por un modulación de radiofrecuencia, produce cambios de frecuencia en dicho campo. El theremin usa dos circuitos con dos antenas: uno de volumen y otro de tono. Construir un theremin no es sencillo, pero usando un Arduino y un sensor de ultrasonidos podemos crear algo mucho más básico que no nos va a servir para hacer música, pero sí divertirnos un poco. Si te gusta la serie Big Bang Theory, seguramente recuerdas al doctor Sheldon Cooper tocando un theremin. Si no recuerdo mal, la sintonía de inicio de Star Trek. Con este montaje vamos a poder emularlo, no tanto como músico, sino más bien como compañero de piso molesto. Además del Arduino, necesitamos un sensor de ultrasonidos como el económico HC-SR04 y un buzzer (yo he usado un TMB12A05). Y el código para Arduino es éste. #define MIN_DISTANCIA 30 int echo = 9; // Pi...

Proyecto IoT: Sensor de temperatura wifi con Wifly y DHT11

Hace tiempo que tengo un sensor de temperatura y humedad DTH11 dando vueltas por los cajones, así que ha llegado el momento de probarlo. Junto con un Arduino y un módulo Wifly, voy a mostraros un sensor de temperatura y humedad que envíe datos periódicamente por WiFi a un servidor. Es la base de cualquier proyecto enmarcado en el Internet de las cosas (IoT). El sensor DHT11 Este sensor es muy barato y fácil de usar, así que es perfecto para un pequeño proyecto como éste. El siguiente esquema sacado del datasheet del fabricante muestra cómo ha de conectarse el sensor. Se puede encontrar en versión de tres y cuatro patillas. En la versión de cuatro, una simplemente está desconectada y no se utiliza. Además de los dos pines de alimentación (a 5V), la información se transmite por un único pin conectado al microcontrolador a través de una resistencia pull-up de 5K. En mi diseño he añadido un condensador entre VCC y GND para filtrar la entrada de alimentación. En la...

Digispark Attiny USB (un Arduino en miniatura)

El microcontrolador Attiny85 no es muy potente ni demasiado versátil a la vista de los pocos puertos de entrada y salida que tiene, pero es muy pequeño y muy fácil de usar, además de tener un consumo muy bajo y ser muy barato, lo que lo hace perfecto para pequeños proyectos. Cuando un compañero de trabajo me habló de él no pude esperar a conseguir uno, ya que me encajaba perfectamente para un par de ideas que tenía en la cabeza. Este pequeño microcontrolador de 8 bits sólo tiene 8 patillas: las dos de alimentación y 6 para entrada/salida. Además, lleva un oscilador interno de hasta 20Mhz (si se alimenta a 5,5V), con lo que no es necesario añadir ningún oscilador externo. Para un primer contacto he usado una pequeña placa de Digispark. Se trata de la Digispark USB development board . Es muy cómoda de usar ya que puede conectarse directamente al puerto USB, tanto para programarla como para alimentarla. También puede alimentarse externamente a través de los tres pines laterales...

Regulador de tensión L7805CV para alimentar un Atmega328 (Arduino)

El 7805 es el regulador de voltaje por excelencia, seguramente el más usado en sistemas empotrados, aunque poco a poco estos sistemas van adoptando 3.3V como tensión de trabajo, el 7805 es perfecto para usarlo con el Atmega328, que se alimenta con 5V. En el artículo anterior vimos como usar este microcontrolador de forma independiente de la placa Arduino, pero pasamos muy de puntillas por el tema de la alimentación. En este artículo vamos a aprender a usar el 7805 para alimentar nuestros circuitos basados en el Atmega328. En electrónica digital es importante que las tensiones que alimentan el circuito se mantengan constantes y a un nivel conocido y estable. El microcontrolador Atmega328 usa 5V para funcionar. A no ser que usemos una fuente estabilizada, la cosa se puede complicar. La tensión que ofrece una pila no es lo suficientemente estable. Pensarás que con usar un adaptador de corriente de esos que venden en los bazares, todo solucionado ¿no? Pues no. Estos transformadores no...