Raadi Koodka

Koodhka Arduino iyo Fiidiyowga ee Aosong AM2320 Sensor-ka Heerkulka iyo Qoyaanka Dijitaalka ah

Koodhka Arduino iyo Fiidiyowga ee Aosong AM2320 Sensor-ka Heerkulka iyo Qoyaanka Dijitaalka ah

Cashigarkii, waxaanu sahamin doonaa sida loo isticmaalo dareemaha dhijitaalka ah ee heerkulka iyo qoyaanka Aosong AM2320 ee Arduino. Dareemahan wuxuu ku xidhmaa I2C wuxuuna noo ogolaanayaa inaan akhrino heerkulka Celsius ama Fahrenheit, iyo qoyaanka boqolkiiba. Marka aad dhammayso casharkan, waxaad awoodi doontaa inaad dhisto mashruuc fudud oo muujinaya akhrintan kormeerka taxanaha ah.

Dareemaha AM2320 waa mid is haysta oo bixiya xog lagu kalsoonaan karo heerkulka iyo qoyaanka labadaba. Wuxuu leeyahay xallin 0.1°C heerkulka iyo qoyaanka u dhexeeya 0-99%. Habka dejinta wuxuu ku lug leeyahay ku xidhista dareemaha Arduino iyo qorista dhawr sadar oo kood ah si loo akhriyo loona muujiyo qiimaha dareemaha. Casharkan fiidiyowga ah wuxuu bixiyaa hagitaan tallaabo-tallaabo ah, oo ay ku jiraan tusaalooyin xidhidhiyaha iyo koodka (fiidiyowga 00:00).

Qalabka La Sharaxay

Qaybta ugu muhiimsan ee mashruucan waa dareemaha Aosong AM2320. Wuxuu u shaqeeyaa isgaarsiinta I2C, taas oo fududaynaysa habka xidhidhiyaha maxaa yeelay waxay u baahan tahay oo keliya laba sadar oo xog ah (SDA iyo SCL) oo ay weheliso koronto iyo dhul. Dareemuhu wuxuu cabbiraa heerkulka u dhexeeya -40°C ilaa +80°C oo leh saxnaan ±0.5°C iyo qoyaanka 0% ilaa 99% oo leh saxnaan la mid ah. Dareemuhu waxaa loo qaabeeyey inuu yahay mid aad u yar oo koronto yar, taas oo ka dhigaysa mid ku habboon qalabka ku shaqeeya baytariyada.

Intaa waxaa dheer, qaybta AM2320 waxaa ku jira resistors-ka kor u jiidaya ee lagama maarmaanka u ah isgaarsiinta I2C, taas oo gacan ka geysata xasilinta calaamadaha sadarrada SDA iyo SCL. Astaantan waxay fududaysaa habka xidhidhiyaha, maadaama aadan u baahnayn inaad ku darto resistors-ka kor u jiidaya ee dibadda ah.

Faahfaahinta Xogta

Soo saarahaAosong
Nambarka qaybtaAM2320
Korantada Logic/IO3.1 ilaa 5.5 V
Korantada sahayda3.1 ilaa 5.5 V
Heerkulka uu shaqeeyo-40 ilaa +80 °C
Qoyaanka uu shaqeeyo0 ilaa 99 %
Xallinta (Heerkulka)0.1 °C
Xallinta (Qoyaanka)0.1 %
Saxnaanta (Heerkulka)±0.5 °C
Saxnaanta (Qoyaanka)±3 %
BaakadQayb

  • Hubi in korontada sahaydu ay sax tahay (3.1 ilaa 5.5 V).
  • Isticmaal resistors-ka kor u jiidaya (sida caadiga ah 4.7 kΩ) sadarrada SDA iyo SCL.
  • Ku hay heerkulka u dhexeeya -40°C ilaa +80°C si aad uga fogaato waxyeello.
  • Akhrinta qoyaanku waxay sax tahay inta u dhaxaysa 0% ilaa 99%.
  • La soco koodhka qaladka inta lagu jiro akhrinta (tusaale, dareemaha oo xidhnaa).

Tilmaamaha Xidhidhiyaha

Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor

Si aad ugu xidhid dareemaha AM2320 Arduino, raac tallaabooyinkan si taxadar leh. Marka hore, ku xidh biinanka korontada: biinka ugu bidix ee AM2320 wuxuu ku xidhmaa Arduino-ga 5V (ama VCC), halka biinka dhulku uu ku xidhmaa GND-ga Arduino-ga. Biinka labaad ee bidix (SDA) wuxuu ku xidhmaa biinka analogga ah ee A4 ee Arduino Uno ama A20 ee Arduino Mega. Biinka saddexaad (SCL) wuxuu u tagaa A5 ee Arduino Uno ama A21 ee Arduino Mega.

Intaa waxaa dheer, waxaad u baahan doontaa inaad ku xidhid resistor 4.7 kΩ oo ka imanaya biinka SDA ilaa sadarka 5V iyo resistor kale oo 4.7 kΩ oo ka imanaya biinka SCL ilaa sadarka 5V. Tani waxay hubinaysaa isgaarsiinta I2C ee saxda ah. Haddii aad isticmaalayso noocyo kale oo Arduino ah sida Leonardo, biinanka SDA iyo SCL waxay sidoo kale noqon doonaan A4 iyo A5, siday u kala horreeyaan.

Tusaalooyinka Koodka & Sharaxaadda

Aynu eegno qaybo muhiim ah oo ka mid ah koodka Arduino ee loo isticmaalay mashruucan. Marka hore, waxaanu bilawnaa dareemaha oo waxaanu dejineynaa isgaarsiinta taxanaha ah:

#include 
AM2320 sensor;

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

Qaybtan, waxaanu ku daraa maktabadda lagama maarmaanka ah ee #include <AM2320.h> waxaanu abuuraa tusaale ka mid ah dareemaha. Shaqada setup() waxay dejisaa isgaarsiinta taxanaha ah heerka 9600 baud waxayna bilaabataa dareemaha.

Marka xigta, waxaanu leenahay loop-ka ugu weyn ee akhriya heerkulka iyo qoyaanka:

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

Koodkani wuxuu hubinayaa in cabbirka dareemuhu uu guul ku yeeshay. Haddii ay sidaas tahay, wuxuu daabacaa heerkulka Celsius iyo boqolkiiba qoyaanka kormeerka taxanaha ah. Shaqada temp('C') ayaa loo yaqaan si loo soo saaro heerkulka Celsius. Haddii aad rabto Fahrenheit, waxaad u wici kartaa temp('F').

Muuujinta / Waxa Lagu Filan Karaa

Markaad shubto barnaamijka, waxaad arki doontaa akhrinta heerkulka iyo qoyaanka oo la cusboonaysiinayo nus ilbiriqsi kasta kormeerka taxanaha ah. Tusaale ahaan, wax soo saarku wuxuu muujin karaa "Temperature: 23.5 C, Humidity: 50%". Haddii aad kulul ku ridto dareemaha, waxaad arki doontaa heerkulka oo kordhaya iyo qoyaanka oo hoos u dhacaya, taas oo muujinaysa falcelinteeda (fiidiyowga 11:15).

Waqtiyada Fiidiyowga

  • 00:00 - Hordhaca dareemaha AM2320
  • 01:30 - Tilmaamaha xidhidhiyaha
  • 03:45 - Sharaxaadda koodka
  • 05:15 - Muujinta akhrinta

Sawirro

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

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Waraaqa xogta (pdf)

Faylka Fritzing