Search Code

Lambar Arduino da Bidiyo don Na'urar Aosong AM2320 na Digital Temperature da Humidity Sensor

Lambar Arduino da Bidiyo don Na'urar Aosong AM2320 na Digital Temperature da Humidity Sensor

A cikin wannan koyawa, za mu bincika yadda ake amfani da na'urar Aosong AM2320 na dijital zazzabi da danshi tare da Arduino. Wannan na'urar tana sadarwa ta I2C kuma tana ba mu damar karanta zazzabi a Celsius ko Fahrenheit, da danshi a kashi. A ƙarshen wannan koyawa, za ka iya gina wani aiki mai sauƙi wanda ke nuna waɗannan karatun a kan serial monitor.

Na'urar AM2320 tana da ƙanƙanta kuma tana ba da ingantaccen bayanai ga duka zazzabi da danshi. Tana da ƙudurin 0.1°C don zazzabi da kewayon danshi na 0-99%. Tsarin saitin ya ƙunshi haɗa na'urar zuwa Arduino da rubuta ƴan layukan lamba don karantawa da nuna ƙimar na'urar. Wannan koyawa ta bidiyo tana ba da jagora mataki-mataki, gami da misalan haɗi da lamba (a bidiyo a 00:00).

Kayan Aiki Da Aka Yi Bayani

Babban ɓangaren wannan aikin shine na'urar Aosong AM2320. Tana aiki ta amfani da sadarwar I2C, wanda ke sauƙaƙa tsarin haɗi saboda yana buƙatar layukan bayanai guda biyu kawai (SDA da SCL) tare da wutar lantarki da ƙasa. Na'urar tana auna zazzabi a kewayon -40°C zuwa +80°C tare da daidaiton ±0.5°C da danshi daga 0% zuwa 99% tare da irin wannan daidaito. Na'urar an ƙera ta don zama mai ƙarancin wutar lantarki, wanda ya sa ta dace da na'urorin da ke aiki da baturi.

Bugu da ƙari, ƙirar AM2320 ta haɗa da resistors na pull-up waɗanda suke da muhimmanci ga sadarwar I2C, wanda ke taimakawa wajen daidaita sigina a kan layukan SDA da SCL. Wannan fasalin yana sauƙaƙa tsarin haɗi, saboda ba za ka buƙaci ƙara resistors na waje ba.

Cikakkun Bayanai na Datasheet

Mai ƙeraAosong
Lambar ɓangareAM2320
Wutar Logic/IO3.1 zuwa 5.5 V
Wutar samarwa3.1 zuwa 5.5 V
Kewayon zazzabi-40 zuwa +80 °C
Kewayon danshi0 zuwa 99 %
Ƙuduri (Zazzabi)0.1 °C
Ƙuduri (Danshi)0.1 %
Daidaito (Zazzabi)±0.5 °C
Daidaito (Danshi)±3 %
MarufiModule

  • Tabbatar da wutar lantarki daidai (3.1 zuwa 5.5 V).
  • Yi amfani da resistors na pull-up (yawanci 4.7 kΩ) don layukan SDA da SCL.
  • Kiyaye kewayon zazzabi a cikin -40°C zuwa +80°C don guje wa lalacewa.
  • Karatun danshi yana daidai a cikin kewayon 0% zuwa 99%.
  • Sa ido ga lambobin kuskure yayin karatu (misali, na'urar ba ta kan layi).

Umarnin Haɗi

Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor

Don haɗa na'urar AM2320 zuwa Arduino, bi waɗannan matakan a hankali. Da farko, haɗa fil ɗin wutar lantarki: fil na hagu na AM2320 yana haɗawa zuwa 5V (ko VCC) na Arduino, yayin da fil ɗin ƙasa yana haɗawa zuwa GND na Arduino. Fil na biyu daga hagu (SDA) yana haɗawa zuwa analog pin A4 na Arduino don Arduino Uno ko A20 don Arduino Mega. Fil na uku (SCL) yana zuwa A5 don Arduino Uno ko A21 don Arduino Mega.

Bugu da ƙari, za ka buƙaci haɗa resistor na 4.7 kΩ daga fil ɗin SDA zuwa layin 5V da wani resistor na 4.7 kΩ daga fil ɗin SCL zuwa layin 5V. Wannan yana tabbatar da sadarwar I2C mai kyau. Idan kana amfani da wasu nau'ikan Arduino kamar Leonardo, fil ɗin SDA da SCL suma za su kasance A4 da A5, bi da bi.

Misalan Lamba & Bayani

Bari mu duba wasu muhimman sassa na lambar Arduino da aka yi amfani da su a wannan aikin. Da farko, muna fara na'urar da kuma saita sadarwar serial:

#include 
AM2320 sensor;

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

A cikin wannan ɓangaren, muna haɗa ɗakin karatu da ake buƙata tare da #include <AM2320.h> kuma muna ƙirƙirar misali na na'urar. Aikin setup() yana fara sadarwar serial a ƙimar baud 9600 kuma yana fara na'urar.

Na gaba, muna da babban madauki wanda ke karanta zazzabi da danshi:

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

Wannan lambar tana duba idan auna na'urar ya yi nasara. Idan haka ne, tana buga zazzabi a Celsius da kashi na danshi zuwa serial monitor. Aikin temp('C') ana kiransa don samun zazzabi a Celsius. Idan kana son Fahrenheit, za ka iya kiran temp('F').

Nuni / Abin Da Za Ka Yi Tsammani

Lokacin da ka kunna shirin, ya kamata ka ga karatun zazzabi da danshi suna sabuntawa kowane rabin daƙiƙa a cikin serial monitor. Misali, fitarwa na iya nuna "Temperature: 23.5 C, Humidity: 50%". Idan ka sanya zafi a kan na'urar, ya kamata ka lura da ƙaruwar zazzabi da raguwar danshi, yana nuna saurin amsawarta (a bidiyo a 11:15).

Lokutan Bidiyo

  • 00:00 - Gabatarwa ga na'urar AM2320
  • 01:30 - Umarnin haɗi
  • 03:45 - Bayanin lamba
  • 05:15 - Nuni na karatu

Hotuna

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

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Takardar bayanai (pdf)

Fayil Fritzing