สารบัญ:

การคำนวณความเข้มของแสงโดยใช้ BH1715 และ Arduino Nano: 5 ขั้นตอน
การคำนวณความเข้มของแสงโดยใช้ BH1715 และ Arduino Nano: 5 ขั้นตอน

วีดีโอ: การคำนวณความเข้มของแสงโดยใช้ BH1715 และ Arduino Nano: 5 ขั้นตอน

วีดีโอ: การคำนวณความเข้มของแสงโดยใช้ BH1715 และ Arduino Nano: 5 ขั้นตอน
วีดีโอ: 2555UCON เครื่องวัดความเข้มแสง 2024, พฤศจิกายน
Anonim
Image
Image

เมื่อวานนี้ เรากำลังทำงานกับจอ LCD และในขณะที่ทำงานบนจอภาพ เราก็ได้ตระหนักถึงความสำคัญของการคำนวณความเข้มของแสง ความเข้มของแสงไม่เพียงแต่มีความสำคัญในขอบเขตทางกายภาพของโลกนี้เท่านั้น แต่ยังมีบทบาทที่กล่าวไว้อย่างดีในโดเมนทางชีววิทยาด้วย การประมาณค่าความเข้มแสงที่แม่นยำมีบทบาทสำคัญในระบบนิเวศของเรา ในการเจริญเติบโตของพืช ฯลฯ ดังนั้นเพื่อจุดประสงค์นี้ เราจึงศึกษาเซ็นเซอร์ BH1715 นี้ ซึ่งเป็นเซ็นเซอร์วัดแสงรอบข้างประเภทเอาต์พุตอนุกรม 16 บิต

ในบทช่วยสอนนี้ เราจะสาธิตการทำงานของ BH1715 กับ Arduino Nano

ฮาร์ดแวร์ที่คุณต้องการเพื่อการนี้มีดังนี้:

1. BH1715 - เซ็นเซอร์วัดแสงโดยรอบ

2. Arduino nano

3. สายเคเบิล I2C

4. I2C Shield สำหรับ Arduino Nano

ขั้นตอนที่ 1: BH1715 ภาพรวม:

สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!

ก่อนอื่น เราต้องการทำความคุ้นเคยกับคุณสมบัติพื้นฐานของโมดูลเซ็นเซอร์ นั่นคือ BH1715 และโปรโตคอลการสื่อสารที่ใช้งาน

BH1715 เป็นเซนเซอร์วัดแสงโดยรอบแบบดิจิทัลพร้อมอินเทอร์เฟซบัสI²C โดยทั่วไปแล้ว BH1715 จะใช้เพื่อรับข้อมูลแสงแวดล้อมสำหรับการปรับไฟแบ็คไลท์ LCD และแผงปุ่มกดสำหรับอุปกรณ์มือถือ อุปกรณ์นี้มีความละเอียด 16 บิตและช่วงการวัดที่ปรับได้ ทำให้สามารถตรวจจับได้ตั้งแต่.23 ถึง 100, 000 ลักซ์

โปรโตคอลการสื่อสารที่เซ็นเซอร์ทำงานคือ I2C I2C ย่อมาจากวงจรรวม เป็นโปรโตคอลการสื่อสารที่การสื่อสารเกิดขึ้นผ่านสาย SDA (ข้อมูลอนุกรม) และ SCL (นาฬิกาอนุกรม) อนุญาตให้เชื่อมต่ออุปกรณ์หลายเครื่องพร้อมกัน เป็นหนึ่งในโปรโตคอลการสื่อสารที่ง่ายและมีประสิทธิภาพมากที่สุด

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ..!

สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!

วัสดุที่เราต้องการเพื่อให้บรรลุเป้าหมายประกอบด้วยส่วนประกอบฮาร์ดแวร์ต่อไปนี้:

1. BH1715 - เซ็นเซอร์วัดแสงโดยรอบ

2. Arduino นาโน

3. สายเคเบิล I2C

4. I2C Shield สำหรับ Arduino nano

ขั้นตอนที่ 3: การเชื่อมต่อฮาร์ดแวร์:

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

ส่วนการเชื่อมต่อฮาร์ดแวร์โดยทั่วไปจะอธิบายการเชื่อมต่อสายไฟที่จำเป็นระหว่างเซ็นเซอร์และราสเบอร์รี่ pi ตรวจสอบให้แน่ใจว่าการเชื่อมต่อถูกต้องเป็นสิ่งจำเป็นพื้นฐานในขณะที่ทำงานกับระบบใด ๆ สำหรับเอาต์พุตที่ต้องการ ดังนั้น การเชื่อมต่อที่จำเป็นมีดังนี้:

BH1715 จะทำงานเหนือ I2C นี่คือตัวอย่างไดอะแกรมการเดินสาย ซึ่งสาธิตวิธีเชื่อมต่อแต่ละอินเทอร์เฟซของเซ็นเซอร์

นอกกรอบ บอร์ดได้รับการกำหนดค่าสำหรับอินเทอร์เฟซ I2C ดังนั้นเราขอแนะนำให้ใช้การเชื่อมต่อนี้หากคุณไม่เชื่อเรื่องพระเจ้า สิ่งที่คุณต้องมีคือสี่สาย!

