- BH1750 డిజిటల్ లైట్ సెన్సార్ మాడ్యూల్ పరిచయం
- ఆర్డునో
- BH1750 లైట్ సెన్సార్ను ఇంటర్ఫేసింగ్ కోసం ప్రోగ్రామింగ్ ఆర్డునో
మీరు మీ ఫోన్ను సూర్యరశ్మిలో లేదా అధిక లైటింగ్లో తీసుకున్నప్పుడు, అది స్వయంచాలకంగా లైటింగ్ పరిస్థితులకు అనుగుణంగా ప్రకాశాన్ని సర్దుబాటు చేస్తుంది. ఇప్పుడు చాలా డిస్ప్లే పరికరాలు, ఇది టీవీ లేదా మొబైల్ ఫోన్ అయినా, ప్రకాశాన్ని స్వయంచాలకంగా సర్దుబాటు చేయడానికి లోపల యాంబియంట్ లైట్ సెన్సార్ను కలిగి ఉంటుంది. ఈ రోజు ఈ ట్యుటోరియల్లో, మేము అలాంటి ఒక సెన్సార్ BH1750 లైట్ సెన్సార్ మాడ్యూల్ని ఉపయోగిస్తాము మరియు దానిని ఆర్డునోతో ఇంటర్ఫేస్ చేసి 16x2 LCD కన్నా ఎక్కువ లక్స్ విలువను చూపుతాము.
BH1750 డిజిటల్ లైట్ సెన్సార్ మాడ్యూల్ పరిచయం
BH1750 అనేది డిజిటల్ యాంబియంట్ లైట్ సెన్సార్ లేదా లైట్ ఇంటెన్సిటీ సెన్సార్, ఇది మొబైల్స్, ఎల్సిడి డిస్ప్లేలలో ప్రదర్శన యొక్క ప్రకాశాన్ని ఆటో సర్దుబాటు చేయడానికి లేదా అవుట్డోర్ లైటింగ్ పరిస్థితుల ఆధారంగా కార్లలో హెడ్లైట్లను ఆన్ / ఆఫ్ చేయడానికి ఉపయోగించవచ్చు.
సెన్సార్ I 2 C సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్ను ఉపయోగిస్తుంది, ఇది మైక్రోకంట్రోలర్లతో ఉపయోగించడాన్ని సులభతరం చేస్తుంది. I2C కమ్యూనికేషన్ కోసం దీనికి SDI మరియు SDA పిన్స్ ఉన్నాయి. BH1750 యాంబియంట్ లైట్ సెన్సార్ యొక్క పిన్అవుట్ క్రింద చూపబడింది:
ఈ సెన్సార్ యొక్క అవుట్పుట్ LUX (lx) లో ఉంది, కాబట్టి దీనికి తదుపరి లెక్కలు అవసరం లేదు. లక్స్ కాంతి తీవ్రతను కొలిచే యూనిట్. ఇది ఒక నిర్దిష్ట ప్రాంతంపై కాంతి కొట్టే మొత్తాన్ని బట్టి తీవ్రతను కొలుస్తుంది. ఒక లక్స్ చదరపు మీటరుకు ఒక ల్యూమన్కు సమానం.
సెన్సార్ 2.4V నుండి 3.6V (సాధారణంగా 3.0V) వరకు వోల్టేజ్లపై పనిచేస్తుంది మరియు ఇది 0.12mA కరెంట్ను వినియోగిస్తుంది. ఈ సెన్సార్ విస్తృత శ్రేణి మరియు అధిక రిజల్యూషన్ (1-65535lx) కలిగి ఉంది మరియు అదనంగా, కొలత వైవిధ్యం కూడా చిన్నది (సుమారు +/- 20%). ఇది బాహ్య భాగం లేకుండా స్వతంత్రంగా పనిచేయగలదు.
లైటింగ్ పరిస్థితుల ఆధారంగా పరికరాలను నియంత్రించడానికి ఎల్డిఆర్ సెన్సార్ను ఉపయోగించగలిగినప్పటికీ అది ఖచ్చితమైనది కాదు. మేము చాలా తేలికపాటి నియంత్రిత అనువర్తనాలను రూపొందించడానికి LDR సెన్సార్ను ఉపయోగించాము:
- LDR ఉపయోగించి ఆర్డునో లైట్ సెన్సార్ సర్క్యూట్
- LDR మరియు 555 టైమర్ IC ని ఉపయోగించి డార్క్ డిటెక్టర్
- కాంతిని గుర్తించడానికి సాధారణ LDR సర్క్యూట్
- RGB LED మరియు LDR ఉపయోగించి ఆర్డునో కలర్ మిక్సింగ్ లాంప్
ఆర్డునో
BH1750 లైట్ సెన్సార్ను Arduino తో కనెక్ట్ చేసే సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది.
I2C కమ్యూనికేషన్ పిన్స్ SDA మరియు BH1750 యొక్క SCL I 2 C కమ్యూనికేషన్ కోసం వరుసగా Arduino పిన్ A4 మరియు A5 లకు అనుసంధానించబడి ఉన్నాయి. సెన్సార్ కోసం ఆపరేటింగ్ వోల్టేజ్ 3.3v అని మనకు తెలుసు కాబట్టి BH1750 యొక్క VCC మరియు GND 3.3V మరియు Arduino యొక్క GND కి అనుసంధానించబడి ఉన్నాయి. LCD కొరకు, డేటా పిన్స్ (D4-D7) ఆర్డునో యొక్క డిజిటల్ పిన్స్ D2-D5 తో అనుసంధానించబడి ఉన్నాయి మరియు RS మరియు EN పిన్స్ Arduino యొక్క D6 మరియు D7 లకు అనుసంధానించబడి ఉన్నాయి. LCD యొక్క V0 కుండకు అనుసంధానించబడి ఉంది మరియు LCD యొక్క ప్రకాశాన్ని నియంత్రించడానికి 10k కుండ ఉపయోగించబడుతుంది.
BH1750 లైట్ సెన్సార్ను ఇంటర్ఫేసింగ్ కోసం ప్రోగ్రామింగ్ ఆర్డునో
Arduino తో ఈ LUX సెన్సార్ను ఉపయోగించడం కోసం ప్రోగ్రామింగ్ భాగం చాలా సులభం. ఈ సెన్సార్ కోసం లైబ్రరీ అందుబాటులో ఉన్నప్పటికీ, అది లేకుండా మనం కూడా ఉపయోగించవచ్చు.
మొదట, మేము LCD మరియు I 2 C ప్రోటోకాల్ కోసం హెడర్ ఫైళ్ళను చేర్చాము.
# చేర్చండి
లో సెటప్ ఫంక్షన్, మేము LCD మరియు సెన్సార్ రెండు initialized మరియు LCD ప్రారంభ సందేశాన్ని ముద్రించిన చేసిన.
శూన్య సెటప్ () { వైర్.బెగిన్ (); lcd.begin (16,2); lcd.print ("BH1750 లైట్"); lcd.setCursor (0,1); lcd.print ("ఇంటెన్సిటీ సెన్సార్"); ఆలస్యం (2000); }
ఇక్కడ BH1750_Read మరియు BH1750_Init ఫంక్షన్లు వరుసగా లక్స్ విలువలను చదవడానికి మరియు వ్రాయడానికి ఉపయోగిస్తారు. Wire.beginTransmission () ఫంక్షన్ ప్రసార ప్రారంభించడానికి ఉపయోగిస్తారు మరియు Wire.requestFrom (చిరునామా, 2) ఫంక్షన్ పేరు 2 నమోదుల సంఖ్య సూచిస్తుంది రిజిస్టర్ల చదవడానికి ఉపయోగిస్తారు.
ట్రాన్స్మిషన్ను ముగించడానికి మరింత వైర్.ఎండ్ ట్రాన్స్మిషన్ () ఉపయోగించబడుతుంది మరియు వైర్.రైట్ () ఫంక్షన్ ఆ రిజిస్టర్ యొక్క చిరునామాను నమోదు చేసి కావలసిన రిజిస్టర్కు వెళ్ళడానికి ఉపయోగించబడుతుంది.
int BH1750_ చదవండి (పూర్ణాంక చిరునామా) { int i = 0; వైర్.బెగిన్ ట్రాన్స్మిషన్ (చిరునామా); Wire.requestFrom (చిరునామా, 2); అయితే (Wire.available ()) { buff = Wire.read (); i ++; } వైర్.ఎండ్ ట్రాన్స్మిషన్ (); తిరిగి నేను; } గర్జన BH1750_Init (Int చిరునామా) { Wire.beginTransmission (చిరునామా); వైర్.రైట్ (0x10); వైర్.ఎండ్ ట్రాన్స్మిషన్ (); }
లో లూప్ ఫంక్షన్, మేము LCD పైగా నిజ సమయంలో లక్స్ విలువలు ప్రింటింగ్. మొదట BH1750_Read ఫంక్షన్ నుండి రిటర్న్ విలువను 2 తో పోల్చండి , ఆపై లక్స్ విలువలను 2 కి సమానంగా ఉంటే ప్రింట్ చేయడం ప్రారంభించండి. ఇక్కడ విలువలు 2 తో పోల్చబడతాయి ఎందుకంటే BH1750_Read ఫంక్షన్ రిజిస్టర్ కౌంట్ విలువను తిరిగి ఇస్తుంది మరియు మేము 2 రిజిస్టర్లను మాత్రమే చదువుతున్నాము. కనుక ఇది 2 కి చేరుకున్నప్పుడు, ప్రోగ్రామ్ కాంతి తీవ్రత యొక్క LUX విలువలను ముద్రించడం ప్రారంభిస్తుంది.
రెండు రిజిస్టర్ల నుండి విలువలను పొందడానికి మరియు వాటిని 1.2 ద్వారా విభజించడానికి ఒక సూత్రం ఉపయోగించబడుతుంది, ఇది కొలత ఖచ్చితత్వం.
void loop () { int i; uint16_t విలువ = 0; BH1750_Init (BH1750address); ఆలస్యం (200); if (2 == BH1750_Read (BH1750address)) { value = ((buff << 8) -buff) /1.2; lcd.clear (); lcd.print ("LUX లో తీవ్రత"); lcd.setCursor (6,1); lcd.print (విలువ); } ఆలస్యం (150); }
చివరగా Arduino ని శక్తివంతం చేసి, ప్రోగ్రామ్ను Arduino లోకి అప్లోడ్ చేయండి. ప్రోగ్రామ్ అప్లోడ్ అయిన వెంటనే ఎల్సిడి ఎల్యుఎక్స్ యూనిట్లలో కాంతి తీవ్రతను చూపించడం ప్రారంభిస్తుంది. దిగువ వీడియోలో చూపిన విధంగా సెన్సార్ చుట్టూ కాంతి తీవ్రతను మార్చడం ద్వారా మీరు విలువలను కూడా మార్చవచ్చు.