Luka Code

Lisolo 20/31: Kolakisa température mpe malili na DHT11 na ekran ya LCD

Lisolo 20/31: Kolakisa température mpe malili na DHT11 na ekran ya LCD

Boyekoli oyo emonisi ndenge ya kosangisa sensor ya température mpe ya malili ya DHT11 na display ya LCD1602 oyo ezali na I2C mpo na kosala station ya kotalela environnement oyo ezali moke. Na esika ya kotanga ba données ya sensor na serial monitor, okoyekola kolakisa ba lectures ya température mpe ya malili na mokolo na ekran ya 16x2. Projet oyo ezali malamu mpo na kosala station météo ya bureau, moniteur ya serre moke, to kobakisa lecture locale na projet nyonso ya automatisation ya ndako. Interface ya I2C ekitisi ba connexions, mpe yango esali ete projet oyo ezala facile mpo na ba débutants mpe rapide mpo na ba créateurs ya expérience.

LCD_sunFounder

Tala ba idées ya misala oyo okoki kosala na boyebi oyo:

  • Station météo ya bureau oyo elakisaka ba conditions ya chambre ya sika.
  • Display moke mpo na terrarium ya reptile to ya plante.
  • Lecture locale mpo na environnement ya server room to atelier.
  • Module ya base mpo na système ya automatisation ya ndako oyo ezali plus complexe.

Matériel mpe ba Composants

Mpo na kosala projet oyo, okolinga ba composants oyo:

  • Arduino Uno (to board oyo ekokani)
  • Display LCD1602 na module ya interface I2C
  • Sensor ya température mpe ya malili DHT11
  • Résistance ya pull-up ya 4.7kΩ to 10kΩ (soki ozali kosalela sensor ya DHT11 oyo ezali na eloko te)
  • Ba fils ya jumper
  • Breadboard (oyo ezali na tina te, mpo na ba connexions ya pete)

Koyeba LCD1602 ya I2C

LCD1602 ezali display ya ba caractères oyo ezali na ba colonnes 16 mpe ba lignes 2. Module ya "I2C" oyo esalemi na ngonga ya display ezali ntina ya pete na yango. Module oyo ebongolaka interface ya parallèle ya LCD na interface ya série ya I2C, oyo esengaka kaka ba fils mibale mpo na ba données (SDA mpe SCL) mpe mibale mpo na courant (VCC mpe GND). Oyo ekitisaka mingi motango ya ba pins oyo esengeli na Arduino na yo, mpe etikaka mingi mpo na ba capteurs mpe ba actionneurs mosusu. Module yango mpe ezali na potentiomètre moke mpo na kobongisa contraste ya display, oyo ezali na tina mingi mpo na kotala ete texte emonanaka. Adresse ya I2C ya module ekoki kobongisama na ba jumpers ya soudure (A0, A1, A2) oyo ezali na board, mpe yango esalaka ete ba appareils I2C ebele ekoka kozala na bus moko.

Guide ya Ba Connexions

LCD1602_wiring_DHT11_nopcb_bb

Kokangisa ba composants ndenge elakisami na diagramme oyo ezali na nsé. LCD ya I2C esalelaka ba pins ya I2C ya Arduino, kasi sensor ya DHT11 esalelaka pin ya digitale.

Mpo na LCD1602-I2C:

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

Mpo na sensor ya DHT11:

  • VCC (Pin 1) na Arduino 5V
  • Data (Pin 2) na Arduino Digital Pin 2 (na résistance ya pull-up ya 10kΩ na 5V)
  • NC (Pin 3) - Esangani te
  • GND (Pin 4) na Arduino GND

(na vidéo na 25:16)

Kobongisa ba Bibliothèques

Projet oyo esengaka ba bibliothèques mibale. Bibliothèque ya Wire.h ezali eteni ya installation ya Arduino ya standard. Okolinga ko-installer bibliothèque ya LiquidCrystal_I2C mpe bibliothèque ya dht11. Vidéo elakisaka ndenge ya ko-installer yango. Okoki ko-télécharger ba bibliothèques na ba liens oyo ezali na description ya vidéo to na site ya Robojax. Nsima ya ko-télécharger, okoki ko-installer yango na Arduino IDE na kolanda Sketch > Include Library > Add .ZIP Library... mpe kopona ba fichiers oyo okitisaki. (na vidéo na 06:16)

Koluka Adresse ya I2C ya LCD na Yo

Liboso ya kosalela display, esengeli koyeba adresse ya I2C na yango. Adresse oyo eyebani mingi ezali 0x27 to 0x3F, kasi ekoki kobongwana. Mpo na koluka yango, okoki kosalela sketch ya scanner ya I2C. Oyo ezali programme ya pete oyo etalelaka bus ya I2C mpe elakisaka ba adresses nyonso oyo ekutani na Serial Monitor. Télécharger code ya scanner, fungola Serial Monitor na 9600 baud, mpe yango elakolaki adresse ya LCD na yo. (na vidéo na 08:11)

Ndimbola ya Code

Eteni oyo elimbisi ba parties ya ntina mpe ya ba utilisateurs oyo bakoki kobongisa na code. Programme mobimba ezali mpo na ko-télécharger na nsé ya article.

Code ebandi na ko-inclure ba bibliothèques ya ntina mpe na ko-définir ba pins mpe ba objets oyo basalelaka.

// fichier ya header na GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // kosala objet ya DHT11
#define dhtpin 2 // tia pin mpo na kokangisa na DHT11

// ebandeli ya ba paramètres mpo na LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Tia adresse ya LCD na 0x3F mpo na display ya ba caractères 16 mpe ba lignes 2
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// suka ya ba paramètres mpo na LCD1602-I2C

Tala ba lignes oyo ezali na ntina mingi mpo na kobongisa configuration na yo:

  • #define dhtpin 2: Oyo efinir pin ya Arduino oyo ekangisami na pin ya données ya sensor ya DHT11. Bongola motango 2 soki ozali kosalela pin mosusu.
  • LiquidCrystal_I2C lcd(0x3F, 16, 2);: Ligne oyo esalaka objet ya LCD. Paramètre ya liboso, 0x3F, ezali adresse ya I2C oyo okutaki na étape ya liboso. 16 mpe 2 bafinir motango ya ba colonnes mpe ba lignes ya display na yo. Bongola adresse soki scanner na yo ekutaki mosusu (ex., 0x27).

Kode yang esalelaka esalelaka na fonction ya moto, getTemp(), mpo na kotanga température mpe kobongola yango na ba unité ndenge na ndenge. Ezali feature ya makasi oyo esalaka ete kode yango ezala réutilisable mpo na ba applications ndenge na ndenge.

float getTemp(char type) {
    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; 
  }  
}

Mpo na kosalela fonction oyo, obengaka yango na argument ya caractère moko oyo elingi kolakisa unité oyo olingi. Na ndakisa, getTemp('C') ezongisaka température na Celsius, getTemp('F') ezongisaka yango na Fahrenheit, mpe getTemp('K') ezongisaka yango na Kelvin. Fonction yango etangaka température brute longwa na capteur DHT11 mpe esalelaka formule ya conversion oyo esengeli. Oyo esalaka ete obongola unité oyo elakisami na loop() principal na mpasi te, kozanga kokoma lisusu logique ya kotanga capteur. Boucle principal ekomaka température mpe humidité na LCD na kosalela ba fonctions lcd.setCursor() mpe lcd.print() mpo na kokamba esika ba valeurs esengeli komonana na écran.

Kolakisa Symbole ya Degré

Ensemble ya caractères ya LCD HD44780 standard ezali na symbole ya degré (°) te. Mpo na kolakisa yango, esengeli kosalela fonction lcd.write() na valeur décimale ya caractère longwa na ROM ya LCD. Mpo na symbole ya degré, valeur oyo ezali 223. Kode yango elakisaka oyo na kosalela lcd.print((char)223); mpo na komisa symbole nsima ya valeur ya température. (na vidéo na 30:16)

Démonstration ya Projet na Direct

Ntango kode ekotisi, écran ekolakisa message ya démarrage liboso ya kopola mpe kolakisa température mpe humidité ya sika. Ligne ya liboso ya écran elakisaka texte "LCD1602 DHT11", ntango ligne ya mibale elakisaka température na Celsius, elandi na symbole ya degré mpe "C", mpe sima température na Fahrenheit, elandi na symbole ya degré mpe "F". Valeur ya humidité ekomami na moniteur série. Démonstration na vidéo elakisaka écran oyo ezali kobongwana na seconde na katikati ntango capteur ezali kosimbama, elakisaka malamu ba conditions ya environnement. (na vidéo na 29:42)

Kolakisa voltage longwa na potentiomètre na LCD ekomami na Lesson 20/31: Displaying voltage on LCD1602.

Kosalela LCD yango moko mpo na kolakisa distance longwa na capteur ultrasonique ekomami na Lesson 20/31: Using LCD1602 with Arduino display temperature, voltage and distance | Robojax.

Ba projets oyo etali vidéo oyo

Ba chapitres

  • [00:00] Introduction na LCD1602 mpe résumé ya projet
  • [01:30] Explication ya hardware LCD1602 mpe module I2C
  • [02:47] Kobongola contraste ya LCD
  • [03:14] Pinout ya LCD mpe configuration ya adresse I2C
  • [05:28] Diagramme ya câblage mpo na LCD1602
  • [06:16] Kotiya bibliothèque LiquidCrystal_I2C
  • [08:11] Koluka adresse I2C na scanner
  • [09:28] Kode ya liboso mpo na komisa texte na LCD
  • [11:10] Ba ndakisa: curseur oyo ezali kobwaka mpe ba caractères personnalisés
  • [13:46] Kosala mpe kosalela ba caractères personnalisés
  • [18:51] Ndakisa ya kolakisa na série
  • [23:16] Kotambwisa texte na LCD
  • [24:36] Kosangisa kode ya capteur DHT11 na LCD
  • [30:16] Kolakisa symbole ya degré
  • [32:03] Kolongola ba points décimaux na température
  • [33:00] Kolakisa voltage longwa na potentiomètre na LCD
  • [35:56] Kolakisa distance longwa na capteur ultrasonique

Images

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
Langue: 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; 
  }
  
}

Mokili na bisika

Fichiers📁

Maktabat ya Arduino (zip)

Manuel de l'utilisateur