Innehållsförteckning:

Väderstation med Arduino UNO: 7 steg
Väderstation med Arduino UNO: 7 steg

Video: Väderstation med Arduino UNO: 7 steg

Video: Väderstation med Arduino UNO: 7 steg
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Juli
Anonim
Väderstation med Arduino UNO
Väderstation med Arduino UNO

Skapad av: Hazel Yang

Detta projekt är en väderstation som använder ett Arduino UNO -kort för att styra dataflödet, en DHT22 -sensor för att samla in data och en OLED -skärm för att visa data.

Steg 1: Objektlista

Objektlista
Objektlista

1. Skärm: OLED, 1,3 Display SH1106, I2C vit färg ---- PID: 18283

2. Sensor: Digital fukt- och temperatursensor DHT22 ---- PID: 7375

3. Ansluter: Jumper Wires ---- PID: 10316 eller 10318 eller 10312 (beror på längden) eller så kan du använda solid tråd 22 AWG ---- PID: 22490

Brödbräda ---- PID: 10686 eller 10698 eller 103142 (beror på storlek)

4. Ström: Denna kabel kan endast anslutas med en dator USB -port och kabeln används också för dataöverföring mellan IDE och Arduino -kortet. USB-KABEL, A TILL B, M/M, 0,5M (1,5FT) ---- PID: 29862

Eller så kan du använda detta för att driva kortet: 5V 2A AC/DC-adapter ---- PID: 10817.

Steg 2: Relativ introduktion

Relativ introduktion
Relativ introduktion
Relativ introduktion
Relativ introduktion

Introduktion av skärmen: 1,3 OLED -skärm Vit

1. Du hittar dokumentet som visar den grundläggande installationen och beskrivningarna:

Introduktion av sensor: fukt- och temperatursensor DHT22 1. Du hittar dokumentet som visar beskrivningarna:

Steg 3: Anslut kretsen

Anslut kretsen
Anslut kretsen

DHT22 -sensorn skickar seriell data till stift 2. Så, anslut den andra stiftet från vänster, "SDA" -stiften bör anslutas till stift 2.

För SSH1106 -skärmen använder den analoga stiftet för att överföra. Skärmens kretsar kommer att vara "SCL" -stift till Arduinos "A5" och "SDA" -stift till Arduinos "A4". Medan pixelpositionsdata sänder kontinuerligt, utlöser displayfunktionen i programmet bara kommandot en gång varje gång det läser data från sensorn.

Både sensorn och skärmen kan använda 3.3V för att slå på Arduino som en likströmseffekt. För att få ström måste vi ansluta båda "VCC" -pinnarna till Arduinos "3.3V". Och "GND" -pinnarna kan enkelt anslutas till "GND" -pinnen på Arduino -kortet.

Använd USB A till B -kabeln, anslut Arudino till datorn.

Steg 4: Förbered dig på att kompilera

"u8glib" för SSH1106 -skärm från Olikraus.

"DHT -sensorbibliotek" för DHT22 -sensor från Adafruit. Du bör ladda ner de två biblioteken: DHT22 sensorbibliotek:

U8glib:

Och använd "hantera bibliotek" i IDE för att göra dem uppackade. Online instruktion för att hantera bibliotek:

Steg 5: Testkod för DHT22 Sensor Serial Port

Test coe för DHT22 -sensorns seriella port (som finns i DHT22 -biblioteket >> exempel):

(Du kan hoppa över den här delen.)

Det är bara för att testa DHT22 -sensorn läser data normalt

#omfatta

#omfatta

#omfatta

#omfatta

#omfatta

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

Serial.println (F ("DHT22 -test!"));

dht.begin ();

}

void loop () {

// Vänta några sekunder mellan mätningarna.

fördröjning (2000);

// Avläsningstemperatur eller luftfuktighet tar cirka 250 millisekunder!

// Sensoravläsningar kan också vara upp till 2 sekunder gamla (det är en mycket långsam sensor)

float h = dht.readHumidity ();

// Läs temperaturen som Celsius (standard)

float t = dht.readTemperature ();

// Läs temperaturen som Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature (true);

// Kontrollera om någon läsning misslyckades och avsluta tidigt (för att försöka igen).

om (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("Det gick inte att läsa från DHT -sensorn!"));

lämna tillbaka;

}

// Beräkna värmeindex i Fahrenheit (standard)

float hif = dht.computeHeatIndex (f, h);

// Beräkna värmeindex i Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("Luftfuktighet:"));

Serial.print (h);

Serial.print (F ("% Temperatur:"));

Serial.print (t);

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("° F Värmeindex:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// Efter att ha sammanställt programmet, klicka på VERKTYG >> SERIALMONITOR för att kontrollera data.

// Slut på testprogrammet.

Steg 6: Kod för projektet

#omfatta

#omfatta

#omfatta

#omfatta

#omfatta

#define DHTPIN 2

#define DHTTYPE DHT22

#inkludera "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 ();

// Läs temperaturen som Celsius (standard)

float t = sensor.readTemperature ();

// Kontrollera om någon läsning misslyckades och avsluta tidigt (för att försöka igen).

om (isnan (h) || isnan (t)) {

u8g.print ("Fel.");

för(;;);

lämna tillbaka;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temperatur (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Luftfuktighet (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// bildslinga

u8g.firstPage ();

gör {

dra();

} medan (u8g.nextPage ());

// bygga om bilden efter en viss fördröjning (2000);

}

// Slut på huvudprogrammet.

Steg 7: Beskrivning

Beskrivning
Beskrivning

Initiera sedan stiftkretsen för Arduino -kortet. Eftersom sensorbiblioteket kräver data för att deklarera objektet.

Och du kan testa sensorns data genom att övervaka utdata via digital pin 2 med funktionen "Serial.print ()". Eftersom frekvensen för dataöverföring är ungefär 1 avläsning varannan sekund (vilket är 0,5 Hz), när vi programmerar den i Arduino IDE, måste vi ställa in fördröjningen inuti slingfunktionen till mer än 2 sekunder. Så det finns en "fördröjning (2000)" inuti slingfunktionen. Detta säkerställer att data uppdateras ofta. I funktionen "draw", hämta data från den seriella dataporten och sätt in dem i float -nummer med funktionerna "readHumidity" och "readTemperature".

Skriv ut luftfuktigheten och temperaturen med utskriftsfunktionen i filen "u8glib". Du kan justera positionen genom att ändra numret i funktionen "setPrintPos". Utskriftsfunktionen kan direkt visa text och siffror.

Ge den seriella porten en fördröjning på 10 sekunder för att installera hårdvaran. Ring sedan startfunktionen för sensorn. Enligt min krets var min skärm upp och ner. Så jag inkluderade också en "setRot180" -funktion för att rotera displayen.

Arduino -kortets loop -funktion är huvudfunktionen. Det fortsätter att rita funktionen för att visa text och data varje gång sensorn uppdateras.

Skärmen ser ut så här:

Du kan koppla bort Arduino UNO från din dator och driva den med en 5V DC -nätadapter som ansluts till dess 2,1 mm strömuttag. Det lagrar programmet inuti sin enhet och kan kontinuerligt köra programmet igen efter att det har drivits.

Rekommenderad: