Inhoudsopgave:
- Stap 1: Itemlijst
- Stap 2: Relatieve introductie
- Stap 3: Verbind het circuit
- Stap 4: Bereid je voor om te compileren
- Stap 5: Testcode voor seriële poort DHT22-sensor
- Stap 6: code voor het project
- Stap 7: Beschrijving
Video: Weerstation met Arduino UNO - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Gemaakt door: Hazel Yang
Dit project is een weerstation dat een Arduino UNO-bord gebruikt om de gegevensstroom te regelen, een DHT22-sensor om de gegevens te verzamelen en een OLED-scherm om de gegevens weer te geven.
Stap 1: Itemlijst
1. Scherm: OLED, 1.3 Display SH1106, I2C witte kleur ---- PID: 18283
2. Sensor: digitale vochtigheids- en temperatuursensor DHT22 ---- PID: 7375
3. Verbindt: Doorverbindingsdraden ---- PID: 10316 of 10318 of 10312 (afhankelijk van de lengte) of u kunt massieve draad 22 AWG gebruiken ---- PID: 22490
Breadboard ---- PID: 10686 of 10698 of 103142 (afhankelijk van de grootte)
4. Voeding: deze kabel kan alleen worden aangesloten op een USB-poort van een computer en de kabel wordt ook gebruikt voor gegevensoverdracht tussen het IDE- en Arduino-bord. USB-KABEL, A NAAR B, M/M, 0,5 M (1,5 FT) ---- PID: 29862
Of u kunt dit gebruiken om het bord van stroom te voorzien: 5V 2A AC/DC-adapter ---- PID: 10817.
Stap 2: Relatieve introductie
Introductie van scherm: 1,3 OLED-scherm wit
1. U kunt het document met de basisinstellingen en beschrijvingen vinden:
Introductie van de sensor: vochtigheids- en temperatuursensor DHT22 1. U kunt het document met de beschrijvingen vinden:
Stap 3: Verbind het circuit
De DHT22-sensor stuurt seriële gegevens naar pin 2. Sluit dus de tweede pin van links aan, de "SDA"-pin moet worden aangesloten op pin 2.
Voor het SSH1106-display gebruikt het de analoge pin om te verzenden. Het circuit van het scherm zal een "SCL"-pin zijn naar Arduino's "A5" en "SDA"-pin naar Arduino's "A4". Terwijl de pixelpositiegegevens continu worden verzonden, activeert de weergavefunctie in het programma het commando slechts eenmaal elke keer dat het de gegevens van de sensor leest.
Zowel de sensor als het scherm kunnen de 3,3 V gebruiken om Arduino aan te zetten als DC-voedingsingang. Om van stroom te voorzien, moeten we beide "VCC" -pinnen verbinden met Arduino's "3.3V". En de "GND"-pinnen kunnen eenvoudig worden aangesloten op de "GND"-pin op het Arduino-bord.
Gebruik de USB A naar B kabel, sluit de Arudino aan op de computer.
Stap 4: Bereid je voor om te compileren
"u8glib" voor SSH1106-scherm van Olikraus.
"DHT-sensorbibliotheek" voor DHT22-sensor van Adafruit. U moet de twee bibliotheken downloaden: DHT22-sensorbibliotheek:
U8glib:
En gebruik "bibliotheek beheren" in IDE om ze uit te pakken. Online instructie voor het beheren van bibliotheken:
Stap 5: Testcode voor seriële poort DHT22-sensor
Test coe voor de seriële poort van de DHT22-sensor (die zich in de DHT22-bibliotheek>>voorbeelden bevindt):
(U kunt dit deel overslaan.)
Het is alleen om te testen dat de DHT22-sensor de gegevens normaal leest
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
#define DHTPIN 2
#definieer DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
ongeldige setup() {
Serieel.begin(9600);
Serial.println(F("DHT22-test!"));
dht.begin();
}
lege lus() {
// Wacht een paar seconden tussen metingen.
vertraging (2000);
// Het lezen van temperatuur of vochtigheid duurt ongeveer 250 milliseconden!
// Sensormetingen kunnen ook tot 2 seconden 'oud' zijn (het is een erg trage sensor)
float h = dht.readHumidity();
// Lees temperatuur als Celsius (de standaard)
float t = dht.readTemperature();
// Lees temperatuur als Fahrenheit (isFahrenheit = waar)
float f = dht.readTemperature(true);
// Controleer of het lezen is mislukt en sluit vroeg af (om het opnieuw te proberen).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Kan niet lezen van DHT-sensor!"));
opbrengst;
}
// Bereken warmte-index in Fahrenheit (de standaard)
float hif = dht.computeHeatIndex(f, h);
// Bereken warmte-index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Vochtigheid: "));
Seriële.print(h);
Serial.print(F("% temperatuur: "));
Seriële.print(t);
Serial.print(F("°C"));
Serieafdruk(f);
Serial.print(F("°F Warmte-index: "));
Serial.print(hic);
Serial.print(F("°C"));
Serial.print(hif);
Serial.println(F("°F"));
}
// Klik na het compileren van het programma op TOOLS >> SERIAL MONITOR om de gegevens te controleren.
// Einde van het testprogramma.
Stap 6: code voor het project
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
#define DHTPIN 2
#definieer DHTTYPE DHT22
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
DHT-sensor (DHTPIN, DHTTYPE);
nietig tekenen (nietig) {
u8g.setFont(u8g_font_unifont);
float h = sensor.readHumidity();
// Lees temperatuur als Celsius (de standaard)
float t = sensor.readTemperature();
// Controleer of het lezen is mislukt en sluit vroeg af (om het opnieuw te proberen).
if (isnan(h) || isnan(t)) {
u8g.print("Fout.");
voor(;;);
opbrengst;
}
u8g.setPrintPos(4, 10);
u8g.print("Temperatuur(C):");
u8g.setPrintPos(4, 25);
u8g.print(t);
u8g.setPrintPos(4, 40);
u8g.print("Vochtigheid(%):");
u8g.setPrintPos(4, 55);
u8g.print(h);
}
ongeldige setup (ongeldig) {
u8g.setRot180();
Serieel.begin(9600);
sensor.begin();
}
lege lus (leegte) {
// foto lus
u8g.firstPage();
doen {
tekenen();
} while(u8g.nextPage());
// herbouw de afbeelding na enige vertraging (2000);
}
// Einde van het hoofdprogramma.
Stap 7: Beschrijving
Initialiseer vervolgens het pincircuit voor het Arduino-bord. Omdat de sensorbibliotheek de gegevens nodig heeft om het object te declareren.
En u kunt de gegevens van de sensor testen door de uitvoergegevens te controleren via digitale pin 2 met behulp van de functie "Serial.print()". Omdat de frequentie van datatransmissie ongeveer 1 meting per 2 seconden is (wat 0,5 Hz is), moeten we, wanneer geprogrammeerd in Arduino IDE, de vertraging binnen de lusfunctie instellen op meer dan 2 seconden. Er is dus een "delay (2000)" in de lusfunctie. Dit zorgt ervoor dat de gegevens regelmatig worden ververst. In de functie "tekenen", haal de gegevens uit de seriële datapoort en plaats ze in zwevende getallen met behulp van de functies "readHumidity" en "readTemperature".
Print de luchtvochtigheid en temperatuur uit met behulp van de printfunctie in het "u8glib"-bestand. U kunt de positie aanpassen door het nummer te wijzigen in de functie "setPrintPos". De printfunctie kan de tekst en cijfers direct weergeven.
Geef de seriële poort een vertraging van 10 seconden om de hardware in te stellen. Roep dan de startfunctie voor de sensor aan. Volgens mijn circuit stond mijn scherm ondersteboven. Dus ik heb ook een "setRot180" -functie toegevoegd om het display te draaien.
De lusfunctie van het Arduino-bord is de belangrijkste functie. Het blijft de tekenfunctie oproepen om de tekst en gegevens weer te geven telkens wanneer de sensor wordt vernieuwd.
Het scherm ziet er als volgt uit:
U kunt de Arduino UNO loskoppelen van uw computer en deze van stroom voorzien met behulp van een 5V DC-voedingsadapter die is aangesloten op de 2,1 mm-voedingsaansluiting. Het slaat het programma op in zijn schijf en kan het programma continu opnieuw uitvoeren nadat het is ingeschakeld.
Aanbevolen:
Weerstation met Arduino: 14 stappen
Weerstation met Arduino: een weerstation bouwen met Arduino
Slim weerstation (met behulp van Arduino): 5 stappen
Slim weerstation (met behulp van Arduino): Een weerstation is een faciliteit, op het land of op zee, met instrumenten en apparatuur voor het meten van atmosferische omstandigheden om informatie te verstrekken voor weersvoorspellingen en om het weer en het klimaat te bestuderen. De metingen zijn inclusief temperatuur
Weerstation met Arduino, BME280 & display voor het zien van de trend in de afgelopen 1-2 dagen: 3 stappen (met afbeeldingen)
Weerstation met Arduino, BME280 & display voor het zien van de trend in de afgelopen 1-2 dagen: Hallo! Hier op instructables zijn al weerstations geïntroduceerd. Ze tonen de huidige luchtdruk, temperatuur en vochtigheid. Wat ze tot nu toe misten, was een presentatie van de cursus in de afgelopen 1-2 dagen. Dit proces zou de a
Weerstation met datalogging: 7 stappen (met afbeeldingen)
Weerstation met datalogging: in deze instructable laat ik je zien hoe je zelf een weerstationsysteem kunt maken. Het enige wat je nodig hebt is basiskennis van elektronica, programmeren en een beetje tijd. Dit project is nog in de maak. Dit is pas het eerste deel. Upgraden zal
Acurite 5 in 1 weerstation met een Raspberry Pi en Weewx (andere weerstations zijn compatibel): 5 stappen (met afbeeldingen)
Acurite 5 in 1 weerstation met een Raspberry Pi en Weewx (andere weerstations zijn compatibel): Toen ik het Acurite 5 in 1 weerstation had gekocht, wilde ik het weer thuis kunnen controleren terwijl ik weg was. Toen ik thuiskwam en het instelde, realiseerde ik me dat ik het beeldscherm op een computer moest aansluiten of hun slimme hub moest kopen