Hi guys.
Today I got me a new Arduino Nano ESP32.
Everything works fine while it's connected to the computer, but when I power it via USB-C that has no serial connection - it won't connect to WiFi network. Is it something in the code (below) or maybe there is some specifics when powering via USB-C?
#include "thingProperties.h" // Arduino IoT Cloud properties
#include <Wire.h>
#include "ScioSense_ENS160.h" // ENS160 library
#include <Adafruit_BME280.h> // Adafruit BME280 library
#include <Adafruit_AHTX0.h> // AHT sensor library
#include <OneWire.h>
#include <DallasTemperature.h>
// **Pin Definitions**
const int DS18B20_PIN = 5; // DS18B20 connected to GPIO5 (D5 on Nano ESP32)
// **Initialize sensors**
ScioSense_ENS160 ens160(ENS160_I2CADDR_1); // ENS160 I2C address (0x53) - LOCAL
Adafruit_BME280 bme; // BME280 sensor object - LOCAL
Adafruit_AHTX0 aht; // AHT21 sensor object - LOCAL
OneWire oneWire(DS18B20_PIN); // DS18B20 on GPIO5
DallasTemperature ds18b20(&oneWire); // DS18B20 sensor - LOCAL
void setup() {
Serial.begin(9600);
while (!Serial); // Wait for Serial Monitor
// **Initialize IoT Cloud properties**
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
// **Initialize ENS160 Sensor**
if (!ens160.begin()) {
Serial.println("Failed to initialize ENS160 sensor!");
while (1);
}
ens160.setMode(ENS160_OPMODE_STD);
Serial.println("ENS160 initialized successfully. Waiting for warm-up...");
delay(5000); // Warm-up
// **Initialize BME280 Sensor**
if (!bme.begin(0x77)) {
Serial.println("Failed to initialize BME280 sensor!");
while (1);
}
Serial.println("BME280 initialized successfully.");
// **Initialize AHT21 Sensor**
if (!aht.begin()) {
Serial.println("Failed to initialize AHT21 sensor!");
while (1);
}
Serial.println("AHT21 initialized successfully.");
// **Initialize DS18B20 Sensor**
ds18b20.begin();
Serial.println("DS18B20 initialized successfully.");
}
void loop() {
ArduinoCloud.update(); // Syncs cloud variables
// **Read AHT21 Sensor Data (Local)**
sensors_event_t humidityEvent, tempEvent;
aht.getEvent(&humidityEvent, &tempEvent);
float ahtTemperature = tempEvent.temperature; // AHT21 temperature - LOCAL
float ahtHumidity = humidityEvent.relative_humidity; // AHT21 humidity - LOCAL
// **Read BME280 Sensor Data (Local)**
float bmeTemperature = bme.readTemperature(); // BME280 temperature
// **Read ENS160 Sensor Data**
ens160.measure(0);
float aQI = ens160.getAQI(); // Air Quality Index (Local)
tVOC = ens160.getTVOC(); // TVOC (Cloud)
eCO2 = ens160.geteCO2(); // eCO2 (Cloud)
// **Read BME280 Humidity & Pressure**
bmeHumidity = bme.readHumidity(); // Humidity (Cloud)
pressure = bme.readPressure() / 100.0F; // Atmospheric pressure in hPa (Cloud)
// **Read DS18B20 Temperature**
ds18b20.requestTemperatures();
ds18b20Temperature = round(ds18b20.getTempCByIndex(0) * 10) / 10.0; // Round to one decimal place (Cloud)
// **Debug Output**
Serial.println("=====================");
Serial.println("Sensor Readings:");
Serial.println("=====================");
// **ENS160 Data**
Serial.print("AQI: ");
Serial.print(aQI);
Serial.println(aQI <= 50.0 ? " (Good)" : " (Poor)");
Serial.print("TVOC: ");
Serial.print(tVOC);
Serial.println(tVOC <= 500.0 ? " ppb (Safe)" : " ppb (Unsafe)");
Serial.print("eCO2: ");
Serial.print(eCO2);
Serial.println(eCO2 <= 1000.0 ? " ppm (Safe)" : " ppm (High)");
// **BME280 Data**
Serial.print("BME Temperature: ");
Serial.print(bmeTemperature);
Serial.println(" °C");
Serial.print("BME Humidity: ");
Serial.print(bmeHumidity);
Serial.println(" %");
Serial.print("Pressure: ");
Serial.print(pressure);
Serial.println(" hPa");
// **AHT21 Data**
Serial.print("AHT21 Temperature: ");
Serial.print(ahtTemperature);
Serial.println(" °C");
Serial.print("AHT21 Humidity: ");
if (isnan(ahtHumidity)) {
Serial.println("Failed to read AHT21 humidity!");
} else {
Serial.print(ahtHumidity);
Serial.println(" %");
}
// **DS18B20 Data**
Serial.print("DS18B20 Temperature: ");
if (ds18b20Temperature == DEVICE_DISCONNECTED_C) {
Serial.println("Sensor not connected or failed!");
} else {
Serial.print(ds18b20Temperature);
Serial.println(" °C");
}
delay(5000); // Adjusted delay to 5 seconds
}