Protocolos de Comunicação
IoT
Por que aprender ?
ESP8266
SCP1000
I²C Display
Um pouco sobre Serial e Paralelo
Paralelo
Serial
Serial (UART)
- UART - Universal Asynchronous Receiver Transmitter
- Protocolo de comunicação muito utilizado (principalmente em microcontroladores)
- Vamos da o foco no Asynchronous Serial Transmission
- Utiliza dois fios, RX - Receptor e TX - Transmissor
Asynchronous Serial Transmission
- Forma de comunicação utilizada pelo hardware UART
- Não utiliza clock, porém, há um custo, overhead (start bit, parity bit, stop bit).
- Ambos os lados precisam concordar com a velocidade (Baud Rate, bits per second), i.e: 9600, 115200 etc
Frame Data
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/reference/serial
SPI (Serial Peripheral Interface)
- Diferente do UART, sua solução é "synchronous", isto é, depende de um sinal (i.e: "clock") para realizar a sicronização.
- Multiplos escravos, único mestre
- Fácil implementação (utiliza um registrador de deslocamento).
SPI (Serial Peripheral Interface)
- MISO : Master In Slave Output
MOSI : Master Ouput Slave In
SS : Slave Select
SCK(CLK) : Serial Clock - Full-duplex
- Transmissão circular
- 8 a 16 bits de data (suporte varia por plataforma)
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/reference/SPI
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/reference/SPI
I²C
- Desenvolvida em 1982 pela Philips
- Apenas dois fios, clock (SCL) e Data (SDA)
- Multiplos Mestres e Multiplos Escravos
- Velocidade varia entre UART e SPI
I²C
- Velocidade:
100 kHZ
400 kHZ
1 MHZ
3.4 MHZ
5 MHZ - A comunicação é feita em duas partes, "Address Frame" que indica o "dispositivo" na rede.
- Um bit indicando se é pra leitura ou escrita.
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/Reference/Wire
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/Reference/Wire
Exemplo
- Exemplo utilizando IDE do Arduino
- Abstração para o usuário (facilitando o uso)
- Plataforma Utilizada : ATmega328p (Arduino UNO)
https://www.arduino.cc/en/Reference/Wire
Fontes
- http://st4rk.net/random/serial.html
- https://www.freebsd.org/doc/en/articles/serial-uart/
- https://learn.sparkfun.com/tutorials/serial-communication
- https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
- http://arduino.stackexchange.com/questions/16348/how-do-you-use-spi-on-an-arduino
- https://en.wikipedia.org/wiki/Duplex_(telecommunications)#Full_duplex
- https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi
- https://learn.sparkfun.com/tutorials/i2c
- https://en.wikipedia.org/wiki/I%C2%B2C
- http://www.byteparadigm.com/applications/introduction-to-i2c-and-spi-protocols/
Apresentação IoT
By St4rk
Apresentação IoT
- 137