પાઠ 20/31: LCD સ્ક્રીન પર DHT11 થી તાપમાન અને ભેજ દર્શાવવું
આ ટ્યુટોરિયલ દર્શાવે છે કે કેવી રીતે DHT11 તાપમાન અને ભેજ સેન્સરને I2C-સક્ષમ LCD1602 ડિસ્પ્લે સાથે જોડીને એક કોમ્પેક્ટ પર્યાવરણ મોનિટરિંગ સ્ટેશન બનાવવું. સીરિયલ મોનિટરમાંથી કાચો સેન્સર ડેટા વાંચવાને બદલે, તમે 16x2 અક્ષર સ્ક્રીન પર લાઇવ તાપમાન અને ભેજ રીડિંગ્સ પ્રદર્શિત કરવાનું શીખશો. આ પ્રોજેક્ટ ડેસ્કટોપ વેધર સ્ટેશન, નાનું ગ્રીનહાઉસ મોનિટર બનાવવા અથવા કોઈપણ હોમ ઓટોમેશન પ્રોજેક્ટમાં સ્થાનિક રીડઆઉટ ઉમેરવા માટે આદર્શ છે. I2C ઇન્ટરફેસ વાયરિંગને સરળ બનાવે છે, જે આ પ્રોજેક્ટને શિખાઉ લોકો માટે સુલભ અને અનુભવી મેકર્સ માટે ઝડપી ઉમેરો બનાવે છે.
આ જ્ઞાન સાથે તમે શું બનાવી શકો તેના થોડા વ્યવહારુ વિચારો અહીં છે:
- વર્તમાન રૂમની સ્થિતિ દર્શાવતું ડેસ્કટોપ વેધર સ્ટેશન.
- સરિસૃપ અથવા છોડના ટેરેરિયમ માટે કોમ્પેક્ટ ડિસ્પ્લે.
- સર્વર રૂમ અથવા વર્કશોપ પર્યાવરણ માટે સ્થાનિક રીડઆઉટ.
- વધુ જટિલ હોમ ઓટોમેશન સિસ્ટમ માટે બેઝ મોડ્યુલ.
હાર્ડવેર અને ઘટકો
આ પ્રોજેક્ટ બનાવવા માટે, તમારે નીચેના ઘટકોની જરૂર પડશે:
- Arduino Uno (અથવા સુસંગત બોર્ડ)
- I2C ઇન્ટરફેસ મોડ્યુલ સાથે LCD1602 ડિસ્પ્લે
- DHT11 તાપમાન અને ભેજ સેન્સર
- 4.7kΩ અથવા 10kΩ પુલ-અપ રેઝિસ્ટર (જો બેર DHT11 સેન્સરનો ઉપયોગ કરી રહ્યા હોવ)
- જમ્પર વાયર
- બ્રેડબોર્ડ (વૈકલ્પિક, સરળ જોડાણો માટે)
I2C LCD1602 ને સમજવું
LCD1602 એ 16 કૉલમ અને 2 પંક્તિઓ સાથેનો સામાન્ય અક્ષર ડિસ્પ્લે છે. ડિસ્પ્લેની પાછળ સોલ્ડર કરેલું "I2C" મોડ્યુલ તેની સરળતાની ચાવી છે. આ મોડ્યુલ LCD ના સમાંતર ઇન્ટરફેસને સીરિયલ I2C ઇન્ટરફેસમાં રૂપાંતરિત કરે છે, જેને ડેટા માટે માત્ર બે વાયર (SDA અને SCL) અને પાવર માટે બે (VCC અને GND) ની જરૂર પડે છે. આ તમારા Arduino પર જરૂરી પિનની સંખ્યાને ઘણી ઘટાડે છે, જે અન્ય સેન્સર અને એક્ટ્યુએટર્સ માટે વધુ ઉપલબ્ધ રાખે છે. મોડ્યુલમાં ડિસ્પ્લેનો કોન્ટ્રાસ્ટ સમાયોજિત કરવા માટે એક નાનો પોટેન્શિયોમીટર પણ શામેલ છે, જે ટેક્સ્ટ દૃશ્યમાન છે તેની ખાતરી કરવા માટે નિર્ણાયક છે. મોડ્યુલનો I2C સરનામું બોર્ડ પરના નાના સોલ્ડર જમ્પર્સ (A0, A1, A2) નો ઉપયોગ કરીને બદલી શકાય છે, જે બહુવિધ I2C ઉપકરણોને સમાન બસ પર સહઅસ્તિત્વ ધરાવવાની મંજૂરી આપે છે.
વાયરિંગ માર્ગદર્શિકા
નીચેના ડાયાગ્રામમાં બતાવ્યા પ્રમાણે ઘટકોને કનેક્ટ કરો. I2C LCD Arduino ના I2C પિનનો ઉપયોગ કરે છે, જ્યારે DHT11 સેન્સર ડિજિટલ પિનનો ઉપયોગ કરે છે.
LCD1602-I2C માટે:
- VCC ને Arduino 5V સાથે
- GND ને Arduino GND સાથે
- SDA ને Arduino A4 સાથે
- SCL ને Arduino A5 સાથે
DHT11 સેન્સર માટે:
- VCC (પિન 1) ને Arduino 5V સાથે
- ડેટા (પિન 2) ને Arduino ડિજિટલ પિન 2 સાથે (5V માટે 10kΩ પુલ-અપ રેઝિસ્ટર સાથે)
- NC (પિન 3) - કનેક્ટેડ નથી
- GND (પિન 4) ને Arduino GND સાથે
(વિડિઓમાં 25:16 પર)
લાઇબ્રેરીઓ સેટ કરવી
આ પ્રોજેક્ટ માટે બે લાઇબ્રેરીઓની જરૂર છે. Wire.h લાઇબ્રેરી પ્રમાણભૂત Arduino ઇન્સ્ટોલેશનનો ભાગ છે. તમારે LiquidCrystal_I2C લાઇબ્રેરી અને dht11 લાઇબ્રેરી ઇન્સ્ટોલ કરવાની જરૂર પડશે. વિડિઓ તેમને કેવી રીતે ઇન્સ્ટોલ કરવી તે દર્શાવે છે. તમે વિડિઓ વર્ણનમાં અથવા Robojax વેબસાઇટ પર આપેલી લિંક્સમાંથી લાઇબ્રેરીઓ ડાઉનલોડ કરી શકો છો. ડાઉનલોડ કર્યા પછી, તમે Sketch > Include Library > Add .ZIP Library... પર નેવિગેટ કરીને અને ડાઉનલોડ કરેલી ફાઇલો પસંદ કરીને Arduino IDE દ્વારા તેમને ઇન્સ્ટોલ કરી શકો છો. (વિડિઓમાં 06:16 પર)
તમારા LCD નો I2C સરનામું શોધવું
ડિસ્પ્લેનો ઉપયોગ કરતા પહેલા, તમારે તેનો I2C સરનામું નક્કી કરવો આવશ્યક છે. સૌથી સામાન્ય સરનામું 0x27 અથવા 0x3F છે, પરંતુ તે બદલાઈ શકે છે. તે શોધવા માટે, તમે I2C સ્કેનર સ્કેચનો ઉપયોગ કરી શકો છો. આ એક સરળ પ્રોગ્રામ છે જે I2C બસને સ્કેન કરે છે અને મળેલા કોઈપણ સરનામાંને સીરિયલ મોનિટર પર અહેવાલ આપે છે. સ્કેનર કોડ અપલોડ કરો, 9600 બૉડ પર સીરિયલ મોનિટર ખોલો, અને તે તમારા LCD નું સરનામું પ્રદર્શિત કરશે. (વિડિઓમાં 08:11 પર)
કોડ સમજૂતી
આ વિભાગ કોડના મુખ્ય, વપરાશકર્તા-રૂપરેખાંકિત ભાગો સમજાવે છે. સંપૂર્ણ પ્રોગ્રામ લેખની નીચે ડાઉનલોડ માટે ઉપલબ્ધ છે.
કોડ જરૂરી લાઇબ્રેરીઓ શામેલ કરીને અને વપરાયેલા પિન અને ઑબ્જેક્ટ્સને વ્યાખ્યાયિત કરીને શરૂ થાય છે.
// GetHub થી હેડર ફાઇલ: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // DHT11 નો ઑબ્જેક્ટ બનાવો
#define dhtpin 2 // DHT11 સાથે કનેક્ટ કરવા માટે પિન સેટ કરો
// LCD1602-I2C માટે સેટિંગ્સની શરૂઆત
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 16 અક્ષરો અને 2 લાઇન ડિસ્પ્લે માટે LCD સરનામું 0x3F પર સેટ કરો
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// LCD1602-I2C માટે સેટિંગ્સનો અંત
તમારા સેટઅપ માટે રૂપરેખાંકિત કરવા માટેની આ સૌથી મહત્વપૂર્ણ લાઇનો છે:
#define dhtpin 2: આ DHT11 સેન્સરના ડેટા પિન સાથે કનેક્ટેડ Arduino પિનને વ્યાખ્યાયિત કરે છે. જો તમે અલગ પિનનો ઉપયોગ કરો છો તો નંબર2બદલો.LiquidCrystal_I2C lcd(0x3F, 16, 2);: આ લાઇન LCD ઑબ્જેક્ટ બનાવે છે. પ્રથમ પરિમાણ,0x3F, એ I2C સરનામું છે જે તમે પાછલા પગલામાં શોધ્યું હતું.16અને2તમારા ડિસ્પ્લેના કૉલમ અને પંક્તિઓની સંખ્યા વ્યાખ્યાયિત કરે છે. જો તમારા સ્કેનરને અલગ સરનામું મળ્યું હોય (દા.ત.,0x27) તો સરનામું અપડેટ કરો.
કોડ એક કસ્ટમ ફંક્શન, getTemp(), નો ઉપયોગ કરીને તાપમાન વાંચે છે અને તેને વિવિધ એકમોમાં રૂપાંતરિત કરે છે. આ એક શક્તિશાળી સુવિધા છે જે કોડને વિવિધ એપ્લિકેશનો માટે ફરીથી ઉપયોગી બનાવે છે.
float getTemp(char type) {
float temp = (float)DHT11.temperature;//તાપમાન મેળવો
if(type =='F')
{
return temp * 1.8 + 32;// ફારેનહીટમાં રૂપાંતરિત કરો
}else if(type =='K')
{
return temp + 274.15;// કેલ્વિનમાં રૂપાંતરિત કરો
}else{
return temp;
}
}
આ ફંક્શનનો ઉપયોગ કરવા માટે, તમે તેને ઇચ્છિત એકમ દર્શાવતી એક અક્ષર દલીલ સાથે કૉલ કરો છો. ઉદાહરણ તરીકે, getTemp('C') તાપમાન સેલ્સિયસમાં પરત કરે છે, getTemp('F') તેને ફારેનહીટમાં પરત કરે છે, અને getTemp('K') તેને કેલ્વિનમાં પરત કરે છે. ફંક્શન DHT11 સેન્સરમાંથી કાચું તાપમાન વાંચે છે અને જરૂરી રૂપાંતરણ સૂત્ર લાગુ કરે છે. આ તમને મુખ્ય loop() માં સેન્સર વાંચન તર્ક ફરીથી લખ્યા વિના પ્રદર્શિત એકમ સરળતાથી બદલવાની મંજૂરી આપે છે. મુખ્ય લૂપ lcd.setCursor() અને lcd.print() ફંક્શનનો ઉપયોગ કરીને LCD પર તાપમાન અને ભેજ છાપે છે, જે સ્ક્રીન પર મૂલ્યો ક્યાં દેખાય છે તે નિયંત્રિત કરે છે.
ડિગ્રી પ્રતીક પ્રદર્શિત કરવું
પ્રમાણભૂત HD44780 LCD અક્ષર સમૂહમાં સમર્પિત ડિગ્રી પ્રતીક (°) શામેલ નથી. તેને પ્રદર્શિત કરવા માટે, તમારે LCD ના ROM માંથી અક્ષરના દશાંશ મૂલ્ય સાથે lcd.write() ફંક્શનનો ઉપયોગ કરવો આવશ્યક છે. ડિગ્રી પ્રતીક માટે, આ મૂલ્ય 223 છે. કોડ આ દર્શાવે છે કે તાપમાન મૂલ્ય પછી પ્રતીક છાપવા માટે lcd.print((char)223); નો ઉપયોગ કરીને. (વિડિઓમાં 30:16 પર)
લાઇવ પ્રોજેક્ટ પ્રદર્શન
એકવાર કોડ અપલોડ થઈ જાય, ડિસ્પ્લે સ્ટાર્ટઅપ સંદેશ બતાવશે અને પછી વર્તમાન તાપમાન અને ભેજ પ્રદર્શિત કરશે. ડિસ્પ્લેની પ્રથમ લાઇન "LCD1602 DHT11" ટેક્સ્ટ બતાવે છે, જ્યારે બીજી લાઇન સેલ્સિયસમાં તાપમાન, ત્યારબાદ ડિગ્રી પ્રતીક અને "C", અને પછી ફારેનહીટમાં તાપમાન, ત્યારબાદ ડિગ્રી પ્રતીક અને "F" બતાવે છે. ભેજ મૂલ્ય સીરિયલ મોનિટર પર છાપવામાં આવે છે. વિડિઓમાં પ્રદર્શન દર્શાવે છે કે સેન્સર પકડવામાં આવે ત્યારે ડિસ્પ્લે દર અડધી સેકંડે અપડેટ થાય છે, જે આસપાસની પરિસ્થિતિઓને ચોક્કસ રીતે પ્રતિબિંબિત કરે છે. (વિડિઓમાં 29:42 પર)
LCD પર પોટેન્શિયોમીટરમાંથી વોલ્ટેજ પ્રદર્શિત કરવું પાઠ 20/31: LCD1602 પર વોલ્ટેજ પ્રદર્શિત કરવું માં આવરી લેવામાં આવ્યું છે.
અલ્ટ્રાસોનિક સેન્સરમાંથી અંતર પ્રદર્શિત કરવા માટે સમાન LCD નો ઉપયોગ પાઠ 20/31: Arduino સાથે LCD1602 નો ઉપયોગ કરીને તાપમાન, વોલ્ટેજ અને અંતર પ્રદર્શિત કરવું | Robojax માં આવરી લેવામાં આવ્યું છે.
આ વિડિઓમાંથી સંબંધિત પ્રોજેક્ટ્સ
- પાઠ 20/31: Arduino સાથે LCD1602 નો ઉપયોગ કરીને તાપમાન, વોલ્ટેજ અને અંતર પ્રદર્શિત કરવું | Robojax
- પાઠ 20/31: LCD1602 પર વોલ્ટેજ પ્રદર્શિત કરવું
પ્રકરણો
- [00:00] LCD1602 નો પરિચય અને પ્રોજેક્ટ ઝાંખી
- [01:30] LCD1602 હાર્ડવેર અને I2C મોડ્યુલ સમજૂતી
- [02:47] LCD કોન્ટ્રાસ્ટ ગોઠવવું
- [03:14] LCD પિનઆઉટ અને I2C સરનામું રૂપરેખાંકન
- [05:28] LCD1602 માટે વાયરિંગ ડાયાગ્રામ
- [06:16] LiquidCrystal_I2C લાઇબ્રેરી ઇન્સ્ટોલ કરવી
- [08:11] સ્કેનર સાથે I2C સરનામું શોધવું
- [09:28] LCD પર ટેક્સ્ટ છાપવા માટે મૂળભૂત કોડ
- [11:10] ઉદાહરણો: ઝબકતું કર્સર અને કસ્ટમ અક્ષરો
- [13:46] કસ્ટમ અક્ષરો બનાવવા અને ઉપયોગ કરવા
- [18:51] સીરિયલ ડિસ્પ્લે ઉદાહરણ
- [23:16] LCD પર ટેક્સ્ટ સ્ક્રોલ કરવું
- [24:36] DHT11 સેન્સર કોડને LCD સાથે જોડવું
- [30:16] ડિગ્રી પ્રતીક પ્રદર્શિત કરવું
- [32:03] તાપમાનમાંથી દશાંશ બિંદુઓ દૂર કરવા
- [33:00] LCD પર પોટેન્શિયોમીટરમાંથી વોલ્ટેજ પ્રદર્શિત કરવું
- [35:56] અલ્ટ્રાસોનિક સેન્સરમાંથી અંતર પ્રદર્શિત કરવું
/*
Lesson 20/31: Displaying Temperature and humidity from DHT11 on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This is the Arduino code for DHT11 module to read temperature and humidity
* This code can display temperature in:
* C is used to get Celsius
* F is used to get Fahrenheit
* K is used for Kelvin
* *
* Written by Ahmad Shamshiri for Robojax
* on Jan 04, 2018
* Robojax.com
Please watch video instruction here https://youtu.be/0XMLnCYkvbE
This code is available at http://robojax.com/course1/?vid=lecture11
with over 100 lectures Free On YouTube Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// header file from GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
// start of settings for LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// end of settings for LCD1602-I2C
void setup() {
Serial.begin(9600);// setting up serial monitor
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.clear();
lcd.setCursor (0,0); //
lcd.print("DHT11 Sensor");
delay(2000);
}
void loop() {
//Robojax Step By Step Arduino Course YouTube Watch it here http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
int humidity = DHT11.humidity;// get humidity
lcd.clear();// clear previous values from screen
lcd.setCursor (0,0); //character zero, line 1
lcd.print("LCD1602 DHT11"); // print text
// print distance in degrees C
lcd.setCursor (0,1); //character 0, line 2
lcd.print(getTemp('C'));// print Temperature Celsius
lcd.setCursor (4,1); //character 5, line 2
lcd.print((char)223);// print degree
lcd.setCursor (5,1); //character 6, line 2
lcd.print("C");// print C
// print distance degrees F
lcd.setCursor (7,1); //character 8, line 2
lcd.print(getTemp('F'));// print distance in cm
lcd.setCursor (13,1); //character 14, line 2
lcd.print((char)223);// print degree
lcd.setCursor (14,1); //character 16, line 2
lcd.print("F");// print F
//code for Robojax.com video
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.print("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case
* C is used to get Celsius
* F is used to get Fahrenheit
* K is used for Kelvin
*/
float getTemp(char type) {
//Robojax Step By Step Arduino Course YouTube Watch it here http://robojax.com/L/?id=338
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
તમને જોઈતી વસ્તુઓ
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
સંસાધનો અને સંદર્ભો
-
દસ્તાવેજીકરણDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
બાહ્યPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ફાઇલો📁
Arduino લાઇબ્રેરીઓ (zip)
-
SunFounder ની 3-ઇન-1 સ્માર્ટ કાર લર્નિંગ કિટ સોર્સ કોડ
3in1-kit-main-v2.zip12.80 MB
વપરાશકર્તાનું માર્ગદર્શિકા
-
SunFounder 3-in-1 Arduino સ્માર્ટ કાર એસેમ્બલી મેન્યુઅલઆ દસ્તાવેજ SunFounder 3-in-1 Arduino સ્માર્ટ કારની સ્ટેપ બાય સ્ટેપ એસેમ્બલી દર્શાવે છે
SunFounder_car_assembly_manual.pdf1.20 MB