#include #include // MAC address of car ESP32 (replace with real address) uint8_t carAddr[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; typedef struct { int speed; // -255 to 255 int turn; // -255 to 255 } CommandPacket; typedef struct { int leftSpeed; int rightSpeed; int battery; } TelemetryPacket; TelemetryPacket telemetry; void onTelemetry(const uint8_t * mac, const uint8_t *incomingData, int len) { memcpy(&telemetry, incomingData, sizeof(telemetry)); Serial.print("Left: "); Serial.println(telemetry.leftSpeed); Serial.print("Right: "); Serial.println(telemetry.rightSpeed); Serial.print("Battery: "); Serial.println(telemetry.battery); } void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); esp_now_init(); esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, carAddr, 6); peerInfo.channel = 0; peerInfo.encrypt = false; esp_now_add_peer(&peerInfo); esp_now_register_recv_cb(onTelemetry); } void loop() { CommandPacket cmd; cmd.speed = map(analogRead(34), 0, 4095, -255, 255); // Y axis for speed cmd.turn = map(analogRead(35), 0, 4095, -255, 255); // X axis for turning/spinning esp_now_send(carAddr, (uint8_t*)&cmd, sizeof(cmd)); delay(100); // Command rate }