RX
RX
TX
TX
VCC
GND
GND
VCC
ESP8266
SENZOR
RX
RX
TX
TX
VCC
GND
GND
VCC
ESP8266
SENZOR
Dátove vodiče RX a TX sa vždy zapájajú do kríža
RX
RX
TX
TX
VCC
GND
GND
VCC
ESP8266
SENZOR
RX
TX
GND
VCC
DISPLEJ
Zapojenie dvoch UART zariadení
RX1
RX
TX
TX1
VCC
GND
GND
VCC
ESP8266
SENZOR
RX
TX
GND
VCC
DISPLEJ
Zapojenie dvoch UART zariadení vyžaduje 2 samostatné porty
UART1
UART2
RX2
TX2
RX
RX
TX
TX
VCC
GND
GND
VCC
ESP8266
SENZOR
MOSI
MISO
MOSI
MISO
MISO - Master Input Slave Output
MOSI - Master Output Slave Input
MISO
MISO
MOSI
MOSI
VCC
GND
GND
VCC
ESP8266
SENZOR
MASTER
SLAVE 1
SENZOR
SLAVE 2
MISO
MOSI
GND
VCC
SCLCK
SS
SS1
SCLCK
SCLCK
SS
SS2
SSn
SPI
...
SPI
MOSI - Dáta posielané master zariadenim (ESP8266)
MISO - Dáta posielané slave zariadenim (senzor)
SCLCK - Source clock - hodinový signál, slúži na synchronizáciu zariadeni
CS/SS - Slave Select, ide o negovaný signál pomocou ktorého master určuje s ktorým slavom bude komunikovať
SCK
SCK
SDA
SDA
VCC
GND
GND
VCC
ESP8266
SENZOR
I2C
SCK - Serial Clock
SDA - Serial Data
MASTER
SLAVE
pull-up
Pull-up rezistor zabezpečuje log 1 na linke. Master/slave generujú log 0
SCK
SCK
SDA
SDA
VCC
GND
GND
VCC
ESP8266
SENZOR
MASTER
SLAVE 1
SENZOR
SLAVE 2
SCK
SDA
GND
VCC
I2C
max 128
slave zariadení
max 128
slave zariadení
Unikátna adresa
UART | SPI | I2C | |
---|---|---|---|
Počet vodičov | 3 | 3+n | 3 |
Počet slave zariadení | 1 | n | 128 |
Rýchlosť | 14 kbit/s 1 mbit/s |
8 mbit/s 24 mbit/s |
100 kbit/s 400 kbit/s 1 mbit/s 3,2 mbit/s |
Vzdialenosť | 100m | 5m | 2m |
Použitie | uC <> uC uC <> PC HMI, LoRa, GSM, GPS... |
SD karty, displeje, akcelerometre a iné rýchlo meniace sa senzory |
EEPROM, A/D, D/A prevodníky, multiplexery, pomalé senzory |
UART
I2C
PWM
SPI
Teplomer
RFID čítačka
Servo
Displej
WiFi
MQTT
SPI.begin();
writeRegister(address, data);
readRegister(address, number_of_bytes);
SPI.begin();
pinMode(chipSelectPin, OUTPUT);
//Configure SCP1000 for low noise configuration:
writeRegister(0x02, 0x2D);
writeRegister(0x01, 0x03);
writeRegister(0x03, 0x02);
// give the sensor time to set up:
delay(100);
//Select High Resolution Mode
writeRegister(0x03, 0x0A);
int tempData = readRegister(0x21, 2);
// convert the temperature to celsius and display it:
float realTemp = (float)tempData / 20.0;
//Read the pressure data highest 3 bits:
byte pressure_data_high = readRegister(0x1F, 1);
pressure_data_high &= 0b00000111;
//Read the pressure data lower 16 bits:
unsigned int pressure_data_low = readRegister(0x20, 2);
//combine the two parts into one 19-bit number:
long pressure = ((pressure_data_high << 16) | pressure_data_low) / 4;
SPI.begin();
writeRegister(address, data);
readRegister(address, number_of_bytes);
#include <SPI.h>
#include <BME280.h>
#define BME_CS 3;
BME280 bme(BME_CS);
bme.begin();
double pressure = bme.readPressure();
Serial.println(pressure);
Nasledujúce protokoly majú veľa spoločného a predsa sa v mnohom odlišujú.
UART, USB, RS232, RS485, Modbus, CAN-BUS
FORMA: ľubovoľná (txt, word, excel...)
HODNOTENIE: známka na stupnici 1 až 2 v prípade 2 máte možnosť odmietnuť zapísať si známku.
TERMÍN: do Nedele 6.2.2022 do 23:59