123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #include <ESP8266WiFi.h>
- #include <Wire.h>
- #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);
-
- }
|