Módulo de display gráfico conhecido como “Nokia 5110” ou “Nokia 3310”

Preço base sem descontos: R$49.

Este display também é conhecido por “PCD8544”, que é o nome do chip de controle da Philips embutido nele, e “84×48”, que é sua resolução. Teoricamente este chip só suporta 3.3V, mas repetidos testes feitos por diversos desenvolvedores tem mostrado que o chip é tolerante aos 5V do Arduino, por isso você pode fazer as ligações diretamente.

São oito ligações: duas para alimentação de 5V, cinco para controle e uma para acender o backlight.

Usando fonte pequena, sem espaçamento entre linhas, é possível exibir cerca de 6 linhas de 14 caracteres com este display.

O maior problema que o desenvolvedor encontra com ele é o contraste. O ajuste é feito por software e o valor correto varia enormemente de lote para lote do display. O sintoma de um contraste errado varia de uma tela completamente branca (o que é impossível de distinguir de fiação incorreta) a uma tela completamente preta, passando por imagens “sujas” que dão a impressão de defeito no display. E nem todas as bibliotecas e exemplos de uso tem suporte a ajuste de constraste, por isso é muito comum ter uma certa dificuldade para colocar este display para funcionar em um projeto. Mas uma vez que você acerte o valor do contraste, o que mesmo com as bibliotecas compatíveis precisa ser feito por tentativa e erro, o display funciona muito bem.

Eu recomendo que você use a biblioteca Adafruit PCD8544, que requer a biblioteca Adafruit GFX. Testado com Arduino 1.04

Você então ajustará o contraste modificando a linha:


display.setContrast(50);

Valores maiores deixarão a imagem mais escura.

O demo também explica como o display precisa ser ligado:


// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

Você tem total liberdade para usar quaisquer pinos que queira.

Cópias locais das bibliotecas testadas:

Adafruit-GFX-Library-master
Adafruit-GFX-Library-master
Adafruit-GFX-Library-master.zip
8.3 KiB
253 Downloads
Detalhes...
Adafruit-PCD8544-Nokia-5110-LCD-library-master
Adafruit-PCD8544-Nokia-5110-LCD-library-master
Adafruit-PCD8544-Nokia-5110-LCD-library-master.zip
8.7 KiB
286 Downloads
Detalhes...

Módulo Ethernet Baseado em ENC28J60

O módulo deve ser conectado conforme este diagrama:

Os pinos mudam porque trata-se da porta SPI, que está associada a pinos diferentes no mega.

Não é realmente necessário usar o pino ENC-INT. A Biblioteca Ethershield só usa interrupções em um dos exemplos. E nos meus testes programas simples funcionaram sem qualquer problema com esse pino desconectado.

Os pinos de entrada do ENC28J60 são tolerantes a 5V. Você deve alimentar com 3.3V, mas não há problema se o I/O for 5V, como é o caso do Arduino (exceto DUE).

Para download da biblioteca, que já vem com vários exemplos de uso, siga as instruções deste link.

Limitações

Ao rodar os exemplos de webserver da biblioteca, verá que são bem simples. Sem graça mesmo. Mas isso parece ser inevitável. Entre as limitações do ENC28J60 está o fato de que ele não pode lidar com múltiplos pacotes TCP-IP, então ele tem que mandar toda a página de uma vez, em um único pacote. Porém o tamanho de um pacote TCP-IP está limitado por padrão a algo em torno de 1500 bytes já contando com o overhead; então por segurança os exemplos usam buffers limitados a 500 bytes (não deveria ser tão drástico, mas talvez a biblioteca tenha outra limitação). Ou seja: o webserver não pode dar nenhuma resposta cujo HTML tenha mais que 500 bytes no total, mas código HTML não é nada “econômico” nesse sentido. O sintoma é que o webserver deixa de responder, ficando travado.

O tamanho desse buffer é definido nesta linha dos exemplos:

#define BUFFER_SIZE 500

Para complicar, o Arduino UNO/Duemilanove (ATMEGA328) tem apenas 2KB de RAM (o ATMEGA168 só tem 1KB) para ser usado por todo o seu sketch. Por isso, ao tentar contornar o problema aumentando o tamanho do buffer você corre o risco de travar todo o seu programa.

Veja bem: isso significa que não dá para fazer algo bonito como a GUI de um modem ADSL moderno com um ENC28J60 e um Arduino, porém não é esse o único propósito de uma conexão ethernet. O ENC28J60 é perfeitamente capaz como um meio de enviar comandos simples (por GET, por exemplo) e receber status via rede. Com 500 bytes por comando ou resposta dá para fazer muita coisa. Se você realmente não pode viver com essa limitação, precisa de um shield baseado em um chip com mais recursos, como o Wiznet W5100.

