Skip to content

assert failed: pbuf_free /IDF/components/lwip/lwip/src/core/pbuf.c:753 (pbuf_free: p->ref > 0) #179

@zaid13

Description

@zaid13

Getting

11:12:00.719 -> assert failed: pbuf_free /IDF/components/lwip/lwip/src/core/pbuf.c:753 (pbuf_free: p->ref > 0)
11:12:00.751 -> 
11:12:00.751 -> 
11:12:00.751 -> Backtrace: 0x40082851:0x3ffb3200 0x4008de85:0x3ffb3220 0x4009346a:0x3ffb3240 0x400f194b:0x3ffb3370 0x400f2ae9:0x3ffb3390 0x400f3dd9:0x3ffb33b0 0x400f4053:0x3ffb33d0 0x400f561f:0x3ffb3400 0x400fa3d2:0x3ffb3440 0x400ff167:0x3ffb3470 0x400ef8c5:0x3ffb3490
11:12:00.751 -> 
11:12:00.751 -> 
11:12:00.751 -> 
11:12:00.751 -> 
11:12:00.751 -> ELF file SHA256: df24e2e02771320f
11:12:00.783 -> 
11:12:00.783 -> Rebooting...

when calling Http.POST in loop im getting this error.

When the delay is greater than 10 seconds i dont see an error.but when delay is less than 10 seconds.

Here is my code.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

uint16_t BNO055_SAMPLERATE_DELAY_MS = 1000;
#define FORCE_SENSOR_PIN 35  // ESP32 pin GPIO36 (ADC0): the FSR and 10K pulldown are connected to A0
#define LED 2

const char* ssid = "S24Ultra";
const char* password = "12345678";
// const char* url ="http://ec2-54-224-138-109.compute-1.amazonaws.com:8003/logs/create_log?";

//                                   id, address
Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28, &Wire);

uint32_t uniqueNumber;

String stringList[10];  // Array to store up to 5 strings
int currentIndex = 0;   // Current index for storing the next string

void setup(void) {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);


  while (!Serial) delay(10);  // wait for serial port to open!

  Serial.println("Orientation Sensor Test");
  Serial.println("");

  /* Initialise the sensor */
  if (!bno.begin()) {
    /* There was a problem detecting the BNO055 ... check your connections */
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
    while (1)
      ;
  }

  uniqueNumber = millis();

  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    // delay(500);
    Serial.print(".");
  }
  digitalWrite(LED, HIGH);
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
}

unsigned long previousMillis = 0;
const long interval = 700;  // Interval in milliseconds

