Home › Tag Archives › UART

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:

Display serial UART, SPI e I2C com interface destacável, compatível com LCDSmartie.

As fotos abaixo mostram um modelo com display 1602, mas também forneço com display 2004.

O endereço I2C da interface é programável. Basta entrar no modo UART e dar um comando pela serial para definir o endereço. A velocidade da serial pode ser mudada da mesma maneira, sendo que o default é 9600BPS. Cocê escolhe os modos de operação I2C e SPI por jumpers de solda. O default é o modo UART (sem jmpers).

 

Forneço plugin para LCDSmartie.

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