Mundarija:

BH1715 va Arduino Nano yordamida yorug'lik intensivligini hisoblash: 5 qadam
BH1715 va Arduino Nano yordamida yorug'lik intensivligini hisoblash: 5 qadam

Video: BH1715 va Arduino Nano yordamida yorug'lik intensivligini hisoblash: 5 qadam

Video: BH1715 va Arduino Nano yordamida yorug'lik intensivligini hisoblash: 5 qadam
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Noyabr
Anonim
Image
Image

Kecha biz LCD displeylar ustida ishladik va ular ustida ishlayotganda yorug'lik intensivligini hisoblash muhimligini tushundik. Yorug'likning intensivligi nafaqat bu dunyoda, balki uning biologik sohasida ham muhim rol o'ynaydi. Yorug'lik intensivligini aniq baholash bizning ekotizimimizda, o'simliklarning o'sishida va boshqalarda hal qiluvchi rol o'ynaydi. Shunday qilib, biz bu maqsadda xizmat qilish uchun BH1715 sensorini o'rganib chiqdik, u 16-bitli ketma-ket chiqadigan tashqi yorug'lik sensori.

Ushbu qo'llanmada biz BH1715 ning Arduino Nano bilan ishlashini namoyish qilmoqchimiz.

Buning uchun sizga kerak bo'lgan uskunalar quyidagilar:

1. BH1715 - Atrofdagi yorug'lik sensori

2. Arduino nano

3. I2C kabeli

4. Arduino Nano uchun I2C qalqoni

1 -qadam: BH1715 haqida umumiy ma'lumot:

Sizga nima kerak.. !!
Sizga nima kerak.. !!

Birinchidan, biz sizni BH1715 sensor modulining asosiy xususiyatlari va u ishlaydigan aloqa protokoli bilan tanishtirmoqchimiz.

BH1715 - bu I²C avtobus interfeysi bilan ishlaydigan raqamli yorug'lik sensori. BH1715 odatda mobil qurilmalar uchun LCD va klaviatura orqa nuri quvvatini sozlash uchun atrofdagi yorug'lik ma'lumotlarini olish uchun ishlatiladi. Ushbu qurilma 16-bitli piksellar sonini va sozlanishi o'lchov diapazonini taqdim etadi, bu esa 23 dan 100 000 lyuksgacha aniqlash imkonini beradi.

Sensor ishlaydigan aloqa protokoli I2C. I2C o'zaro integratsiyalashgan sxemani anglatadi. Bu aloqa protokoli bo'lib, bunda aloqa SDA (ketma -ket ma'lumotlar) va SCL (ketma -ket soat) liniyalari orqali amalga oshiriladi. Bu bir vaqtning o'zida bir nechta qurilmalarni ulash imkonini beradi. Bu eng oddiy va samarali aloqa protokoli.

2 -qadam: Sizga nima kerak.. !

Sizga nima kerak.. !!
Sizga nima kerak.. !!
Sizga nima kerak.. !!
Sizga nima kerak.. !!
Sizga nima kerak.. !!
Sizga nima kerak.. !!

Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:

1. BH1715 - Atrofdagi yorug'lik sensori

2. Arduino Nano

3. I2C kabeli

4. Arduino nano uchun I2C qalqoni

3 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi

Uskuna ulanish bo'limi, asosan, sensori va malina pi o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

BH1715 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.

Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz. Sizga faqat to'rtta sim kerak!

Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.

Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

4 -qadam: yorug'lik intensivligini o'lchash Arduino kodi:

Yorug'lik intensivligini o'lchash Arduino kodi
Yorug'lik intensivligini o'lchash Arduino kodi
Yorug'lik intensivligini o'lchash Arduino kodi
Yorug'lik intensivligini o'lchash Arduino kodi

Endi Arduino kodidan boshlaylik.

Sensor modulini Arduino bilan ishlatganda, biz Wire.h kutubxonasini o'z ichiga olamiz. "Wire" kutubxonasida sensorlar va Arduino kartalari o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalar mavjud.

Foydalanuvchining qulayligi uchun butun Arduino kodi quyida keltirilgan:

#qo'shing

// BH1715 I2C manzili - 0x23 (35) #define Addr 0x23 void setup () {// I2C aloqasini MASTER Wire.begin () sifatida boshlang; // Serial aloqani ishga tushiring, bod tezligi = 9600 Serial.begin (9600); // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Wire.write (0x01) buyrug'iga quvvat yuboring; // I2C Transmission Wire.endTransmission () ni to'xtating; // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Doimiy o'lchash buyrug'ini yuboring Wire.write (0x10); // I2C Transmission Wire.endTransmission () ni to'xtating; kechikish (300); } void loop () {unsigned int data [2]; // Wire.requestFromdan 2 bayt ma'lumot so'rash (Addr, 2); // 2 bayt ma'lumotni o'qing // ALS msb, ALS lsb if (Wire.available () == 2) {data [0] = Wire.read (); ma'lumotlar [1] = Wire.read (); } kechikish (300); // ma'lumotlarning o'zgaruvchanligini o'zgartirish = ((ma'lumotlar [0] * 256) + ma'lumotlar [1]) /1.20; // Serial.print ketma -ket monitoriga chiqish ma'lumotlari ("Atrofdagi yorug'lik yorug'ligi:"); Ketma -ket chop etish (nashrida); Serial.println ("lyuks"); }

Kodning quyidagi qismi i2c aloqasini va Wire.begin () va Serial.begin () funktsiyalari yordamida ketma -ket aloqani boshlaydi.

// I2C aloqasini MASTER sifatida boshlang

Wire.begin (); // Serial aloqani boshlang, byud tezligi = 9600 Serial.begin (9600); // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Wire.write (0x01) buyrug'iga quvvat yuboring; // I2C Transmission Wire.endTransmission () ni to'xtating; // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Doimiy o'lchash buyrug'ini yuboring Wire.write (0x10); // I2C Transmission Wire.endTransmission () ni to'xtating; kechikish (300);

Yorug'lik intensivligi kodning keyingi qismida o'lchanadi.

imzosiz int ma'lumotlari [2];

// Wire.requestFromdan 2 bayt ma'lumot so'rash (Addr, 2); // 2 bayt ma'lumotni o'qing // ALS msb, ALS lsb if (Wire.available () == 2) {data [0] = Wire.read (); ma'lumotlar [1] = Wire.read (); } kechikish (300); // ma'lumotlarning o'zgaruvchanligini o'zgartirish = ((ma'lumotlar [0] * 256) + ma'lumotlar [1]) /1.20; // Serial.print ketma -ket monitoriga chiqish ma'lumotlari ("Atrofdagi yorug'lik yorug'ligi:"); Ketma -ket chop etish (nashrida); Serial.println ("lyuks");

Kodni arduino -da yozish va ketma -ket portdagi o'qishlaringizni tekshirish kifoya. Chiqish yuqoridagi rasmda sizning ma'lumotingiz uchun ham ko'rsatilgan.

5 -qadam: Ilovalar:

Ilovalar
Ilovalar

BH1715 - bu raqamli chiqadigan tashqi yorug'lik sensori bo'lib, uni mobil telefon, LCD televizor, QAYD kompyuterlari va boshqalarga kiritish mumkin. Bundan tashqari, u ko'chma o'yin mashinasi, raqamli kamera, raqamli videokamera, PDA, LCD displey va boshqa ko'plab qurilmalarda ishlatilishi mumkin. nurni sezishning samarali dasturlari.

Tavsiya: