En este tutorial construiremos un teclado para PC, con arduino micro, el cual tiene soporte HID, y con el podremos construir un teclado para PC perfectamente funcional, donde crearemos, secuencias de teclas o macros para automatizar cierta tareas repetitivas, para nuestro ordenador. Veremos como armar el circuito, analizaremos el código fuente y finalmente probaremos el funcionamiento del mismo. Este es el primer tutorial de dos, ya que en este tutorial haremos una instrucción básica al funcionamiento de este teclado. En una próxima entrega agregaremos un buzzer un display oled, y un módulo bluetooth hc-05
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Componentes electrónicos
Arduino micro
Especificaciones técnicas
MICROCONTROLADOR | ATmega32U4 |
TENSIÓN DE FUNCIONAMIENTO | 5V |
VOLTAJE DE ENTRADA (RECOMENDADO) | 7-12V |
PINES DE E/S DIGITALES | 20 |
CANALES PWM | 7 |
CANALES DE ENTRADA ANALÓGICA | 12 |
CORRIENTE CC POR PIN DE E/S | 20mA |
CORRIENTE CC PARA CLAVIJA DE 3,3 V | 50mA |
MEMORIA FLASH | 32 KB (ATmega32U4) de los cuales 4 KB utilizados por el gestor de arranque |
SRAM | 2,5 KB (ATmega32U4) |
EEPROM | 1 KB (ATmega32U4) |
VELOCIDAD DE RELOJ | 16 MHz |
LED_CONSTRUIDO | 13 |
LONGITUD | 48mm |
ANCHO | 18mm |
PESO | 13 gramos |
Diecisiete pulsadores
Cable micro usb
PCB
Descargar archivo gerber –>teclado arduino micro
Componentes opcionales
Buzzer
Display oled con driver SSD1306
El rendimiento de la pantalla es mejor que la pantalla LCD tradicional, también un menor consumo.
Especificaciones:
IC del controlador: SSD1306
Tamaño: OLED de 0,91 pulgadas
Resolución: 128 x 32
Tamaño: 38 * 12 mm
Número de pines: 4 pines
Tipo de interfaz:
interfaz IIC
Color de la pantalla: Blanco / azul
Descripción de los pines:
GND: Power Ground
VCC: Power + (DC 3.3 ~ 5v)
Temperatura de funcionamiento: -40 ~ 85 ℃
SCL: Línea de reloj
SDA: Línea de datos
Pantalla OLED, sin necesidad de retroiluminación, autoiluminación, Color de la pantalla: azul.
El rendimiento de la pantalla es mejor que la pantalla LCD tradicional, también menor consumo; IIC (comunicaciones I2C) simplifica las conexiones.
Úselo con Arduino, ESP8266, ESP32, STM32, etc. 3.3 a 5v de voltaje
Pines hembra
Módulo hc-05 (opcional)
Sólo en el caso que quieras ver los datos recibidos en tu celular podrás conectar este módulo, por eso es opcional y no obligatorio
- Funciona como dispositivo maestro y esclavo bluetooth
- Configurable mediante comandos AT
- Bluetooth V2.0+EDR
- Frecuencia de operación: 2.4 GHz Banda ISM
- Modulación: GFSK (Gaussian Frequency Shift Keying)
- Potencia de transmisión: <=4dBm, Class 2
- Sensibilidad: <=-84dBm @ 0.1% BER
- Seguridad: Autenticación y encriptación
- Perfiles Bluetooth: Puerto serie bluetooth.
- Distancia de hasta 10 metros en condiciones óptimas
- Voltaje de Operación: 3.6 VDC a 6 VDC
- Consumo Corriente: 30 mA a 50mA
- Chip: BC417143
- Versión o firmware: 3.0-20170609
- Baudios por defecto: 38400
- Baudios soportados: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.
- Interfaz: Serial TTL
- Antena: Integrada en el PCB
- Seguridad: Autenticación y encriptación (Contraseña por defecto: 0000 o 1234)
- Temperatura de trabajo (Max): 75°C
- Temperatura de trabajo (Min): -20°C
- Dimensiones: 4.4 x 1.6 x 0.7 cm
Circuito
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
#include <Keyboard.h> void setup() { Keyboard.begin();//Inicializamos el teclado //Pines de de entrada pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); } void loop() { //Leemos el estado de las teclas si ha sido pulsado alguna int set1 = digitalRead(2); int set2 = digitalRead(3); int set3 = digitalRead(4); int set4 = digitalRead(5); int set5 = digitalRead(6); int set6 = digitalRead(7); int set7 = digitalRead(8); int set8 = digitalRead(9); //Escribe un texto if (set1 == LOW) { Keyboard.println("Prueba de escritura de texto"); delay(200); } //Convinación de la teclas "control + v", para pegar lo que esté en el portapapeles if (set2 == LOW) { Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('v'); delay(150); Keyboard.releaseAll(); delay(150); } //Abre la consola de comandos y ejecuta el comando "dir" if (set3 == LOW) { //Ea¿sta convinación abre ejecutar en windows Keyboard.press(KEY_RIGHT_GUI);//Tecla de windows Keyboard.press('r'); delay(100); Keyboard.releaseAll(); delay(1000); //Abrimos el interprete de comandos Keyboard.println("cmd"); Keyboard.press(KEY_RETURN); delay(100); Keyboard.releaseAll(); delay(1000); //Ejecutamos el comando "dir" Keyboard.println("dir"); delay(100); Keyboard.press(KEY_RETURN); Keyboard.releaseAll(); } //Escribe el caracter A (Mayuscula) if (set4 == LOW) { Keyboard.press('A'); delay(150); Keyboard.releaseAll(); delay(150); } //Escribe el caracter B (Mayuscula) if (set5 == LOW) { Keyboard.press('B'); delay(150); Keyboard.releaseAll(); delay(150); } //Escribe el caracter C (Mayuscula) if (set6 == LOW) { Keyboard.press('C'); delay(150); Keyboard.releaseAll(); delay(150); } //Escribe el caracter D (Mayuscula) if (set7 == LOW) { Keyboard.press('D'); delay(150); Keyboard.releaseAll(); delay(150); } //Escribe el caracter E (Mayuscula) if (set8 == LOW) { Keyboard.press('E'); delay(150); Keyboard.releaseAll(); delay(150); } } |
PROYECTO RECOMENDADO