Bincika Lambar

Darasi na 20/31: Nuna zafin jiki da danshi daga DHT11 akan allon LCD

Darasi na 20/31: Nuna zafin jiki da danshi daga DHT11 akan allon LCD

Wannan koyawa tana nuna yadda ake haɗa na'urar DHT11 mai auna zafin jiki da danshi tare da LCD1602 mai I2C don ƙirƙirar tashar kula da muhalli mai ƙarami. Maimakon karanta bayanan daga serial monitor, za ka koyi nuna yanayin zafin jiki da danshi kai tsaye akan allo mai haruffa 16x2. Wannan aikin ya dace don gina tashar yanayi ta tebur, mai kula da ƙaramin greenhouse, ko ƙara nuni na gida ga kowane aikin sarrafa gida. I2C interface yana sauƙaƙa haɗin wayoyi, yana sa wannan aikin ya zama mai sauƙi ga masu farawa da kuma sauri ga ƙwararrun masu yin aiki.

LCD_sunFounder

Ga wasu ra'ayoyi masu amfani game da abin da za ka iya ginawa da wannan ilimin:

  • Tashar yanayi ta tebur da ke nuna yanayin ɗaki na yanzu.
  • Nuni mai ƙarami don terrarium na dabbobi masu rarrafe ko shuke-shuke.
  • Nuni na gida don ɗakin sabar ko wurin aiki.
  • Tsarin tushe don tsarin sarrafa gida mai rikitarwa.

Kayan aiki da Abubuwan Haɗi

Don gina wannan aikin, za ka buƙaci waɗannan abubuwan:

  • Arduino Uno (ko allo mai jituwa)
  • LCD1602 display tare da I2C interface module
  • DHT11 na'urar auna zafin jiki da danshi
  • Resistor 4.7kΩ ko 10kΩ (idan kana amfani da DHT11 maras kariya)
  • Jumper wires
  • Breadboard (na zaɓi, don sauƙaƙe haɗin wayoyi)

Fahimtar I2C LCD1602

LCD1602 allo ne na haruffa da aka saba amfani da shi mai ginshiƙai 16 da layuka 2. "I2C" module da aka ɗora a bayan allo shine mabuɗin sauƙin sa. Wannan module yana canza parallel interface na LCD zuwa serial I2C interface, wanda ke buƙatar wayoyi biyu kawai don bayanai (SDA da SCL) da biyu don wutar lantarki (VCC da GND). Wannan yana rage yawan pins da ake buƙata akan Arduino, yana barin ƙarin don sauran na'urori. Module kuma ya ƙunshi ƙaramin potentiometer don daidaita hasken allo, wanda ke da mahimmanci don ganin rubutu. I2C address na module za a iya canza shi ta amfani da ƙananan solder jumpers (A0, A1, A2) akan allo, yana ba da damar na'urori masu yawa su yi aiki tare akan wannan bus.

Jagorar Haɗin Wayoyi

LCD1602_wiring_DHT11_nopcb_bb

Haɗa abubuwan kamar yadda aka nuna a hoton da ke ƙasa. I2C LCD yana amfani da I2C pins na Arduino, yayin da DHT11 sensor ke amfani da digital pin.

Don LCD1602-I2C:

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

Don DHT11 sensor:

  • VCC (Pin 1) zuwa Arduino 5V
  • Data (Pin 2) zuwa Arduino Digital Pin 2 (tare da 10kΩ pull-up resistor zuwa 5V)
  • NC (Pin 3) - Ba a haɗa shi ba
  • GND (Pin 4) zuwa Arduino GND

(a cikin bidiyo a 25:16)

Saita Libraries

Wannan aikin yana buƙatar libraries guda biyu. Wire.h library wani ɓangare ne na shigarwar Arduino na yau da kullun. Za ka buƙaci shigar da LiquidCrystal_I2C library da dht11 library. Bidiyon yana nuna yadda ake shigar da su. Za ka iya sauke libraries daga hanyoyin da aka bayar a bayanin bidiyon ko daga gidan yanar gizon Robojax. Da zarar an sauke su, za ka iya shigar da su ta Arduino IDE ta hanyar zuwa Sketch > Include Library > Add .ZIP Library... kuma zaɓi fayilolin da aka sauke. (a cikin bidiyo a 06:16)

Neman I2C Address na LCD

Kafin ka yi amfani da allo, dole ne ka san I2C address ɗinsa. Mafi yawan address shine 0x27 ko 0x3F, amma yana iya bambanta. Don nemo shi, za ka iya amfani da I2C scanner sketch. Wannan shiri ne mai sauƙi wanda ke duba I2C bus kuma ya ba da rahoton duk wani address da ya samu ga Serial Monitor. Loda scanner code, buɗe Serial Monitor a 9600 baud, kuma zai nuna address na LCD. (a cikin bidiyo a 08:11)

Bayanin Code

Wannan sashe yana bayyana mahimman ɓangarori na code waɗanda mai amfani zai iya daidaita su. Cikakken shirin yana samuwa don saukewa a ƙasan labarin.

Code yana farawa da haɗa mahimman libraries da ayyana pins da abubuwan da ake amfani da su.

// header file daga GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // ƙirƙirar abu na DHT11
#define dhtpin 2 // saita pin don haɗa DHT11

// farkon saituna don LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Saita LCD address zuwa 0x3F don nuni mai haruffa 16 da layuka 2
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// ƙarshen saituna don LCD1602-I2C

Waɗannan su ne mahimman layukan da za ka daidaita don tsarin ka:

  • #define dhtpin 2: Wannan yana ayyana pin na Arduino da aka haɗa zuwa data pin na DHT11. Canja lambar 2 idan kana amfani da wani pin daban.
  • LiquidCrystal_I2C lcd(0x3F, 16, 2);: Wannan layin yana ƙirƙirar abu na LCD. Farkon siga, 0x3F, shine I2C address da ka samo a mataki na baya. 16 da 2 suna ayyana adadin ginshiƙai da layuka na allo. Sabunta address idan scanner ɗinka ya samo wani daban (misali, 0x27).

Lambar na yana amfani da aikin al'ada, getTemp(), don karanta zafin jiki da canza shi zuwa raka'a daban-daban. Wannan fasali ne mai ƙarfi wanda ke sa lambar ta sake amfani da ita don aikace-aikace daban-daban.

float getTemp(char type) {
    float temp = (float)DHT11.temperature;//sami zafin jiki
  if(type =='F')
  {
    return temp * 1.8 + 32;// canza zuwa Fahrenheit
  }else if(type =='K')
  {
    return temp + 274.15;// canza zuwa Kelvin
  }else{
   return temp; 
  }  
}

Don amfani da wannan aikin, kuna kiransa da gardama ta harafi ɗaya wanda ke wakiltar raka'ar da ake so. Misali, getTemp('C') yana mayar da zafin jiki a Celsius, getTemp('F') yana mayar da shi a Fahrenheit, kuma getTemp('K') yana mayar da shi a Kelvin. Aikin yana karanta ɗanyen zafin jiki daga firikwensin DHT11 kuma yana amfani da dabarar juyawa da ake buƙata. Wannan yana ba ku damar sauya raka'ar da aka nuna a babban loop() cikin sauƙi ba tare da sake rubuta dabaru na karanta firikwensin ba. Babban madauki yana buga zafin jiki da zafi ga LCD ta amfani da ayyukan lcd.setCursor() da lcd.print() don sarrafa inda ƙimar suka bayyana akan allo.

Nuna Alamar Digiri

Daidaitaccen saitin haruffa na LCD HD44780 bai haɗa da keɓaɓɓiyar alamar digiri (°) ba. Don nuna shi, dole ne ku yi amfani da aikin lcd.write() tare da ƙimar ƙididdiga na harafin daga ROM na LCD. Ga alamar digiri, wannan ƙimar ita ce 223. Lambar tana nuna wannan ta amfani da lcd.print((char)223); don buga alamar bayan ƙimar zafin jiki. (a bidiyo a 30:16)

Nuna Aikin Aiki Kai Tsaye

Da zarar an ɗora lambar, nuni zai nuna saƙon farawa kafin ya share kuma ya nuna zafin jiki da zafi na yanzu. Layin farko na nuni yana nuna rubutun "LCD1602 DHT11", yayin da layi na biyu yake nuna zafin jiki a Celsius, sannan alamar digiri da "C", sannan zafin jiki a Fahrenheit, sannan alamar digiri da "F". Ƙimar zafi ana buga ta ga mai kula da serial. Nuna aikin a bidiyon yana nuna nuni yana sabuntawa kowane rabin daƙiƙa yayin da ake riƙe firikwensin, yana nuna yanayin muhalli daidai. (a bidiyo a 29:42)

Nuna ƙarfin lantarki daga potentiometer akan LCD an rufe shi a Darasi 20/31: Nuna ƙarfin lantarki akan LCD1602.

Amfani da LCD ɗaya don nuna nisa daga firikwensin ultrasonic an rufe shi a Darasi 20/31: Amfani da LCD1602 tare da Arduino don nuna zafin jiki, ƙarfin lantarki da nisa | Robojax.

Ayyukan da suka danganci wannan bidiyo

Babuka

  • [00:00] Gabatarwa ga LCD1602 da bayanin aikin
  • [01:30] Bayanin kayan aikin LCD1602 da tsarin I2C
  • [02:47] Daidaita bambancin LCD
  • [03:14] Tsarin fil na LCD da saitin adireshin I2C
  • [05:28] Tsarin wayoyi na LCD1602
  • [06:16] Shigar da ɗakin karatu na LiquidCrystal_I2C
  • [08:11] Nemo adireshin I2C tare da na'urar bincike
  • [09:28] Lambar asali don buga rubutu akan LCD
  • [11:10] Misalai: mai walƙiya da haruffa na al'ada
  • [13:46] Ƙirƙira da amfani da haruffa na al'ada
  • [18:51] Misalin nuni na serial
  • [23:16] Gungurawa rubutu akan LCD
  • [24:36] Haɗa lambar firikwensin DHT11 tare da LCD
  • [30:16] Nuna alamar digiri
  • [32:03] Cire wuraren ƙididdiga daga zafin jiki
  • [33:00] Nuna ƙarfin lantarki daga potentiometer akan LCD
  • [35:56] Nuna nisa daga firikwensin ultrasonic

Hotuna

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

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Littattafan Arduino (zip)

Jagoran Mai Amfani