ต้องใช้พิน Vcc, Gnd, SCL และ SDA เพียงสี่การเชื่อมต่อเท่านั้น และเชื่อมต่อด้วยสายเคเบิล I2C

การเชื่อมต่อเหล่านี้แสดงให้เห็นในภาพด้านบน

ขั้นตอนที่ 4: รหัส Arduino การวัดความเข้มของแสง:

รหัส Arduino การวัดความเข้มของแสง
รหัส Arduino การวัดความเข้มของแสง
รหัส Arduino การวัดความเข้มของแสง
รหัส Arduino การวัดความเข้มของแสง

เริ่มจากโค้ด Arduino กันก่อนเลย

ในขณะที่ใช้โมดูลเซ็นเซอร์กับ Arduino เราได้รวมไลบรารี Wire.h ไลบรารี "Wire" มีฟังก์ชันที่อำนวยความสะดวกในการสื่อสาร i2c ระหว่างเซนเซอร์และบอร์ด Arduino

รหัส Arduino ทั้งหมดได้รับด้านล่างเพื่อความสะดวกของผู้ใช้:

#รวม

// ที่อยู่ BH1715 I2C คือ 0x23 (35) #define Addr 0x23 การตั้งค่าเป็นโมฆะ () {// เริ่มต้นการสื่อสาร I2C เป็น MASTER Wire.begin (); // เริ่มต้นการสื่อสารแบบอนุกรม ตั้งค่าอัตรารับส่งข้อมูล = 9600 Serial.begin(9600); // เริ่ม I2C Transmission Wire.beginTransmission(Addr); // ส่งคำสั่ง Wire.write(0x01); // หยุด I2C Transmission Wire.endTransmission(); // เริ่ม I2C Transmission Wire.beginTransmission(Addr); // ส่งคำสั่งการวัดต่อเนื่อง Wire.write(0x10); // หยุด I2C Transmission Wire.endTransmission(); ล่าช้า (300); } void loop() { ข้อมูล int ที่ไม่ได้ลงชื่อ[2]; // ขอข้อมูล 2 ไบต์ Wire.requestFrom(Addr, 2); // อ่านข้อมูล 2 ไบต์ // ALS msb, ALS lsb if(Wire.available() == 2) { data[0] = Wire.read(); ข้อมูล[1] = Wire.read(); } ล่าช้า (300); //แปลง data float luminance = ((data[0] * 256) + data[1]) / 1.20; // ส่งออกข้อมูลไปยัง Serial Monitor Serial.print ("Ambient Light Luminance:"); Serial.print(ความสว่าง); Serial.println("ลักซ์"); }

ส่วนต่อไปนี้ของรหัสเริ่มต้นการสื่อสาร i2c และการสื่อสารแบบอนุกรมโดยใช้ฟังก์ชัน Wire.begin() และ Serial.begin()

// เริ่มต้นการสื่อสาร I2C เป็น MASTER

Wire.begin(); // เริ่มต้นการสื่อสารแบบอนุกรม กำหนดอัตรารับส่งข้อมูล = 9600 Serial.begin(9600); // เริ่ม I2C Transmission Wire.beginTransmission(Addr); // ส่งคำสั่ง Wire.write(0x01); // หยุด I2C Transmission Wire.endTransmission(); // เริ่ม I2C Transmission Wire.beginTransmission(Addr); // ส่งคำสั่งการวัดต่อเนื่อง Wire.write(0x10); // หยุด I2C Transmission Wire.endTransmission(); ล่าช้า (300);

ความเข้มของแสงวัดได้ในส่วนต่อไปนี้ของรหัส

ข้อมูล int ที่ไม่ได้ลงนาม[2];

// ขอข้อมูล 2 ไบต์ Wire.requestFrom(Addr, 2); // อ่านข้อมูล 2 ไบต์ // ALS msb, ALS lsb if(Wire.available() == 2) { data[0] = Wire.read(); ข้อมูล[1] = Wire.read(); } ล่าช้า (300); //แปลง data float luminance = ((data[0] * 256) + data[1]) / 1.20; // ส่งออกข้อมูลไปยังจอภาพอนุกรม Serial.print ("Ambient Light Luminance:"); Serial.print(ความสว่าง); Serial.println("ลักซ์");

สิ่งที่คุณต้องทำคือเบิร์นโค้ดใน Arduino และตรวจสอบการอ่านของคุณบนพอร์ตอนุกรม ผลลัพธ์จะแสดงในภาพด้านบนสำหรับการอ้างอิงของคุณ

ขั้นตอนที่ 5: การใช้งาน:

การใช้งาน
การใช้งาน

BH1715 เป็นเซ็นเซอร์วัดแสงรอบข้างแบบดิจิตอลที่สามารถรวมเข้ากับโทรศัพท์มือถือ, LCD TV, NOTE PC เป็นต้น นอกจากนี้ยังสามารถใช้กับเครื่องเกมพกพา, กล้องดิจิตอล, กล้องวิดีโอดิจิตอล, PDA, จอ LCD และอุปกรณ์อื่น ๆ อีกมากมายที่ต้องการ แอปพลิเคชั่นตรวจจับแสงที่มีประสิทธิภาพ

แนะนำ: