IR-Thermometer - AZ-Delivery

Hola.

Hoy me gustaría mostrarle cómo implementar un termómetro IR con nuestro módulo GY-906, un Nano V3 y un OLED con pocas líneas de código. La construcción es adecuada para el control de temperaturas sin contacto, por ejemplo, máquinas o similares.

Así que necesitamos:

1x Nano V3
1x OLED 0.96"
1x GY-906
1x Mini-Breadboard m. Jumper-Wire
1x soporte de batería 9V

Opcionalmente puede usar el proyecto para diodo láser o un módulo de botón expandirse.

El cableado:

Nano GY-906 Oled clip de batería
VIN +
GND GND GND -
5V VCC
3.3V VCC
A5 SCL SCL
A4 SDA SDA

 

La biblioteca necesaria:

Instale ambas bibliotecas como de costumbre a través de su administrador de biblioteca en el IDE Arduino. Si desea utilizar la última versión puede obtenerla a través de GitHub e incluirla como *.zip, pero esto tiene la desventaja de tener que mantener la nueva versión usted mismo.

Utilice el administrador de la biblioteca para instalarlo será notificado por el IDE una vez que se proporcione una nueva versión y pueda actualizarla haciendo clic. La siguiente captura de pantalla muestra las dos bibliotecas:

- GY-906 -en github

Para emitir los valores en la pantalla, ahora usamos la biblioteca de Adafruit:

Código Hier der:

 

#incluir <Draht.h>
#incluir <Adafruit_MLX90614.h>
#incluir <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 Anchura de pantalla // OLED, en píxeles
#define SCREEN_HEIGHT 64 Altura de pantalla // OLED, en píxeles


Adafruit_SSD1306 Anzeige(SCREEN_WIDTH, SCREEN_HEIGHT, &Draht, -1);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

read Configuración() {      Serien.beginnen(9600);   Serien.println("Prueba de adecuación MLX90614");    wenn(!Anzeige.beginnen(SSD1306_SWITCHCAPVCC, 0x3C)) {     Serien.println(F("SSD1306 init falló"));     für(;;);   }      Anzeige.Despejar pantalla();   Anzeige.setRotation(0);   Anzeige.setTextSize(1);   Anzeige.setTextColor(BLANCO);   Anzeige.setCursor(0, 35);   Anzeige.println("Init...");   Anzeige.Anzeige();   Verzögerung(500);   Anzeige.Despejar pantalla();   mlx.beginnen();     }

read Schleife() {     Anzeige.Despejar pantalla();     Anzeige.setTextSize(2);     Anzeige.setCursor(25, 10);     Anzeige.drucken(mlx.readAmbientTempC()); //Umgebungstemperatur     Anzeige.setCursor(95, 10);     Anzeige.drucken("C");     Anzeige.setTextSize(2);     Anzeige.setCursor(25, 36);     Anzeige.drucken(mlx.readObjectTempC()); //IR-Temperatur     Anzeige.setCursor(95, 36);     Anzeige.drucken("C");     Anzeige.Anzeige();   Serien.println();   Verzögerung(1000);
}

Después de inicializar el hardware en la configuración de vacío, el entorno y la temperatura IR se muestran en el bucle.

Bis zum nächsten mal :)

DisplaysFür arduinoProjekte für anfänger

2 comentarios

Peter Mauß

Peter Mauß

Verwende dieses Setup allerdings mit einem 1.3"OLed mit der U8G2 Lib. Als Temparatur wird mir allerdings 1037.55 °C ausgegeben. Wenn ich die U8G2 auskommentiere und über Serial ausgebe, scheint alles zu passen (23,93 und 27,23).
Mit der U8G2 funktionierts dann, wenn ich am Beginn des loop einen mlx.begin() setze und dann die Temperaturen auslese.
Wer pfuscht da wem in den Registern herum?

Achim Pellmann

Achim Pellmann

Der Upload wird abgebrochen mit der Fehlermeldung:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0×0f
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0×0f
avrdude: stk500_recv(): programmer is not responding
usw.
Ich bin begeistert von Ihren Beispielvorstellungen und habe auch schon einiges nach gebaut. Daher wäre es schön, wenn Sie mir weiterhelfen könnten.
MfG Achhim Pellmann

Deja un comentario

Todos los comentarios son moderados antes de ser publicados