Raadi Koodka

Casharka 20/31: Muujinta Heerkulka iyo qoyaanka ee DHT11 ee shaashadda LCD

Casharka 20/31: Muujinta Heerkulka iyo qoyaanka ee DHT11 ee shaashadda LCD

Tushen wuxuu muujinayaa sida loo isku daro dareemaha heerkulka iyo qoyaanka DHT11 ee leh shaashadda LCD1602 ee I2C-ku shaqeeyso si loo abuuro goob kormeerid deegaan oo is haysta. Halkii aad ka akhriyi lahayd xogta dareemaha ee kala duwan ee serial monitor-ka, waxaad baran doontaa inaad ku muujiso akhrinta heerkulka iyo qoyaanka ee tooska ah ee shaashadda 16x2. Mashruucani wuxuu ku habboon yahay dhismaha goob cimilo oo miis ah, kormeeraha aqalka lagu koriyo dhirta, ama ku darista akhrin maxalli ah mashruuc kasta oo otomaatig ah oo guriga ah. Interface-ka I2C wuxuu fududeeyaa fiilooyinka, taasoo ka dhigaysa mashruucan mid la heli karo bilowga iyo ku dar degdeg ah kuwa khibradda leh.

LCD_sunFounder

Waa kuwan qaar ka mid ah fikrado wax ku ool ah oo ku saabsan waxaad ku dhisi karto aqoontan:

  • Goob cimilo oo miis ah oo muujinaysa xaaladaha qolka hadda jira.
  • Shaashad is haysta oo loogu talagalay xayawaan ama dhir lagu koriyo.
  • Akhris maxalli ah oo loogu talagalay qolka server-ka ama jawiga shaqada.
  • Qayb aasaasi ah oo loogu talagalay nidaam otomaatig ah oo guri oo ka sii adag.

Qalabka iyo Qaybaha

Si aad u dhisto mashruucan, waxaad u baahan doontaa qaybaha soo socda:

  • Arduino Uno (ama guddi la jaan qaadaya)
  • Shaashadda LCD1602 oo leh module interface-ka I2C
  • Dareemaha heerkulka iyo qoyaanka DHT11
  • Resistor-ka 4.7kΩ ama 10kΩ ee kor u jiidista (haddii aad isticmaalayso dareeme DHT11 oo qaawan)
  • Fiilooyinka jumper-ka
  • Breadboard (ikhtiyaar, si loo fududeeyo ku xirnaanshaha)

Fahamka LCD1602 ee I2C

LCD1602 waa shaashad xarfo caadi ah oo leh 16 tiir iyo 2 saf. Module-ka "I2C" ee lagu xidhay dhabarka shaashadda ayaa ah furaha fudaydkeeda. Module-kani wuxuu u beddelaa interface-ka isbarbar yaaca ee LCD-ga interface-ka I2C oo taxane ah, kaas oo u baahan kaliya laba fiilo oo xog ah (SDA iyo SCL) iyo laba koronto (VCC iyo GND). Tani waxay si weyn u yaraynaysaa tirada biinanka loo baahan yahay ee Arduino-gaaga, taasoo ka tagaysa kuwo badan oo loogu talagalay dareemayaasha iyo qalabka kale ee dhaqdhaqaaqa. Module-ku wuxuu kaloo ku darayaa potentiometer yar si loo hagaajiyo iftiinka shaashadda, taas oo muhiim u ah hubinta in qoraalku muuqdo. Cinwaanka I2C ee module-ka waxaa lagu beddeli karaa iyadoo la isticmaalayo jumper-yada yaryar ee birta ah (A0, A1, A2) ee gudaha, taasoo u oggolaanaysa qalab badan oo I2C ah inay isku wada noolaadaan baska isku midka ah.

Hagaha Fiilooyinka

LCD1602_wiring_DHT11_nopcb_bb

Ku xir qaybaha sida ku cad jaantuska hoose. LCD-ga I2C wuxuu isticmaalaa biinanka I2C ee Arduino-ga, halka dareemaha DHT11 uu isticmaalo biin dhijitaal ah.

LCD1602-I2C:

  • VCC ilaa Arduino 5V
  • GND ilaa Arduino GND
  • SDA ilaa Arduino A4
  • SCL ilaa Arduino A5

Dareemaha DHT11:

  • VCC (Pin 1) ilaa Arduino 5V
  • Data (Pin 2) ilaa Arduino Digital Pin 2 (oo leh resistor-ka 10kΩ ee kor u jiidista ilaa 5V)
  • NC (Pin 3) - Ma Xirna
  • GND (Pin 4) ilaa Arduino GND

(fiidiyowga 25:16)

Dejinta Maktabadaha

Mashruucani wuxuu u baahan yahay laba maktabadood. Maktabadda Wire.h waa qayb ka mid ah rakibaadda Arduino ee caadiga ah. Waxaad u baahan doontaa inaad ku rakibto maktabadda LiquidCrystal_I2C iyo maktabadda dht11. Fiidiyowgu wuxuu muujinayaa sida loo rakibo. Waxaad ka soo dejisan kartaa maktabadaha linkiyada lagu sheegay sharaxaadda fiidiyowga ama website-ka Robojax. Markaad soo dejiso, waxaad ku rakibi kartaa iyada oo loo marayo Arduino IDE adiga oo u gudbaya Sketch > Include Library > Add .ZIP Library... oo dooranaya faylasha la soo dejiyay. (fiidiyowga 06:16)

Helitaanka Cinwaanka I2C ee LCD-gaaga

Ka hor intaadan isticmaalin shaashadda, waa inaad go'aamisaa cinwaankeeda I2C. Cinwaanka ugu caansan waa 0x27 ama 0x3F, laakiin wuu kala duwanaan karaa. Si aad u hesho, waxaad isticmaali kartaa sketch-ka scanner-ka I2C. Tani waa barnaamij fudud oo baara baska I2C oo warbaahinaya cinwaan kasta oo uu helo ilaa Serial Monitor-ka. Soo geli koodhka scanner-ka, fur Serial Monitor-ka 9600 baud, wuxuuna muujin doonaa cinwaanka LCD-gaaga. (fiidiyowga 08:11)

Sharaxaadda Koodhka

Qaybtani waxay sharaxaysaa qaybaha muhiimka ah ee koodhka ee isticmaaluhu beddeli karo. Barnaamijka oo dhammaystiran ayaa laga heli karaa hoosta maqaalka.

Koodhku wuxuu ku bilaabmaa inuu ku daro maktabadaha lagama maarmaanka ah oo uu qeexo biinanka iyo walxaha la isticmaalo.

// faylka madaxa ee GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // abuur shay DHT11
#define dhtpin 2 // dejiso biinka lagu xiro DHT11

// bilowga dejinta LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Deji cinwaanka LCD-ga ilaa 0x3F oo loogu talagalay 16 xaraf iyo 2 saf
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// dhamaadka dejinta LCD1602-I2C

Kuwani waa sadarrada ugu muhiimsan ee lagu habeeyo qaabkaaga:

  • #define dhtpin 2: Tani waxay qeexaysaa biinka Arduino ee ku xiran biinka xogta dareemaha DHT11. Beddel lambarka 2 haddii aad isticmaasho biin ka duwan.
  • LiquidCrystal_I2C lcd(0x3F, 16, 2);: Sadarkan wuxuu abuuraa shayga LCD-ga. Halbeegga koowaad, 0x3F, waa cinwaanka I2C ee aad ka heshay tillaabadii hore. 16 iyo 2 waxay qeexayaan tirada tiirarka iyo safafka shaashaddaada. Cusbooneysii cinwaanka haddii scanner-kaagu uu helay mid ka duwan (tusaale, 0x27).

Koodku waxa uu isticmaalaa shaqo gaar ah, getTemp(), si uu u akhriyo heerkulka oo ugu beddelo cutubyo kala duwan. Tani waa astaamo awood leh oo ka dhigaysa koodka mid dib loo isticmaali karo codsiyada kala duwan.

float getTemp(char type) {
    float temp = (float)DHT11.temperature;//hel heerkulka
  if(type =='F')
  {
    return temp * 1.8 + 32;// u beddel Fahrenheit
  }else if(type =='K')
  {
    return temp + 274.15;// u beddel Kelvin
  }else{
   return temp; 
  }  
}

