Search Code

அர்டுயினோ குறியீடு மற்றும் வீடியோ ஒரு Aosong AM2320 டிஜிட்டல் வெப்பநிலை மற்றும் ஈரப்பதம் சென்சாருக்கானது

அர்டுயினோ குறியீடு மற்றும் வீடியோ ஒரு Aosong AM2320 டிஜிட்டல் வெப்பநிலை மற்றும் ஈரப்பதம் சென்சாருக்கானது

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

AM2320 சென்சார் கச்சிதமானது மற்றும் வெப்பநிலை மற்றும் ஈரப்பதம் இரண்டிற்கும் நம்பகமான தரவை வழங்குகிறது. இது வெப்பநிலைக்கு 0.1°C தெளிவுத்திறனையும், 0-99% ஈரப்பத வரம்பையும் கொண்டுள்ளது. அமைவு செயல்முறையானது சென்சாரை Arduino உடன் இணைப்பது மற்றும் சென்சார் மதிப்புகளைப் படித்து காட்ட சில வரிகளை எழுதுவதை உள்ளடக்கியது. இந்த வீடியோ டுடோரியல் வயரிங் மற்றும் கோடிங் எடுத்துக்காட்டுகள் உட்பட படிப்படியான வழிகாட்டியை வழங்குகிறது (வீடியோவில் 00:00 மணிக்கு).

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

இந்த திட்டத்தின் முக்கிய கூறு Aosong AM2320 சென்சார் ஆகும். இது I2C தொடர்பைப் பயன்படுத்தி செயல்படுகிறது, இது இரண்டு தரவு கோடுகள் (SDA மற்றும் SCL) மின்சாரம் மற்றும் தரையுடன் மட்டுமே தேவைப்படுவதால் இணைப்பு செயல்முறையை எளிதாக்குகிறது. சென்சார் -40°C முதல் +80°C வரையிலான வெப்பநிலையை ±0.5°C துல்லியத்துடனும், 0% முதல் 99% வரையிலான ஈரப்பதத்தை இதே போன்ற துல்லியத்துடனும் அளவிடுகிறது. சென்சார் மிகக் குறைந்த மின்சாரத்தைப் பயன்படுத்தும் வகையில் வடிவமைக்கப்பட்டுள்ளது, இது பேட்டரி மூலம் இயங்கும் சாதனங்களுக்கு ஏற்றதாக அமைகிறது.

கூடுதலாக, AM2320 தொகுதியில் I2C தொடர்புக்கு அவசியமான புல்-அப் ரெசிஸ்டர்கள் அடங்கும், இது SDA மற்றும் SCL கோடுகளில் சிக்னல்களை உறுதிப்படுத்த உதவுகிறது. இந்த அம்சம் வயரிங் செயல்முறையை எளிதாக்குகிறது, ஏனெனில் வெளிப்புற புல்-அப் ரெசிஸ்டர்களைச் சேர்க்க வேண்டியதில்லை.

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

உற்பத்தியாளர்Aosong
பகுதி எண்AM2320
லாஜிக்/IO மின்னழுத்தம்3.1 முதல் 5.5 V
விநியோக மின்னழுத்தம்3.1 முதல் 5.5 V
வெப்பநிலை வரம்பு-40 முதல் +80 °C
ஈரப்பத வரம்பு0 முதல் 99 %
தெளிவுத்திறன் (வெப்பநிலை)0.1 °C
தெளிவுத்திறன் (ஈரப்பதம்)0.1 %
துல்லியம் (வெப்பநிலை)±0.5 °C
துல்லியம் (ஈரப்பதம்)±3 %
பேக்கேஜ்தொகுதி

  • சரியான மின்னழுத்த விநியோகத்தை உறுதி செய்யவும் (3.1 முதல் 5.5 V).
  • SDA மற்றும் SCL கோடுகளுக்கு புல்-அப் ரெசிஸ்டர்களை (பொதுவாக 4.7 kΩ) பயன்படுத்தவும்.
  • சேதத்தைத் தவிர்க்க வெப்பநிலை வரம்பை -40°C முதல் +80°C வரை வைத்திருக்கவும்.
  • ஈரப்பத அளவீடுகள் 0% முதல் 99% வரம்பிற்குள் துல்லியமாக இருக்கும்.
  • அளவீடுகளின் போது பிழை குறியீடுகளைக் கண்காணிக்கவும் (எ.கா., சென்சார் ஆஃப்லைன்).

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

Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor

AM2320 சென்சாரை Arduino உடன் இணைக்க, இந்த படிகளை கவனமாக பின்பற்றவும். முதலில், மின்சார பின்களை இணைக்கவும்: AM2320 இன் இடதுபுற பின் Arduino இன் 5V (அல்லது VCC) உடன் இணைகிறது, அதே நேரத்தில் கிரவுண்ட் பின் Arduino இன் GND உடன் இணைகிறது. இடமிருந்து இரண்டாவது பின் (SDA) Arduino Uno க்கான Arduino இன் அனலாக் பின் A4 அல்லது Arduino Mega க்கான A20 உடன் இணைகிறது. மூன்றாவது பின் (SCL) Arduino Uno க்கான A5 அல்லது Arduino Mega க்கான A21 க்கு செல்கிறது.

கூடுதலாக, SDA பின்னிலிருந்து 5V கோட்டிற்கு ஒரு 4.7 kΩ ரெசிஸ்டரையும், SCL பின்னிலிருந்து 5V கோட்டிற்கு மற்றொரு 4.7 kΩ ரெசிஸ்டரையும் இணைக்க வேண்டும். இது சரியான I2C தொடர்பை உறுதி செய்கிறது. நீங்கள் Leonardo போன்ற பிற Arduino மாடல்களைப் பயன்படுத்தினால், SDA மற்றும் SCL பின்கள் முறையே A4 மற்றும் A5 ஆகவும் இருக்கும்.

கோட் எடுத்துக்காட்டுகள் & விளக்கம்

இந்த திட்டத்தில் பயன்படுத்தப்படும் Arduino கோட்டின் சில முக்கிய பகுதிகளைப் பார்ப்போம். முதலில், சென்சாரை துவக்கி சீரியல் தொடர்பை அமைக்கிறோம்:

#include 
AM2320 sensor;

void setup() {
  Serial.begin(9600);
  sensor.begin();
}

இந்த பகுதியில், #include <AM2320.h> உடன் தேவையான நூலகத்தைச் சேர்த்து சென்சாரின் ஒரு நிகழ்வை உருவாக்குகிறோம். setup() செயல்பாடு 9600 பாட் வீதத்தில் சீரியல் தொடர்பை துவக்கி சென்சாரைத் தொடங்குகிறது.

அடுத்து, வெப்பநிலை மற்றும் ஈரப்பதத்தைப் படிக்கும் முக்கிய லூப் உள்ளது:

if (sensor.measure()) {
    Serial.print("Temperature: ");
    Serial.print(temp('C'));
    Serial.print(" C, Humidity: ");
    Serial.print(sensor.getHumidity());
    Serial.println("%");
}

இந்த கோட் சென்சார் அளவீடு வெற்றிகரமாக இருந்ததா என்பதை சரிபார்க்கிறது. அப்படியானால், அது வெப்பநிலையை செல்சியஸில் மற்றும் ஈரப்பத சதவீதத்தை சீரியல் மானிட்டரில் அச்சிடுகிறது. வெப்பநிலையை செல்சியஸில் பெற temp('C') செயல்பாடு அழைக்கப்படுகிறது. பாரன்ஹீட் வேண்டுமானால், temp('F') ஐ அழைக்கலாம்.

செயல்விளக்கம் / என்ன எதிர்பார்க்கலாம்

நிரலை இயக்கும்போது, சீரியல் மானிட்டரில் ஒவ்வொரு அரை வினாடிக்கும் வெப்பநிலை மற்றும் ஈரப்பத அளவீடுகள் புதுப்பிக்கப்படுவதைக் காண வேண்டும். எடுத்துக்காட்டாக, வெளியீடு "Temperature: 23.5 C, Humidity: 50%" என்பதைக் காட்டலாம். சென்சாருக்கு வெப்பத்தைப் பயன்படுத்தினால், வெப்பநிலை அதிகரிப்பதையும் ஈரப்பதம் குறைவதையும் கவனிக்க வேண்டும், இது அதன் பதிலளிக்கும் தன்மையை நிரூபிக்கிறது (வீடியோவில் 11:15 மணிக்கு).

வீடியோ நேர முத்திரைகள்

  • 00:00 - AM2320 சென்சார் அறிமுகம்
  • 01:30 - வயரிங் வழிமுறைகள்
  • 03:45 - கோட் விளக்கம்
  • 05:15 - அளவீடுகளின் செயல்விளக்கம்

படங்கள்

AM2320-sensor-1
AM2320-sensor-1
AM2320-sensor-2
AM2320-sensor-2
AM2320-sensor-3
AM2320-sensor-3
AM2320-sensor-4
AM2320-sensor-4
Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor
84-This is the Arduino code for the Aosong AM2320 digital temperature and humidity sensor.
மொழி: C++
++
/**
    This is Arduino code for Aosong Digital Temperature and Humidity Sensor.
	This code is presented as part of a Robojax tutorial.
	
    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 <http://www.gnu.org/licenses/>.

    Copyright 2016 Ratthanan Nalintasnai
    Modified for Robojax.com video by
    Ahmad S. on March 22, 2018 at 22:45 in Ajax, Ontario, Canada
    This code, with library and other codes, is available at
    https://robojax.com
    Watch the video instruction for this code: https://youtu.be/3ifN0FhLB5E
**/

// Include library into the sketch
#include <AM2320.h>

// Create an instance of sensor
AM2320 sensor;

void setup() {
  // enable serial communication
  Serial.begin(9600);
  Serial.print("Robojax AM2320 Demo ");
  // call sensor.begin() to initialize the library
  sensor.begin();
}

void loop() {

  // sensor.measure() returns a boolean value
  // - true indicates measurement is completed successfully
  // - false indicates that either the sensor is not ready or CRC validation failed
  //   use getErrorCode() to check for the cause of the error.
  if (sensor.measure()) {
    Serial.print("Temperature: ");
    Serial.print(temp('C'));
    Serial.print(" C, Humidity: ");
    Serial.print(sensor.getHumidity());
    Serial.println("%");
  }
  else {  // error has occurred
    int errorCode = sensor.getErrorCode();
    switch (errorCode) {
      case 1: Serial.println("ERR: Sensor is offline"); break;
      case 2: Serial.println("ERR: CRC validation failed."); break;
    }    
  }

  delay(500);
}

/*
 * temp()
 * returns temperature based on the parameter T
 * if T == 'F', will convert Celsius to Fahrenheit
 * if T is anything else or empty, will return Celsius
 * how to use:
 *  to get Fahrenheit, use temp('F')
 *  to get Celsius, use temp('C') or temp('')
 *  the temp('') uses an empty single quote 
 * 
 */
float temp(char T)
{
  if (sensor.measure()) {
    if(T =='F')
    {
      // convert to FAHRENHEIT and return
      // Robojax video tutorial
      return sensor.getTemperature()* 1.8 + 32;
    }else{
      return sensor.getTemperature();// return CELSIUS
    }

  }// if sensor.measure  
}

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

இன்னும் எந்த வளங்களும் இல்லை.

கோப்புகள்📁

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

பிரிட்சிங் கோப்பு