Add projects/espnow/rc car/transmitter/transmitter.ino
This commit is contained in:
parent
4380bdad44
commit
2fc1b5e61a
51
projects/espnow/rc car/transmitter/transmitter.ino
Normal file
51
projects/espnow/rc car/transmitter/transmitter.ino
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include <WiFi.h>
|
||||||
|
#include <esp_now.h>
|
||||||
|
|
||||||
|
// MAC address of the car unit
|
||||||
|
uint8_t carAddr[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int speed; // -255 (reverse) to 255 (forward)
|
||||||
|
int direction; // -100 (left) to 100 (right)
|
||||||
|
} CommandPacket;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int currentSpeed;
|
||||||
|
int batteryVoltage; // e.g., millivolts
|
||||||
|
int temperature; // Celsius
|
||||||
|
} TelemetryPacket;
|
||||||
|
|
||||||
|
TelemetryPacket telemetry;
|
||||||
|
|
||||||
|
void onTelemetryRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
|
||||||
|
memcpy(&telemetry, incomingData, sizeof(telemetry));
|
||||||
|
Serial.print("Car Speed: "); Serial.println(telemetry.currentSpeed);
|
||||||
|
Serial.print("Batt Voltage: "); Serial.println(telemetry.batteryVoltage);
|
||||||
|
Serial.print("Temperature: "); Serial.println(telemetry.temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
WiFi.mode(WIFI_STA);
|
||||||
|
if (esp_now_init() != ESP_OK) {
|
||||||
|
Serial.println("ESP-NOW init failed!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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(onTelemetryRecv);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
CommandPacket cmd;
|
||||||
|
// Example: Read joystick/button to determine speed/direction
|
||||||
|
cmd.speed = analogRead(34) - 2048; // Map your analog input to desired speed
|
||||||
|
cmd.direction = analogRead(35) - 2048; // Map to direction: left/right
|
||||||
|
|
||||||
|
esp_now_send(carAddr, (uint8_t*)&cmd, sizeof(cmd));
|
||||||
|
delay(100); // Adjust send rate as needed
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user