Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Laget av: Hazel Yang
Dette prosjektet er en værstasjon som bruker et Arduino UNO -kort for å kontrollere dataflyten, en DHT22 -sensor for å samle data og en OLED -skjerm for å vise dataene.
Trinn 1: Vareliste
1. Skjerm: OLED, 1,3 skjerm SH1106, I2C hvit farge ---- PID: 18283
2. Sensor: Digital fuktighets- og temperatursensor DHT22 ---- PID: 7375
3. Kobler til: Jumper Wires ---- PID: 10316 eller 10318 eller 10312 (avhenger av lengden) eller du kan bruke solid wire 22 AWG ---- PID: 22490
Brødbrett ---- PID: 10686 eller 10698 eller 103142 (avhenger av størrelse)
4. Strøm: Denne kabelen kan bare kobles til en datamaskin USB -port, og kabelen brukes også til dataoverføring mellom IDE og Arduino -kortet. USB-KABEL, A TIL B, M/M, 0,5M (1,5FT) ---- PID: 29862
Eller du kan bruke dette til å drive kortet: 5V 2A AC/DC Adapter ---- PID: 10817.
Trinn 2: Relativ introduksjon
Introduksjon av skjermen: 1,3 OLED -skjerm hvit
1. Du finner dokumentet som viser det grunnleggende oppsettet og beskrivelsene:
Introduksjon av sensor: Fuktighets- og temperatursensor DHT22 1. Du finner dokumentet som viser beskrivelsene:
Trinn 3: Koble til kretsen
DHT22 -sensoren sender serielle data til pinne 2. Så, koble den andre pinnen fra venstre, "SDA" -pinnen skal kobles til pinne 2.
For SSH1106 -skjermen bruker den den analoge pinnen til å overføre. Kretsene på skjermen vil være "SCL" -pinne til Arduinos "A5" og "SDA" -pinne til Arduinos "A4". Mens pixelposisjonsdata overfører kontinuerlig, utløser visningsfunksjonen i programmet bare kommandoen en gang hver gang den leser dataene fra sensoren.
Både sensoren og skjermen kan bruke 3,3V til å slå på Arduino som DC -inngang. For å få strøm må vi koble begge "VCC" -pinnene til Arduinos "3.3V". Og "GND" -pinnene kan ganske enkelt kobles til "GND" -pinnen på Arduino -kortet.
Bruk USB A til B -kabelen, koble Arudino til datamaskinen.
Trinn 4: Forbered deg på å kompilere
"u8glib" for SSH1106 -skjerm fra Olikraus.
"DHT -sensorbibliotek" for DHT22 -sensor fra Adafruit. Du bør laste ned de to bibliotekene: DHT22 sensorbibliotek:
U8glib:
Og bruk "administrer bibliotek" i IDE for å gjøre dem pakket ut. Online instruksjon for administrering av biblioteker:
Trinn 5: Testkode for DHT22 Sensor Serial Port
Test coe for DHT22 sensor seriell port (som er inne i DHT22 biblioteket >> eksempler):
(Du kan hoppe over denne delen.)
Det er bare å teste DHT22 -sensoren som leser data normalt
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
ugyldig oppsett () {
Serial.begin (9600);
Serial.println (F ("DHT22 -test!"));
dht.begin ();
}
void loop () {
// Vent noen sekunder mellom målingene.
forsinkelse (2000);
// Å lese temperatur eller fuktighet tar omtrent 250 millisekunder!
// Sensoravlesninger kan også være opptil 2 sekunder 'gamle' (det er en veldig treg sensor)
float h = dht.readHumidity ();
// Les temperaturen som Celsius (standard)
float t = dht.readTemperature ();
// Les temperaturen som Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature (true);
// Kontroller om noen av lesningene mislyktes, og avslutt tidlig (for å prøve igjen).
hvis (isnan (h) || isnan (t) || isnan (f)) {
Serial.println (F ("Kunne ikke lese fra DHT -sensor!"));
komme tilbake;
}
// Beregn varmeindeks i Fahrenheit (standard)
float hif = dht.computeHeatIndex (f, h);
// Beregn varmeindeks i Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex (t, h, false);
Serial.print (F ("Fuktighet:"));
Serial.print (h);
Serial.print (F ("% temperatur:"));
Serial.print (t);
Serial.print (F ("° C"));
Serial.print (f);
Serial.print (F ("° F Varmeindeks:"));
Serial.print (hic);
Serial.print (F ("° C"));
Serial.print (hif);
Serial.println (F ("° F"));
}
// Etter å ha kompilert programmet, klikk på VERKTØY >> SERIALMONITOR for å kontrollere dataene.
// Slutt på testprogrammet.
Trinn 6: Kode for prosjektet
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#define DHTPIN 2
#define DHTTYPE DHT22
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);
DHT -sensor (DHTPIN, DHTTYPE);
void draw (void) {
u8g.setFont (u8g_font_unifont);
float h = sensor.readHumidity ();
// Les temperaturen som Celsius (standard)
float t = sensor.readTemperature ();
// Kontroller om noen av lesningene mislyktes, og avslutt tidlig (for å prøve igjen).
hvis (isnan (h) || isnan (t)) {
u8g.print ("Feil.");
til(;;);
komme tilbake;
}
u8g.setPrintPos (4, 10);
u8g.print ("Temperatur (C):");
u8g.setPrintPos (4, 25);
u8g.print (t);
u8g.setPrintPos (4, 40);
u8g.print ("Fuktighet (%):");
u8g.setPrintPos (4, 55);
u8g.print (h);
}
ugyldig oppsett (void) {
u8g.setRot180 ();
Serial.begin (9600);
sensor.begin ();
}
void loop (void) {
// bildesløyfe
u8g.firstPage ();
gjør {
tegne();
} mens (u8g.nextPage ());
// gjenoppbygge bildet etter en forsinkelse (2000);
}
// Slutt på hovedprogrammet.
Trinn 7: Beskrivelse
Initialiser deretter stiftkretsen for Arduino -kortet. Fordi sensorbiblioteket krever at dataene deklarerer objektet.
Og du kan teste sensorens data ved å overvåke utdataene via digital pin 2 ved å bruke funksjonen "Serial.print ()". Fordi frekvensen for dataoverføring er omtrent 1 lesing hvert 2. sekund (som er 0,5 Hz), når vi programmerer den i Arduino IDE, må vi sette forsinkelsen inne i sløyfefunksjonen til å være mer enn 2 sekunder. Så det er en "forsinkelse (2000)" inne i sløyfefunksjonen. Dette sikrer at dataene oppdateres ofte. I funksjonen "draw", hent dataene fra den serielle dataporten og sett dem inn i flytende tall ved hjelp av "readHumidity" og "readTemperature" funksjonene.
Skriv ut fuktigheten og temperaturen ved å bruke utskriftsfunksjonen i "u8glib" -filen. Du kan justere posisjonen ved å endre nummeret i "setPrintPos" -funksjonen. Utskriftsfunksjonen kan direkte vise teksten og tallene.
Gi serieporten en forsinkelse på 10 sekunder for å konfigurere maskinvaren. Ring deretter til startfunksjonen for sensoren. I følge kretsen min var skjermen min opp ned. Så jeg inkluderte også en "setRot180" -funksjon for å rotere skjermen.
Sløyfefunksjonen til Arduino -kortet er hovedfunksjonen. Det fortsetter å ringe tegnefunksjonen for å vise tekst og data hver gang sensoren oppdateres.
Skjermen ser slik ut:
Du kan koble Arduino UNO fra datamaskinen og slå den på med en 5V likestrømadapter som kobles til 2,1 mm strømkontakten. Den lagrer programmet inne i stasjonen og kan kjøre programmet kontinuerlig igjen etter å ha blitt slått på.