Elle kontrol edilen robot esp32

#include <Wire.h>
#include <WiFi.h>
#include <esp_now.h>
#include <MPU6050.h>

MPU6050 mpu;

/* ? ALICI ESP32 MAC ADRESINI BURAYA YAZ */
uint8_t receiverAddress[] = { 0x24, 0x6F, 0x28, 0x3A, 0xBC, 0x11 };

/* ESP-NOW Veri Yapısı */
typedef struct {
  int x;
  int y;
} ControlData;

ControlData data;

/* Gönderim Durumu */
void onDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("Gonderim Durumu: ");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Basarili" : "Hatali");
}

void setup() {
  Serial.begin(115200);

  /* I2C */
  Wire.begin(21, 22);

  /* MPU6050 */
  mpu.initialize();
  if (!mpu.testConnection()) {
    Serial.println("MPU6050 baglanamadi!");
    while (1)
      ;
  }
  Serial.println("MPU6050 baglandi.");

  /* WiFi */
  WiFi.mode(WIFI_STA);
  Serial.print("VERICI ESP32 MAC: ");
  Serial.println(WiFi.macAddress());

  /* ESP-NOW */
  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW baslatilamadi!");
    return;
  }

  esp_now_register_send_cb(onDataSent);

  esp_now_peer_info_t peerInfo = {};
  memcpy(peerInfo.peer_addr, receiverAddress, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;

  if (esp_now_add_peer(&peerInfo) != ESP_OK) {
    Serial.println("Peer eklenemedi!");
    return;
  }

  Serial.println("ESP-NOW hazir.");
}

void loop() {
  int16_t ax, ay, az;
  mpu.getAcceleration(&ax, &ay, &az);

  /* Eğim verilerini ölçekle */
  data.x = map(ax, -17000, 17000, -100, 100);
  data.y = map(ay, -17000, 17000, -100, 100);

  Serial.print("X: ");
  Serial.print(data.x);
  Serial.print(" | Y: ");
  Serial.println(data.y);

  /* Veriyi gönder */
  esp_now_send(receiverAddress, (uint8_t *)&data, sizeof(data));

  delay(50);
}

#include <WiFi.h>
#include <esp_now.h>

/* L298N Motor Pinleri */
#define IN1 12
#define IN2 14
#define IN3 27
#define IN4 26

/* ESP-NOW Veri Yapısı */
typedef struct {
  int x;
  int y;
} ControlData;

ControlData data;

/* Motor Fonksiyonları */
void stopMotor() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void forward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

void backward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void right() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void left() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

/* ESP-NOW Veri Alındığında */
void onReceive(const uint8_t *mac, const uint8_t *incomingData, int len) {
  memcpy(&data, incomingData, sizeof(data));

  Serial.print("X: ");
  Serial.print(data.x);
  Serial.print(" | Y: ");
  Serial.println(data.y);

  if (data.y > 20) forward();
  else if (data.y < -20) backward();
  else if (data.x > 20) right();
  else if (data.x < -20) left();
  else stopMotor();
}

void setup() {
  Serial.begin(115200);

  /* Motor pinleri */
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  stopMotor();

  /* WiFi + MAC Adresi */
  WiFi.mode(WIFI_STA);
  Serial.print("ALICI ESP32 MAC ADRESI: ");
  Serial.println(WiFi.macAddress());

  /* ESP-NOW Başlat */
  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW baslatilamadi!");
    return;
  }

  esp_now_register_recv_cb(onReceive);
}

void loop() {
}

Benzer Temrinler & Yazılar

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacaktır. Gerekli alanlar * ile işaretlenmiştir.