45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
#include <WiFi.h>
|
|
#include <esp_now.h>
|
|
|
|
// 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
|
|
} |