#include #include #include "config.h" #include "Adafruit_TSL2561_U.h" // ----------- DEFINES --------------- #define LUX_ID 0x39 // I2C-Id of the lux-sensor // ----------- GLOBALS --------------- WiFiClient espClient; Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(0x39, 12345); void connectWifi() { WiFi.disconnect(false); Serial.printf("Wi-Fi mode set to WIFI_STA: %s\n", WiFi.mode(WIFI_STA) ? "Ok" : "Failed!"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to ");Serial.println(WIFI_SSID); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print(WiFi.status()); Serial.print(".\r\n"); //WiFi.printDiag(Serial); } Serial.println(""); Serial.print("Connected with IP: "), Serial.println(WiFi.localIP()); Serial.printf("\n"); } void setup() { Serial.begin(38400); //Opens USB-Serial connection for terminal delay(1000); Serial.println("Init of WiFi-Lux-sensor project"); //connectWifi(); Wire.begin(4, 5); // sda on pin D2, scl on pin D1 tsl.begin(); Serial.println("Set gain."); // You can change the gain on the fly, to adapt to brighter/dimmer light situations tsl.setGain(TSL2561_GAIN_1X); // 1x gain (bright light) //tsl.setGain(TSL2591_GAIN_MED); // 25x gain //tsl.setGain(TSL2591_GAIN_HIGH); // 428x gain // Changing the integration time gives you a longer time over which to sense light // longer timelines are slower, but are good in very low light situtations! tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) //tsl.setTiming(TSL2591_INTEGRATIONTIME_200MS); //tsl.setTiming(TSL2591_INTEGRATIONTIME_300MS); //tsl.setTiming(TSL2591_INTEGRATIONTIME_400MS); //tsl.setTiming(TSL2591_INTEGRATIONTIME_500MS); //tsl.setTiming(TSL2591_INTEGRATIONTIME_600MS); // longest integration time (dim light) tsl.enableAutoRange(true); } uint32_t readLuxSensor(void) { uint16_t broadband; uint16_t ir; tsl.getLuminosity(&broadband, &ir); uint32_t lux = tsl.calculateLux(broadband, ir); Serial.printf("Lux:%u ", lux); Serial.print("[ "); Serial.print(millis()); Serial.print(" ms ] "); Serial.print("IR: "); Serial.print(ir); Serial.print(" "); Serial.print("broadband: "); Serial.print(broadband); Serial.print(" "); Serial.print("Visible: "); Serial.print(broadband - ir); Serial.println(" "); if ( (lux > 4294966000.0) || (lux <-4294966000.0) ) { return 0; } else { return lux; } } unsigned int readI2CRegister16bit(int addr, int reg) { Wire.beginTransmission(addr); Wire.write(reg); Wire.endTransmission(); delay(200); Wire.requestFrom(addr, 2); unsigned int t = Wire.read() << 8; t = t | Wire.read(); return t; } void loop() { // put your main code here, to run repeatedly: byte error, address; //unsigned int value = readI2CRegister16bit(0x39, 0xAC); //Serial.printf("Value:%u\n", value); /* Serial.print("WiFi heartbeat - ms since boot: "); Serial.print(millis()); Serial.println(); */ readLuxSensor(); delay(1000); }