qr code thesis (change system) — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by aleinliwag.

Components

Sketch code

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

// ESP32-S3 transmitter MAC address
uint8_t transmitterMAC[] = {
  0x7C, 0xDF, 0xA1, 0x12, 0x34, 0x56
};

// Called when a message is received
void onDataRecv(const esp_now_recv_info_t *info,
                const uint8_t *data,
                int len) {
  Serial.println("\n--- MESSAGE RECEIVED ---");

  Serial.print("Sender MAC: ");

  for (int i = 0; i < 6; i++) {
    Serial.printf("%02X", info->src_addr[i]);

    if (i < 5) {
      Serial.print(":");
    }
  }

  Serial.print("\nMessage: ");
  Serial.write(data, len);

  Serial.printf("\nLength: %d bytes\n", len);

  Serial.println("------------------------");
}

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

  // Initialize Wi-Fi
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();

  Serial.println("\n=== ESP-NOW RECEIVER ===");

  Serial.print("Receiver MAC: ");
  Serial.println(WiFi.macAddress());

  // Set Wi-Fi channel
  esp_err_t result =
      esp_wifi_set_channel(1, WIFI_SECOND_CHAN_NONE);

  Serial.printf("Channel setup: %s\n",
                esp_err_to_name(result));

  // Initialize ESP-NOW
  result = esp_now_init();

  Serial.printf("ESP-NOW init: %s\n",
                esp_err_to_name(result));

  if (result != ESP_OK) {
    Serial.println("ERROR: ESP-NOW initialization failed!");
    return;
  }

  // Register the transmitter as a peer
  esp_now_peer_info_t peerInfo = {};

  memcpy(peerInfo.peer_addr, transmitterMAC, 6);
  peerInfo.channel = 1;
  peerInfo.encrypt = false;

  result = esp_now_add_peer(&peerInfo);

  Serial.printf("Add transmitter peer: %s\n",
                esp_err_to_name(result));

  if (result != ESP_OK) {
    Serial.println("WARNING: Failed to add transmitter peer!");
  }

  // Register receive callback
  result = esp_now_register_recv_cb(onDataRecv);

  Serial.printf("Callback registration: %s\n",
                esp_err_to_name(result));

  if (result != ESP_OK) {
    Serial.println("ERROR: Callback registration failed!");
    return;
  }

  Serial.println("Receiver ready! Waiting for messages...");
}

void loop() {
  delay(100);
}

More projects by aleinliwag