Code de recherche

Code Arduino et vidéo pour un capteur numérique de température et d'humidité Aosong AM2320

Code Arduino et vidéo pour un capteur numérique de température et d'humidité Aosong AM2320

Dans ce tutoriel, nous allons voir comment utiliser le capteur numérique de température et d'humidité Aosong AM2320 avec Arduino. Ce capteur communique via I2C et nous permet de lire la température en degrés Celsius ou Fahrenheit, ainsi que l'humidité en pourcentage. À la fin de ce tutoriel, vous serez en mesure de réaliser un projet simple qui affiche ces relevés sur le moniteur série.

Le capteur AM2320 est compact et fournit des données fiables pour la température et l'humidité. Il offre une résolution de 0.1°C pour la température et une plage d'humidité de 0-99%. Le processus d'installation consiste à câbler le capteur à l'Arduino et à écrire quelques lignes de code pour lire et afficher les valeurs du capteur. Ce tutoriel vidéo propose un guide pas à pas, incluant des exemples de câblage et de codage (dans la vidéo à 00:00).

Matériel expliqué

Le composant principal de ce projet est le capteur Aosong AM2320. Il fonctionne en utilisant la communication I2C, ce qui simplifie le processus de connexion car il ne nécessite que deux lignes de données (SDA et SCL) ainsi que l'alimentation et la masse. Le capteur mesure la température dans la plage de −40 °C à +80 °C avec une précision de ±0,5 °C et l'humidité de 0 % à 99 % avec une précision similaire. Le capteur est conçu pour une très faible consommation d'énergie, ce qui le rend adapté aux appareils alimentés par batterie.

De plus, le module AM2320 intègre des résistances de pull-up nécessaires à la communication I2C, ce qui aide à stabiliser les signaux sur les lignes SDA et SCL. Cette fonctionnalité simplifie le câblage, car vous n'aurez pas besoin d'ajouter des résistances de pull-up externes.

Détails de la fiche technique

FabricantAosong
Numéro de pièceAM2320
Tension logique/E/S3,1 à 5,5 V
Tension d'alimentation3,1 à 5,5 V
Plage de températurede -40 à +80 °C
Plage d'humidité0 à 99 %
Résolution (Température)0,1 °C
Résolution (Humidité)0,1 %
Précision (Température)±0,5 °C
Précision (Humidité)±3 %
PaquetModule

  • Assurez-vous d'une tension d'alimentation correcte (3,1 à 5,5 V).
  • Utilisez des résistances de pull-up (typiquement 4,7 kΩ) pour les lignes SDA et SCL.
  • Maintenez la plage de température entre -40 °C et +80 °C pour éviter tout dommage.
  • Les mesures d'humidité sont précises dans la plage de 0 % à 99 %.
  • Surveillez les codes d'erreur lors des relevés (p. ex. : capteur hors ligne).

Instructions de câblage

Arduino wiring for AM2320 sensor
Arduino wiring for AM2320 sensor

Pour câbler le capteur AM2320 à l'Arduino, suivez ces étapes attentivement. Tout d'abord, connectez les broches d'alimentation : la broche la plus à gauche de l'AM2320 se connecte au 5V de l'Arduino (ou VCC), tandis que la broche GND se connecte au GND de l'Arduino. La deuxième broche en partant de la gauche (SDA) se connecte à la broche analogique A4 pour un Arduino Uno ou à A20 pour un Arduino Mega. La troisième broche (SCL) va sur A5 pour un Arduino Uno ou A21 pour un Arduino Mega.

De plus, vous devrez connecter une résistance de 4.7 kΩ entre la broche SDA et la ligne 5V et une autre résistance de 4.7 kΩ entre la broche SCL et la ligne 5V. Cela garantit une communication I2C correcte. Si vous utilisez d'autres modèles d'Arduino comme le Leonardo, les broches SDA et SCL seront également A4 et A5, respectivement.

Exemples de code et tutoriel

Jetons un coup d'œil à certaines parties clés du code Arduino utilisé dans ce projet. Tout d'abord, nous initialisons le capteur et configurons la communication série :

#include 
AM2320 sensor;

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

Dans cet extrait, nous incluons la bibliothèque nécessaire avec#include <AM2320.h>et créez une instance du capteur. Lesetup()La fonction initialise la communication série à 9600 bauds et démarre le capteur.

Ensuite, nous avons la boucle principale qui lit la température et l'humidité :

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

Ce code vérifie si la mesure du capteur a réussi. Le cas échéant, il affiche la température en degrés Celsius et le pourcentage d'humidité sur le moniteur série. Letemp('C')Cette fonction est appelée pour récupérer la température en degrés Celsius. Si vous voulez la température en degrés Fahrenheit, vous pouvez appelertemp('F').

Démonstration / À quoi s'attendre

Lorsque vous exécutez le programme, vous devriez voir les relevés de température et d'humidité se mettre à jour toutes les demi-secondes dans le moniteur série. Par exemple, la sortie pourrait afficher Température: 23.5 C, Humidité: 50%. Si vous appliquez de la chaleur au capteur, vous devriez observer une augmentation de la température et une diminution de l'humidité, démontrant sa réactivité (dans la vidéo à 11:15).

Horodatages vidéo

  • 00:00- Introduction au capteur AM2320
  • 01:30- Instructions de câblage
  • 03:45- Présentation du code
  • 05:15- Démonstration des relevés

Images

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

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Fiche technique (pdf)

Fichier Fritzing