Untitled

 avatar
unknown
plain_text
18 days ago
3.3 kB
2
Indexable
#include <Arduino.h>
#include <WiFi.h>
#include "SparkFun_LSM6DSV16X.h"
#include <Wire.h>

#define WIFI_SSID "LFGW"      // Name of the network created by ESP32
#define WIFI_PASSWORD "123456789"      // Network password

String x1s, y1s, z1s, x2s, y2s, z2s, adc1s, adc2s;

SparkFun_LSM6DSV16X myLSM;
sfe_lsm_data_t accelData;
sfe_lsm_data_t gyroData;

WiFiServer server(80);  // HTTP server for port 80

void setup() {
  Serial.begin(115200);
  Wire.begin(19, 20);  // I2C pins
  pinMode(1, INPUT);
  pinMode(2, INPUT);

  // Initialize the LSM6DSV16X sensor
  if (!myLSM.begin()) {
    Serial.println("Did not begin, check your wiring and/or I2C address!");
    while (1);
  }
  
  myLSM.deviceReset();
  while (!myLSM.getDeviceReset()) {
    delay(1);
  }
  
  Serial.println("Board has been Reset.");
  Serial.println("Applying settings.");
  myLSM.enableBlockDataUpdate();
  myLSM.setAccelDataRate(LSM6DSV16X_ODR_AT_7Hz5);
  myLSM.setAccelFullScale(LSM6DSV16X_16g);
  myLSM.setGyroDataRate(LSM6DSV16X_ODR_AT_15Hz);
  myLSM.setGyroFullScale(LSM6DSV16X_2000dps);
  myLSM.enableFilterSettling();
  myLSM.enableAccelLP2Filter();
  myLSM.setAccelLP2Bandwidth(LSM6DSV16X_XL_STRONG);
  myLSM.enableGyroLP1Filter();
  myLSM.setGyroLP1Bandwidth(LSM6DSV16X_GY_ULTRA_LIGHT);
  Serial.println("Ready.");

  // Start the ESP32 Wi-Fi network
  WiFi.softAP(WIFI_SSID, WIFI_PASSWORD);  // Start Wi-Fi network
  IPAddress IP = WiFi.softAPIP();
  Serial.print("LATEFOSS GATEWAY STARTED. IP address: ");
  Serial.println(IP);

  // Start the web server
  server.begin();
}

void loop() {
  // Read sensor data
  if (myLSM.checkStatus()) {
    myLSM.getAccel(&accelData);
    myLSM.getGyro(&gyroData);

    x1s = String(accelData.xData);
    y1s = String(accelData.yData);
    z1s = String(accelData.zData);
    x2s = String(gyroData.xData);
    y2s = String(gyroData.yData);
    z2s = String(gyroData.zData);
    adc1s = String(analogRead(1));  // Read from A0 pin
    adc2s = String(analogRead(2));  // Read from A1 pin
  }

  // Check connection and send data
  WiFiClient client = server.available();
  if (client) {
    Serial.println("A new client has been connected!");
    String request = "";

    // Listen to the client and capture their requests
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        request += c;
        if (c == '\n') {
          break;
        }
      }
    }

    // Format data as JSON
    String data = "{";
    data += "\"A0\":\"" + adc1s + "\",";
    data += "\"A1\":\"" + adc2s + "\",";
    data += "\"accelx\":\"" + x1s + "\",";
    data += "\"accely\":\"" + y1s + "\",";
    data += "\"accelz\":\"" + z1s + "\",";
    data += "\"gyrox\":\"" + x2s + "\",";
    data += "\"gyroy\":\"" + y2s + "\",";
    data += "\"gyroz\":\"" + z2s + "\",";
    
    // Add timestamp
    data += "\"Ts\":" + String(millis()) + "}";
    
    // Send HTTP response
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: application/json");
    client.println("Connection: close");
    client.println();
    client.println(data);  // Send JSON data

    // Close the connection
    client.stop();
    Serial.println("The client connection was lost.");
  }

  // No delay in this loop, data is updated continuously.
}
Leave a Comment