Innholdsfortegnelse:
- Trinn 1: Vareliste
- Trinn 2: Relativ introduksjon
- Trinn 3: Koble til kretsen
- Trinn 4: Forbered deg på å kompilere
- Trinn 5: Testkode for DHT22 Sensor Serial Port
- Trinn 6: Kode for prosjektet
- Trinn 7: Beskrivelse
Video: Værstasjon som bruker Arduino UNO: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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å.
Anbefalt:
Profesjonell værstasjon som bruker ESP8266 og ESP32 DIY: 9 trinn (med bilder)
Profesjonell værstasjon ved bruk av ESP8266 og ESP32 DIY: LineaMeteoStazione er en komplett værstasjon som kan grensesnittes med profesjonelle sensorer fra Sensirion samt noen Davis Instrument -komponent (regnmåler, vindmåler) Prosjektet er beregnet som en DIY værstasjon, men bare krever
Enkel værstasjon som bruker ESP8266 .: 6 trinn (med bilder)
Enkel værstasjon som bruker ESP8266 .: I denne instruksen vil jeg dele hvordan jeg bruker ESP8266 for å få data som temperatur, trykk, klima etc. Og YouTube -data som abonnenter og amp; Totalt antall seere. og vis dataene på seriell skjerm og vis dem på LCD. Dataene vil være f
Personlig værstasjon som bruker Raspberry Pi med BME280 i Java: 6 trinn
Personal Weather Station Using Raspberry Pi With BME280 in Java: Dårlig vær ser alltid verre ut gjennom et vindu. Vi har alltid vært interessert i å overvåke vårt lokale vær og det vi ser ut av vinduet. Vi ønsket også bedre kontroll over vårt varme- og klimaanlegg. Å bygge en personlig værstasjon er et godt
Værstasjon som bruker Wemos D1 Mini, BME280 og Sensate .: 6 trinn
Værstasjon ved hjelp av Wemos D1 Mini, BME280 og Sensate .: I tidligere innlegg har jeg delt forskjellige metoder for å bygge en værstasjon. Hvis du ikke har sjekket det, er det en lenke. I denne instruksen vil jeg demonstrere hvordan du bygger en enkel værstasjon ved hjelp av Wemos og en IoT -plattform som heter Sensate
DIY værstasjon som bruker DHT11, BMP180, Nodemcu med Arduino IDE over Blynk Server: 4 trinn
DIY Weather Station Bruke DHT11, BMP180, Nodemcu Med Arduino IDE Over Blynk Server: Github: DIY_Weather_Station Hackster.io: Weather Station Du ville ha sett Weather Application riktig? Som når du åpner den, blir du kjent med værforholdene som temperatur, fuktighet osv. Disse målingene er gjennomsnittsverdien til en stor er