RCK Ruđera Boškovića - mobilna / uslužna robotika

Druge sabirnice i periferija - UART

Zadatak

Naučiti koristiti UART sučelje.

Priprema

Za vježbu je potrebno:

Spajanje pločica

×
Spojite ESP32 pločice iz 2 robota prema slici.

Pin 16 jednog se spaja na pin 17 drugog i obrnuto.

Biblioteka

void RobotMaze::loop() {
	...
	HardwareSerial serialPort(2); // Use UART2
	if (setup()){
		serialPort.begin(115200, SERIAL_8N1, 16, 17);
	}
	...
}
Koristit ćemo ESP32 biblioteku HardwareSerial.

Definiramo objekt serialPort, koji će komunicirati UARTom preko pinova 16 i 17, što definira parametar "2".

setup() pokreće port brzinom od 115200 bps, s parametrima veze SERIAL_8N1, na spomenutim pinovima.

Koristi se ESP32 funkcija serialPort.Begin.

Konstante

void RobotMaze::loop() {
#define MASTER true
	HardwareSerial serialPort(2); // Use UART2
	if (setup()){
		serialPort.begin(115200, SERIAL_8N1, 16, 17);
	}
#if MASTER
	serialPort.print(1);
	delayMs(1000);
	serialPort.print(0);
	delayMs(1000);
	...
}
Kompajlerska direktiva MASTER označava hoće li dana pločica biti master ili slave.

Na oba robota će ići isti program s razlikom da će na jednom biti "MASTER" "true", na drugom "false".

Ako je master, svake sekunde šalje ili 0 ili 1.

Slanje vrši funkcija biblioteke serialPort.print.

Konstante

void RobotMaze::loop() {
#define MASTER false
	HardwareSerial serialPort(2); // Use UART2
	if (setup()){
		serialPort.begin(115200, SERIAL_8N1, 16, 17);
	}
#if MASTER
	serialPort.print(1);
	delayMs(1000);
	serialPort.print(0);
	delayMs(1000);
#else
	if (serialPort.available()){
		uint8_t number = serialPort.read();
		print("%i\n\r");
	}
#endif
}
Slave čita taj broj i ispisuje na ekran.

Port čita funkcija serialPort.read.

Primjedbe