Search Code

Msimbo wa Arduino na Video kwa Kihisi cha Joto na Unyevu cha Dijiti cha Aosong AM2320

Msimbo wa Arduino na Video kwa Kihisi cha Joto na Unyevu cha Dijiti cha Aosong AM2320

Katika mafunzo haya, tutachunguza jinsi ya kutumia kihisi cha dijitali cha joto na unyevu cha Aosong AM2320 pamoja na Arduino. Kihisi hiki huwasiliana kupitia I2C na huturuhusu kusoma joto kwa Selsiasi au Fahrenheiti, na unyevu kwa asilimia. Kufikia mwisho wa mafunzo haya, utaweza kuunda mradi rahisi unaoonyesha usomaji huu kwenye kifuatiliaji cha mfululizo.

Kihisi cha AM2320 ni kidogo na hutoa data ya kuaminika kwa joto na unyevu. Kina azimio la 0.1°C kwa joto na anuwai ya unyevu ya 0-99%. Mchakato wa usanidi unahusisha kuunganisha kihisi kwenye Arduino na kuandika mistari michache ya msimbo wa kusoma na kuonyesha thamani za kihisi. Mafunzo haya ya video yanatoa mwongozo wa hatua kwa hatua, ikijumuisha mifano ya wiring na coding (katika video saa 00:00).

Vifaa Vimeelezwa

Sehemu kuu ya mradi huu ni kihisi cha Aosong AM2320. Kinafanya kazi kwa kutumia mawasiliano ya I2C, ambayo hurahisisha mchakato wa uunganishaji kwani kinahitaji njia mbili tu za data (SDA na SCL) pamoja na umeme na ardhi. Kihisi hupima joto katika anuwai ya -40°C hadi +80°C kwa usahihi wa ±0.5°C na unyevu kutoka 0% hadi 99% kwa usahihi sawa. Kihisi kimeundwa kuwa na nishati ya chini sana, na kukifanya kufaa kwa vifaa vinavyotumia betri.

Zaidi ya hayo, moduli ya AM2320 inajumuisha vipinga vya kuvuta-juu ambavyo ni muhimu kwa mawasiliano ya I2C, ambayo husaidia kuimarisha ishara kwenye njia za SDA na SCL. Kipengele hiki hurahisisha mchakato wa wiring, kwani hutahitaji kuongeza vipinga vya nje vya kuvuta-juu.

Maelezo ya Datasheet

MtengenezajiAosong
Nambari ya sehemuAM2320
Voltage ya Logic/IO3.1 hadi 5.5 V
Voltage ya usambazaji3.1 hadi 5.5 V
Anuwai ya joto-40 hadi +80 °C
Anuwai ya unyevu0 hadi 99 %
Azimio (Joto)0.1 °C
Azimio (Unyevu)0.1 %
Usahihi (Joto)±0.5 °C
Usahihi (Unyevu)±3 %
KifurushiModuli

  • Hakikisha usambazaji sahihi wa voltage (3.1 hadi 5.5 V).
  • Tumia vipinga vya kuvuta-juu (kawaida 4.7 kΩ) kwa njia za SDA na SCL.
  • Weka anuwai ya joto ndani ya -40°C hadi +80°C ili kuepuka uharibifu.
  • Usomaji wa unyevu ni sahihi ndani ya anuwai ya 0% hadi 99%.
  • Fuatilia misimbo ya makosa wakati wa usomaji (kwa mfano, kihisi kimekatika).

Maagizo ya Wiring

Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor

Ili kuunganisha kihisi cha AM2320 kwenye Arduino, fuata hatua hizi kwa uangalifu. Kwanza, unganisha pini za umeme: pini ya kushoto kabisa ya AM2320 inaunganishwa kwenye 5V ya Arduino (au VCC), wakati pini ya ardhi inaunganishwa kwenye GND ya Arduino. Pini ya pili kutoka kushoto (SDA) inaunganishwa kwenye pini ya analogi A4 ya Arduino kwa Arduino Uno au A20 kwa Arduino Mega. Pini ya tatu (SCL) inakwenda kwenye A5 kwa Arduino Uno au A21 kwa Arduino Mega.

Zaidi ya hayo, utahitaji kuunganisha kipinga cha 4.7 kΩ kutoka pini ya SDA hadi mstari wa 5V na kipinga kingine cha 4.7 kΩ kutoka pini ya SCL hadi mstari wa 5V. Hii inahakikisha mawasiliano sahihi ya I2C. Ikiwa unatumia mifano mingine ya Arduino kama Leonardo, pini za SDA na SCL zitakuwa A4 na A5, mtawalia.

Mifano ya Msimbo na Ufafanuzi

Hebu tuangalie baadhi ya sehemu muhimu za msimbo wa Arduino unaotumika katika mradi huu. Kwanza, tunaanzisha kihisi na kuweka mawasiliano ya mfululizo:

#include 
AM2320 sensor;

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

Katika kipande hiki, tunajumuisha maktaba muhimu kwa #include <AM2320.h> na kuunda tukio la kihisi. Kazi ya setup() inaanzisha mawasiliano ya mfululizo kwa kiwango cha baud 9600 na kuanzisha kihisi.

Ifuatayo, tuna kitanzi kikuu kinachosoma joto na unyevu:

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

Msimbo huu huangalia ikiwa kipimo cha kihisi kilifanikiwa. Ikiwa ndivyo, kinachapisha joto kwa Selsiasi na asilimia ya unyevu kwenye kifuatiliaji cha mfululizo. Kazi ya temp('C') inaitwa kupata joto kwa Selsiasi. Ikiwa unataka Fahrenheiti, unaweza kuita temp('F').

Maonyesho / Nini cha Kutarajia

Unapoendesha programu, unapaswa kuona usomaji wa joto na unyevu ukisasishwa kila nusu sekunde kwenye kifuatiliaji cha mfululizo. Kwa mfano, matokeo yanaweza kuonyesha "Temperature: 23.5 C, Humidity: 50%". Ikiwa unatumia joto kwenye kihisi, unapaswa kuona joto likiongezeka na unyevu kupungua, kuonyesha uwezo wake wa kuitikia (katika video saa 11:15).

Vidokezo vya Muda vya Video

  • 00:00 - Utangulizi wa kihisi cha AM2320
  • 01:30 - Maagizo ya wiring
  • 03:45 - Ufafanuzi wa msimbo
  • 05:15 - Maonyesho ya usomaji

Bilder

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.
Språk: 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  
}

Resurser och referenser

Inga resurser än.

Filer📁

Datablad (pdf)

Fritzing-fil