Serial no Digispark

Serial no Digispark

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.

Tutoriais sobre o Digispark

Se não leu os artigos anteriores relacionados ao Digispark, recomendo as leituras:


Bibliotecas para o Digispark

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

Serial no Digispark

Adicionando a board

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

Utilizando Digispark no Ubuntu

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.

Usando a Serial no Digispark

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!

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!