Nota: o ENC28J60 tem outras limitações. Eu só estou citando uma porque foi nessa que eu esbarrei.

 

Biblioteca Ethercard

O próprio autor da biblioteca ethershield anunciou que não atualizará mais a biblioteca e recomenda o uso da biblioteca Ethercard. Essa biblioteca é compatível com o módulo sem problemas, mas o pino CS precisa ser ligado ao pino D8 do Arduino UNO. Essa é a única diferença de conexão. Mas a biblioteca permite a escolha fácil do CS, que agora é definido na inicialização que é feita no sketch.

Por exemplo, para mudar o pino CS para 10, troque nos exemplos:

  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) //sem o parâmetro opcional, é usado D8.

por

  if (ether.begin(sizeof Ethernet::buffer, mymac,10) == 0) // define D10 como CS

 

 

Arduino Motor Drive Shield

Motor Drive Shield

O único tipo de motor que pode ser ligado diretamente às portas do arduino é o servo, porque essas nem fornecem corrente suficiente, nem são protegidas contra indução. Os demais motores precisam de drivers (hardware – não confundir com o driver de software). Esse é o papel desse shield, que usa dois drivers modelo L293D.

Segundo o datasheet do L293D, os motores usados podem ter tensões entre 4,5 e 36V. É preciso ligar a fonte adequada nos terminais EXT_PWR.

Atenção: este shield conflita com o ethernet shield. Se precisar de ambos em seu projeto e seus motores não forem de passo, avalie a possibilidade de usar em vez deste shield um ou dois módulos L298N. Você pode fazer este shield funcionar em conjunto com o ethernet shield, mas isso requer fazer algumas alterações de hardware (mudar pelo menos um dos pinos) e no software (a biblioteca precisa ser editada).

Requer a biblioteca AFMotor de Ladyada.

Instruções de conexão aqui:

Suporta dois motores de passo ou quatro motores de corrente contínua comuns ou uma combinação de ambos.

Você pode usar PWM para controlar a velocidade dos 4 motores individualmente. A biblioteca de Ladyada se encarrega dos detalhes

Observações (só para motores de passo)
A placa tem suporte a dois motores de passo, controlados individualmente. Cada exemplo da biblioteca prevê o motor ligado em uma determinada porta.

Porta 1: Identicada com M1 e M2
Porta 2: Identicada com M3 e M4

Por exemplo, a linha:

AF_Stepper motor1(48, 2);

Significa que o motor está ligado na porta 2.

Em cada porta, o terminal central é o comum das bobinas.

Módulo de comunicação sem fio NRF24L01+

Também chamado de NRF24L01P. Esse módulo é usado em pares, mas pode ser vendido por unidade.

  • Worldwide 2.4GHz ISM band operation
  • 250kbps, 1Mbps and 2Mbps on air data
  • Ultra low power operation
  • 11.3mA TX at 0dBm output power
  • 13.5mA RX at 2Mbps air data rate
  • 900nA in power down
  • 26µA in standby-I
  • On chip voltage regulator
  • 1.9 to 3.6V supply range
  • Enhanced ShockBurst™
  • Automatic packet handling
  • Auto packet transaction handling
  • 6 data pipe MultiCeiver™
  • Drop-in compatibility with nRF24L01
  • On-air compatible in 250kbps and 1Mbps with nRF2401A, nRF2402, nRF24E1 and nRF24E2
  • Low cost BOM
  • ±60ppm 16MHz crystal
  • 5V tolerant inputs
  • Compact 20-pin 4x4mm QFN package

Note que esse é a versão “plus” do NRF24L01. Note também que o pinout é muito diferente. Para começar, o módulo NRF24L01 tem 10 pinos, enquanto o NRF24L01+ tem apenas 8.
Todos os meus módulos são testados com este demo (versão software SPI) ou com este (versão hardware SPI). Antes de testar com outros, teste com eles. Notar que as duas versões tem uma ligeira diferença na ligação (pinos D10 e D13 são trocados), mas elas são equivalentes. O arduino configurado com uma versão TX se comunica com um arduino configurado com qualquer das versões RX. Não é preciso instalar bibliotecas para rodar os demos.
Os exemplos da biblioteca RF24 parecem ser muito superiores, mas não consegui colocar para funcionar.