El circuito (realizado con Fritzing):
Continue reading
Arduino: Theremin de luz
El circuito (realizado con Fritzing):
Continue reading
Arduino: Motor servo con potenciómetro
El circuito (realizado con Fritzing):
Continue reading
Arduino: Lectura de un sensor de luz (fotoresistencia)
El circuito (realizado con Fritzing):
Continue reading
Arduino: Sensor Eco y pantalla LCD
El circuito (realizado con Fritzing):
Continue reading
Arduino: LED con potenciómetro
El circuito (realizado con Fritzing):
Continue reading
Puertos de Arduino
Arduino UNO es una placa impresa con un microcontrolador ATmega3281.
Los pines digitales 0-13 son de entrada y salida (digitalRead(HIGH/LOW); digitalWrite(pin, HIGH/LOW)).
Los puertos PWM (Pulse-Width Modulation) permiten simular una salida analógica (analogWrite(pin, valor)) escribiendo valores entre [0-255].
El puerto 13 incluye una resistencia de 220 Ω y está conectado al único actuador programable de la placa, el LED ‘L’.
Los puertos 0 y 1 se usan para comunicaciones RX (recepción) y TX (transmisión) -actividad indicada por los correspondientes LEDs- por lo que no se recomienda su uso para nada más. Cuando se usan los puertos 0 y 1 para comunicaciones se recomienda desconectar el USB -que se usa para lo mismo- para evitar problemas.
Los puertos con particularidades son: 0 y 1 (Rx,Tx); 2 y 3 (interrupciones); 3, 5, 6, 9, 10 y 11 (PWM); 10, 11, 12 y 13** (SPI); A4 y A5 / SDA* y SCL* (TWI); AREF (Voltaje de referencia); Reset; IOREF (V. referencia IC); No conectado*.
(*) Puertos aparecidos en UNO R3, y que no están etiquetados en la placa.
(**) Incluye una resistencia de 220 Ω.
Los pines analógicos 0-5 son de entrada (analogRead()) y leen valores entre [0-1023].
El voltaje de entrada es de 5V (USB) o 7V-12V (pin Vin y conector jack). El GND de arriba es digital (DGND). Generalmente se usan un GND analógico (AGND) para la BreadBoard.
Comenzando con Arduino
Tras mucho tiempo queriendo hacerlo, por fin me he iniciado en el mundo de Arduino.
Arduino es una placa de Hardware libre que te permite iniciarte en el mundo de los microcontroladores para hacer todo tipo de proyectos, entre ellos (mi primer “gran” objetivo) un robot. La placa se programa en una versión reducida de C, con un IDE propio (libre).
El IDE viene con un montón de ejemplos que permiten aprender a programar la placa.
Recomiendo el Arduino Starter Kit.
Hay quien opina que no es una buena opción básicamente porque puedes obtener lo mismo en e-bay a mitad de precio.
Sin embargo esto solo es cierto si:
1. Sabes lo que tienes que comprar (tienes experiencia en electrónica)
2. Tienes tiempo suficiente para pasar en e-bay buscando cada componente y esperando a que llegue
El paquete tiene una presentación estupenda, un montón de componentes variados y un magnífico libro.
Obviamente el libro se puede bajar de la red, pero me parece que vale la pena tenerlo en formato árboles muertos ya que es una gran guía para dar los primeros pasos y me resulta cómodo tenerlo encima de la mesa y poder ver los diagramas con mis hijos.
En todo caso es un libro muy recomendable para los que como yo no tengáis una gran experiencia con la electrónica.
Cuando se va aprendiendo a manejar el arduino entonces ya uno sabe qué es lo que quiere exactamente comprar y entonces e-bay es una gran opción.
Por otra parte, recomiendo el uso de Fritzing para diseñar “el mundo real”. Los dibujos que incluyo están realizados con esta herramienta.
Para instalar en GNU/Linux hacemos:
aptitude install arduino aptitude install fritzing libqt4-sql-sqlite1
Hay muchísima documentación al respecto así que me limitaré a poner los ejemplos más básicos que he ido realizando.
El equivalente al “Hola Mundo” se llama “Blink” y es un programa que hace parpadear un LED (procedente de los ejemplos del IDE):
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // Cambiar a 12 para utilizar el led del BB // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Y el diseño para el mundo real sería este (realizado con Fritzing):
Otra versión:
Añadir framebuffer con Grub 2
Me sucedió con un equipo con tarjeta gráfica integrada de Intel, que al arrancar el entorno gráfico se perdía el acceso a las tty [1-6] y además se colgaba el apagado / reinicio. Sin embargo si arrancaba sin entorno gráfico no había problema.
El problema era que las X usaban directamente la tarjeta, sin usar framebuffer.
$ grep EE /var/log/Xorg.0.log
... (EE) open /dev/fb0: No such file or directory ...
1. Comprobar los modos disponibles:
# hwinfo --framebuffer
... Hardware Class: framebuffer Model: "" Vendor: "" Device: "" SubVendor: "Intel(R) HSW Mobile/Desktop Graphics Chipset Accelerated VGA BIOS" SubDevice: Revision: "" Memory Size: 31 MB + 960 kB Memory Range: 0xe0000000-0xe1feffff (rw) Mode 0x0307: 1280x1024 (+1280), 8 bits Mode 0x031a: 1280x1024 (+2560), 16 bits Mode 0x031b: 1280x1024 (+5120), 24 bits Mode 0x0305: 1024x768 (+1024), 8 bits Mode 0x0317: 1024x768 (+2048), 16 bits Mode 0x0318: 1024x768 (+4096), 24 bits Mode 0x0312: 640x480 (+2560), 24 bits Mode 0x0314: 800x600 (+1600), 16 bits Mode 0x0315: 800x600 (+3200), 24 bits Mode 0x0301: 640x480 (+640), 8 bits Mode 0x0303: 800x600 (+832), 8 bits Mode 0x0311: 640x480 (+1280), 16 bits Mode 0x037d: 1680x1050 (+1728), 8 bits Mode 0x037e: 1680x1050 (+3392), 16 bits Mode 0x037f: 1680x1050 (+6720), 24 bits Config Status: cfg=new, avail=yes, need=no, active=unknown
2. Configurar framebuffer en Grub2
vi /etc/default/grub
#GRUB_GFXMODE=640x480 GRUB_GFXMODE=800x600 GRUB_GFXPAYLOAD_LINUX=800x600 # Podriamos usar, por ejemplo #GRUB_GFXMODE=1280x1024 #GRUB_GFXPAYLOAD_LINUX=1280x1024x16
3. Activar la nueva configuración en Grub
# update-grub
4. Reiniciar
Firma digital con Debian GNU/Linux y Sinadura
Uno de los usos interesantes del DNIe es firmar un archivo PDF. Esta firma tiene plena validez legal. Es decir, hasta hace poco había que hacer un documento, imprimirlo y después firmarlo a mano. Ahora podemos hacer un documento, guardarlo como PDF (por ejemplo con OpenOffice Writer) y después firmarlo con nuestro DNIe.
Hay que insistir en que tiene plena validez legal. Sirve para hacer contratos, compra ventas, reclamaciones…
Sinadura permite firmar digitalmente tanto archivos PDF como otro tipo de archivos.
Vamos a instalar Sinadura 3.3.3 en Debian GNU/Linux Wheezy (Debian 7).
Primero descargamos Sinadura, en este caso he descargado la versión 3.3.3 para GNU/Linux de 64 bits:
$ wget http://www.sinadura.net/documents/18043/196213/sinaduraDesktop-3.3.3-unix64-installer.jar
Su instalación es muy sencilla, basta con hacer:
$ java -jar sinaduraDesktop-3.3.3-unix64-installer.jar
y seguir el típico asistente de “siguiente”, “siguiente”, “siguiente”…
…pero no funciona todavía. Hay que modificar un detalle de opensc:
# vi /etc/opensc/opensc.conf
Buscar y descomentar (quitar el ‘#’) la siguiente línea:
# plug_and_play = false; plug_and_play = false;
Para configurar Sinadura vamos a “Archivo -> Preferencias -> Firma -> Certificados“, y elegir “Tarjeta Inteligente“.
También recomiendo ir a “Archivo -> Preferencias -> Firma -> PDF” y seleccionar otra imagen ya que la que viene por omisión (el logo de Sinadura) apenas permite leer el texto insertado. De paso cambiamos la razón, la ubicación y la certificación por defecto (No permitir cambios).
Yo me he creado una imagen muy clarita del DNIe en grises y la he copiado en /sinadura/resources/images.
Utilizamos el botón “Añadir documentos” para seleccionar el documento pdf a firmar, en mi caso “prueba.pdf” y pulsamos “Firmar“.
El programa carga el certificado (la primera vez tarda un poco, si se cuelga probablemente sea por un problema de sesiones: sacar e introducir el DNI) y después nos pide el PIN del DNIe.
Después elegimos el certificado a utilizar, en este caso el certificado de firma:
Nos solicita una confirmación:
Y ya está. Podemos verificar cualquier documento firmado también desde Sinadura. Primero lo seleccionamos y después utilizamos el botón “Validar”