Search Code

Koodu Arduino ati Fidio fun sensọ iwọn otutu ati ọriniinitutu oni-nọmba Aosong AM2320 pẹlu LCD1602 ati Module I2C

Koodu Arduino ati Fidio fun sensọ iwọn otutu ati ọriniinitutu oni-nọmba Aosong AM2320 pẹlu LCD1602 ati Module I2C

Nínú ẹ̀kọ́ yìí, a óò ṣàwárí bí a ṣe le lo ẹ̀rọ ìwọ̀n ìgbóná àti ọ̀rinrin AM2320 ti Aosong pẹ̀lú àfihàn LCD1602 tí ń lo módúùlù I2C. Ìdí ni láti fi àwọn ìwọ̀n ìgbóná hàn ní àwọn ìwọ̀n Fahrenheit àti Celsius, àti pẹ̀lú ọ̀rinrin ìbátan. Ìtòlẹ́yọ̀ yìí dára fún mímójútó àwọn ipò ayika nínú àwọn iṣẹ́-ọwọ́ oríṣiríṣi, tí ó sì jẹ́ àfikún tí ó wúlò fún ohun èlò Arduino rẹ.

A óò lo ẹ̀rọ ìwọ̀n AM2320 láti kó àwọn ìsọfúnni ìgbóná àti ọ̀rinrin jọ, èyí tí a óò fi hàn lórí LCD1602. Módúùlù I2C ṣe ìrọ̀rùn fún ìlànà ìsopọ̀, tí ó nílò àwọn ìsopọ̀ mẹ́rin péré: VCC, GND, SDA, àti SCL. Fún òye tí ó ṣe kedere nípa ìsopọ̀ àti ìṣètò, mo dábàá kí o wo fídíò tí ó somọ́ (nínú fídíò ní 00:00).

Àlàyé Ohun Èlò

Àwọn èròjà pàtàkì nínú iṣẹ́-ọwọ́ yìí ní ẹ̀rọ ìwọ̀n AM2320, àfihàn LCD1602, àti módúùlù I2C. AM2320 jẹ́ ẹ̀rọ ìwọ̀n oní nọ́ńbà tí ó pèsè àwọn ìwọ̀n tí ó péye ti ìgbóná àti ọ̀rinrin nípasẹ̀ ojú-ọ̀nà I2C. Ó ń ṣiṣẹ́ lórí foltáìjì 3.3V sí 5.5V, ó sì ní ìwọ̀n ìgbóná láti -40°C sí +80°C àti ọ̀rinrin láti 0% sí 100%.

Àfihàn LCD1602 jẹ́ kí a lè rí àwọn ìwọ̀n tí ẹ̀rọ ìwọ̀n gbà. Ó jẹ́ àfihàn ohun kíkọ 16x2 tí ń bára ṣe nípasẹ̀ ìlànà I2C, èyí tí ó dín àwọn ìsopọ̀ tí a nílò kù sí mẹ́rin péré. Módúùlù I2C yí àwọn ìsọfúnni tí ó wà ní ọ̀nà ìfaradara (parallel) láti LCD padà sí ọ̀nà tí ó wà ní ọ̀kọ̀ọ̀kan (serial), tí ó sì jẹ́ kí ìsopọ̀ sí Arduino rọrùn.

Àwọn Àlàyé Láti Ìwé Ìsọfúnni

OlùṣeAosong
Nọ́ńbà apáAM2320
Foltáìjì Logic/IO3.3 V - 5.5 V
Foltáìjì ìpèsè3.3 V - 5.5 V
Ìwọ̀n ìjàde≤ 1.5 mA
Ìwọ̀n ìgbóná (Temperature)-40°C sí +80°C
Ìwọ̀n ọ̀rinrin (Humidity)0% sí 100%
Àkókò ìdáhùn≤ 2s
ÀpótíDIP-4
Àwọn àkíyèsí / oríṣiríṣiA gbaniyanju láti lo àwọn resistor ìfà sókè fún àwọn ìsopọ̀ I2C.

  • Rí i dájú pé ìpèsè agbára tí ó tọ́ wà nínú ìwọ̀n foltáìjì tí a sọ.
  • Lo àwọn resistor ìfà sókè (4.7kΩ ni a gbaniyanju) fún àwọn ìlà SDA àti SCL.
  • Ṣàyẹ̀wò àdírẹ́sì I2C tí ó tọ́ (àfipamọ́ jẹ́ 0x27 fún ọ̀pọ̀lọpọ̀ LCD).
  • Mójútó àwọn àṣìṣe tí ó lè ṣẹlẹ̀ nípa ṣíṣàyẹ̀wò kóòdù àṣìṣe ẹ̀rọ ìwọ̀n.
  • Nu LCD kí o tó fi àwọn ìwọ̀n tuntun hàn láti yẹra fún ìbòra.

Àwọn Ìtọ́ni Ìsopọ̀

Arduino wiring for AM2320 sensor with LCD
Arduino wiring for AM2320 sensor with LCD

Láti so ẹ̀rọ ìwọ̀n AM2320, so ẹ̀yin òsì (VCC) sí 5V lórí Arduino. Ẹ̀yin kejì (SDA) lọ sí ẹ̀yin A4 lórí Arduino Uno (tàbí ẹ̀yin 20 lórí Mega). Ẹ̀yin kẹta (GND) yẹ kí a so sí ilẹ̀, àti ẹ̀yin kẹrin (SCL) so sí ẹ̀yin A5 lórí Arduino Uno (tàbí ẹ̀yin 21 lórí Mega). Ní àfikún, so resistor 4.7kΩ kan láàárín ẹ̀yin SDA àti 5V, àti resistor 4.7kΩ mìíràn láàárín ẹ̀yin SCL àti 5V láti rí i dájú pé àwọn ìpele ìsọfúnni tọ́.

Fún àfihàn LCD1602 pẹ̀lú I2C, so ẹ̀yin VCC sí 5V àti ẹ̀yin GND sí ilẹ̀. So ẹ̀yin SDA láti LCD sí ẹ̀yin SDA kanna (A4) tí a lò fún ẹ̀rọ ìwọ̀n. Bákan náà, so ẹ̀yin SCL láti LCD sí ẹ̀yin SCL kanna (A5) tí a lò fún ẹ̀rọ ìwọ̀n. Ìsopọ̀ tí a pín yìí jẹ́ kí àwọn ẹ̀rọ méjèèjì lè bára ṣe lórí ọ̀nà I2C kanna.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà

Kóòdù tí ó tẹ̀le yìí bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n AM2320 àti àfihàn LCD1602. Ó bẹ̀rẹ̀ nípa fífi àwọn ilé-ìkàwé tí a nílò sí inú, àti ṣíṣe àpẹẹrẹ ẹ̀rọ ìwọ̀n kan.

#include 
AM2320 sensọ;
#include 
LiquidCrystal_I2C lcd(0x27, 16, 2);

Níhìn-ín, a ṣẹ̀dá ohun-èlò sensọ láti inú àkójọpọ̀ AM2320, àti pé a ti bẹ̀rẹ̀ ohun-èlò lcd pẹ̀lú àdírẹ́sì I2C ti àfihàn.

Nínú iṣẹ́ setup(), a bẹ̀rẹ̀ àwọn ohun-èlò méjèèjì: sensọ àti LCD. Èyí pẹ̀lú mímú iná ẹ̀yìn wọ̀ àti títẹ̀ ọ̀rọ̀ àkọ́kọ́ jáde.

void setup() {
  sensor.begin();
  lcd.begin();
  lcd.backlight();
  lcd.print("Robojax AM2320 ");
  lcd.setCursor (0,1);
  lcd.print("LCD1602 I2C Demo");
  delay(3000);
}

Kóòdù yìí ṣètò àfihàn láti fi ọ̀rọ̀ ìkíni hàn fún ìṣẹ́jú àáyá 3, tí ó ń fún àkókò fún olùṣàmúlò láti rí i pé ètò ń bẹ̀rẹ̀.

Iṣẹ́ loop() ń ṣàyẹ̀wò àwọn ìwọ̀n sensọ nígbà gbogbo, ó sì ń mú àfihàn náà ṣiṣẹ́ ní ìbámu. Bí ìwọ̀n bá wà, ó ń pa ibojú rẹ̀, ó sì ń tẹ̀ ìwọ̀n otútù jáde ní Fahrenheit àti Celsius, pẹ̀lú ìwọ̀n ọ̀rinrin ojú-àyí.

void loop() {
  if (sensor.measure()) {
    lcd.clear();
    lcd.print("T:");
    lcd.print(temp('F'));
    lcd.print("F/");
    lcd.print(temp('C'));
    lcd.print("C");  
    lcd.setCursor (0,1);
    lcd.print("R.H. :");
    lcd.print(sensor.getHumidity());
    lcd.print("%"); 
  }
  else {
    int errorCode = sensor.getErrorCode();
    switch (errorCode) {
      case 1: lcd.print("ERR: Sensor offline"); break;
      case 2: lcd.print("ERR: CRC failed."); break;
    }    
  }
  delay(500);
}

Ìyọ̀ọ̀dà yìí ṣàfihàn bí ètò ṣe ń gba àti ṣàfihàn àwọn ìwọ̀n sensọ, nígbà tí ó ń tọ́jú àwọn àṣìṣe tí ó lè wáyé nípa ṣíṣàyẹ̀wò errorCode.

Ìṣàfihàn / Ohun Tí Ó Yẹ Kí O Rí

Nígbà tí ìṣètò bá parí, retí pé LCD yóò fi ìwọ̀n otútù hàn ní Fahrenheit àti Celsius, àti ìwọ̀n ọ̀rinrin ojú-àyí ní ìpín ọgọ́rùn-ún. Bí sensọ bá kú tàbí àṣìṣe CRC bá wà, àfihàn yóò fi àwọn ọ̀rọ̀ àṣìṣe tí ó bá mu hàn. Ó ṣe pàtàkì láti rí i pé gbogbo àwọn ìsopọ̀ wà ní ààyè tí ó dára láti yẹra fún àwọn ìṣòro (nínú fídíò ní 02:45).

Àwọn Àsìkò Fídíò

  • 00:00 - Ìfihàn sí iṣẹ́-ìdá náà
  • 01:30 - Àwọn ìtọ́ni ìsopọ̀
  • 03:15 - Àlàyé kóòdù
  • 04:45 - Ìṣàfihàn iṣẹ́-ìdá

Aworan

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 with LCD
Arduino wiring for AM2320 sensor with LCD
85-This is the Arduino code for an Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
Ede: C++
++
/**
 * This is Arduino code for AM2320 Temperature and Humidity Sensor with LCD1602 and I2C Module
 * which displays the temperature and RH (relative humidity)
 * on an LCD1602 with an I2C module.  The code was combined by Robojax.
 * 
    Original Code For AM2320 :https://github.com/hibikiledo/AM2320
    Copyright 2016 Ratthanan Nalintasnai
    
    Modified for Robojax.com video by
    Ahmad S. on March 22, 2018 at 23:55 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/ym567hneDpE
**/

// Include library for AM2320
#include <AM2320.h>
// Create an instance of the sensor
AM2320 sensor;


#include <Wire.h> 
// Include the LiquidCrystal library for display
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);


void setup() {
  // Call sensor.begin() to initialize the library
  sensor.begin();

  // Robojax code for LCD with I2C
  // Initialize the LCD, 
  lcd.begin();
   // Turn on the backlight and print a message.
  lcd.backlight();
  lcd.print("Robojax AM2320 ");
  lcd.setCursor (0,1);
  lcd.print("LCD1602 I2C Demo");
  delay(3000);
}

void loop() {
  if (sensor.measure()) {
    lcd.clear();
    lcd.print("T:");
    lcd.print(temp('F'));
    lcd.print("F/");
    lcd.print(temp('C'));
    lcd.print("C");  
    lcd.setCursor (0,1); // go to start of 2nd line
    lcd.print("R.H. :");
    lcd.print(sensor.getHumidity());
    lcd.print("%"); 
  

  }
  else {  // An error has occurred
    int errorCode = sensor.getErrorCode();
    switch (errorCode) {
      case 1: lcd.print("ERR: Sensor offline"); break;
      case 2: lcd.print("ERR: CRC failed."); break;
    }    
  }

  delay(500);
}

/*
 * temp()
 * Returns the temperature based on the input character T.
 * If T == 'F', converts Celsius to Fahrenheit.
 * Otherwise, returns Celsius.
 * How to use:
 *  To get Fahrenheit, use temp('F').
 *  To get Celsius, use temp('C') or temp('').
 *  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  
}
86-This is the Arduino code for the Aosong AM2320 temperature and humidity sensor with an LCD1602 and I2C module.
Ede: C++
/*********************************************************************
Original source: http://playground.arduino.cc/Main/I2cScanner

This program will find the I2C address on the I2C device. Just upload the code into your Arduino
and open the serial monitor and wait. It will display the I2C address as 0x3C or similar.

 * Please view other RoboJax codes and videos at http://robojax.com/learn/arduino
 * If you are sharing this code, you must keep this copyright note.
 * 
*********************************************************************/


#include <Wire.h>
 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The I2C scanner uses the return value of
    // the Wire.endTransmission to see if
    // a device did acknowledge the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

Ohun ti o le nilo

Orisun & itọkasi

Fáìlìs📁

Fọọmu data (pdf)

Fayile Fritzing