IR-thermometer

Hallo iedereen

Vandaag wil ik u laten zien hoe u een IR thermometer implementeren met onze GY-906 module, een Nano V3 en een OLED met een paar regels code. Het ontwerp is zeer geschikt voor contactloze monitoring van temperaturen, bijvoorbeeld op machines of dergelijke.

Dus we moeten:

1x Nano V3
1x OLED 0,96 inch
1x GY-906 GY-906
1x Mini-Breadboard m. Jumper-Wire
1x 9V batterijhouder

Optioneel u een aantal Laserdiode of een Knopmodule Uitbreiden.

De bedrading:

Nano GY-906 GY-906 Oled Batterijclip
Vin +
Gnd Gnd Gnd -
5v Vcc
3.3V Vcc
A5 Scl Scl
A4 Sda Sda

 

De nodige bibliotheken:

Installeer beide bibliotheken zoals gewoonlijk via uw bibliotheekmanager in de Arduino IDE. Als u de nieuwste versie wilt gebruiken, u deze verkrijgen via GitHub en deze opnemen als *.zip, maar dit heeft het nadeel dat u zelf een nieuwe versie moet onderhouden.

Gebruik de bibliotheekbeheerder voor de installatie om u op de hoogte te stellen door de IDE wanneer een nieuwe versie beschikbaar wordt gesteld en kan deze bijwerken door te klikken. De volgende screenshot toont de twee bibliotheken:

- GY-906 - op Github

Om de waarden op het display uit te geven, gebruiken we vandaag de Adafruit-bibliotheek:

Hier is de code:

 

#include <Draad.H>
#include <Adafruit_MLX90614.H>
#include <Adafruit_SSD1306.H>

#define SCREEN_WIDTH 128 OLED-schermbreedte, in pixels
#define SCREEN_HEIGHT 64 OLED-weergavehoogte, in pixels


Adafruit_SSD1306 Weergeven(SCREEN_WIDTH, SCREEN_HEIGHT, &Draad, -1);
Adafruit_MLX90614 Mlx (MLX) = Adafruit_MLX90614();

Void Setup() {      Seriële.Beginnen(9600);   Seriële.println("Adafruit MLX90614 test");    Als(!Weergeven.Beginnen(SSD1306_SWITCHCAPVCC, 0x3C)) {     Seriële.println(V("SSD1306 init mislukt"));     Voor(;;);   }      Weergeven.clearDisplay();   Weergeven.setRotatie(0);   Weergeven.setTextSize(1);   Weergeven.setTextColor(Witte);   Weergeven.setCursor(0, 35);   Weergeven.println("Init...");   Weergeven.Weergeven();   Vertraging(500);   Weergeven.clearDisplay();   Mlx (MLX).Beginnen();     }

Void Lus() {     Weergeven.clearDisplay();     Weergeven.setTextSize(2);     Weergeven.setCursor(25, 10);     Weergeven.Afdrukken(Mlx (MLX).leesAmbientTempC()); Omgevingstemperatuur     Weergeven.setCursor(95, 10);     Weergeven.Afdrukken("C");     Weergeven.setTextSize(2);     Weergeven.setCursor(25, 36);     Weergeven.Afdrukken(Mlx (MLX).leesObjectTempC()); IR-temperatuur     Weergeven.setCursor(95, 36);     Weergeven.Afdrukken("C");     Weergeven.Weergeven();   Seriële.println();   Vertraging(1000);
}

Na het initialiseren van de hardware in lege opstelling, wordt de omgevingstemperatuur weergegeven in de lus en vervolgens de IR-temperatuur. 

Tot de volgende keer :)

DisplaysFür arduinoProjekte für anfänger

2 Kommentare

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

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi