Esp Now not sending or not receiving

I’m a beginner trying esp now for the first time. I have two Adafruit QT Py ESP32-C3 boards and I’m trying to make one board send a message, and the second board print on serial that it received the message.

Even though all my configuration seems to go through successfully (I never get any ESP error codes), all I get from my debug messages is that everytime the send callback runs, it gets called with a “failure” as a result.

Also, my receiver is never executing its receive callback, so its serial log is just constantly quiet.

So far I’ve tried setting the wifi channel of the peer in the sender, to make sure it matches the receiver, interchanging which board is sender and which one is receiver, changing from platformIO to arduino IDE, disabling my LED indicators and only keeping my serial port messages active.

I’ve also tried the code straight out of some tutorials I’ve seen on the topic and all messages still fail to send.
Tutorials I’ve used:

dronebotworkshop

randomnerd

volosproject

Any ideas on why all my send messages are failing / nothing is being received? Thanks!!

This is what the serial port looks like on the sender (COM4):

34:85:18:17:DC:2C
ESP-NOW init OK
send callback registered OK
Peer added
Wifi channel:
1
Attempting to send 0
esp_now_send sent complete
Failed to send
Attempting to send 1
Callback invoked with status: 1
esp_now_send sent complete
Failed to send

and here is the serial port on the receiver (COM3):

34:85:18:17:EA:28
ESP-NOW init OK
receive calback registered OK
Wifi channel:
1

SENDER CODE:

#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>
// #include <Adafruit_NeoPixel.h>
#include "controllerGlobals.h"

// Adafruit_NeoPixel strip(NUM_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800); // create led strip

// Helper function to set color
// void setLEDColor(uint8_t red, uint8_t green, uint8_t blue) {
//     strip.setPixelColor(0, strip.Color(red, green, blue)); // Set color for first pixel
//     strip.show();
// }

esp_now_peer_info_t peerInfo;
uint8_t data = 0;
uint8_t sentFailed= 1; // 0 = success, 1 = failed


void sendDataCb(const uint8_t* macAddress, esp_now_send_status_t sentStatus) {
  Serial.printf("Callback invoked with status: %dn", sentStatus);
  if(sentStatus == ESP_NOW_SEND_SUCCESS)
  {
    sentFailed = 0;
  }
  else
  {
    //ERROR: FAILED TO SEND
    sentFailed = 1;
  }
}

void blinkSendResult()
{
  if(sentFailed)
  {
    //ERROR: FAILED TO SEND
    Serial.println("Failed to send");
    // for(short i = 0; i < 3; i++)
    // {
    //   setLEDColor(LED_RED);
    //   usleep(250*1000); //sleep 250ms
    //   setLEDColor(LED_OFF);
    //   usleep(250*1000); //sleep 250ms
    // }
  }
  else
  {
    // successful send!
    Serial.println("Successful send!");
    // for(short i = 0; i < 2; i++)
    // {
    //   setLEDColor(LED_GREEN);
    //   usleep(500*1000); //sleep 250ms
    //   setLEDColor(LED_OFF);
    //   usleep(500*1000); //sleep 250ms
    // }
    sentFailed = 1; //reset sentfailed flag for next loop
  }
}

void setup() {
  // start serial port
  Serial.begin(CONFIG_MONITOR_BAUD_OTHER_VAL); //115200

  //INITIALIZE LED
  // strip.begin();       // Initialize the Neopixel library
  // strip.setBrightness(10); // Set brightness (0 to 255; 50 is about 20% brightness)
  // strip.show();        // Turn off all LEDs initially

  // initialize wifi module in station mode
  WiFi.mode(WIFI_STA);
  // WiFi.disconnect();
  WiFi.channel(1);

  // print mac address to serial port
  // sleep(5);
  delay(5000);
  // Serial.printf("%sn", String(WiFi.macAddress()).c_str());
  Serial.println(String(WiFi.macAddress()));

  // initialize esp-now protocol
  if(esp_now_init() == ESP_OK)
  {
    Serial.println("ESP-NOW init OK");
  }
  if (esp_now_register_send_cb(sendDataCb) == ESP_OK){
    Serial.println("send callback registered OK");
  }
  
  //register esp-now peer 
  memcpy(peerInfo.peer_addr, receiverAddr, 6);
  peerInfo.channel = 1;  
  peerInfo.encrypt = false;
  // Add peer        
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
  else
  {
    Serial.println("Peer added");
  }
  Serial.println("Wifi channel:");
  Serial.println(WiFi.channel());

}

