Home › Tag Archives › comunicação

Adaptadores seriais USB-TTL baseados em CH340G

Modelo BAITE

Neste adaptador, há um LED próximo ao nome BAITE que pisca azul quando o adaptador está transmitindo. Nada pisca quando está recebendo. E um LED próximo a CTS que acende vermelho quando o adaptador está energizado.

O propósito da chave deveria ser configurar as saídas (TXD, DTR) para 5V ou 3.3V, mas na verdade só muda a tensão no terminal VC. Apertar o botão desliga o terminal VC enquanto estiver pressionado.

TXD é saída. RXD é entrada.
usb_ttl_CH340G_BTE13-009_DSC00663_640_automalabs.com.br

Modelo AI

Tem três LEDs:

  • Um azul que acende quando está energizado
  • Um amarelo que pisca durante a transmissão
  • Um vermelho, que pisca durante a recepção

Quase não dá para distingui-los quando apagados, mas a luz é bem visível.

Supostamente o propósito do jumper é configurar a saída TXD para 5V ou 3.3V, mas nos meus testes a tensão nas saídas permaneceu a mesma nas duas posições da chave. Considere que esse é um adaptador de 5V.

TXD é saída. RXD é entrada.

usb_ttl_CH340G_frente_DSC00661_anotado_automalabs.com.br

usb_ttl_CH340G_fundo_DSC00662_automalabs.com.br

Veja também:

Adaptador serial USB-TTL CNT-003 baseado em CP2104

usb_ttl_CP2104_CNT-003_DSC00660_640_automalabs.com.br

Nota: neste adaptador TX é saída do adaptador e RX é entrada. Parece o óbvio ululante, mas já peguei adaptadores assim que invertem essa regra e te fazem perder o resto dos cabelos que tem procurando onde está o erro de conexão.

Este adaptador tem uma caractéristica especial, baseada no chip CP2104: usando o SDK do fabricante você pode controlar o estado das portas GPIO de I00 a I03 na placa.

Veja também:

Adaptador RS232 – Serial TTL baseado em MAX232

Esse adaptador é usado quando você precisa conectar um dispositivo serial TTL (como o arduino) a um dispositivo serial RS232, como o PC, balanças, impressoras, etc.

O jumper que você vê entre TXD e RXD permite o teste rápido do adaptador (loopback). Para usar, remova o jumper e use os cabinhos para ligar TXD, RXD e GND ao dispositivo TTL. A alimentação de 5V desse adaptador tanto pode vir de uma porta USB, usando o cabo fornecido, quanto ser conectada ao header “GND +5V” no topo da imagem.

O conector é DB9 fêmea.

Adaptador USB – Serial TTL CP2102 tipo Breakout (todos os sinais acessíveis)

Se você precisa montar um arduino na protoboard este é o modelo ideal de adaptador para fazer a programação, porque permite o upload automático sem a necessidade de apertar o botão reset num determinado momento. Basta ligar o sinal DTR do adaptador ao reset por meio de um capacitor de 100nF (posso fornecer todo o material necessário para a montagem do arduino na protoboard).

Atenção: Este módulo usa um ponto de vista invertido (ou é erro mesmo) na determinação de quem é RX e TX. Para conectar ao arduino ou a módulos bluetooth, ligue RXD a RX e TXD a TX.

Pode programar tanto designs com bootloader duemilanove quanto designs com bootloader UNO.

Também pode ser usado para programar o Arduino Pro Mini conectando o DTR ao pino “GRN” (green) da placa. Nesse caso você não precisa do capacitor porque, pelo menos no modelo de Pro Mini que eu forneço, já existe um capacitor entre GRN e RST.

O serial number do chip pode ser facilmente modificado via software de forma que dois ou mais módulos sempre assumam a mesma porta serial no PC (se o número for o mesmo) ou assumam portas diferentes (serial diferente).

Funciona também com a Gboard.

Veja também:

Módulo adaptador RS485 – TTL baseado em MAX485

