Update projects/espnow/rc car/transmitter/transmitter.ino
This commit is contained in:
parent
e411c4465a
commit
fe4573ccbc
@ -1,12 +1,19 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include <esp_now.h>
|
#include <esp_now.h>
|
||||||
|
#include <esp_wifi.h>
|
||||||
|
|
||||||
// MAC address of car ESP32 (replace with real address)
|
//------------------------------------------------
|
||||||
uint8_t carAddr[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
|
// This is The Remote Unit
|
||||||
|
//------------------------------------------------
|
||||||
|
// RC Car Remote MAC Address: 64:E8:33:B5:D8:40
|
||||||
|
// RC Car MAC Address: 50:78:7D:43:14:00
|
||||||
|
//------------------------------------------------
|
||||||
|
|
||||||
|
uint8_t carAddr[] = {0x50, 0x78, 0x7D, 0x43, 0x14, 0x00};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int speed; // -255 to 255
|
int speed;
|
||||||
int turn; // -255 to 255
|
int turn;
|
||||||
} CommandPacket;
|
} CommandPacket;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -17,29 +24,44 @@ typedef struct {
|
|||||||
|
|
||||||
TelemetryPacket telemetry;
|
TelemetryPacket telemetry;
|
||||||
|
|
||||||
void onTelemetry(const uint8_t * mac, const uint8_t *incomingData, int len) {
|
// The callback function now takes esp_now_recv_info_t*
|
||||||
|
void onTelemetry(const esp_now_recv_info_t *recv_info, const uint8_t *incomingData, int len) {
|
||||||
memcpy(&telemetry, incomingData, sizeof(telemetry));
|
memcpy(&telemetry, incomingData, sizeof(telemetry));
|
||||||
Serial.print("Left: "); Serial.println(telemetry.leftSpeed);
|
Serial.print("Left: "); Serial.println(telemetry.leftSpeed);
|
||||||
Serial.print("Right: "); Serial.println(telemetry.rightSpeed);
|
Serial.print("Right: "); Serial.println(telemetry.rightSpeed);
|
||||||
Serial.print("Battery: "); Serial.println(telemetry.battery);
|
Serial.print("Battery: "); Serial.println(telemetry.battery);
|
||||||
|
|
||||||
|
// Optionally, to get source MAC from recv_info:
|
||||||
|
// Serial.printf("From MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||||
|
// recv_info->src_addr[0], recv_info->src_addr[1], recv_info->src_addr[2], recv_info->src_addr[3], recv_info->src_addr[4], recv_info->src_addr[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
|
PrintMacAddress();
|
||||||
|
|
||||||
esp_now_init();
|
esp_now_init();
|
||||||
esp_now_peer_info_t peerInfo;
|
esp_now_peer_info_t peerInfo = {};
|
||||||
memcpy(peerInfo.peer_addr, carAddr, 6);
|
memcpy(peerInfo.peer_addr, carAddr, 6);
|
||||||
peerInfo.channel = 0;
|
peerInfo.channel = 0;
|
||||||
peerInfo.encrypt = false;
|
peerInfo.encrypt = false;
|
||||||
esp_now_add_peer(&peerInfo);
|
esp_now_add_peer(&peerInfo);
|
||||||
esp_now_register_recv_cb(onTelemetry);
|
esp_now_register_recv_cb(onTelemetry); // Now matches new signature
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
CommandPacket cmd;
|
CommandPacket cmd;
|
||||||
cmd.speed = map(analogRead(34), 0, 4095, -255, 255); // Y axis for speed
|
cmd.speed = map(analogRead(0), 0, 4095, -255, 255);
|
||||||
cmd.turn = map(analogRead(35), 0, 4095, -255, 255); // X axis for turning/spinning
|
cmd.turn = map(analogRead(1), 0, 4095, -255, 255);
|
||||||
esp_now_send(carAddr, (uint8_t*)&cmd, sizeof(cmd));
|
esp_now_send(carAddr, (uint8_t*)&cmd, sizeof(cmd));
|
||||||
delay(100); // Command rate
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrintMacAddress() {
|
||||||
|
delay(100); // Let hardware settle
|
||||||
|
uint8_t mac[6];
|
||||||
|
esp_wifi_get_mac(WIFI_IF_STA, mac); // Get MAC address for STA
|
||||||
|
Serial.print("Car MAC Address: ");
|
||||||
|
Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user