void loop() {

  Serial.printf("Attempting to send %dn", data);
  // sleep(3);
  // delay(500);
  // setLEDColor(LED_YELLOW);
  // sleep(3);
  // delay(1000);
  // setLEDColor(LED_OFF);
  // sleep(3);
  delay(1000);
  if(esp_now_send(peerInfo.peer_addr, (uint8_t*)&data, sizeof(data)) != ESP_OK)
  {
    Serial.println("esp_now_send failed");
  }
  else
  {
    Serial.println("esp_now_send sent complete");
  }
  blinkSendResult();
  data = (data) ? 0 : 1;
}

RECEIVER CODE:

#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>
#include <Adafruit_NeoPixel.h>
#include "controllerGlobals.h"

Adafruit_NeoPixel strip(NUM_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800); // create led strip

// Helper function to set color
void setLEDColor(uint8_t red, uint8_t green, uint8_t blue) {
    strip.setPixelColor(0, strip.Color(red, green, blue)); // Set color for first pixel
    strip.show();
}

uint8_t data = 2;

void recvDataCb(const uint8_t * mac, const uint8_t *incomingData, int len) {
  Serial.println("Callback invoked");
  memcpy(&data, incomingData, sizeof(data));
  if(data == 0)
  {
    // reset data value
    data = 2;
    setLEDColor(LED_GREEN);
    sleep(1);
  }
  else if(data == 1)
  {
    // reset data value
    data = 2;
    setLEDColor(LED_BLUE);
    sleep(1);
  }
  else
  {
    // reset data value
    data = 2;
    setLEDColor(LED_RED);
    sleep(1);
  }
}


void setup() {
  // start serial port
  Serial.begin(CONFIG_MONITOR_BAUD_OTHER_VAL); //115200

  //INITIALIZE LED
  strip.begin();       // Initialize the Neopixel library
  strip.setBrightness(10); // Set brightness (0 to 255; 50 is about 20% brightness)
  strip.show();        // Turn off all LEDs initially

  // initialize wifi module in station mode
  WiFi.mode(WIFI_STA);
  // WiFi.disconnect();

  // print mac address to serial port
  sleep(5);
  Serial.println(String(WiFi.macAddress()));

  // initialize esp-now protocol
  if(esp_now_init() == ESP_OK)
  {
    Serial.println("ESP-NOW init OK");
  }
  // esp_err_t cbregistration = esp_now_register_recv_cb(recvDataCb);
  if(esp_now_register_recv_cb(recvDataCb) == ESP_OK)
  {
    Serial.println("receive calback registered OK");
  }
  Serial.println("Wifi channel:");
  Serial.println(WiFi.channel());
}

void loop() {
  // Serial.println("Waiting LED ON");
  // setLEDColor(LED_YELLOW);
  // usleep(250*1000); //sleep 250ms
  // Serial.println("Waiting LED OFF");
  // setLEDColor(LED_OFF);
  // delay(1000);

}

controllerGlobals.h

#include <Arduino.h>

#define LED_PIN 2       // Neopixel data pin (GPIO 2 for QT Py ESP32-C3)
#define NUM_PIXELS 1    // Number of LEDs (typically 1 for the built-in Neopixel)
// color definitions for LED
#define LED_RED 255,0,0
#define LED_GREEN 0,255,0
#define LED_BLUE 0,0,255
#define LED_YELLOW 255,255,0
#define LED_OFF 0,0,0

const uint8_t receiverAddr[] = {0x34, 0x85, 0x18, 0x17, 0xEA, 0x28}; //receiver -- com3
// const uint8_t receiverAddr[] = {0x34, 0x85, 0x18, 0x17, 0xDC, 0x2C}; //sender -- com4

7

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật