Arduino

USB Host Shield para Arduino

corretor ortográfico com Arduino

Imagine que legal usar o Arduino como um dispositivo de entrada, digitando os comandos diretamente nele, simplesmente conectando um teclado USB. Legal? E imagine conectá-lo a um smartphone para controlar, por exemplo, um LED RGB, relés e tudo o mais. Mas não é só isso que ele faz, você pode usar o controle do XBOX, PS4, dispositivos bluetooth, leitor de código de barras, ou utilizá-lo para ler dados de um pendrive com sistema de arquivos FAT. Um artigo só para todos esses recursos não é viável, mas prometo artigos curtos mostrando um ou dois recursos, então algumas aplicações. Hoje vamos começar com a comunicação entre o keyboard e o Arduino utilizando esse USB Host Shield.

Onde comprar seu USB Host Shield




Para esse usb host shield, recomendo a aquisição na Eletrogate, clicando aqui. É muito válido ter um usb host shield, considerando a quantidade de diversão e recursos!

A biblioteca tem muitos exemplos!

Eu já escrevi um artigo sobre controle de LED RGB através do Android, utilizando um ethernet shield, como você pode ver clicando nesse link. Também fiz um exemplo de controle de LED RGB através de uma ligação para o PBX Asterisk, configurado em meu notebook e ligando a partir de um softphone, do Android para o PBX e controlando o LED RGB a partir de uma URA (Unidade de Resposta Audível). Confira aqui. Estava programando um app em Qt, mas não tem uma interface do Android que dá acesso aos dispositivos do sistema por um meio que não seja Java, e eu estava programando em Qt. Por isso decidi partir pelo teclado, mas vamos ver essa comunicação também por outro meio.

 

Sketch para o Arduino

No repositório oficial do Arduino você encontrará a USB host shield library 2.0 (em algum momento a versão mudará, mas baseie-se pelo nome da biblioteca), contendo montanhas de exemplo de utilização. Vamos utilizar o sketch de exemplo USB Host Shield Library 2.0 > adk > ArduinoBlinkLED quando com Android. Esse sketch aguarda 1 Byte para ligar ou desligar o LED. Desse modo é bastante simples escrever uma aplicação para o Android, pois só precisamos de 1 botão para acender o LED.

Para o teclado, vamos utilizar o exemplo que sem encontra em File > Examples > USB Host Shield Library 2.0 > HID > USBHIDBootKbd. A biblioteca é compatível com diversos Arduino, como UNO e Leonardo. Hoje estou utilizando o Arduino Leonardo porque meus Arduino UNO estão em uso em outro projeto.

Eu optei por subir o sketch antes de colocar o shield. O sketch não é lá muito amigável, tem uma classe declarada nele próprio, mas não tem muita complexidade nesse exemplo.

Após subir o sketch e conectar o shield, já abra o monitor serial e então coloque o teclado no Arduino. As teclas já estarão mapeadas e a partir daí você pode montar um array das chaves lidas para tomar uma ação, ou então criar comandos que respondam a modificadores, como o simples pressionamento da tecla Ctrl:

Esse sketch vai imprimir o valor ASCII e mostrar qual o valor da tecla pressionada. Com pouca modificação (algumas linhas), já dá pra fazer uma brincadeira.

USB Host Shield
USB Host Shield

Agora, pensou que legal fazer um sniffer de teclado? Mas claro que para isso precisariamos ter o caminho de volta ao computador, uma vez que o teclado estará no shield e o Arduino, se comunicando via serial. Sabe por que usei o Arduino Leonardo? Bem, porque ele pode ser um teclado – e pretendo escrever a respeito em um próximo artigo, o quanto antes, inclusive porque para fazer um sniffer, pode ser o ideal, fazendo a leitura do teclado via shield e enviando via USB-serial. Pra ter uma ideia, olhe a implementação da função de teclado no Arduino Leonardo:

Isso é tão simples que podemos estar gravando um conjunto de dados da EEPROM, ou dependendo do volume de dados pretendido, em um micro SD. Mas já pensou que legal dar uma sacaneada em alguém, fazendo substituição de letras enquanto a pessoa digita, pensando que é um erro de digitação? Vamos fazer essa pegadinha no próximo artigo então, acompanhe!

Se ainda não tem um Arduino Leonardo, vale muito a pena. Ele possui 2 seriais e alguns recursos extras que vou discorrer a respeito conforme escrever os artigos, então, recomendo que pegue o seu nesse link da EletroGate.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!