A finalidade deste módulo é conectar um dispositivo TTL qualquer (como  o arduino) a dispositivos RS485 (EIA/TIA485).

Se você já sabe como estabelecer comunicação com outros dispositivos pela porta serial do Arduino, então já sabe quase tudo o que é preciso para estabalecer uma comunicação RS485, porque é quase a mesma coisa. Só há um detalhe que você precisa ter em mente: Você não pode receber ao mesmo tempo que transmite, por isso se seu programa requer as duas coisas precisará modificá-lo para acomodar isso.

Você pode usar dois módulos desse para estabelecer comunicação RS485 entre dois arduinos, se quiser.

Para transmitir, coloque +5V nos terminais DE e RE do transmissor e GND nos terminais RE e DE do receptor. Aí está o problema: se um dos dispositivos vai sempre transmitir e outro sempre receber, o funcionamento é simples e transparente. Mas se você precisa inverter os papéis de vez em quando, precisará seguir um protocolo para evitar colisões (dois trasmitindo ao mesmo tempo).

A primeira e mais simples providência é deixar sempre ambos no modo RX e só colocar em modo TX durante o tempo estritamente necessário para transmitir. Se um dos dispositivos sempre inicia e o outro sempre responde, também é fácil implementar. Problema mesmo é quando ambos podem iniciar a transmissão a qualquer momento. Em redes grandes, geralmente um dispositivo chamado de master fica com a tarefa de organizar a comunicação entre os outros, chamados de slaves. O master consulta um por um os slaves perguntando se eles tem algo a dizer.

Outras providências serão necessárias dependendo da complexidade da “conversa” entre os dispositivos.

Sobre RS485

RS485 tem caracterísitcas importantes com relação à bem mais conhecida RS232:

  • Um alcance muito maior, que chega a 1200m;
  • Maior imunidade a ruído;
  • Possibilidade de conectar vários dispositivos na forma de um “barramento”. Isso dependendo do caso gera uma economia enorme em fiação

Tanto a RS422 quanto a RS485 são especificações DE HARDWARE. Nada se fala sobre software ou protocolos de qualquer tipo nessas especificações. É o projetista quem tem que determinar como os nós irão trocar informações. O endereçamento dos nós é feito por software (ou firmware, no caso dos uCs), por isso numa rede multiponto RS485 o software empregado precisa  prever isto. Mas como não existe nenhum protocolo “especial” na RS485, qualquer programa que já funcione com RS232 pode funcionar em RS485 com alterações mínimas.

Note que mesmo quando falamos que a ligação é a dois fios ou a quatro fios, pode existir um terceiro e um quinto fios: o terra. Ele pode ser dispensado, mas seu uso garante que a tensão de modo comum no receptor fique dentro de uma faixa segura e isso aumenta a estabilidade e imunidade a ruídos da interface.

Quando a ligação é a dois fios, dependendo de como seja implementada, o nó transmissor pode ou não receber um eco de sua própria transmissão. Leve isso em conta. A recepção do eco pode ser usada para verificar se está havendo Line Contention no Bus (ou mesmo que ele está em curto).

A forma correta de implementar RS485 “desconecta” os transmissores inativos do barramento. Isso é conseguido com drivers dotados de saída tri-state. Os chips compatíveis com RS485, como o 75176, tem um pino de “Enable” que é comumente ligado à linha RTS da porta RS232 no PC. O sinal RTS é então usado como LIGA/DESLIGA da transmissão. Em um nó com microcontrolador, é claro, um substituto do sinal RTS deve ser implementado, já que mesmo em um uC com UART embutida apenas existem os sinais TX e RX.

Só que “gastar” uma saída do uC somente para habilitar a transmissão nem sempre é aceitável. Além disso, em algumas aplicações, RS485 é usada apenas para estender o alcance de uma RS232 e o software já existente nem sempre manipula o sinal RTS da forma correta. Muitos softwares levantam o sinal RTS assim que abrem a porta e só o desativam quando a fecham, mas para ser usado para controlar uma interface RS485 o sinal RTS deve levantar imediatamente com o primeiro bit transmitido e cair pouco depois do último bit. Para piorar as coisas, se o sofware estiver rodando sob Windows pode não ser possível levantar e baixar a linha RTS com o sincronismo necessário. Isso cria um problema.

