esp32 (copy) — Xiao Esp32 S3 simulation

An interactive Xiao Esp32 S3 circuit simulation you can run free in your browser on Velxio, by whalemedianz.

Components

Sketch code

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

// ============================================================
// ESP-NOW CONFIG
// ============================================================

#define ESPNOW_CHANNEL 1

#define SIGNAL_MAGIC    0x5349474EUL
#define SIGNAL_ACTIVATE 1

// Signal  = ...01
// Bodycam = ...02

uint8_t signalMac[6] = {
  0x02, 0xAA, 0xBB, 0x00, 0x00, 0x01
};

uint8_t bodycamMac[6] = {
  0x02, 0xAA, 0xBB, 0x00, 0x00, 0x02
};

// ============================================================
// PACKET
// ============================================================

struct __attribute__((packed)) SignalPacket {
  uint32_t magic;
  uint8_t  command;
  uint32_t sequence;
};

uint32_t sequence = 0;

// ============================================================
// SEND CALLBACK
// ============================================================

void onDataSent(
  const wifi_tx_info_t *info,
  esp_now_send_status_t status
) {

  Serial.print("[ESP-NOW] DELIVERY = ");

  if (status == ESP_NOW_SEND_SUCCESS) {
    Serial.println("SUCCESS");
  } else {
    Serial.println("FAIL");
  }
}

// ============================================================
// SETUP
// ============================================================

void setup() {

  Serial.begin(115200);

  delay(1000);

  Serial.println();
  Serial.println();
  Serial.println("========================================");
  Serial.println("SIGNAL UNIT ESP-NOW TRANSMITTER");
  Serial.println("========================================");

  // ----------------------------------------------------------
  // Start Wi-Fi in STA mode
  // ----------------------------------------------------------

  Serial.println("[WIFI] STARTING STA");

  WiFi.mode(WIFI_STA);

  Serial.print("[WIFI] WAITING FOR STA");

  while (!WiFi.STA.started()) {
    delay(100);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("[WIFI] STA STARTED");

  // ----------------------------------------------------------
  // Set deterministic MAC
  // ----------------------------------------------------------

  Serial.println("[WIFI] SETTING MAC");

  esp_err_t macResult =
    esp_wifi_set_mac(WIFI_IF_STA, signalMac);

  if (macResult == ESP_OK) {
    Serial.println("[WIFI] MAC = OK");
  } else {
    Serial.print("[WIFI] MAC = FAILED: ");
    Serial.println(macResult);
  }

  // ----------------------------------------------------------
  // Set ESP-NOW channel
  // ----------------------------------------------------------

  Serial.println("[WIFI] SETTING CHANNEL");

  WiFi.setChannel(
    ESPNOW_CHANNEL,
    WIFI_SECOND_CHAN_NONE
  );

  delay(100);

  uint8_t primary;
  wifi_second_chan_t secondary;

  esp_wifi_get_channel(
    &primary,
    &secondary
  );

  Serial.print("[WIFI] CHANNEL = ");
  Serial.println(primary);

  // ----------

More projects by whalemedianz