Manual
do
Maker
.
com
A Digispark é uma bela plaquinha, todo mundo que mexe gosta. Não é pra menos, uma board tão diminuta com recursos sob medida e de fácil programação pela IDE do Arduino, sem dúvida é uma opção muito bem vista frente a um Arduino (que é muito mais inflado de recursos, claro). Mas como tudo tem lado bom e lado ruim, o Digispark (que utiliza um Attiny85) não possui serial e para fazer uma leitura de debug ou trocar dados com ele, é necessário utilizar um dos diversos recursos disponíveis. A dica desse artigo é a interação com o teclado e o parsing da mensagem para utilizar no Linux (desktop, Raspberry etc).
O caminho mais simples para trocar informações com o Digispark é certamente o DigiKeyboard. Em substituição ao Serial.print() do Arduino, você pode utilizá-lo e tudo o que você precisa fazer é adicionar a biblioteca keyboard. A partir daí, você precisará enviar a informação que será repassada ao computador como se fosse um teclado. Um exemplo simples referenciado pela Digistump é abrir o Examples->DigiSparkKeyboard->Keyboard. Depois em Windows, abra o Notepad , faça o upload do código para o Digispark e rapidamente torne o foco para a janela do notepad. Em alguns segundos será escrito "Hello Digispark!" no editor. Como ele atuará como um keyboard, qualquer aplicação em foco receberá dados escritos por ele. Agora, como capturar essas entradas em Linux para interagir com o Raspberry, por exemplo?
O programa logkeys é um sniffer de teclado que funciona tanto com teclado serial quanto com teclado USB. Ao contrário do que parece, invés de ser utilizado para uma função obscura como capturar senhas e logins de usuários desprecavidos, ele nos servirá como assistente para capturar o que for "digitado" pelo Digispark. Sua utilização é bastante simples, tal qual sua instalação:
sudo apt-get update && sudo apt-get install logkeys
Após instalado, faça um clone do repositório para pegar o keymap pt_BR.map:
git clone https://github.com/kernc/logkeys.git
E copie o mapa para o nível de diretório em que você está:
find . -name pt_BR.map -exec cp {} . \;
Depois execute:
logkeys --keymap=pt_BR.map -s
Digite alguns comandos e termine o processo do logkeys:
logkeys -k
O que você errar e apagar, substituir ou qualquer coisa, aparecerá no log, exceto você use comandos do bash_history, porque ai o log só registrará os comandos
Bem, aí está seu arquivo com os comandos com toda a informação que você precisa, ou seja, a única tarefa do Digispark será ler o sensor e enviar o valor para o sistema. No log do sistema você terá data/hora seguida do valor enviado pelo Digispark! O que? Não sabe fazer parsing nas mensagens? Ok, vou dar uma força. Crie um script shell chamado reader.sh, por exemplo. já aplique as permissões para execução:
touch reader.sh && chmod 750 reader.sh
Edite o arquivo e coloque o seguinte conteúdo:
sed -e '/^$/d; /^[^[:digit:]]/d' /var/log/logkeys.log|tail -n2|head -n1|awk -F\> '{print $1";"$NF}'
O "tail -n2" poderia ser "tail -n1", esse comando eu compus em um teste real com o teclado, então como eu precisava digitar o comando para ler o arquivo, tive que pegar o tail e o head.
Tendo essa linha, o formato será como um CSV, campo separado por ponto-e-vírgula (";"). Ou você pode manipular diretamente o valor em sua aplicação Python, C, etc.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.