ESP32 - Temperatuursensor - OLED

Deze handleiding laat u zien hoe u de temperatuur uitleest van de DS18B20 one wire sensor en deze weergeeft op een OLED.

ESP32 Temperatuursensor OLED

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×SSD1306 I2C OLED-Display 128x64
1×SSD1306 I2C OLED-Display 128x32
1×DS18B20 Temperatuursensor (MET Adapter)
1×DS18B20 Temperatuursensor (ZONDER Adapter)
1×Breadboard (experimenteerprint)
1×Jumper Draden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Aankoopadvies: Veel DS18B20-sensoren op de markt zijn van lage kwaliteit. We raden u ten zeerste aan de sensor van het merk DIYables te kopen via de bovenstaande link. We hebben het getest en het werkte goed.

Over OLED en DS18B20 Temperatuursensor

Als u nog niet bekend bent met OLED en de DS18B20 Temperatuursensor (pinout, werking, programmeren ...), leer er meer over in de volgende tutorials:

Bedradingsschema

  • Hoe u ESP32 aansluit op de temperatuursensor en OLED met behulp van een breadboard
ESP32 Temperatuursensor OLED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe ESP32 aansluit op temperatuursensor en oled

This image is created using Fritzing. Click to enlarge image

Wij raden aan om een DS18B20 sensor met een aansluitadapter te kopen voor eenvoudige aansluiting. De adapter bevat een ingebouwde weerstand, waardoor een aparte weerstand in de bedrading niet nodig is.

ESP32 Code - Temperatuur uitlezen van DS18B20 Temperatuursensor en weergeven op OLED

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-temperature-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <OneWire.h> #include <DallasTemperature.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define SENSOR_PIN 23 // The ESP32 pin GPIO23 connected to DS18B20 sensor's data pin Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature DS18B20(&oneWire); // pass oneWire to DallasTemperature library String temperature; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display DS18B20.begin(); // initialize the sensor temperature.reserve(10); // to avoid fragmenting memory when using String } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures float tempCelsius = DS18B20.getTempCByIndex(0); // read temperature in Celsius temperature = String(tempCelsius, 2); // two decimal places temperature += char(247) + String("C"); Serial.println(temperature); // print the temperature in Celsius to Serial Monitor oledDisplayCenter(temperature); } void oledDisplayCenter(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // display on horizontal and vertical center oled.clearDisplay(); // clear display oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Snel aan de slag

  • Als u voor het eerst ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals op de afgebeelde foto.
  • Verbind de ESP32 met uw pc via een micro USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Klik op het Libraries icoon in de linker zijbalk van de Arduino IDE.
  • Zoek op “SSD1306” en selecteer de SSD1306 library van Adafruit.
  • Klik op de Installeren-knop om de library te installeren.
ESP32 OLED library
  • U krijgt een melding voor het installeren van extra library-afhankelijkheden.
  • Klik op Alles installeren om alle vereiste dependencies te installeren.
ESP32 Adafruit GFX sensor library
  • Zoek op “DallasTemperature” in het zoekveld en kies de DallasTemperature library van Miles Burton.
  • Klik op Installeren om DallasTemperature te installeren.
ESP32 Dallas Temperature library
  • U wordt gevraagd ook de benodigde dependency te installeren. Klik op Alles installeren om OneWire library te installeren.
ESP32 onewire library
  • Kopieer de bovenstaande code en open deze in Arduino IDE.
  • Klik op de Uploaden-knop in Arduino IDE om de code naar ESP32 te uploaden.
  • Houd de sensor in warm en koud water, of houd de sensor in uw hand.
  • Bekijk het resultaat op het OLED display.
ESP32 toont temperatuur op OLED

※ Notiz:

De bovenstaande code centreert de tekst automatisch horizontaal en verticaal op het OLED scherm.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en laat stap voor stap zien hoe u deze tutorial kunt volgen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!