void loop(void) {
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    // Place your API call or other tasks here

    int analogReading = analogRead(FORCE_SENSOR_PIN);

    //   ////// force sensor
    Serial.print("The force sensor value = ");
    Serial.print(analogReading);  // print the raw analog reading

    if (analogReading < 10)  // from 0 to 9
      Serial.println(" -> no pressure");
    else if (analogReading < 200)  // from 10 to 199
      Serial.println(" -> light touch");
    else if (analogReading < 500)  // from 200 to 499
      Serial.println(" -> light squeeze");
    else if (analogReading < 800)  // from 500 to 799
      Serial.println(" -> medium squeeze");
    else  // from 800 to 1023
      Serial.println(" -> big squeeze");

    digitalWrite(LED, LOW);
    //could add VECTOR_ACCELEROMETER, VECTOR_MAGNETOMETER,VECTOR_GRAVITY...
    sensors_event_t orientationData, angVelocityData, linearAccelData, magnetometerData, accelerometerData, gravityData;
    bno.getEvent(&orientationData, Adafruit_BNO055::VECTOR_EULER);
    bno.getEvent(&angVelocityData, Adafruit_BNO055::VECTOR_GYROSCOPE);
    bno.getEvent(&linearAccelData, Adafruit_BNO055::VECTOR_LINEARACCEL);
    bno.getEvent(&magnetometerData, Adafruit_BNO055::VECTOR_MAGNETOMETER);
    bno.getEvent(&accelerometerData, Adafruit_BNO055::VECTOR_ACCELEROMETER);
    bno.getEvent(&gravityData, Adafruit_BNO055::VECTOR_GRAVITY);

    // ////// IMU sensor
    int8_t boardTemp = bno.getTemp();

    if (WiFi.status() == WL_CONNECTED) {
      HTTPClient Http;
      WiFiClient Client;

      int ResponseCode;
      String Url, ReqBody, ResponseStr;
      Url = "http://ec2-54-224-138-109.compute-1.amazonaws.com:8009/logs/create_log/";

      Http.begin(Client, Url.c_str());
      Http.addHeader("accept", "application/json");
      Http.addHeader("x-token", "your_X-Token");  // Same token for redirected request
      Http.addHeader("Content-Type", "application/json");

      StaticJsonDocument<200> doc;
      // Prepare the JSON object
      doc["session_id"] = uniqueNumber;
      doc["orient_x"] = orientationData.orientation.x;   //331.87;
      doc["orient_y"] = orientationData.orientation.y;   //-0.977;
      doc["orient_z"] = orientationData.orientation.z;   //-179.25;
      doc["gyro_x"] = angVelocityData.gyro.x;            // 0; //
      doc["gyro_y"] = angVelocityData.gyro.y;            //0;
      doc["gyro_z"] = angVelocityData.gyro.z;            //0;
      doc["linear_x"] = linearAccelData.acceleration.x;  // -0.02;
      doc["linear_y"] = linearAccelData.acceleration.y;  //0.07;
      doc["linear_z"] = linearAccelData.acceleration.z;  //0;
      doc["mag_x"] = magnetometerData.magnetic.x;        //-10;
      doc["mag_y"] = magnetometerData.magnetic.y;        //--42.5;
      doc["mag_z"] = magnetometerData.magnetic.z;        //--12;
      doc["accl_x"] = accelerometerData.acceleration.x;  // -0.18;
      doc["accl_y"] = accelerometerData.acceleration.y;  //;
      doc["accl_z"] = accelerometerData.acceleration.z;  //;
      doc["gravity_x"] = gravityData.acceleration.x;     //  -0.16;
      doc["gravity_y"] = gravityData.acceleration.y;     //  0.12;
      doc["gravity_z"] = gravityData.acceleration.z;     //  -9.8;
      doc["temprature"] = boardTemp;
      doc["pressure"] = analogReading;

      serializeJson(doc, ReqBody);

      ResponseCode = Http.POST(ReqBody);

      if (ResponseCode == 200) {
        digitalWrite(LED, HIGH);
      }
      ResponseStr = Http.getString();
      Serial.println("ResponseCode: " + String(ResponseCode));
      Serial.println("ResponseStr: " + ResponseStr);
      Serial.println("1");
      Http.end();
      Serial.println("2");
    } else {
      Serial.println("WiFi Disconnected");
      // digitalWrite(LED,LOW);
    }

    Serial.println("3");
  }
}


void printEvent(sensors_event_t* event) {
  double x = -1000000, y = -1000000, z = -1000000;  //dumb values, easy to spot problem
  if (event->type == SENSOR_TYPE_ACCELEROMETER) {
    Serial.print("Accl:");
    x = event->acceleration.x;
    y = event->acceleration.y;
    z = event->acceleration.z;
  } else if (event->type == SENSOR_TYPE_ORIENTATION) {
    Serial.print("Orient:");
    x = event->orientation.x;
    y = event->orientation.y;
    z = event->orientation.z;
  } else if (event->type == SENSOR_TYPE_MAGNETIC_FIELD) {
    Serial.print("Mag:");
    x = event->magnetic.x;
    y = event->magnetic.y;
    z = event->magnetic.z;
  } else if (event->type == SENSOR_TYPE_GYROSCOPE) {
    Serial.print("Gyro:");
    x = event->gyro.x;
    y = event->gyro.y;
    z = event->gyro.z;
  } else if (event->type == SENSOR_TYPE_ROTATION_VECTOR) {
    Serial.print("Rot:");
    x = event->gyro.x;
    y = event->gyro.y;
    z = event->gyro.z;
  } else if (event->type == SENSOR_TYPE_LINEAR_ACCELERATION) {
    Serial.print("Linear:");
    x = event->acceleration.x;
    y = event->acceleration.y;
    z = event->acceleration.z;
  } else if (event->type == SENSOR_TYPE_GRAVITY) {
    Serial.print("Gravity:");
    x = event->acceleration.x;
    y = event->acceleration.y;
    z = event->acceleration.z;
  } else {
    Serial.print("Unk:");
  }

  Serial.print("\tx= ");
  Serial.print(x);
  Serial.print(" |\ty= ");
  Serial.print(y);
  Serial.print(" |\tz= ");
  Serial.println(z);
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions