Arduino Nano - Temperatuursensor - OLED

Deze handleiding legt uit hoe u de Arduino Nano kunt gebruiken om de temperatuur te meten met een DS18B20 one wire sensor en deze op een OLED display weer te geven.

Arduino Nano DS18B20 Temperatuursensor OLED

Hardware Benodigd

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×SSD1306 I2C OLED-Display 128x64
1×SSD1306 I2C OLED-Display 128x32
1×DS18B20 Temperatuursensor (MET adapter)
1×DS18B20 Temperatuursensor (ZONDER adapter)
1×4,7 kΩ weerstand
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 niet bekend bent met het OLED-display en de DS18B20 Temperatuursensor (pinout, hoe deze werkt, hoe te programmeren, enz.), kunnen de volgende tutorials u meer informatie bieden:

Bedradingsschema

  • Bedradingsschema met gebruik van een breadboard (experimenteerprint).
Arduino Nano Temperatuursensor OLED bedradingsschema

This image is created using Fritzing. Click to enlarge image

  • Bedradingsschema met gebruik van een terminal adapter (aanbevolen).
Arduino Nano DS18B20 Temperatuursensor OLED bedradingsschema

This image is created using Fritzing. Click to enlarge image

We raden aan om een DS18B20 sensor inclusief bijbehorende bedrading adapter aan te schaffen voor een eenvoudige installatie. Deze adapter bevat een geïntegreerde weerstand, waardoor een aparte weerstand in de bedrading niet nodig is.

Arduino Nano Code - Temperatuur uitlezen van DS18B20 Temperatuursensor en weergeven op OLED

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-temperature-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <OneWire.h> #include <DallasTemperature.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels #define SENSOR_PIN 2 // The Arduino Nano pin connected to DS18B20 sensor's DQ pin Adafruit_SSD1306 oled(OLED_WIDTH, OLED_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_str; 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_str.reserve(10); // to avoid fragmenting memory when using String } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures float temperature_C = DS18B20.getTempCByIndex(0); // read temperature in Celsius temperature_str = String(temperature_C, 2); // two decimal places temperature_str += char(247) + String("C"); Serial.println(temperature_str); // print the temperature in Celsius to Serial Monitor oled_display_center(temperature_str); } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Snelle Stappen

  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “SSD1306” en vind de SSD1306 bibliotheek van Adafruit.
  • Druk vervolgens op de Installeren-knop om de installatie te voltooien.
Arduino Nano OLED bibliotheek
  • Er wordt gevraagd enkele aanvullende bibliotheekafhankelijkheden te installeren.
  • Klik op de Alles installeren-knop om deze allemaal te installeren.
Arduino Nano Adafruit GFX sensor bibliotheek
  • Zoek naar “Dallas” en vind daarna de DallasTemperature bibliotheek van Miles Burton.
  • Druk op de Installeren-knop om de DallasTemperature bibliotheek te installeren.
Arduino Nano Dallas Temperatuur bibliotheek
  • U wordt gevraagd de afhankelijkheid te installeren. Klik op de Alles installeren-knop om de OneWire bibliotheek te installeren.
Arduino Nano onewire bibliotheek
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code te compileren en naar de Arduino Nano te uploaden.
  • Plaats de sensor in heet en koud water, of houd hem in uw hand.
  • Bekijk het resultaat op het OLED-display.

※ Notiz:

De code centreren zowel horizontaal als verticaal de tekst op het OLED-display.

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 helpt eventuele onduidelijkheden snel op te lossen.

※ 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!