This tutorial covers how to establish custom protocol communication between two microcontrollers. This method can be useful for optimizing specific data transfers in your projects.
Select UART, I2C, or SPI for communication between the microcontrollers.
In a custom protocol, define the message structure, commands, data payload, and checksum.
[START_BYTE][COMMAND][DATA_LENGTH][DATA_PAYLOAD][CHECKSUM][END_BYTE]
void setup() { Serial.begin(9600); } void loop() { byte startByte = 0xAA; byte command = 0x01; byte dataLength = 1; byte dataPayload = 42; byte checksum = (startByte + command + dataLength + dataPayload) % 256; byte endByte = 0xFF; Serial.write(startByte); Serial.write(command); Serial.write(dataLength); Serial.write(dataPayload); Serial.write(checksum); Serial.write(endByte); delay(1000); }
void setup() { Serial.begin(9600); } void loop() { if (Serial.available() >= 6) { byte startByte = Serial.read(); if (startByte == 0xAA) { byte command = Serial.read(); byte dataLength = Serial.read(); byte dataPayload = Serial.read(); byte checksum = Serial.read(); byte endByte = Serial.read(); byte calcChecksum = (startByte + command + dataLength + dataPayload) % 256; if (endByte == 0xFF && checksum == calcChecksum) { Serial.println("Received valid data: " + String(dataPayload)); } else { Serial.println("Checksum error"); } } } }
The master microcontroller sends a custom message every second. The slave receives it, checks the checksum for validity, and prints the received data. This simple protocol ensures reliable communication between the two microcontrollers.