در این پروژه شما قادر به سنجش و اندازه گیری روشنایی محیط با کمک سنسور TSL2561 و مشاهده اون از طریق اپ موبایل خواهید بود.این پروزه نیز از سری پروژه های سایت ic2cloud هست که لازمه با پیش نیاز های اون که قبلا در این مطلب و این مطلب ارائه شده آشنایی کامل داشته باشید.
همونطور که در پروژه های قبلی سایت ic2cloud نیز اعلام شده بخش سخت افزاری این پروژه با برد آردوینو Arduino Uno و برد شیلد شبکه آردوینو Arduino Ethernet Shield انجام میگیره سنسور استفاده شده در این پروژه TSL2561 هست.
![](https://yazdkit.com/wp-content/uploads/2018/09/LuminanceIoT-01-Components-1024x768.jpg)
همونطور که در عکس زیر میبینید این سنسور برای اساس پروتکل i2c کار میکند .
![](https://www.ic2cloud.com/documents/10181/11738/Arduino+Luminance+Sensor+TSL2561.png/2b05efaa-9014-40f5-b7f6-972cc87b042a?t=1443284302536) |
Luminance Sensor |
Pin |
Description |
Vin |
۳-۵ V |
GND |
Ground |
۳v |
۵V |
Addr |
I2C Signals |
Int |
SDA |
SCL |
|
در ادامه نحوه اتصال این سنور به برد آردوینو رو ملاحظه میکنید
![](https://yazdkit.com/wp-content/uploads/2018/09/LuminanceIoT-04-Wiring-Diagram-1024x526.jpg)
برای استفاده از سنسور نور سنج TSL2561 در آردیونو لازمه تا کتابخونه این سنسور Adafruit_TSL2561_U.h رو از این لینک دریافت کنید یا در فایل ضمیمه شده در اخر همین پست دانلود کنید.
![](https://yazdkit.com/wp-content/uploads/2018/09/LuminanceIoT-03-Full-Circuit-1024x768.jpg)
در ادامه سورس آردوینو مورد نیاز برای پروگرم کردن برد آردوینو را براتون آماده کردیم که لازمه طبق اموزش در این پست ، مقادیر 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