Arduino Kodu ve Aosong AM2320 Dijital Sıcaklık ve Nem Sensörü için Video
Bu eğitimde, Aosong AM2320 dijital sıcaklık ve nem sensörünü Arduino ile nasıl kullanacağımızı keşfedeceğiz. Bu sensör I2C üzerinden iletişim kurar ve sıcaklığı Celsius veya Fahrenheit cinsinden, nemi ise yüzde olarak okumamızı sağlar. Bu eğitimin sonunda, bu okumaları seri monitörde görüntüleyen basit bir proje oluşturabileceksiniz.

AM2320 sensörü kompakttır ve hem sıcaklık hem de nem için güvenilir veriler sağlar. Sıcaklık için 0,1°C çözünürlüğe ve %0-99 nem aralığına sahiptir. Kurulum süreci, sensörü Arduino'ya bağlamayı ve sensör değerlerini okumak ve görüntülemek için birkaç satır kod yazmayı içerir. Bu video eğitimi, bağlantı ve kodlama örnekleri dahil olmak üzere adım adım bir kılavuz sağlar (videoda 00:00'da).
Donanım Açıklaması
Bu projenin ana bileşeni Aosong AM2320 sensörüdür. I2C iletişimi kullanarak çalışır; bu, yalnızca iki veri hattı (SDA ve SCL) ile güç ve toprak gerektirdiğinden bağlantı sürecini basitleştirir. Sensör, sıcaklığı -40°C ile +80°C aralığında ±0,5°C doğrulukla ve nemi %0 ile %99 aralığında benzer bir doğrulukla ölçer. Sensör çok düşük güç tüketecek şekilde tasarlanmıştır ve bu da onu pille çalışan cihazlar için uygun hale getirir.
Ayrıca AM2320 modülü, I2C iletişimi için gerekli olan ve SDA ile SCL hatlarındaki sinyallerin stabilize edilmesine yardımcı olan pull-up dirençlerini içerir. Bu özellik, harici pull-up dirençleri eklemeniz gerekmediğinden bağlantı sürecini basitleştirir.
Veri Sayfası Detayları
| Üretici | Aosong |
|---|---|
| Parça numarası | AM2320 |
| Mantık/G/Ç voltajı | 3,1 ila 5,5 V |
| Besleme voltajı | 3,1 ila 5,5 V |
| Sıcaklık aralığı | -40 ila +80 °C |
| Nem aralığı | 0 ila %99 |
| Çözünürlük (Sıcaklık) | 0,1 °C |
| Çözünürlük (Nem) | %0,1 |
| Doğruluk (Sıcaklık) | ±0,5 °C |
| Doğruluk (Nem) | ±%3 |
| Paket | Modül |
- Doğru voltaj beslemesini sağlayın (3,1 ila 5,5 V).
- SDA ve SCL hatları için pull-up dirençleri kullanın (genellikle 4,7 kΩ).
- Hasardan kaçınmak için sıcaklık aralığını -40°C ile +80°C arasında tutun.
- Nem okumaları %0 ile %99 aralığında doğrudur.
- Okumalar sırasında hata kodlarını izleyin (ör. sensör çevrimdışı).
Bağlantı Talimatları

AM2320 sensörünü Arduino'ya bağlamak için şu adımları dikkatlice izleyin. Önce güç pinlerini bağlayın: AM2320'nin en soldaki pini Arduino'nun 5V (veya VCC) pinine, toprak pini ise Arduino'nun GND pinine bağlanır. Soldan ikinci pin (SDA), Arduino Uno için Arduino'nun analog pini A4'e veya Arduino Mega için A20'ye bağlanır. Üçüncü pin (SCL), Arduino Uno için A5'e veya Arduino Mega için A21'e gider.
Ayrıca, SDA pininden 5V hattına bir 4,7 kΩ direnç ve SCL pininden 5V hattına başka bir 4,7 kΩ direnç bağlamanız gerekecektir. Bu, doğru I2C iletişimini sağlar. Leonardo gibi diğer Arduino modellerini kullanıyorsanız, SDA ve SCL pinleri de sırasıyla A4 ve A5 olacaktır.
Kod Örnekleri ve Açıklaması
Bu projede kullanılan Arduino kodunun bazı önemli kısımlarına bakalım. Önce sensörü başlatıyor ve seri iletişimi kuruyoruz:
#include
AM2320 sensor;
void setup() {
Serial.begin(9600);
sensor.begin();
}
Bu kod parçacığında, gerekli kütüphaneyi #include <AM2320.h> ile dahil ediyor ve sensörün bir örneğini oluşturuyoruz. setup() işlevi, seri iletişimi 9600 baud hızında başlatır ve sensörü çalıştırır.
Ardından, sıcaklığı ve nemi okuyan ana döngüye sahibiz:
if (sensor.measure()) {
Serial.print("Sıcaklık: ");
Serial.print(temp('C'));
Serial.print(" C, Nem: ");
Serial.print(sensor.getHumidity());
Serial.println("%");
}
Bu kod, sensör ölçümünün başarılı olup olmadığını kontrol eder. Başarılıysa, sıcaklığı Celsius cinsinden ve nem yüzdesini seri monitöre yazdırır. Sıcaklığı Celsius cinsinden almak için temp('C') işlevi çağrılır. Fahrenheit istiyorsanız, temp('F') çağrısını yapabilirsiniz.
Gösterim / Beklentiler
Programı çalıştırdığınızda, seri monitörde sıcaklık ve nem okumalarının her yarım saniyede bir güncellendiğini görmelisiniz. Örneğin, çıktı "Sıcaklık: 23.5 C, Nem: %50" şeklinde görünebilir. Sensöre ısı uygularsanız, sıcaklığın arttığını ve nemin azaldığını gözlemlemelisiniz; bu da tepkiselliğini gösterir (videoda 11:15'te).
Video Zaman Damgaları
- 00:00 - AM2320 sensörüne giriş
- 01:30 - Bağlantı talimatları
- 03:45 - Kod açıklaması
- 05:15 - Okumaların gösterimi
++
/**
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
}
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Veri Sayfası (pdf)
-
Adafruit-am2320-temperature-humidity-i2c-sensor user's manual
adafruit-am2320-temperature-humidity-i2c-sensor.pdf1.27 MB
Fritzing Dosyası
-
AM2320 Humidity and Temperature Sensor
AM2320 Humidity and Temperature Sensor.fzpz0.01 MB