Problema que frequentemente é contornado implementando um circuito que monitore a linha TX da interface e ative o sinal de enable da RS485 assim que a transmissão iniciar e que o derrube uma fração de segundo após a linha TX estabilizar. Essa forma de implementar poupa uma linha do uC e, do lado do PC, usa apenas RX, TX e GND.

Definitivamente não é recomendável criar um sistema com múltiplos masters. Sempre que possível, delegue a missão de Master a apenas um nó do sistema (geralmente será o PC).

O 75176 é obsoleto. Você pode usar os mais modernos LTC485 e MAX485 no lugar. São compatíveis pino a pino já que o 75176 se tornou um “industry standard”. E os chips mais modernos são também mais resistentes, como você pode ver no artigo da Circuit Cellar (links).

—————————
Links Úteis

Shield GSM GPRS baseado em SIM900

A finalidade deste shield é conectar o arduino (qualquer um, mas é preciso fazer uma pequena alteração para o Mega) à rede celular para enviar e receber mensagens (SMS) ou se conectar à internet (GPRS). Você teoricamente (isso eu nunca testei) também pode conectar um microfone e/ou alto falante aos respectivos conectores e “ligar” para o seu projeto e ouvir o que se passa ao redor.

Nota: é muito comum as pessoas (incluindo muitos vendedores) confundirem GPRS com GPS. São duas funcionalidades complementares mas completamente diferentes. Este shield não tem funcionalidade GPS e são raros os que tem, porque geralmente faz mais sentido comprar as duas coisas separadamente.

A documentação completa do shield é fornecida pela Elecfreaks. Na página você irá encontarar diagramas e diversas informações importantes, mas os exemplos não são muito bons. Use a biblioteca que eu sugiro mais adiante.

Este shield precisa de alimentação extra. Ele não vai funcionar direito, se chegar a funcionar, apenas com a alimentação recebida do computador pelo cabo USB. Use a fonte fornecida com o shield.

O SIM900 precisa ser “ligado” para funcionar. Neste shield isso é feito dando um pulso no pino D6 do Arduino. Mas você também pode fazer isso apertando o botão S_PWR no shield.

A princípio você pode achar isso incoveniente, mas tenha em mente que o consumo do módulo é elevado. Dessa forma você tem um controle e para poupar energia só precisará ligar o “celular” quando realmente for necessário. Se não quiser ter que ficar apertando o botão, simplesmente programe seu sketch para ativar D6.

Você não precisa do arduino para usar esse shield. Com alguns fios e um adaptador USB-TTL você pode conectar o shield diretamente a um computador e usar um terminal serial qualquer para enviar e receber comandos.

A melhor biblioteca que conheço para esse shield é a GSM Shield Library. Compatível com o IDE 1.x.

Para testar a comunicação com a internet, rode o exemplo GSMSHIELD->GSM_GPRSLibrary_AT. Esse exemplo traz o conteúdo da página em google.com.

Problemas com o Arduino Mega

Esta combinação funciona sem qualquer problema no Arduino UNO, mas para usar com o Arduino Mega é necessário mudar a porta usada para comunicação:

1)Escolha um pino livre qualquer no Mega. Neste exemplo eu vou usar o D53 (também funcionou com o D10);

2)Edite a linha em GSM.cpp, para que aponte para o novo pino:

#define _GSM_TXPIN_ 2

Minha linha ficou assim:
#define _GSM_TXPIN_ 53

3) Remova o jumper que conecta S_TX ao pino D2 e, com um fio, conecte S_TX ao pino escolhido

A foto abaixo mostra o pino 22 sendo usado, só para facilitar o enquadramento:

