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.
Sommaire
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
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 |
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