ESP32 er et avansert mikrokontrollerkort som kan kjøre flere instruksjoner for å generere utganger. En OLED-skjerm brukes til å vise forskjellige typer data. Ved å bruke ESP32 med DHT11-sensor kan vi ta temperatur- og fuktighetsavlesninger. Alle disse dataene kan representeres over en OLED-skjerm. Denne opplæringen dekker alle trinnene som trengs for å koble disse sensorene til ESP32.
Denne opplæringen dekker følgende innhold:
1: Introduksjon til DHT11-sensor
4: Installere de nødvendige bibliotekene
4.1: Arduino-bibliotek for DHT-sensor
4.2: Arduino-bibliotek for OLED-skjerm
5: Grensesnitt ESP32 med DHT11-sensor
1: Introduksjon til DHT11-sensor
DHT11 er en av de mest brukte temperatur- og fuktighetsovervåkingssensorene i elektronikkmiljøet. Det er mer presist når det gjelder å gi temperatur og relativ fuktighet. Den sender ut et kalibrert digitalt signal som spytter ut i to forskjellige avlesninger av temperatur og fuktighet.
Den bruker digital-signal-innsamlingsteknikken som gir pålitelighet og stabilitet. DHT11-sensoren inneholder en fuktighetsmålende komponent av resistiv type og har en NTC-temperaturmålingskomponent. Begge disse er integrert i en 8-bits svært effektiv mikrokontroller som tilbyr rask respons, anti-interferensevne og kostnadseffektivitet.
Her er noen av de viktigste tekniske spesifikasjonene til DHT11:
-
- DHT11-sensoren fungerer med en spenning på 5V til 5,5V.
- Driftsstrømmen under måling er 0,3mA og i standby-tiden er 60uA.
- Den sender ut seriedata i digitalt signal.
- Temperaturen til DHT11-sensoren varierer fra 0 °C til 50 °C.
- Fuktighetsområde: 20 % til 90 %.
- Nøyaktighet på ±1°C for temperaturmåling og ±1% for avlesninger av relativ fuktighet.
Ettersom vi har dekket en grunnleggende introduksjon til DHT11-sensor, la oss nå gå mot pinouten til DHT11.
2: DHT11 Sensor Pinout
Mesteparten av tiden kommer DHT11-sensoren i to forskjellige pin-konfigurasjoner. DHT11-sensoren som kommer i 4-pinners konfigurasjon har 3 pinner som ikke fungerer eller er merket som ingen tilkobling.
Den 3-pinners DHT11-sensormodulen kommer i tre pinner som inkluderer strøm, GND og datapin.
2.1: 3 Pins DHT11-sensor
Det gitte bildet viser 3 pin-konfigurasjoner av DHT11-sensoren.
Disse tre pinnene er:
1. | Data | Utgangstemperatur og fuktighet i seriedata |
2. | Vcc | Inngangseffekt 3,5V til 5,5V |
3. | GND | GND av kretsen |
2.2: 4-pinners DHT11-sensor
Følgende bilde illustrerer 4 pins DHT11 sensormodul:
Disse 4 pinnene inkluderer:
1. | Vcc | Inngangseffekt 3,5V til 5,5V |
2. | Data | Utgangstemperatur og fuktighet i seriedata |
3. | NC | Ingen tilkobling eller ikke brukt |
Fire. | GND | GND av kretsen |
3: OLED-skjermmodul med ESP32
OLED-skjermen kommer hovedsakelig med to forskjellige kommunikasjonsprotokoller. De to protokollene er I2C og SPI. Det serielle perifere grensesnittet (SPI) er generelt raskere enn I2C, men vi foretrakk I2C fremfor SPI-protokollen da den krevde et mindre antall pinner.
Følgende bilde illustrerer ESP32-koblingsskjema med 128×64 piksler (0,96 tommer) OLED-skjerm.
Nedenfor er tilkoblingstabellen:
Når ESP32 er koblet til en OLED-skjerm, er neste trinn på listen å installere alle nødvendige biblioteker for ESP32-programmering ved hjelp av Arduino IDE.
4: Installere de nødvendige bibliotekene
Her skal vi koble to forskjellige sensorer med ESP32, så begge krever separate biblioteker for å fungere. Nå skal vi installere biblioteker for DHT11 og OLED-skjerm.
4.1: Arduino-bibliotek for DHT-sensor
Åpne Arduino IDE, gå til: Skisse>Inkluder bibliotek>Administrer biblioteker
Alternativt kan vi også åpne biblioteksjefen fra sideknappen på Arduino IDE-grensesnittet.
Søk etter DHT-biblioteket og installer den siste oppdaterte versjonen. DHT-biblioteket hjelper deg med å lese sensordata.
Etter å ha installert DHT-biblioteket, må vi installere en enhetlig sensorbibliotek av Adafruit.
4.2: Arduino-bibliotek for OLED-skjerm
Flere biblioteker er tilgjengelige i Arduino IDE for å programmere ESP32 med en OLED-skjerm. Her skal vi bruke to biblioteker fra Adafruit: SSD1306 og GFX-bibliotek.
Åpne IDE og klikk på Library Manager og søk etter OLED SSD1306-biblioteket. Installer SSD1306-biblioteket av Adafruit fra søkefeltet.
Alternativt kan man også gå til: Skisse>Inkluder bibliotek>Administrer biblioteker
Det neste biblioteket vi må installere er GFX bibliotek av Adafruit.
Vi har installert biblioteker for både OLED-skjermen og DHT11-sensoren. Nå kan vi enkelt koble begge med ESP32.
5: Grensesnitt ESP32 med DHT11-sensor og OLED
For å koble ESP32 med DHT11-sensor trenger vi en digital pin for å lese sensordata, og for å drive DHT11-sensor kan vi enten bruke 3V3-pinnen eller Vin-pinnen til ESP32.
For OLED-skjermer vil I2C-pinner SDA og SCL bli brukt. For strømforsyning kan vi bruke Vin eller en 3V3-pinne på ESP32.
5.1: Skjematisk
I det gitte bildet kan vi se det skjematiske diagrammet av ESP32 med DHT11 og for utgang brukes en OLED-skjerm. Dette bildet representerer den 3-pinners sensormodulen som har grensesnitt med ESP32. Husk å koble til en pull up-motstand på 10kΩ.
På samme måte kan 4-pinners DHT11 også kobles til, den eneste forskjellen her er 3-pinners som ikke er til nytte eller betegnes som Ingen tilkobling. Datapinnen er ved pinne 2 på sensoren.
OLED-skjermen kobles til ved hjelp av I2C SDA- og SCL-pinnene på henholdsvis D21 og D22.
5.2: Kode
Koble ESP32 til PC og åpne Arduino IDE. Last opp den gitte koden til ESP32-kortet.
#include#include
#include
#include
#include
#define SCREEN_WIDTH 128 /*OLED-skjermbredde 128 piksler*/
#define SCREEN_HEIGHT 64 /*OLED-skjermhøyde 64 piksler*/
Adafruit_SSD1306-skjerm ( SCREEN_WIDTH, SCREEN_HEIGHT, & ledning, - 1 ) ; /* SSD1306 I2C Displayinitialisering */
#define DHTPIN 4 /*Signalpinne for DHT11-sensor*/
#define DHTTYPE DHT11
DHT dht ( DHTPIN, DHTTYPE ) ;
ugyldig oppsett ( ) {
Serial.begin ( 115200 ) ;
dht.begynn ( ) ;
hvis ( ! display.begin ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* I2C Adresse kl hvilken OLED er tilkoblet */
Serial.println ( F ( 'SSD1306-tildeling mislyktes' ) ) ;
til ( ;; ) ;
}
forsinkelse ( 2000 ) ;
display.clearDisplay ( ) ;
display.setTextColor ( HVIT ) ; /* Utgangstekstfarge hvit */
}
ugyldig sløyfe ( ) {
forsinkelse ( 5000 ) ;
float t = dht.readTemperature ( ) ; /* lese temperatur */
float h = dht.readFuktighet ( ) ; /* lese luftfuktighet */
hvis ( er en ( h ) || er en ( t ) ) {
Serial.println ( 'Kunne ikke lese fra DHT-sensor!' ) ;
}
display.clearDisplay ( ) ; /* klar OLED-skjerm før visning av lesing */
display.setTextSize ( 1 ) ; /* OLED-tekstfont størrelse */
display.setCursor ( 0 , 0 ) ;
display.print ( 'Temperatur:' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , 10 ) ;
display.print ( t ) ; /* utskriftstemperatur i Celsius */
display.print ( ' ' ) ;
display.setTextSize ( 1 ) ;
display.cp437 ( ekte ) ;
display.write ( 167 ) ;
display.setTextSize ( 2 ) ;
display.print ( 'C' ) ;
display.setTextSize ( 1 ) ;
display.setCursor ( 0 , 35 ) ;
display.print ( 'Luftfuktighet: ' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , Fire fem ) ;
display.print ( h ) ; /* skriver ut fuktighetsprosent */
display.print ( '%' ) ;
display.display ( ) ;
}
Koden startet med å inkludere de nødvendige bibliotekene for OLED- og DHT11-sensorer. Etter det defineres OLED-skjermdimensjonene. Deretter defineres DHT-sensortypen hvis du bruker DHT22, bytt den ut tilsvarende.
I oppsettsdelen er DHT-sensor og OLED-skjerm initialisert. OLED-skjermen er koblet til en I2C-adresse på 0x3C. I tilfelle man ønsker å sjekke I2C-adressen last opp koden gitt i denne artikkel .
Temperatur- og fuktighetsverdiene lagres inne i flytevariabelen t og h hhv. Deretter skrives begge disse verdiene ut på en OLED-skjerm.
5.3: Utgang
I utgangen kan vi se sanntidsmålt temperatur og fuktighet vist på OLED-skjermen.
Vi har fullført grensesnittet til ESP32 med DHT11-sensor og OLED-skjerm.
Konklusjon
OLED-skjermer med ESP32 kan vise flere data som leses ved hjelp av de eksterne sensorene. Her dekker denne artikkelen alle trinn for å koble ESP32 med DHT11-sensor for å måle temperaturen og fuktigheten i et rom. Etter det vises alle lesedata på I2C OLED-skjermmodulen.