O problema é que por default o shield se comunica com o arduino através de uma porta serial virtual criada pela biblioteca SoftwareSerial nos pinos D2 e D3, porém por alguma razão o shield não consegue usar o pino D2 do Mega para isso. Note que o shield tem previsão para usar a porta serial “real” em D0 e D1, mas isso conflitaria com a comunicação do Arduino com a porta USB. Só dá para usar a porta serial real em situações bem controladas.

Procedimento básico de teste

  1. Coloque um cartão SIM no slot sob o shield;
  2. Encaixe o shield no Arduino;
  3. Conecte o plug de alimentação externa ao arduino;
  4. Aperte o botão S_PWR por um segundo. O LED STA deve acender e o LED NET comecará a piscar. Observe o ritmo das piscadas. Se estiver piscando uma vez a cada 3s, o shield está pronto para estabelecer comunicação com a rede celular;
  5. Supondo que você tenha acesso à internet pelo chip escolhido, rode o exemplo GSMSHIELD->GSM_GPRSLibrary_AT. Se o shield conseguir estabelecer comunicação GPRS, você verá algo assim na porta serial:

—————————-————————————————————-
GSM Shield testing.

status=READY
TEST
status=ATTACHED

189.119.98.144

Number of data received:
0

Data received:

HTTP/1.0 302 Found
Location: http://www.google.com.br/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=88974c4a4ce7d358:FF=0:TM=1356638512:LM=1356638512:S=7ZrafKBfjFkjdNiU; expires=Sat, 27-Dec-2014 20:01:52 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=M3yKlvZcLBDQf7zPokAkH8yuKfs6g3sugEclhXF3xOXadcRkBrcIwYXLk_9iCdHZys6DcFwP20NDYU3VMzoidFGJJyP3cfirxhaw63ly4wdRWOOdfLi4fBUcCRYe8Ec5; expires=Fri, 28-Jun-2013 20:01:52 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP=”This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.”
Date: Thu, 27 Dec 2012 20:01:52 GMT
Server: gws
Content-Length: 222
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<HTML><HEAD><meta http-equiv=”content-type” content=”text/html;charset=utf-8″>
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF=”http://www.google.com.br/”>here</A>.
</BODY></HTML>

CLOSED

——————————————————————————–

Para enviar SMS

Cuidado! Certifique-se de usar um chip de uma operadora que cobre barato por SMS enviado, como o TIM Infinity. Durante os testes você pode acabar enviando, às vezes sem saber, muitas mensagens.

