Manual
do
Maker
.
com
Escrevi alguns artigos sobre o Digispark (que não possui serial por hardware), mas não escrevi nenhum artigo sobre como utilizar comunicação serial com ele. Agora vem a calhar porque o próximo artigo eu provavelmente o utilizarei em um projetinho simples e interessante.
Se não leu os artigos anteriores relacionados ao Digispark, recomendo as leituras:
Do mesmo modo que outras bibliotecas, temos no mínimo essas duas opções para baixá-las. Primeiramente, entre no diretório de bibliotecas do Arduino:
cd
cd Arduino/libraries
Em seguida, opte por uma destas.
Clonando o repositório:
git clone https://github.com/digistump/DigistumpArduino.git
Baixando o arquivo master:
wget -c https://github.com/digistump/DigistumpArduino/archive/master.zip
Depois, mova os diretórios relacionados às bibliotecas da MCU.
mv digistump-avr/libraries/* ../
E remova o diretório DigistampArduino.
rm -rf DigistumpArduino
Para adicionar as boards Digispark, Digispark Pro e DigiX, vá em File -> Preferences e adicione essa URL após uma vírgula:
http://digistump.com/package_digistump_index.json
Eu estou utilizando no Debian Stretch, não tive problemas em subir o sketch para a board, mas vi que no Ubuntu pode haver problemas relacionados ao udev. A documentação da Digistamp não é muito boa e encontrei erros no próprio sketch de exemplo (citado mais adiante), então alguns cuidados ficam por conta do usuário.
Primeiramente, crie uma excessão para o dispositivo. Crie um arquivo de regras:
sudo <seuEditorpreferido> /etc/udev/rules.d/49-micronucleus.rules
Eu uso o vim para editar arquivos do sistema, mas não recomendo para iniciantes. Se quiser descobrir o porquê, experimente.
Dentro desse arquivo, coloque o seguinte conteúdo:
# UDEV Rules for Micronucleus boards including the Digispark.
# This file must be placed at:
#
# /etc/udev/rules.d/49-micronucleus.rules (preferred location)
# or
# /lib/udev/rules.d/49-micronucleus.rules (req'd on some broken systems)
#
# After this file is copied, physically unplug and reconnect the board.
#
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
#
# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.
Recarregue o udev:
udevadm control --reload-rules
Mais uma vez, não tive que instalar nada, mas pode ser que surja um problema relacionado à USB. Nesse caso, procure instalar a libusb também:
sudo apt-get install libusb-1.0-0
E, em última instância, se ainda continuar a ter problemas, faça o menos recomendado. Execute a IDE do Arduino como root. Para tal:
sudo su
cd arduino-<versão que está utilizando>
./arduino
Essa Digispark que estou utilizando foi selecionada no menu Boards como Digispark (Default - 16.5MHz).
Não conecte a Digispark à USB. Clique em Upload e aguarde até que seja solicitada a conexão. Haverá um timeout de 60 segundos, por isso, não precisa se desesperar para conectá-la à porta USB.
Suba um sketch vazio para testar. Depois comece a codificar.
Agora já estamos prontos para interagir com outros periféricos. Não sei dizer qual a velocidade máxima suporta no softwareSerial, mas 9600 é uma boa ideia para evitar problemas.
Um exemplo básico para imprimir um teste:
#include <SoftSerial.h>
#include <TinyPinChange.h>
#define SOFT_RX 2
#define SOFT_TX 3
SoftSerial mySerial(SOFT_RX, SOFT_TX);
void setup(){
mySerial.begin(9600);
mySerial.println("Serial started (?)");
}
void loop(){
if (mySerial.available()){
mySerial.write(millis());
delay(1000);
}
}
Conecte o Digispark a outro dispositivo como por exemplo, um Arduino UNO e divirta-se!
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.