Ir al contenido principal

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.

Digispark Attiny

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.

Attiny85 pinout

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 que pueden verse en la fotografía siguiente.

Attiny board

Los pines son:

5V - Entrada de alimentación a 5V.

GND - Tierra.

VIN - Entrada de alimentación entre 7V y 12V (la placa dispone de un regulador tipo 7805).

Internamente dispone de 8Ks de memoria (aunque el bootloader necesita 2 de esos Kilobytes), y de los seis pines de entrada/salida, además de como E/S digitales, tres pueden ser usados como PWM y 4 como ADC.

Esta pequeña placa se puede programar desde el entorno de desarrollo de Arduino, por lo que podremos adaptar desarrollos previos que hayamos hecho para otros microcontrolares soportados por esta plataforma. Los pasos para poder usar esta placa en el IDE de Arduino son las siguientes.

Primero hay que descargar e instalar los drivers de la placa desde https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip.

Una vez instalados, vamos a Archivo>preferencias y en el campo Gestor de URLs Adicionales de Tarjetas ponemos la siguiente URL: http://digistump.com/package_digistump_index.json

preferencias

En el menú Herramientas>Placa seleccionamos Gestor de Tarjetas...

Selección placa

Buscamos la placa Digistump AVR y pulsamos el botón Instalar.

Selección digispark

Elegimos la placa Digispark (Default - 16.5Mhz) en el menú Herramientas>Placa.

Selección microcontrolador

Nos aseguramos de que en Herramientas>Programador está seleccionado AVRISP mskII. En principio, con esto, está todo listo para empezar a trabajar con la placa. Vamos a hacer un pequeño montaje muy sencillo para ponerla a prueba.

Vamos a reutilizar el mismo montaje del artículo anterior, esta es la distribución de los elementos en la protoboard.

Montaje Attiny

Queremos ir encendiendo alternativamente cada led a intervalos de un segundo, así que conectaremos los leds a los pines 0, 1 y 2 de la placa. El programa que vamos a cargar en el Attiny85 es el siguiente.

void setup() {
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
}

void loop() { digitalWrite(0, HIGH); digitalWrite(1, LOW); digitalWrite(2, LOW); delay(1000); digitalWrite(0, LOW); digitalWrite(1, HIGH); digitalWrite(2, LOW); delay(1000); digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, HIGH); delay(1000); }

Antes de subir el programa al micro, lo desconectamos del puerto USB y pulsamos la flechita en el IDE para programar la placa. Ahora el programador está a la espera de que conectemos la placa al puerto USB (ahora sí la conectamos). Cuando la detecta, sube el programa y ya podemos volver a desconectarla.

Programación Attiny85

La placa se puede alimentar conectándola a un puerto USB o externamente. En el siguiente vídeo se ve el programa que acabamos de subir funcionando (en este caso con alimentación externa desde una fuente de alimentación a 5V).

Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad...

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el ...