Rode o exemplo GSMSHIELD->GSM_GPRSLibrary_SMS. Nos meus testes só funcionou quando eu mudei a seguinte linha:

 if (gsm.begin(2400)){

para

 if (gsm.begin(4800)){

Por default, o sketch apenas vai listar as mensagens contidas no chip. Se você quiser enviar um SMS toda vez que o arduino for inicializado, descomente as seguintes linhas:

   // if (sms.SendSMS(“34567890”, “Arduino SMS”))
  //    Serial.println(“\nSMS sent OK”);

Trocando 34567890 pelo número do telefone que vai receber o SMS.

Display

O módulo suporta o encaixa direto de módulos display Nokia 5110 (vendido separadamente) que tenham o seguinte pinout:

  • 1 – VCC
  • 2 – GND
  • 3 – SCE
  • 4 – RST
  • 5 – D/C
  • 6 – DIN (MODI/MOSI)
  • 7 – SCLK
  • 8 – LED

A ordem dos pinos de 3 a 7 (destacados em verde) não é realmente importante, porque em geral você pode escolher isso no sketch. Mas a posição dos pinos 1, 2 e 8 precisa ser como indicado.

Notar que, para economizar pinos, o pino 8 é permanentemente conectado a +VCC, por isso o sketch não poderá controlar o acendimento do backlight. Por um lado isso gera um problema de consumo, mas por outro, supostamente o display só deve ser conectado quando você estiver debugando o projeto.

Você pode usar, entre outras, a biblioteca LCD5110_Graph

Outras fontes de informação

As páginas seguintes tratam de shields diferentes, mas cada uma delas tem informação interessante, que não encontrei na página oficial, incluindo exemplos GPRS

Módulos Bluetooth Master e Slave

Módulo slave

 

Módulo Master

 

Para entender o propósito e aplicação desses módulos, é preciso assimilar o seguinte:

  • O master só pode se comunicar com um (e apenas um) slave;
  • O slave pode se comunicar com um (e apenas um) master ou um (e apenas um) computador com suporte bluetooth, que nesse caso atua como master;
  • Não pode haver comunicação entre dois slaves ou dois masters. É preciso um de cada. Salvo engano, é uma limitação do protocolo BT;
  • Tanto o master quanto o slave podem ser conectados fisicamente a qualquer coisa que ofereça uma porta serial UART* TTL. Isso pode ser um computador com um adaptador USB – serial TTL, o arduino (qualquer um deles) ou quaisquer outros microcontroladores e dispositivos prontos que tenham portas seriais, mesmo se forem “caixas pretas”. Se a porta segue o padrão UART (“RS232”), deve funcionar;

* No mundo do PC, aprendemos a chamar isso pelo nome genérico de “RS232”, que não está inteiramente certo nesse caso. “UART” é um termo genérico mais apropriado quando descemos ao nível dos microcontroladores.

Funcionamento do módulo master
É preciso prestar atenção ao LED:

  • Piscando rapidamente (várias vezes por segundo): O master não tem registro de já ter pareado com um slave;
  • Piscando devagar (aprox. uma vez por segundo): O master “lembra” de ter pareado com um slave, mas não está pareado no momento;
  • Aceso: pareado

Uma vez que o master não tenha registro de já ter sido pareado com um slave, o pareamento ocorrerá automaticamente quando um slave for ligado no alcance dele. Ele sempre lembrará desse slave pelo seu endereço MAC e não pareará com nenhum outro que apareça, a não ser que se aperte o botão, que apagará o MAC gravado (você pensou que o botão servia para parear, né? Eu também!).

Funcionamento do módulo slave

  • LED piscando: a porta não está “aberta” ainda. Simplesmente parear não adianta;
  • LED aceso: porta serial aberta

Uso no PC

Você pode usar tanto o master quanto o slave no PC, desde que use um adaptador USB-serial (TTL) ou algo do gênero. A vantagem de usar esses módulos no PC é que o computador nem precisa saber o que é BT, livrando você de se envolver com configurações do stack, pareamento, etc. Nada de mexer com Bluesoleil ou com o stack padrão do Windows. Só é preciso instalar o driver do adaptador que você escolheu, que vai criar uma porta serial que você vai usar.

Leia também: Notas sobre a comunicação com o Android

Ethernet shield w5100: Teste completo

O teste completo envolve o uso do slot microSD. Você pode usar apenas ele ou pode usar o w5100 sem o acesso ao cartão. Aproveitando essa independência, certifique-se de que você já tenha sido capaz de colocar o shield para funcionar usando os exemplos que vem com o IDE Arduino. Não tente partir direto para um teste completo, quando você pode testar as partes primeiro.

Tenha em mente que ao lidar com arquivos no arduino você vai precisar voltar no tempo e relembrar (ou se familiarizar com) as diferenças entre FAT16 (FAT) e FAT32 e suas limitações. Em geral, o menor denominador comum, garantido de funcionar em todos os casos, será um cartão de até 2GB formatado em FAT16 (FAT). Maior que isso ou formatado com outro sistema e você poderá ter problemas.

Testando o w5100 (arduino 0022 ou 1.01):

File->Examples->Ethernet->Webserver

Altere o endereço IP no sketch para que combine com sua rede e tente acessá-lo usando o browser. Se tudo correr bem você verá uma lista dos valores nas entradas analógicas do arduino.

Testando o slot microSD  (arduino 0022 ou 1.01):

File->Examples->SD->Files

Coloque o cartão no slot e abra o monitor serial. Se tudo estiver OK você verá algo parecido com isto:

Se você encontrar algo muito diferente, como a mensagem “initialization failed!”, não adianta prosseguir com o teste completo. Verifique se o cartão está corretamente formatado. Testado com um cartão FAT16 de 2GB e com um cartão FAT32 de 8GB.

Teste completo

Requerimentos:

  • Um cartão microSD corretamente formatado. Eu padronizei meus testes com um cartão de 2GB formatado com FAT16, mas já testei sem problemas com um cartão de 8GB formatado com FAT32.
  • O IDE Arduino 0022 (veja em “Previous IDE versions”). Todos os meus testes são feitos com essa versão, mas se quiser usar a versão 1.01, veja o final deste texto.
  • A biblioteca SDFATlib – Extraia o conteúdo do ZIP e coloque o diretório SDfat no diretório libraries. Importante: use a versão do meu link. A versão mais recente não compila no arduino 0022.
  • O sketch SDWebBrowse da Adafruit (use a versão .pde)

Mude o sketch para o IP refletir a configuração da sua rede (digamos que seja 192.168.254.177).

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 254, 177 };
Server server(80);

Coloque um cartão no slot e faça o upload do sketch

Importante: sem um cartão corretamente formatado e com arquivos no slot, o exemplo da adafruit vai ficar travado. Nem sequer responderá a um ping.

Agora, de qualquer browser, tente acessar o arduino direto pelo IP:  http://192.168.254.177/

A resposta deverá ser a lista de arquivos no cartão. Atenção: este sketch não tem a capacidade de entrar em pastas, nem exibir imagens. Mas você conseguirá ver o conteúdo de arquivos .txt.

Outro modo de testar é abrindo o monitor serial. Se algo der errado, ele exibirá apenas algo assim:

Mas se estiver tudo certo aparecerá uma lista completa do conteúdo do cartão.

Mensagens de erro

“‘Sd2card’ does not name a type’ – você não instalou a biblioteca SDFatlib corretamente

“cannot declare aparameter ‘client’ to be of abstract type client” – você está usando uma versão do sketch que só funciona com o Arduino 002x, no Arduino 1.x.

Arduino 1.0.1

Para que funcione na versão mais nova do IDE, siga todo o meu procedimento, fazendo as seguintes alterações:

Apesar de eu não ter migrado ainda para essa versão do IDE, fiz um teste aqui e tudo pareceu normal

Para mais informações sobre o funcionamento dos sketches, visite a página da autora.

Módulo receptor RF de 315MHz

Este módulo pode ser usado em conjunto com um transmissor para comunicação entre arduinos. Porém meu “foco” é a sua capacidade de decodificar comandos emitidos por controles remotos comerciais operando na faixa dos 315MHz.

Atenção:  o receptor precisa de uma antena mas vem sem ela. Solde um pedaço de fio de aproximadamente 23.8cm (este é o comprimento “ótimo” para 315Mhz) no orifício que você vê no canto inferior esquerdo da foto. O fio pode ficar enrolado como uma espiral, para poupar espaço.

Instale a biblioteca RC-Switch.

Rode o sketch Examples->RCSwitch->ReceiveDemo_Simple

O pino DATA do receptor é conectado ao pino 2 do arduino.

Ao apertar os botões de um controle remoto compatível, algo assim deve aparecer na porta serial (eu apertei dois botões):

Received 1393741 / 24bit Protocol: 1
Received 1393777 / 24bit Protocol: 1

Testado com um controle remoto genérico baseado no bem conhecido chip codificador SC2262 (PT2262) e com vários outros baseados no mais sofisticado ev1527 (SC1527,RT1527, FP1527).

Dúvidas comuns sobre o shield ethernet Wiznet W5100

O que é esse “HanRun” e esses códigos em cima do conector ethernet? 

Esse conector é especial. É fabricado pela HanRun e dentro dele existem dois LEDs e um componente essencial chamado de “magnetics”. O código HR911105A é o modelo do conjunto. Datasheet abaixo.

Por quê você chama de “Wiznet W5100”?

Porque Wiznet é o fabricante do componente principal do shield, cujo modelo é W5100. É para ele que você tem que procurar exemplos. Veja o que está escrito no quadrado preto no centro da placa.

Por que o arduino não aparece na lista de dispositivos conectados do meu roteador?

Aquela lista não é de dispositivos “conectados” nem “detectados”. É uma lista de dispositivos que pediram um endereço IP ao roteador, através de DHCP.  Se seu sketch não usa DHCP (a maioria usa IP fixo), o seu arduino não vai aparecer na lista de nenhum roteador.

Qual o endereço MAC do shield?

Nem o shield nem o chip tem endereço MAC. O MAC é definido no seu sketch, geralmente desta forma:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

Por um lado, isso te dá liberdade de usar o endereço que quiser. Por outro, pode dar uma baita dor de cabeça por causa da regra inviolável que diz que não podem existir dois MACs iguais em uma mesma rede. Enquanto você estiver brincando apenas com um shield não há problema, mas ao adicionar o segundo você vai ter que estar permanentemente alerta.  Por exemplo, se você já tem um Arduino em rede na sua casa e quiser debugar o programa usando um arduino na sua mesa, precisa se lembrar que o sketch de teste não pode ter o mesmo MAC do que está “em produção” (nem o mesmo IP) e também precisa lembrar que ao fazer o upload do código que  estava em teste para o arduino em produção, tem que alterar o MAC (e o IP).

O melhor modo de evitar dor de cabeça com isso é fazer seus sketches lerem o MAC de uma memória externa, que pode ser um cartão SD (perceba que o shield wiznet tem um slot) ou uma EEPROM. Você grava as memórias com MACs diferentes, bota uma etiqueta em cada uma dizendo qual é (só por organização), e esquece o problema.

Que LEDs precisam estar acesos?

Mesmo que o shield não esteja sendo usado (nenhum sketch que o use carregado), ao plugar o cabo de uma rede de 100Mbps devem acender-se quatro LEDs: PWR, LINK, 100M e FULLD. Se não acenderam esses quatro, o problema pode estar no shield ou no cabo.

Que pinos são usados pelo shield?

D4 (apenas para o SD), D10, D11,D12, D13, alimentação e o conector ICSP.

Por que o shield 1602 com keypad não funciona em conjunto com o Wiznet?

Porque o desenvolvedor do shield escolheu o pino 10 para desligar o backlight, colidindo com o requerido pelo shield Wiznet. Entorte o pino 10 do shield 1602 para que ele não entre e assim ambos vão funcionar.

Por que o sensor ultrassônico não funciona quando conecto o shield Wiznet?

Não sei. Não é defeito do sensor, nem do shield. Basta o shield estar plugado para que o sensor ultrassônico sempre retorne uma distância de 2-4cm. É como se a simples presença do shield interferisse com a temporização da função que mede o tempo de resposta do sensor. Ainda não tenho uma explicação e muito menos solução para isso.

Por que ao desligar a alimentação do arduino, quando a alimentação volta ele “sumiu” da rede?

Esse é um problema curioso que depende da sua placa base (seu arduino). Com algumas nunca acontece e com outras, você sempre precisa apertar o botão RESET   para que a rede volte a responder. É um problema que ocorre com todos os shields da mesma versão, incluindo os fabricados pela Sparkfun e pela Adafruit. Existem artifícios de hardware que podem ser usados para contornar isso, caso ocorra com você.

Ao energizar, os LEDs PWR e FULLD acendem. Plugar o cabo de rede não faz efeito.

Nem é preciso plugar o cabo para perceber que há algo errado, porque apenas PWR devia estar aceso sem um cabo de rede conectado. Apertando o botão RESET funciona? Se sim, o shield está com um problema de inicialização. Os shields com esse problema são rejeitados pelo meu controle de qualidade e reservados para meu uso apenas. Se acontecer com você no período de garantia, solicite a troca.

Datasheet HR911105A
Datasheet HR911105A
HR911105A.pdf
304.6 KiB
1102 Downloads
Detalhes...