Cuprins:
- Pasul 1: Lista articolelor
- Pasul 2: Introducere relativă
- Pasul 3: Conectați circuitul
- Pasul 4: Pregătiți-vă pentru a compila
- Pasul 5: Cod de test pentru portul serial al senzorului DHT22
- Pasul 6: Cod pentru proiect
- Pasul 7: Descriere
Video: Stația meteo folosind Arduino UNO: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Creat de: Hazel Yang
Acest proiect este o stație meteo care folosește o placă Arduino UNO pentru a controla fluxul de date, un senzor DHT22 pentru a colecta datele și un ecran OLED pentru a afișa datele.
Pasul 1: Lista articolelor
1. Ecran: OLED, afișaj 1.3 SH1106, culoare alb I2C ---- PID: 18283
2. Senzor: senzor digital de umiditate și temperatură DHT22 ---- PID: 7375
3. Se conectează: Jumper Wires ---- PID: 10316 sau 10318 sau 10312 (depinde de lungime) sau puteți utiliza fir solid 22 AWG ---- PID: 22490
Panou ---- PID: 10686 sau 10698 sau 103142 (depinde de dimensiune)
4. Alimentare: Acest cablu se poate conecta numai cu un port USB al computerului, iar cablul este utilizat și pentru transferul de date între placa IDE și placa Arduino. Cablu USB, de la A LA B, M / M, 0,5M (1,5FT) ---- PID: 29862
Sau puteți utiliza acest lucru pentru a alimenta placa: 5V 2A AC / DC Adapter ---- PID: 10817.
Pasul 2: Introducere relativă
Introducere ecran: Afișaj OLED de 1,3 alb
1. Puteți găsi documentul care prezintă configurarea și descrierile de bază:
Introducerea senzorului: senzor de umiditate și temperatură DHT22 1. Puteți găsi documentul care prezintă descrierile:
Pasul 3: Conectați circuitul
Senzorul DHT22 trimite date seriale la pinul 2. Deci, conectați al doilea pin din stânga, pinul "SDA" ar trebui să fie conectat la pinul 2.
Pentru afișajul SSH1106, folosește pinul analogic pentru a transmite. Circuitul ecranului va fi pinul „SCL” la „A5” Arduino și pinul „SDA” la „A4” Arduino. În timp ce datele despre poziția pixelilor se transmit în mod continuu, funcția de afișare din program declanșează comanda doar o dată de fiecare dată când citește datele de la senzor.
Atât senzorul, cât și ecranul pot folosi 3,3V pentru a porni Arduino ca intrare de curent continuu. Pentru a alimenta, trebuie să conectăm ambii pini „VCC” la „3.3V” Arduino. Și pinii „GND” pot fi pur și simplu conectați la pinul „GND” de pe placa Arduino.
Utilizați cablul USB A la B, conectați Arudino la computer.
Pasul 4: Pregătiți-vă pentru a compila
„u8glib” pentru ecranul SSH1106 de la Olikraus.
„Biblioteca senzorului DHT” pentru senzorul DHT22 de la Adafruit. Ar trebui să descărcați cele două biblioteci: biblioteca senzorului DHT22:
U8glib:
Și utilizați „gestionați biblioteca” în IDE pentru a le dezarhiva. Instrucțiuni online de gestionare a bibliotecilor:
Pasul 5: Cod de test pentru portul serial al senzorului DHT22
Testează coe pentru portul serial al senzorului DHT22 (care se află în biblioteca DHT22 >> exemple):
(Puteți sări peste această parte.)
Doar pentru a testa senzorul DHT22 citește datele în mod normal
#include
#include
#include
#include
#include
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
configurare nulă () {
Serial.begin (9600);
Serial.println (F ("test DHT22!"));
dht.begin ();
}
bucla nulă () {
// Așteptați câteva secunde între măsurători.
întârziere (2000);
// Temperatura de citire sau umiditatea durează aproximativ 250 de milisecunde!
// Citirile senzorilor pot avea, de asemenea, o vechime de până la 2 secunde (este un senzor foarte lent)
float h = dht.readHumidity ();
// Citiți temperatura în grade Celsius (implicit)
float t = dht.readTemperature ();
// Citiți temperatura ca Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature (adevărat);
// Verificați dacă citirile au eșuat și ieșiți devreme (pentru a încerca din nou).
if (isnan (h) || isnan (t) || isnan (f)) {
Serial.println (F ("Nu s-a citit de la senzorul DHT!"));
întoarcere;
}
// Calculați indicele de căldură în Fahrenheit (implicit)
float hif = dht.computeHeatIndex (f, h);
// Calculați indicele de căldură în Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex (t, h, false);
Serial.print (F ("Umiditate:"));
Serial.print (h);
Serial.print (F ("% Temperatura:"));
Serial.print (t);
Serial.print (F ("° C"));
Serial.print (f);
Serial.print (F ("° F Indice de căldură:"));
Serial.print (hic);
Serial.print (F ("° C"));
Serial.print (hif);
Serial.println (F ("° F"));
}
// După compilarea programului, faceți clic pe INSTRUMENTE >> MONITOR SERIAL pentru a verifica datele.
// Sfârșitul programului de testare.
Pasul 6: Cod pentru proiect
#include
#include
#include
#include
#include
#define DHTPIN 2
#define DHTTYPE DHT22
#include „U8glib.h”
U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);
Senzor DHT (DHTPIN, DHTTYPE);
draw nul (nul) {
u8g.setFont (u8g_font_unifont);
float h = sensor.readHumidity ();
// Citiți temperatura în grade Celsius (implicit)
float t = sensor.readTemperature ();
// Verificați dacă citirile au eșuat și ieșiți devreme (pentru a încerca din nou).
if (isnan (h) || isnan (t)) {
u8g.print („Eroare”);
pentru(;;);
întoarcere;
}
u8g.setPrintPos (4, 10);
u8g.print ("Temperatura (C):");
u8g.setPrintPos (4, 25);
u8g.print (t);
u8g.setPrintPos (4, 40);
u8g.print ("Umiditate (%):");
u8g.setPrintPos (4, 55);
u8g.print (h);
}
configurare nulă (nulă) {
u8g.setRot180 ();
Serial.begin (9600);
sensor.begin ();
}
bucla void (nul) {
// bucla de imagine
u8g.firstPage ();
face {
a desena();
} while (u8g.nextPage ());
// reconstruiți imaginea după o întârziere de întârziere (2000);
}
// Sfârșitul programului principal.
Pasul 7: Descriere
Apoi, inițializați circuitele pin pentru placa Arduino. Deoarece biblioteca senzorilor necesită date pentru a declara obiectul.
Și puteți testa datele senzorului monitorizând datele de ieșire prin pinul digital 2 utilizând funcția numită „Serial.print ()”. Deoarece frecvența de transmitere a datelor este de aproximativ 1 citire la fiecare 2 secunde (care este 0,5 Hz), atunci când este programat în Arduino IDE, trebuie să setăm întârzierea în funcția buclei să fie mai mare de 2 secunde. Deci, există o „întârziere (2000)” în interiorul funcției de buclă. Acest lucru asigură actualizarea frecventă a datelor. În funcția „draw”, obțineți datele din portul de date serial și puneți-le în numerele plutitoare folosind funcțiile „readHumidity” și „readTemperature”.
Imprimați umiditatea și temperatura folosind funcția de imprimare din fișierul „u8glib”. Puteți regla poziția schimbând numărul din funcția „setPrintPos”. Funcția de imprimare poate afișa direct textul și numerele.
Pentru a configura hardware-ul, acordați portului serial o întârziere de 10 secunde. Apelați apoi funcția de început pentru senzor. Conform circuitului meu, ecranul meu era pe dos. Așa că am inclus și o funcție „setRot180” pentru a roti afișajul.
Funcția de buclă a plăcii Arduino este funcția principală. Continuă să apeleze funcția de extragere pentru a afișa textul și datele de fiecare dată când senzorul este reîmprospătat.
Ecranul arată astfel:
Puteți deconecta Arduino UNO de la computer și alimenta-l folosind un adaptor de alimentare de 5V DC conectat la mufa de alimentare de 2,1 mm. Acesta stochează programul în unitatea sa și poate rula continuu programul din nou după ce a fost alimentat.
Recomandat:
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în mod corect: 8 pași (cu imagini)
Stația meteo NaTaLia: Stația meteorologică cu energie solară Arduino a fost realizată corect: După 1 an de funcționare cu succes în 2 locații diferite, vă împărtășesc planurile proiectului stației meteo cu energie solară și vă explic cum a evoluat într-un sistem care poate supraviețui cu adevărat peste mult timp perioade de la energia solară. Dacă urmezi
Stația meteo fără fir WiFi Arduino Wunderground: 10 pași (cu imagini)
Stația meteo fără fir WiFi Arduino Wunderground: În acest instructiv vă voi arăta cum să construiți o stație meteo fără fir personală utilizând ArduinoA Stația meteo este un dispozitiv care colectează date legate de vreme și mediu folosind mulți senzori diferiți. Putem măsura multe lucruri
Stația meteo Arduino folosind BMP280-DHT11 - Temperatură, umiditate și presiune: 8 pași
Stația meteo Arduino folosind BMP280-DHT11 - Temperatură, umiditate și presiune: În acest tutorial vom învăța cum să realizăm o stație meteo care să afișeze TEMPERATURĂ, UMIDITATE ȘI PRESIUNE pe ecranul LCD TFT 7735 Urmăriți un videoclip demonstrativ
Stația meteo folosind un afișaj mare ST7920: 4 pași
Stație meteo folosind un afișaj mare ST7920: Dragi prieteni, bun venit la un alt instructabil! În acest tutorial, vom arunca o primă privire la acest mare ecran LCD și vom construi un monitor de temperatură și umiditate cu el. Întotdeauna mi-am dorit să aflu un afișaj similar cu disp
Stația Meteo Nod IoT Smart Meteo: 6 pași
Meteo Node IoT Smart Meteo Station: Vreau să fac un dispozitiv pentru monitorizarea temperaturii și umidității în biroul meu. Există multe plăci compatibile cu LUA sau Arduino IDE. Există multe plăci care au conexiune la internet wifi. Îmi place Adafruit și ador toate produsele acestui br