Indholdsfortegnelse:

Vejrstation ved hjælp af Arduino UNO: 7 trin
Vejrstation ved hjælp af Arduino UNO: 7 trin

Video: Vejrstation ved hjælp af Arduino UNO: 7 trin

Video: Vejrstation ved hjælp af Arduino UNO: 7 trin
Video: HACKSTER - HVORDAN UDTALER MAN HACKSTER? #hackster (HACKSTER - HOW TO PRONOUNCE HACK 2024, November
Anonim
Vejrstation ved hjælp af Arduino UNO
Vejrstation ved hjælp af Arduino UNO

Skabt af: Hazel Yang

Dette projekt er en vejrstation, der bruger et Arduino UNO -kort til at styre datastrømmen, en DHT22 -sensor til at indsamle data og en OLED -skærm til at vise dataene.

Trin 1: Vareliste

Vareliste
Vareliste

1. Skærm: OLED, 1,3 Display SH1106, I2C hvid farve ---- PID: 18283

2. Sensor: Digital fugtigheds- og temperatursensor DHT22 ---- PID: 7375

3. Tilslutter: Jumper Wires ---- PID: 10316 eller 10318 eller 10312 (afhænger af længden) eller du kan bruge solid wire 22 AWG ---- PID: 22490

Breadboard ---- PID: 10686 eller 10698 eller 103142 (afhænger af størrelse)

4. Strøm: Dette kabel kan kun tilsluttes med en computer USB -port, og kablet bruges også til dataoverførsel mellem IDE og Arduino -kortet. USB-KABEL, A TIL B, M/M, 0,5M (1,5FT) ---- PID: 29862

Eller du kan bruge dette til at drive kortet: 5V 2A AC/DC-adapter ---- PID: 10817.

Trin 2: Relativ introduktion

Relativ introduktion
Relativ introduktion
Relativ introduktion
Relativ introduktion

Introduktion af skærm: 1,3 OLED Display Hvid

1. Du kan finde det dokument, der viser den grundlæggende opsætning og beskrivelser:

Introduktion af sensor: Fugt- og temperatursensor DHT22 1. Du kan finde det dokument, der viser beskrivelserne:

Trin 3: Tilslut kredsløbet

Tilslut kredsløbet
Tilslut kredsløbet

DHT22 -sensoren sender serielle data til pin 2. Så, tilslut den anden pin fra venstre, "SDA" pin skal tilsluttes pin 2.

Til SSH1106 -skærmen bruger den den analoge pin til at transmittere. Skærmens kredsløb vil være "SCL" pin til Arduinos "A5" og "SDA" pin til Arduinos "A4". Mens pixelpositionsdataene transmitterer kontinuerligt, udløser displayfunktionen i programmet kun kommandoen én gang hver gang den læser dataene fra sensoren.

Både sensoren og skærmen kan bruge 3.3V til at tænde for Arduino som en DC -strømindgang. Til strømforsyning skal vi forbinde begge "VCC" benene til Arduinos "3.3V". Og "GND" -stifterne kan simpelthen sluttes til "GND" -stiften på Arduino -kortet.

Brug USB A til B -kablet, tilslut Arudino til computeren.

Trin 4: Forbered dig på at kompilere

"u8glib" til SSH1106 skærm fra Olikraus.

"DHT -sensorbibliotek" til DHT22 -sensor fra Adafruit. Du skal downloade de to biblioteker: DHT22 sensorbibliotek:

U8glib:

Og brug "administrer bibliotek" i IDE til at få dem pakket ud. Online instruktion i administration af biblioteker:

Trin 5: Testkode til DHT22 Sensor Serial Port

Test coe til DHT22 sensor seriel port (som er inde i DHT22 biblioteket >> eksempler):

(Du kan springe denne del over.)

Det er bare for at teste DHT22 sensoren læser data normalt

#omfatte

#omfatte

#omfatte

#omfatte

#omfatte

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

ugyldig opsætning () {

Serial.begin (9600);

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

dht.begin ();

}

void loop () {

// Vent et par sekunder mellem målingerne.

forsinkelse (2000);

// Læsningstemperatur eller fugtighed tager omkring 250 millisekunder!

// Sensoraflæsninger kan også være op til 2 sekunder 'gamle' (det er en meget langsom 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);

// Kontroller, om nogen læsning mislykkedes, og afslut tidligt (for at prøve igen).

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

Serial.println (F ("Kunne ikke læse fra DHT -sensor!"));

Vend tilbage;

}

// 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 ("Fugtighed:"));

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"));

}

// Efter at have sammensat programmet, skal du klikke på TOOLS >> SERIAL MONITOR for at kontrollere dataene.

// Afslutning af testprogrammet.

Trin 6: Kode til projektet

#omfatte

#omfatte

#omfatte

#omfatte

#omfatte

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

// Læs temperaturen som Celsius (standard)

float t = sensor.readTemperature ();

// Kontroller, om nogen læsning mislykkedes, og afslut tidligt (for at prøve igen).

hvis (isnan (h) || isnan (t)) {

u8g.print ("Fejl.");

til(;;);

Vend tilbage;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// billedslynge

u8g.firstPage ();

gør {

tegne();

} mens (u8g.nextPage ());

// genopbyg billedet efter en vis forsinkelse (2000);

}

// Slut på hovedprogrammet.

Trin 7: Beskrivelse

Beskrivelse
Beskrivelse

Initialiser derefter pin -kredsløbet til Arduino -kortet. Fordi sensorbiblioteket kræver, at dataene erklærer objektet.

Og du kan teste sensordata ved at overvåge outputdataene via digital pin 2 ved hjælp af funktionen "Serial.print ()". Fordi datatransmissionens frekvens er omtrent 1 læsning hvert 2. sekund (hvilket er 0,5 Hz), når vi programmerer den i Arduino IDE, skal vi indstille forsinkelsen inde i loop -funktionen til at være mere end 2 sekunder. Så der er en "forsinkelse (2000)" inde i loop -funktionen. Dette sikrer, at dataene opdateres ofte. I funktionen "draw" skal du hente dataene fra den serielle dataport og sætte dem i float -tal ved hjælp af funktionerne "readHumidity" og "readTemperature".

Udskriv fugtighed og temperatur ved hjælp af udskrivningsfunktionen i filen "u8glib". Du kan justere positionen ved at ændre nummeret i funktionen "setPrintPos". Udskrivningsfunktionen kan direkte vise tekst og tal.

Giv den serielle port en forsinkelse på 10 sekunder for at konfigurere hardwaren. Ring derefter til startfunktionen for sensoren. Ifølge mit kredsløb var min skærm på hovedet. Så jeg inkluderede også en "setRot180" -funktion til at rotere skærmen.

Arduino -kortets loop -funktion er hovedfunktionen. Det bliver ved med at kalde tegnefunktionen for at vise tekst og data hver gang sensoren opdateres.

Skærmen ser sådan ud:

Du kan afbryde Arduino UNO fra din computer og forsyne den med en 5V DC -strømadapter, der slutter til dens 2,1 mm -stik. Det gemmer programmet inde i dets drev og kan løbende køre programmet igen efter at have været drevet.

Anbefalede: