air quailty sensor

hi guys i am forever trying to improve on my system, i have built a control system for a grow room incorporating a cs811 air quality sensor, and although it uploads and gives me a display it seems to reset its self very frequently but funny thing is it does not reset when the serial monitor is open i am not sure how to solve this problem, i am using a arduino nano with a keystudio sth31 and a keystudio cs811 sensor

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "Adafruit_CCS811.h"
#include "Adafruit_SHT31.h"
Adafruit_CCS811 ccs;
#define EXHAUST 9
#define HUMIDIFIER 10
#define SETPOINT 88.0
#define DEADBAND 2.0
#define ON false
#define OFF true

LiquidCrystal_I2C lcd(0X27, 2, 1, 0, 4, 5, 6, 7);
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
  Serial.begin(9600);
  if (! sht31.begin(0x44)) { // Set to 0x45 for alternate i2c addr
    Serial.println("Couldn't find SHT31");
    while (1) delay(1000);
  }

  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1);
  }

  // Wait for the sensor to be ready
  while (!ccs.available());
  lcd.begin(20, 4);
  lcd.setBacklightPin(3, POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.setCursor(0, 0);
  lcd.print("Temp");
  lcd.setCursor(17, 0);
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Humidity");
  lcd.setCursor(17, 1);
  lcd.print("%");
  lcd.setCursor(0, 2);
  lcd.print("CO2");
  lcd.setCursor(17, 2);
  lcd.print("PPM");
  Serial.println("CCS811 test");
  pinMode(HUMIDIFIER, OUTPUT);
  Serial.println("SHT31 test");

}

void loop() {
  if (ccs.available()) {
    if (!ccs.readData()) {
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.println(ccs.getTVOC());
      float t = sht31.readTemperature();
      float h = sht31.readHumidity();
      lcd.setCursor(0, 0);
      lcd.setCursor(11, 0);
      lcd.print(t, 2);
      lcd.setCursor(11, 1);
      lcd.print(h, 2);
      lcd.setCursor(11, 2);
      lcd.print(ccs.geteCO2());
      if(ccs.geteCO2()>1000)
      {
        digitalWrite(EXHAUST, ON);
      }
      else
      {
        digitalWrite(EXHAUST, OFF);
      }
      if (digitalRead(HUMIDIFIER) == OFF)
      {
        if (h > SETPOINT + DEADBAND)
        {
          digitalWrite(HUMIDIFIER, ON);

        }
      }
      else
      {
        if (h < SETPOINT - DEADBAND)
          digitalWrite(HUMIDIFIER, OFF);

      }

    }
    delay(1000);
  }
}

rookie mistake it appears that my usb driver was at fault on a external power supply its working just fine

thanks