Se você é um entusiasta da eletrônica e está buscando um projeto simples e gratificante, transformar um Digispark com ATtiny85 em um teclado personalizado é uma excelente maneira de explorar suas habilidades e aprender novas aplicações desta pequena placa. Neste guia, vamos mostrar como você pode criar um teclado personalizado e facilmente personalizável usando o pequeno e “poderoso” ATtiny85, um microcontrolador que se destaca por seu tamanho compacto e versatilidade.
O Digispark é uma placa de desenvolvimento baseado no microcontrolador ATtiny85 da Atmel (agora Microchip). Com apenas 6 pinos de I/O’s e 3 pinos de alimentação, com 8KB de memória Flash (com 1,5KB consumidos pelo Bootloader), ele pode parecer limitado, mas é surpreendentemente capaz quando tratamos de projeto relacionados a emulação de Dispositivos de Interface Humana (HID). Sua compatibilidade com a plataforma Arduino facilita a programação e a integração com diversos sensores e dispositivos. Para uma visão mais detalhada sobre o Digispark, confira outro post aqui do blog, onde exploramos em profundidade as funcionalidades, a instalação na Arduino IDE e aplicações desse microcontrolador fascinante.
Criar um teclado personalizado com o Digispark oferece várias vantagens:
Para transformar o Digispark em um teclado funcional, você precisará utilizar a biblioteca DigiKeyboard.h, que simplifica a emulação de um teclado USB. Esta biblioteca faz parte do pacote Digispark e é projetada para facilitar a criação de dispositivos de entrada que pode interagir com computadores e outros dispositivos compatíveis com USB.
A biblioteca DigiKeyboard.h permite que o Digispark envie comandos de teclado para qualquer dispositivo via USB. Aqui estão algumas das principais funções que você pode utilizar:
A biblioteca DigiKeyboard.h suporta uma ampla ama de teclas e comandos. Aqui estão algumas das principais teclas que pode ser pressionadas:
Para este projeto, utilizaremos os seguintes componentes:
Aqui está o diagrama de ligação do circuito criado com o Fritzing. Ele mostra a conexão entre o Digispark, botões e protoboard:
Abaixo está uma foto da montagem física do circuito. Nela, você pode ver como os componentes foram conectados na protoboard:
Aqui está um exemplo de código que utiliza botões, onde o primeiro botão é utilizado para abrir o Explorador de Arquivos do Windows e o Word, e o segundo botão abre o Navegador Chrome com alguns sites:
#include "DigiKeyboard.h" const int btn1_pin = 0; // GPIO 0 do ATtiny85 - botao 1 const int btn2_pin = 2; // GPIO 2 do ATtiny85 - botao 2 // Funcao que executada quando o botao 1 e clicado void abre_programas(void) { // Abrir Explorador de Arquivos DigiKeyboard.sendKeyStroke(KEY_E, MOD_GUI_LEFT); // Presciona a tecla E e Windows ao mesmo tempo DigiKeyboard.delay(500); // Espera 500 milissegundos // Abrir o Word DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Presciona a tecla R e Windows ao mesmo tempo DigiKeyboard.delay(500); // Espera 500 milissegundos DigiKeyboard.print("winword"); // Escreve 'winword' no executar DigiKeyboard.sendKeyStroke(KEY_ENTER); // Presciona a teclado enter DigiKeyboard.delay(1000); // Espera 1000 milissegundos } // Funcao que executada quando o botao 2 e clicado void abre_site_especifico(void) { // Abrir site do Google DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Presciona a tecla R e Windows ao mesmo tempo DigiKeyboard.delay(500); // Espera 500 milissegundos DigiKeyboard.print("chrome https://www.google.com"); // Escreve 'chrome https://www.google.com' no executar DigiKeyboard.sendKeyStroke(KEY_ENTER); // Presciona a teclado enter DigiKeyboard.delay(1000); // Espera 1000 milissegundos // Abrir site do Gmail DigiKeyboard.sendKeyStroke(KEY_T, MOD_CONTROL_LEFT); // Presciona a tecla T e ctrl esquerdo ao mesmo tempo DigiKeyboard.delay(500); // Espera 500 milissegundos DigiKeyboard.print("https://www.gmail.com"); // Escreve 'https://www.gmail.com' no executar DigiKeyboard.sendKeyStroke(KEY_ENTER); // Presciona a teclado enter DigiKeyboard.delay(1000); // Espera 1000 milissegundos } void setup(void) { pinMode(btn1_pin, INPUT_PULLUP); // Configura a GPIO 0 como um INPUT com resistor de PULLUP interno pinMode(btn2_pin, INPUT_PULLUP); // Configura a GPIO 2 como um INPUT com resistor de PULLUP interno DigiKeyboard.delay(5000); // Espera 5000 milissegundos, para ser reconhecido pelo computador } void loop(void) { if (digitalRead(btn1_pin) == LOW) { // Verifica se o botao 1 foi clicado abre_programas(); // Chama a funcao que executa a tarefa } else if (digitalRead(btn2_pin) == LOW) { // Verifica se o botao 2 foi clicado abre_site_especifico(); // Chama a funcao que executa a tarefa } DigiKeyboard.delay(100); // Espera 100 milissegundos, evita possiveis leitura erronias }
No vídeo abaixo, você poderá ver o projeto em funcionamento:
Transformar um Digispark ATtiny85 em um teclado personalizado é uma excelente forma de explorar a criatividade e aprender mais sobre eletrônica e programação de microcontroladores. Ao longo desse projeto, você pode ter percebido que, apesar do Digispark ser um dispositivo pequeno, ele oferece grandes possibilidades para automação e customização.
Foi difícil? Você aprendeu coisas novas? Cada projeto traz seus desafios únicos, mas também oferece a oportunidade de expandir seu conhecimento e habilidades. Ao seguir este guia, você teve a chance de se aprofundar na utilização do Digispark e da biblioteca DgiKeyboard.h.
Além disso, existem diversos scripts prontos disponíveis na internet que podem ser utilizados e adaptados para atender às suas necessidades específicas. Isso torna o processo de desenvolvimento mais acessível e permite que você crie soluções personalizadas de maneira eficiente.
Esperamos que esse projeto tenha sido uma experiência enriquecedora e que você continue explorando as inúmeras possibilidades que o mundo maker oferece. Se tiver dúvidas ou quiser compartilhar suas criações, não hesite em entrar em contado ou deixar um comentário!
Boas criações e até a próxima!
|
Rafael é um apaixonado por tecnologia e está concluindo a graduação em Ciência da Computação. Como aspirante a desenvolvedor de sistemas embarcados, ele adora explorar o mundo da IoT e está sempre em busca de novos conhecimentos e desafios. Com uma visão clara de seus objetivos, ele quer se tornar um especialista na área e deixar sua marca no universo da tecnologia.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!