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.
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
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 lambar2idan 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.16da2suna 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
- Darasi 20/31: Amfani da LCD1602 tare da Arduino don nuna zafin jiki, ƙarfin lantarki da nisa | Robojax
- Darasi 20/31: Nuna ƙarfin lantarki akan LCD1602
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
/*
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;
}
}
Abin da zaka iya bukata
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Albarkatun da kuma shafukan da za a duba
-
TakarduDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
WajePurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Fayiloli📁
Littattafan Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Jagoran Mai Amfani
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB