09120786892
atrinelectronic@gmail.com تهران پاساژ امجد طبقه1 واحد 16
Luminance IoT – روشنایی سنج IOT

Luminance IoT – روشنایی سنج IOT

2018-09-13 22:09:15

در این پروژه شما قادر به سنجش و اندازه گیری روشنایی محیط با کمک سنسور TSL2561 و مشاهده اون از طریق اپ موبایل خواهید بود.این پروزه نیز از سری پروژه های سایت ic2cloud هست که لازمه با پیش نیاز های اون که قبلا در این مطلب و این مطلب ارائه شده آشنایی کامل داشته باشید.

همونطور که در پروژه های قبلی سایت ic2cloud  نیز اعلام شده بخش سخت افزاری این پروژه با برد آردوینو  Arduino Uno و برد شیلد شبکه آردوینو Arduino Ethernet Shield انجام میگیره سنسور استفاده شده در این پروژه TSL2561 هست.

همونطور که در عکس زیر میبینید این سنسور برای اساس پروتکل i2c  کار میکند .

Luminance Sensor
Pin Description
Vin ۳-۵ V
GND Ground
۳v ۵V
Addr  I2C Signals
Int
SDA
SCL

در ادامه نحوه اتصال این سنور به برد آردوینو رو ملاحظه میکنید

برای استفاده از سنسور نور سنج TSL2561 در آردیونو لازمه تا کتابخونه این سنسور Adafruit_TSL2561_U.h رو از این لینک دریافت کنید  یا در فایل ضمیمه شده در اخر همین پست دانلود کنید.

در ادامه سورس آردوینو مورد نیاز برای پروگرم کردن برد آردوینو را براتون آماده کردیم که لازمه طبق اموزش در این پست ، مقادیر device_id و auth رو تغییر بدین.

 

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xED, 0xBE, 0xEF, 0xFE, 0xD2 };        // mac address for ethernet board
EthernetClient eth;                                         // the Ethernet client

char server[]  = "www.ic2pro.com";                          // Wiring Cloud host name
int port       = 80;
String devId   = "111-222-333";                             // Device ID. CREATE YOUR OWN GUID; Use this http://www.guidgenerator.com/
String auth    = "dXNlcjpwYXNzd29yZA==";                    // Authentication credentials Create a string from <email_address>:<API_Password> and encode it base64
                                                            // The sample here "dXNlcjpwYXNzd29yZA==" is the encoding for "user:password"
Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, ۱۲۳۴۵);


// Update LUMINANCE signal on the Wiring Cloud
void sendLuminance(String luminance)
{
  Serial.println("Luminance = " + luminance);
  Serial.println("Send Luminance...");
  if (eth.connect(server, port)) {
    eth.println("GET http://" + String(server) + ":" + String(port) + "/Wire/connector/set?id=" + devId + "&LUMINANCE=" + luminance+ " HTTP/1.1");
    eth.println("Authorization: Basic " + auth);
    eth.println("Connection: close");
    eth.println();
    Serial.println("Luminance sent to server.");
  }
  else {
    Serial.println("Connection Error");
  }
  eth.stop();
}


// retrieve luminance from sensor (Check Adafruit documentation to see how it's done)
String getLuminance()
{
  String rs = "";
  sensors_event_t event;
  tsl.getEvent(&event);
 
  if (event.light)
    rs = String(event.light);
  else
    rs = "N/A";
    
  Serial.print("Luminance: ");  Serial.println(rs);

  return rs;
}

void displaySensorDetails(void)
{
  sensor_t sensor;
  tsl.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" lux");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" lux");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" lux");
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void configureSensor(void)
{
  tsl.enableAutoRange(true);            // Auto-gain ... switches automatically between 1x and 16x 
  tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);      // fast but low resolution

  /* Update these values depending on what you've set above! */
  Serial.println("------------------------------------");
  Serial.print  ("Gain:         "); Serial.println("Auto");
  Serial.print  ("Timing:       "); Serial.println("13 ms");
  Serial.println("------------------------------------");
}


void setup() {
  Serial.begin(9600);
  Serial.println("Start...");

  Ethernet.begin(mac);                                           // start the Ethernet connection:
  delay(1000);                                                   // give the Ethernet shield a second to initialize:

  if(!tsl.begin())                                               // check if luminance sensor is workign
  {
    Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }

  /* Display some basic information on this sensor */
  displaySensorDetails();
  
  /* Setup the sensor gain and integration time */
  configureSensor();
}

void loop() {
    sendLuminance(getLuminance());
    delay(5000);                                                  // send luminance only every 5 seconds
}

در صورت نیاز به اطلاعات بیشتر میتونید به پست اصلی این سنسور در سایت ic2cloud  مراجعه کنید همچنین که سورس و کتابخانه های اردیونو سنسور TSL2561 به همراه سورس اپ اندروید این برنامه رو از طریق لینک زیر دانلود کنید .

Download “Luminance-IoT-lux-TSL2561.zip”Luminance-IoT-lux-TSL2561.zip – 0 بار دانلود شده است – 3 MB

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن