குறியீட்டை தேடு

பாடம் 35-2: HTU21D வெப்பநிலை சென்சார் தனிப்பயன் குறியீட்டைப் பயன்படுத்துதல்

பாடம் 35-2: HTU21D வெப்பநிலை சென்சார் தனிப்பயன் குறியீட்டைப் பயன்படுத்துதல்

இந்த டுடோரியலில், வெப்பநிலை மற்றும் ஈரப்பதத்தை அளவிட Arduino உடன் HTU21D வெப்பநிலை சென்சாரை எவ்வாறு பயன்படுத்துவது என்பதை ஆராய்வோம். HTU21D என்பது நம்பகமான, குறைந்த மின்சக்தி சென்சார் ஆகும், இது I2C மூலம் தொடர்பு கொள்கிறது, இது உங்கள் திட்டங்களில் ஒருங்கிணைப்பதை எளிதாக்குகிறது. இந்த பாடத்தின் முடிவில், செல்சியஸ், பாரன்ஹீட் மற்றும் கெல்வின் ஆகியவற்றில் வெப்பநிலையையும், தொடர்புடைய ஈரப்பதத்தையும் படிக்கும் வேலை செய்யும் தனிப்பயன் குறியீடு உங்களிடம் இருக்கும்.

HTU21D module

வயரிங் மற்றும் குறியீட்டில் மூழ்குவதற்கு முன், சம்பந்தப்பட்ட கூறுகளைப் புரிந்துகொள்வது அவசியம். HTU21D சென்சாருக்கு குறைந்தபட்ச இணைப்புகள் தேவை: மின்சாரம், தரை மற்றும் தரவு பரிமாற்றத்திற்கான இரண்டு I2C கம்பிகள். இந்த எளிமை வானிலை நிலையங்கள் முதல் ஸ்மார்ட் ஹோம் சாதனங்கள் வரை பல்வேறு பயன்பாடுகளுக்கு இது ஒரு சிறந்த தேர்வாக அமைகிறது. காட்சி வழிகாட்டிக்கு, 03:45 நேரக்குறியீட்டில் உள்ள வீடியோவைப் பார்க்கவும்.

வன்பொருள் விளக்கம்

இந்த திட்டத்தின் முதன்மை கூறு HTU21D சென்சார் ஆகும், இது வெப்பநிலை மற்றும் ஈரப்பதத்தை அளவிடுகிறது. இந்த சென்சார் 1.5V முதல் 3.6V வரையிலான மின்னழுத்தங்களில் செயல்பட முடியும், இது வெவ்வேறு பயன்பாடுகளுக்கு பல்துறை திறன் கொண்டது. இது அதிக தெளிவுத்திறன் கொண்ட அளவீடுகளை வழங்குகிறது, வெப்பநிலை அளவீடுகள் -40°C முதல் +125°C வரை மற்றும் ஈரப்பத அளவீடுகள் 0.04% தெளிவுத்திறனுடன் இருக்கும்.

கூடுதலாக, சென்சார் I2C தொடர்பைப் பயன்படுத்துகிறது, இதற்கு இரண்டு பின்கள் தேவை: SDA (தரவு வரி) மற்றும் SCL (கடிகார வரி). இது சிக்கலான வயரிங் தேவையின்றி Arduino மற்றும் பிற மைக்ரோகண்ட்ரோலர்களுடன் எளிதாக ஒருங்கிணைக்க அனுமதிக்கிறது. Adafruit நூலகம் சென்சாருடனான தொடர்பை எளிதாக்குகிறது, தரவு மீட்டெடுப்பு மற்றும் தொடர்பு நெறிமுறைகளை தடையின்றி கையாளுகிறது.

டேட்டாஷீட் விவரங்கள்

உற்பத்தியாளர் TE கனெக்டிவிட்டி
பகுதி எண் HTU21D-F
லாஜிக்/IO மின்னழுத்தம் 1.5 – 3.6 V
வழங்கல் மின்னழுத்தம் 3.3 V
மின்னோட்ட நுகர்வு (செயலற்ற நிலை) 0.02 µA (வழக்கமான)
மின்னோட்ட நுகர்வு (செயலில்) 450 µA (வழக்கமான)
வெப்பநிலை வரம்பு -40 முதல் +125 °C
ஈரப்பத வரம்பு 0 முதல் 100 %RH
தெளிவுத்திறன் 0.04 %RH; 0.01 °C
பேக்கேஜ் 6-பின் DFN

 

  • சென்சார் சேதத்தைத் தவிர்க்க சரியான மின்சார வழங்கலை உறுதிசெய்யவும்.
  • ஒருங்கிணைக்கப்படவில்லை என்றால் SDA மற்றும் SCL வரிகளில் புல்-அப் மின்தடையங்களைப் பயன்படுத்தவும்.
  • சத்தத்தைக் குறைக்க சென்சார் இணைப்புகளை குறுகியதாக வைத்திருக்கவும்.
  • நிலைத்தன்மையை பராமரிக்க செயல்பாட்டின் போது மின்னழுத்தத்தை கண்காணிக்கவும்.
  • மின்சார பின்களுக்கு அருகில் டிகப்ளிங்கிற்கு மின்தேக்கியைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்.

வயரிங் வழிமுறைகள்

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

HTU21D வெப்பநிலை சென்சாரை வயர் செய்ய, மின்சாரம் மற்றும் தரையை இணைப்பதன் மூலம் தொடங்கவும். சென்சாரின் இடது பின்னை 3.3V மூலத்துடன் இணைக்கவும், தேவையான மின்னழுத்தத்தை கையாள முடியும் என்பதை உறுதிசெய்யவும். இரண்டாவது பின், பொதுவாக சிவப்பு நிறத்தில் குறிக்கப்படும், தரைக்கு செல்ல வேண்டும்.

அடுத்து, சென்சாரின் SDA பின்னை Arduino இல் உள்ள பின் A4 உடன் இணைக்கவும், இது I2C தொடர்புக்கான தரவு வரியாக செயல்படுகிறது. பின்னர், SCL பின்னை பின் A5 உடன் இணைக்கவும், இது கடிகார வரியாக செயல்படுகிறது. இந்த இணைப்புகள் பாதுகாப்பாக இருப்பதை உறுதிசெய்யவும், ஏனெனில் தளர்வான கம்பிகள் இடைப்பட்ட அளவீடுகள் அல்லது சென்சாருடன் தொடர்பு கொள்ளத் தவறுவதற்கு வழிவகுக்கும்.

குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்

குறியீட்டில், தேவையான நூலகங்களைச் சேர்ப்பதன் மூலமும் சென்சாரை துவக்குவதன் மூலமும் தொடங்குகிறோம். Adafruit_HTU21DF htu = Adafruit_HTU21DF(); என்ற வரி சென்சார் வகுப்பின் ஒரு நிகழ்வை உருவாக்குகிறது. setup() செயல்பாட்டில், சீரியல் தொடர்பைத் தொடங்கி சென்சார் சரியாக இணைக்கப்பட்டுள்ளதா என்பதை சரிபார்க்கிறோம்.

void setup() {
  Serial.begin(9600);
  if (!htu.begin()) {
    Serial.println("சென்சாரைக் கண்டறிய முடியவில்லை!");
    while (1);
  }
}

இந்த பகுதி சென்சார் சரியாக செயல்படுகிறதா என்பதை சரிபார்க்கிறது. இல்லையென்றால், அது பிழை செய்தியை அச்சிட்டு நிரலை நிறுத்துகிறது. loop() செயல்பாட்டில், வெப்பநிலை மற்றும் ஈரப்பத மதிப்புகளை தொடர்ந்து படிக்கிறோம்.

void loop() {
    Serial.print(getHTU('C'));
    Serial.print("C");
    Serial.print(getHTU('H'));
    Serial.println("%");
    delay(1000);
}

இங்கே, getHTU() செயல்பாடு செல்சியஸில் வெப்பநிலை மற்றும் ஈரப்பதத்தை பெற வெவ்வேறு அளவுருக்களுடன் அழைக்கப்படுகிறது. தாமதம் ஒவ்வொரு வினாடியும் அளவீடுகள் எடுக்கப்படுவதை உறுதிசெய்கிறது, சீரியல் மானிட்டரில் மென்மையான வெளியீட்டை அளிக்கிறது. முழு குறியீடு கட்டுரைக்கு கீழே குறிப்புக்காக கிடைக்கிறது.

நிரூபணம் / என்ன எதிர்பார்க்கலாம்

எல்லாம் சரியாக வயர் செய்யப்பட்டு குறியீடு பதிவேற்றப்பட்டவுடன், சீரியல் மானிட்டரில் வெப்பநிலை மற்றும் ஈரப்பத அளவீடுகள் அச்சிடப்படுவதை நீங்கள் காண வேண்டும். வெப்பநிலை செல்சியஸில் காட்டப்படும், அதைத் தொடர்ந்து தொடர்புடைய ஈரப்பத சதவீதம். சென்சாருக்கு வெப்பத்தைப் பயன்படுத்தினால், வெப்பநிலை அதற்கேற்ப உயர்வதை நீங்கள் கவனிக்க வேண்டும் (10:15 இல் உள்ள வீடியோவில்).

சென்சாரின் வரம்புகளில் கவனமாக இருங்கள்; வெப்பநிலை 125°C ஐ தாண்டினால், அது தவறான அளவீட்டை அல்லது பூஜ்ஜியத்தைக் காட்டலாம். செயல்பாட்டின் போது எந்தவொரு சிக்கலையும் தவிர்க்க உங்கள் இணைப்புகள் பாதுகாப்பாக இருப்பதையும் சென்சார் சரியாக இயக்கப்படுவதையும் எப்போதும் உறுதிசெய்யவும்.

வீடியோ நேரக்குறியீடுகள்

  • 00:00 அறிமுகம்
  • 03:45 சென்சார் வயரிங்
  • 05:30 குறியீடு விளக்கம்
  • 10:15 நிரூபணம்
  • 12:00 முடிவு

படங்கள்

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
513-Lesson 35: Using HTU21D Temperature Sensor (F, C, K, RH)
மொழி: C++
/*
 * Robojax Arduino Step-by-Step Course
 * Part 4: Temperature Sensors
 * Lesson 35: HTU21D Temperature Sensor Custom code
 
 * Written/Updated by Ahmad Shamshiri on July 13, 2019
 * in Ajax, Ontario, Canada

 
  Please watch video instructions here https://youtu.be/LyA0yAKlf9E
 This code is available at http://robojax.com/course1/?vid=lecture35
 
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  
If you found this tutorial helpful, please support me so I can continue creating.
Make a donation using PayPal http://robojax.com/L/?id=64

 * Code is available at http://robojax.com/learn/arduino

 * 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 downloaded 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/>. 
    
	
 */ 
 /*

 
**************************************************
*
  This is an example for the HTU21D-F Humidity & Temperature Sensor

  Designed specifically to work with the HTU21D-F sensor from Adafruit
  ----> https://www.adafruit.com/products/1899

  These displays use I2C to communicate; 2 pins are required to
  interface
 ***************************************************
*/

#include <Wire.h>
#include "Adafruit_HTU21DF.h"

// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)

Adafruit_HTU21DF htu = Adafruit_HTU21DF();

void setup() {
//Get the code for the course: http://robojax.com/L/?id=339  	
  Serial.begin(9600);
  Serial.println("Robojax.com");
  Serial.println("HTU21D-F test");

  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

void loop() {
//Get the code for the course: http://robojax.com/L/?id=339  
    Serial.print(getHTU('C'));
    printDegree();
    Serial.println("C");
    
    Serial.print(getHTU('F'));
    printDegree();
    Serial.println("F");

    Serial.print(getHTU('K'));
    Serial.println("K");    
    Serial.println(" ");  

    Serial.print("Humidity:");
    Serial.print(getHTU('H'));
    Serial.println("%");

    if(getHTU('C') <81)
    {
      //digitalWrite(5, LOW);
          
    }
    delay(1000);
}


/*
 * @brief returns temperature or relative humidity
 * @param "type" is character
 *     C = Celsius
 *     K = Kelvin
 *     F = Fahrenheit
 *     H = Humidity
 * @return returns one of the values above
 * Usage: to get Fahrenheit type: getHTU('F')
 * to print it on serial monitor Serial.println(getHTU('F'));
 * Written by Ahmad Shamshiri on July 13, 2019
 * in Ajax, Ontario, Canada
 * www.Robojax.com 
 */
float getHTU(char type)
{
	//Get the code for the course: http://robojax.com/L/?id=339  
  float value;
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
   if(type =='F')
   {
    value = temp *9/5 + 32;//convert to Fahrenheit 
   }else if(type =='K')
   {
    value = temp + 273.15;//convert to Kelvin
   }else if(type =='H')
   {
    value = rel_hum;//return relative humidity
   }else{
    value = temp;// return Celsius
   }
   return value;
}//


/*
 * @brief prints degree symbol on serial monitor
 * @param none
 * @return returns nothing
 * Written by Ahmad Shamshiri on July 13, 2019
 * for Robojax Tutorial Robojax.com
 */
 void printDegree()
{
    Serial.print("\xC2"); 
    Serial.print("\xB0");  
}

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

தரவியல் அட்டவணை (பிடிஎப்)

மற்ற கோப்புகள்