Test caméra thermique AMG8833/AMG8831 avec du code Arduino. Capteur infrarouge matriciel 64 points • Domotique et objets connectés à faire soi-même

Le AMG88xx (AMG8833 / AMG8831) de Panasonic est un capteur infrarouge matriciel Grid-EYE permettant de cartographier simultanément 64 températures (8×8 pixels). Il détecte la chaleur (le rayonnement infrarouge) du corps humain ou tout autre objet de -20°C à +80°C.

Attention, ce capteur n’offre pas une précision suffisante (± 2,5°C) pour un usage médical. Il ne faut pas l’utiliser pour un usage médical tel que la détection du COVID-19. On pourra par exemple l’utiliser pour faire de la détection de présence, du diagnostic de panne par analyse thermique..

Les capteurs de la série AMG88xx de Panasonic sont des capteurs matriciels constitués de 64 points de mesure. La matrice carrée est constituée 8 x 8 pixels.

Sensibles au rayonnement infrarouge, il permettent de détecter la chaleur émise par le corps humain ou tout autre objet de -20°C à +80°C.

L’image, la matrice de température peut être récupérée sur un micro-contrôleur ou un Raspberry Pi via le bus I2C.

Il existe 4 versions du capteur. Les différences étant situés au niveau de la tension d’alimentation (3V3 ou 5V) et le facteur de gain (faible ou élevé). Dans le grand public, on trouve surtout la version AMG8833/AMG8831. La seconde référence indiquée sur le breakout (carte fille) est la référence de l’ancienne génération (voir plus bas pour plus de détails). Cela n’a aucun impact sur le fonctionnement. Panasonic n’indique pas clairement les changements d’une génération à l’autre.

Spécifications techniques des AMG88xx

Spécifications techniques générales collectées dans les documentations techniques de Panasonic indiquées à la fin du paragraphe.

  • Mesure de température à matrice carrée constituée de 64 points (8×8 pixels)
  • Tension d’utilisation : 3.3V ou 5V
  • Plage de mesure de température : -20°C à +80°C (ou 0°C à +80°C en mode haute performance)
  • Précision de la température : ± 2,5°C ou ±4,5°F (typique)
  • Distance de détection humaine : 7m maximum
  • Différence de température équivalente au bruit est de 0,05°C à 1 Hz
  • Angle de mesure : 60°
  • Consommation de courant : 4,5mA (mode normal), 0,2mA (mode sommeil), 0,8mA (mode veille)
  • Interface I2C
  • Fréquence d’images : de 1 ou 10 images par seconde
  • Temps pour activer la communication après la configuration : 50ms puis 15ms
  • Notices techniques Panasonic

Voir plus de produits

Différences entre les désignations AMG8833 et AMG8831

Il existe deux générations du capteur AMG. La versions actuelle (33,34,53,54) et ancienne (31, 32, 51, 52). C’est la raison pour laquelle on trouve souvent les deux références sur les cartes filles (breakout).

La référence la plus courante est l’AMG8833/31.

Le tableau ci-dessous permet de retrouver les spécifications techniques à partir de la désignation du produit.

AMG 8 8 X X
Racine Nombre de pixels verticaux Nombre de pixels horizontaux Tension d’alimentation

3. 3.3V

5. 5V

Amplification

3. Gain élevé

4. Gain faible

Evolution des références entre les générations

Panasonic a fait évolué le produit (probablement les méthodes de fabrication) sans pour autant faire évoluer les caractéristiques techniques.

Pour faire la différence entre les deux générations de capteur, Panasonic a fait varie le dernier chiffre de la référence.

Le tableau ci-dessous permet de faire la correspondance entre les deux générations.

En gras la référence testée dans ce tutoriel.

Référence Equivalent ancienne référence Tension d’alimentation Amplification du signal
AMG8833 AMG8831 3V3 Elevée
AMG8834 AMG8832 3V3 Faible
AMG8853 AMG8851 5V Elevée
AMG8854 AMG8852 5V Faible

Librairies Arduino et Python

Plusieurs librairies sont disponibles pour piloter les capteurs AMG88xx depuis un projet Arduino, ESP8266, ESP32, CircuitPython et Python sur Raspberry Pi ou un autre SBC

Exemple de code Arduino avec la librairie Adafruit AMG88xx

Pour cet exemple nous allons utiliser la librairie Adafruit AMG88xx que l’on peut installer directement depuis le gestionnaire de librairies de l’IDE Arduino.

Circuit

La communication avec l’AMG8833 se faisant via le bus I2C, le circuit est rudimentaire. Voici le repérage des broches pour un Arduino, ESP32 et ESP8266.

AMG8833 Arduino ESP8266 ESP32
SDA SDA D2 IO21
SCL SCL D1 IO22
GND GND GND GND
3V 3V3 3V3 3V3

reskx5kpmk6vusngfn0y-7656877

Code Arduino compatible ESP32 ou ESP8266

Créer un nouveau croquis et coller le code Arduino adapté de l’exemple installé avec la librairie Adafruit.

Ce code récupère une matrice de températures chaque seconde et calcul le minimum, le maximum et la température moyenne des 64 points.

#include 
#include  
#define DISPLAY_MATRIX true   // Affiche la matrice de temperature | display te temperature matrix

Adafruit_AMG88xx amg;

float pixels[AMG88xx_PIXEL_ARRAY_SIZE];

void setup() {
  Serial.begin(115200);
  Serial.println(F("AMG88xx pixels"));

  bool status;

  status = amg.begin();
  if (!status) {
    Serial.println("Could not find a valid AMG88xx sensor, check wiring!");
    while (1);
  }

  Serial.println("--  Begin AMG88xx Test --");
  Serial.println();

  delay(100);   // let sensor boot up - attend le démarrage de capteur
}

void loop() {
  //read all pixels - lit tous les pixels du capteur
  amg.readPixels(pixels);

  // Variables temporaires - Temp. var.
  float sum = 0;
  float mini = 80;
  float maxi = 0;
  float average = 0;

  for (int i = 1; i  maxi ) maxi = pixels[i - 1]; // trouve la température maxi - find max. temp.
    sum += pixels[i - 1];                          // additionne toutes les températures - add all temp.
  }

  average = sum / AMG88xx_PIXEL_ARRAY_SIZE; // calcul la température moyenne de la matrice - calculate matrix average
  // Imprime les résultats - print results
  Serial.print("Temp. mini: "); Serial.print(mini);
  Serial.print(" Temp. maxi: "); Serial.print(maxi);
  Serial.print(" Average: "); Serial.print(average); Serial.println();

  if ( DISPLAY_MATRIX ) {
    Serial.print("[");
    for (int i = 1; i