Prévia do material em texto
IOT - Internet das Coisas Protocolos de Comunicação com Periféricos Prof. Luiz Eduardo C. Leite Protocolos de Comunicação com Periféricos Tipo de Comunicação Paralela Serial Assíncrona Síncrona LPT IDE PCI Outros RS-232 RS-485 OneWire Outros SPI I2C I2S Outros Tipos de Comunicação • Paralela: um conjunto de vias é utilizado para transmissão simultânea e sincronizada de um padrão de 8 Bits ou de múltiplos de 8. • Geralmente conseguem taxas de transmissão maiores do que a transmissão serial. • Uma via de transmissão é necessária para cada bit. • Demanda conectores maiores (maior quantidade de vias). • Pode haver interferência entre as vias de transmissão. • Geralmente não conseguem transmitir a longas distâncias. • Serial: Os bits são transmitidos em série. • Utiliza uma quantidade menor de vias do que a transmissão paralela. • São geralmente menos susceptíveis a interferências • Transmissão Assíncrona: Não utilizam linha de clock. • Transmissão Síncrona: Utilizam linha de clock. Comunicação Serial • Em telecomunicações e ciência da computação, comunicação serial é o processo de enviar dados um bit de cada vez, sequencialmente, num canal de comunicação ou barramento. • É diferente da comunicação paralela, em que todos os bits de cada símbolo são enviados juntos. • A comunicação serial é usada em toda comunicação de longo alcance e na maioria das redes de computadores, onde o custo de cabos e as dificuldades de sincronização tornam a comunicação paralela impraticável. • Para curtas distâncias, barramentos seriais estão se tornando cada vez mais comuns devido ao ponto em que as desvantagens dos barramentos paralelos (densidade de interconexão) superam suas vantagens de simplicidade. Comunicação Síncrona e Assíncrona • Comunicação Síncrona: • Um uma linha de transmissão adicional é utilizada para transmitir um sinal de clock • Os pulsos do clock indicam os momentos em que o receptor deve ler o bit na linha de transmissão de dados. • Comunicação Assíncrona: • Não há sinal de clock • Um bit de início de transmissão marca o momento em que o receptor deve começar a ler os bits da linha de transmissão de dados. • O receptor deve fazer a leitura dos bits na mesma taxa de transmissão do transmissor. • Um bit de fim de transmissão marca o momento em que o receptor deve parar de ler os bits da linha de transmissão de dados. Transmissão Síncrona Transmissão Assíncrona Protocolos de Comunicação Serial • A comunicação serial é feita através de Protocolos específicos para que os bits transmitidos pelos equipamentos transmissores possam ser recebidos e interpretados apropriadamente pelos e receptores. • Protocolos definem: • Meios de transmissão • Representação de Bits em sinais elétricos • Taxa de transmissão • Mecanismos de correção de erro • Etc. • Exemplos de Protocolos de Comunicação Serial • Código Morse • RS-232 (baixa velocidade, implementado em portas seriais) • I2C • SPI • Universal Serial Bus (velocidade moderada, para a conexão de periféricos de computador) • FireWire • Ethernet • Fibre Channel (velocidade alta, para conectar computadores a dispositivos de armazenamento) • Serial ATA • PCI Express • SONET e SDH (telecomunicação de alta velocidade sobre fibra ótica) PROTOCOLO RS-232 Protocolo RS-232 • Na área de telecomunicação, RS-232 é o nome tradicional para uma série de protocolos utilizados para comunicação serial de dados entre um DTE (Data Terminal Equipment – usualmente um computador) e um DCE (Data Circui-Terminating Equipment – usualmente um modem). • É comumente utilizado nas portas seriais dos computadores. • O padrão RS-232 define os níveis de voltagem correspondentes aos níveis lógicos um (HIGH) e zero (LOW) para transmissão de dados e linhas de controle. • O padrão define as características elétricas e temporais dos sinais, o tamanho físico e pinagem dos conectores. Conexão Física Conexão Física DB25 Pin # DB9 Pin # Name Direction Description 1 - - Protective/Shielded Ground 2 3 TD OUT Transmit Data (Tx, TxD) 3 2 RD IN Receive Data (Rx, RxD) 4 7 RTS OUT Request To Send 5 8 CTS IN Clear To Send 6 6 DSR IN Data Set Ready 7 5 SGND - Signal Ground/Common Return 8 1 CD IN Carrier Detect (DCD) 9 - - Reserved 10 - - Reserved 11 - - Unassigned 12 SDCD IN Secondary Carrier Detect. Only needed if second channel being used. 13 SCTS IN Secondary Clear to Send. Only needed if second channel being used. 14 STD OUT Secondary Transmit Data. Only needed if second channel being used. 15 DB OUT Transmit Clock (TCLK, TxCLK). Used only in Synchronous mode. 16 SRD IN Secondary Receive Data. Only needed if second channel being used. 17 DD IN Receive Clock (RCLK). Used only in Synchronous mode. 18 LL - Local Loopback 19 SRTS OUT Secondary Request to Send. Only needed if second channel being used. 20 4 DTR OUT Data Terminal Ready 21 RL/SQ - Signal Quality Detector/Remote loopback 22 9 RI IN Ring Indicator 23 CH/CI OUT Signal Rate selector 24 DA - Auxiliary Clock (ACLK). Secondary Channel only. 25 - - Unassigned Interconexão de Equipamentos RS-232 Níveis de Tensão Elétrica • O padrão RS-232 define os níveis de voltagem correspondentes aos níveis lógicos um (HIGH) e zero (LOW) para transmissão de dados e linhas de controle • Valores válidos para o zero lógico estão entre -3V e -15V e valores válidos para o um lógico estão entre +3V e +15V. UART e USART • O padrão RS-232 não define elementos tais como: • Codificação de caracteres, • Enquadramento de bits, • Taxa de transmissão de bits • Mecanismos de detecção de erros • Tais detalhes são definidos e controlados por elementos de hardware para comunicação serial, conhecidos como: • UART – Universal Asynchronous Receiver Transmitter ou • USART – Universal Synchronous Asynchronous Receiver Transmitter. • Os circuitos UART ou USART estão presentes em circuitos integrados (tais como microcontroladores) e são responsáveis por converter a informação a ser transmitida para o formato serial. USART e UART em Microcontroladores • Normalmente os módulos de USART e UART presentes nos microcontroladores trabalham com voltagens de 0V e 5V ou 0V e 3.3V para os níveis lógicos zero e um. • Circuitos conversores de tensão devem ser utilizados para permitir a conexão dos pinos de tais microcontroladores às portas seriais dos computadores. Ex.: CI MAX232 Parâmetros da USARTs • Para que dois equipamentos possam se comunicar através do protocolo serial, suas USARTs devem ser configuradas com os mesmos parâmetros: • Taxa de bits: diz respeito à quantidade de bits que pode ser transmitida à cada segundo. Ex.: 9600, 115200 etc • Data bits: diz respeito à quantidade de bits presentes em um quadro. Geralmente é igual a 8 • Stop bits: Quantidade de bits transmitida ao final de cada quadro. Geralmente é igual a 1. • Paridade: mecanismo utilizado para identificar quando algum bit foi transmitido com erro: • Par: um bit é adicionado ao final do quando e setado para zero ou um de tal forma que o número total de bits do quadro seja sempre par. Se o receptor receber uma quantidade impar de bits, um erro ocorreu na transmissão. • ímpar: um bit é adicionado ao final do quando e setado para zero ou um de tal forma que o número total de bits do quadro seja sempre ímpar. Se o receptor receber uma quantidade par de bits, um erro ocorreu na transmissão. • Nenhum: nenhum mecanismo de identificação de erro é utilizado • Controle de fluxo: controla quando os bytes podem ser transmitidos. • Por hardware: linhas RTS e CTS são utilizadas • Por Software: receptor envia bytes indicando quando pode receber • Nenhum: sem controle de fluxo (muito utilizado) UART / USART Frame Programação da Porta Serial no Arduino • http://arduino.cc/en/Reference/serial http://arduino.cc/en/Reference/serial PROTOCOLO I2C Protocolo I2C • O I2C – Inter Integrated Circuit é um protocolo de comunicação serial síncrono criadopela Philips Semicondutores . • Permite que dispositivos diferentes se comuniquem e troquem dados através de um barramento bidirecional compartilhado. • Muito versátil, pode ser utilizado em uma ampla variedade de aplicações, desde sistemas pequenos e simples até sistemas complexos e de grande escala. • É amplamente utilizado em muitos dispositivos eletrônicos, como smartphones, computadores, sensores e até mesmo em sistemas industriais. • Possui dois tipos de dispositivos: • Master (mestre em inglês) é a unidade de controle responsável por coordenar todos os periféricos. • Slave (escravos em inglês) constituem os periféricos coordenados melo Master. Conexão de Dispositivos I2C • Além da alimentação (VDD) que tipicamente pode ser de 3.3V ou 5V, o barramento I2C é composto por duas vias: • SLC – Responsável pelo clock do barramento. • SDA – Linha bidirecional de transmissão de dados Funcionamento do Protocolo I2C • No estado neutro do barramento I2C, ambas as linhas de comunicação (SCL e DAS) são mantidas com valor digital alto. • Para iniciar a comunicação SDA é trazido para o valor digital baixo pelo mestre, com SCL em valor alto. Funcionamento do Protocolo I2C • Logo após SDA ser trazida pra baixo, o mestre escreve o endereço do dispositivo com o qual ele deseja se comunicar, por exemplo 0xC0. • Caso o dispositivo exista, ele responderá como um ACK (um pulso na linha SCL). • Em seguida, o mestre escreve o endereço do registrador no escravo que ele deseja ler ou escrever (R/W). • Após isso envia ou recebe o conteúdo do registrador a ser lido ou escrito. Programação da Interface I2C no Arduino • http://arduino.cc/en/Reference/wire http://arduino.cc/en/Reference/wire PROTOCOLO SPI Protocolo SPI • O SPI – Serial Peripheral Interface é um protocolo de comunicação serial síncrona criado pela Motorola. • Aplicações típicas incluem cartões SD e displays de cristal líquido ou OLED. • O SPI consegue implementar a taxas de transmissão bem maiores do que as obtidas pelo protocolo I2C. Por exemplo, 66Mbps (Adesto AT45BD0100D) vs 1Mbps (Microchip 24FC64) • Semelhantemente ao protocolo I2C, o protocolo SPI utiliza uma arquitetura “Master - Slave" (Mestre - Escravo), na qual o dispositivo Mestre origina o processo de leitura/escrita. • Diferentemente do protocolo I2C, no protocolo SPI, os sinais de comunicação possuem uma direção fixa e definida. • O SPI utiliza 3 + n vias para transmissão de dados. Uma linha para clock, uma linha para transmissão de dados do Master para os Slaves, uma linha para transmissão dos Slaves para o Master e uma linha individual para seleção de cada Slave pelo Master. Conexão de Dispositivos SPI Linha Significado Nomes Alternativos MOSI Master Output Slave Input SDO, DO, SO MISO Master Input Slave Output SDI, DI, SI SCLK Serial Clock SCK, CLK SS Slave Select CS, nSS, nCS Funcionamento do Protocolo I2C • O sinal de SS do SPI funciona como Seleção de Escravo (Slave Select). Um dispositivo Slave é selecionado quando seu pino SS estiver em nível lógico baixo. • O princípio básico de um dispositivo SPI é o Shift-Register. O dispositivo faz a conversão de um registrador paralelo para sinais seriais de acordo com clock Programação da Interface I2C no Arduino • https://www.arduino.cc/reference/en/language/functions/co mmunication/spi/ https://www.arduino.cc/reference/en/language/functions/communication/spi/ https://www.arduino.cc/reference/en/language/functions/communication/spi/ Slide 1: IOT - Internet das Coisas Protocolos de Comunicação com Periféricos Slide 2: Protocolos de Comunicação com Periféricos Slide 3: Tipos de Comunicação Slide 4: Comunicação Serial Slide 5: Comunicação Síncrona e Assíncrona Slide 6: Transmissão Síncrona Slide 7: Transmissão Assíncrona Slide 8: Protocolos de Comunicação Serial Slide 9: Protocolo rs-232 Slide 10: Protocolo RS-232 Slide 11: Conexão Física Slide 12: Conexão Física Slide 13: Interconexão de Equipamentos RS-232 Slide 14: Níveis de Tensão Elétrica Slide 15: UART e USART Slide 16: USART e UART em Microcontroladores Slide 17: Parâmetros da USARTs Slide 18: UART / USART Frame Slide 19: Programação da Porta Serial no Arduino Slide 20: Protocolo I2C Slide 21: Protocolo I2C Slide 22: Conexão de Dispositivos I2C Slide 23: Funcionamento do Protocolo I2C Slide 24: Funcionamento do Protocolo I2C Slide 25: Programação da Interface I2C no Arduino Slide 26: Protocolo SPI Slide 27: Protocolo SPI Slide 28: Conexão de Dispositivos SPI Slide 29: Funcionamento do Protocolo I2C Slide 30: Programação da Interface I2C no Arduino