openlab — ESP32 simulation

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

Components

Sketch code

#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// ==========================================
// SLAVE 1 - TWO FAN MONITORING
// ==========================================

#define SLAVE_ID 1

// ---------- Potentiometer pins ----------
#define FAN1_RPM_PIN 34
#define FAN2_RPM_PIN 35
#define FAN2_VIB_PIN 32

// ---------- I2C pins ----------
#define SDA_PIN 21
#define SCL_PIN 22

// ---------- OLED ----------
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDRESS 0x3C

// ---------- Vibration threshold ----------
#define VIBRATION_THRESHOLD 0.50

// ---------- Update time ----------
unsigned long lastUpdate = 0;
const unsigned long UPDATE_INTERVAL = 1000;

// ---------- Sensor ----------
Adafruit_MPU6050 mpu1;

Adafruit_SSD1306 display(
  SCREEN_WIDTH,
  SCREEN_HEIGHT,
  &Wire,
  -1
);

// ---------- Variables ----------
int fan1RPM;
int fan2RPM;

float fan1Vibration;
float fan2Vibration;

String fan1Status;
String fan2Status;

bool mpu1Available = false;


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

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

  delay(1000);

  Serial.println();
  Serial.println("================================");
  Serial.println("       SLAVE 1 FAN MONITOR");
  Serial.println("================================");

  Serial.println("Starting Slave 1...");


  // ----------------------------------------
  // POTENTIOMETER PINS
  // ----------------------------------------

  pinMode(FAN1_RPM_PIN, INPUT);
  pinMode(FAN2_RPM_PIN, INPUT);
  pinMode(FAN2_VIB_PIN, INPUT);

  Serial.println("Potentiometers initialized.");


  // ----------------------------------------
  // I2C
  // ----------------------------------------

  Wire.begin(SDA_PIN, SCL_PIN);

  Serial.println("I2C initialized.");


  // ----------------------------------------
  // FAN 1 MPU6050
  // ----------------------------------------

  Serial.println("Starting Fan 1 MPU6050...");

  if (mpu1.begin(0x68))
  {
    mpu1Available = true;

    Serial.println("FAN 1 MPU6050 FOUND");

    mpu1.setAccelerometerRange(MPU6050_RANGE_8_G);
    mpu1.setGyroRange(MPU6050_RANGE_500_DEG);
    mpu1.setFilterBandwidth(MPU6050_BAND_21_HZ);
  }
  else
  {
    mpu1Available = false;

    Serial.println("FAN 1 MPU6050 NOT FOUND");
    Serial.println("Continuing without MPU6050...");
  }


  // ----------------------------------------
  // OLED
  // ----------------------------------------

  Serial.println("Starting OLED...");

  if (display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS))
  {
    Serial.println("OLED FOUND");

    display.clearDisplay();

    display.setTextColor(SSD1306_WHITE);
    display.setTextSize(1);

    display.setCursor(0, 0);
    display.println("SLAVE 1");

    display.setCursor(0, 15);
    display.println("FAN MONITOR");

    display.setCursor(0, 30);
    display.println("Starting...");

    display.display()

More projects by sravanalakshmigangisetty