Si aad u isticmaasho shaqadan, waxaad u wacdaa iyada oo la raacayo xaraf keliya oo matalaya cutubka la doonayo. Tusaale ahaan, getTemp('C') waxay soo celisaa heerkulka Celsius, getTemp('F') waxay soo celisaa Fahrenheit, iyo getTemp('K') waxay soo celisaa Kelvin. Shaqadu waxay akhridaa heerkulka ceyriinka ah ee ka yimaada dareemaha DHT11 waxayna adeegsataa qaacidada beddelka ee lagama maarmaanka ah. Tani waxay kuu ogolaaneysaa inaad si fudud u beddesho cutubka la muujiyo ee loop() guud iyada oo aan dib loo qorin macnaha akhriska dareemaha. Loop-ka guud wuxuu daabacaa heerkulka iyo qoyaanka LCD-ga isagoo isticmaalaya shaqooyinka lcd.setCursor() iyo lcd.print() si loo xakameeyo meesha qiimaha ay ka soo baxaan shaashadda.

Muujinta Astaanta Degree-ga

Xarrufka caadiga ah ee LCD HD44780 kuma jiro astaan degree ah oo gooni ah (°). Si aad u muujiso, waa inaad isticmaashaa shaqada lcd.write() oo leh qiimaha jajab tobanlaha ah ee xarafka ka yimaada ROM-ka LCD-ga. Astaanta degree-ga, qiimahani waa 223. Koodku wuxuu tan muujinayaa isagoo isticmaalaya lcd.print((char)223); si uu u daabaco astaanta ka dib qiimaha heerkulka. (fiidiyowga 30:16)

Muuujin Tayada Mashruuca

Marka koodka la soo geliyo, shaashadu waxay muujin doontaa farriin bilow ah ka hor inta aan la nadiifin oo la muujin heerkulka iyo qoyaanka hadda jira. Sadarka koowaad ee shaashadda wuxuu muujinayaa qoraalka "LCD1602 DHT11", halka sadarka labaad uu muujinayo heerkulka Celsius, oo ay ku xigto astaanta degree-ga iyo "C", ka dibna heerkulka Fahrenheit, oo ay ku xigto astaanta degree-ga iyo "F". Qiimaha qoyaanka waxaa lagu daabacaa kormeerka serial-ka. Muujinta fiidiyowga waxay tusinaysaa shaashadda oo cusboonaysiineysa nus ilbiriqsi kasta marka dareemaha la qabto, si sax ah u muujinaya xaaladaha jawiga. (fiidiyowga 29:42)

Muujinta danabka ka yimaada potentiometer-ka ee LCD-ga waxaa lagu daboolay Casharka 20/31: Muujinta danabka ee LCD1602.

Isticmaalka isla LCD-ga si loo muujiyo masaafada ka timaadda dareemaha ultrasonic waxaa lagu daboolay Casharka 20/31: Isticmaalka LCD1602 ee Arduino muujinta heerkulka, danabka iyo masaafada | Robojax.

Mashruucyada la xiriira fiidiyowgan

Cutubyada

  • [00:00] Hordhaca LCD1602 iyo dulmar mashruuca
  • [01:30] Sharaxaadda qalabka LCD1602 iyo module-ka I2C
  • [02:47] Hagaajinta kontaroolka shaashadda LCD
  • [03:14] Qaabka pin-ka LCD iyo qaabaynta cinwaanka I2C
  • [05:28] Jaantuska xiriirinta LCD1602
  • [06:16] Rakibaadda maktabadda LiquidCrystal_I2C
  • [08:11] Helista cinwaanka I2C ee scanner-ka
  • [09:28] Koodka aasaasiga ah si loo daabaco qoraal LCD-ga
  • [11:10] Tusaalooyin: cursor-ka iftiimaya iyo xarfo gaar ah
  • [13:46] Abuurista iyo isticmaalka xarfaha gaarka ah
  • [18:51] Tusaale muujinta serial-ka
  • [23:16] Qoraalka wareegaya ee LCD-ga
  • [24:36] Isku darka koodka dareemaha DHT11 ee LCD-ga
  • [30:16] Muujinta astaanta degree-ga
  • [32:03] Ka saarista dhibcaha jajab tobanlaha ee heerkulka
  • [33:00] Muujinta danabka ka yimaada potentiometer-ka ee LCD-ga
  • [35:56] Muujinta masaafada ka timaadda dareemaha ultrasonic

Sawirro

LCD1602_wiring_DHT11_nopcb_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD_sunFounder
LCD_sunFounder
911-Lesson 20/31: Displaying Temperature and humidity from DHT11 on LCD screen
Luqadda: C++
/*
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; 
  }
  
}

Kheyraadka & Tixraacyada

Faylasha📁

Arduino Libraries (zip)

Buugga Isticmaalaha