Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Luoja: Hazel Yang
Tämä projekti on sääasema, joka käyttää Arduino UNO -korttia datavirran hallintaan, DHT22 -anturi tietojen keräämiseen ja OLED -näyttö tietojen näyttämiseen.
Vaihe 1: Tuoteluettelo
1. Näyttö: OLED, 1,3 näyttö SH1106, I2C valkoinen väri ---- PID: 18283
2. Anturi: Digitaalinen kosteus- ja lämpötila-anturi DHT22 ---- PID: 7375
3. Yhdistää: hyppyjohtimet ---- PID: 10316 tai 10318 tai 10312 (riippuu pituudesta) tai voit käyttää kiinteää johdinta 22 AWG ---- PID: 22490
Leipälauta ---- PID: 10686 tai 10698 tai 103142 (koosta riippuen)
4. Virta: Tämä kaapeli voidaan yhdistää vain tietokoneen USB -porttiin, ja sitä käytetään myös tiedonsiirtoon IDE- ja Arduino -kortin välillä. USB-KAAPELI, A – B, M/M, 0,5 M (1,5 FT) ---- PID: 29862
Tai voit käyttää tätä virtalähteeseen: 5V 2A AC/DC-sovitin ---- PID: 10817.
Vaihe 2: Suhteellinen johdanto
Näytön esittely: 1,3 OLED -näyttö valkoinen
1. Löydät asiakirjan, joka sisältää perusasetukset ja kuvaukset:
Anturin esittely: Kosteus- ja lämpötila -anturi DHT22 1. Löydät kuvaukset sisältävän asiakirjan:
Vaihe 3: Liitä piiri
DHT22 -anturi lähettää sarjatietoja nastalle 2. Liitä siis toinen nasta vasemmalta, "SDA" -tappi tulee liittää nastaan 2.
SSH1106 -näytössä se käyttää analogista pin -lähetintä. Näytön piirit ovat "SCL" -nasta Arduinon "A5": lle ja "SDA" -tappi Arduinon "A4": lle. Kun pikselin sijaintitiedot lähetetään jatkuvasti, ohjelman näyttötoiminto käynnistää komennon vain kerran joka kerta, kun se lukee tiedot anturista.
Sekä anturi että näyttö voivat käyttää 3.3 V: n virtaa Arduinon kytkemiseen tasavirtalähteeksi. Virran saamiseksi meidän on yhdistettävä molemmat "VCC" -nastat Arduinon "3.3V" -liitäntään. Ja "GND" nastat voidaan yksinkertaisesti liittää Arduino -kortin "GND" -tappiin.
Liitä Arudino tietokoneeseen USB A - B -kaapelilla.
Vaihe 4: Valmistaudu kääntämiseen
"u8glib" SSH1106 -näytölle Olikrausilta.
"DHT -anturikirjasto" Adafruitin DHT22 -anturille. Lataa kaksi kirjastoa: DHT22-anturikirjasto:
U8glib:
Käytä IDE: n "kirjaston hallintaa", jotta ne voidaan purkaa. Kirjaston hallinnan online-ohje:
Vaihe 5: DHT22 -anturin sarjaportin testauskoodi
DHT22 -anturin sarjaportin testauskoe (joka on DHT22 -kirjaston sisällä >> esimerkkejä):
(Voit ohittaa tämän osan.)
Se vain testata DHT22 anturi lukee tiedot normaalisti
#sisältää
#sisältää
#sisältää
#sisältää
#sisältää
#määritä DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
void setup () {
Sarja.alku (9600);
Serial.println (F ("DHT22 -testi!"));
dht.begin ();
}
void loop () {
// Odota muutama sekunti mittausten välillä.
viive (2000);
// Lämpötilan tai kosteuden lukeminen kestää noin 250 millisekuntia!
// Anturilukemat voivat olla jopa 2 sekuntia vanhoja (anturi on hyvin hidas)
float h = dht.readHumidity ();
// Lue lämpötila celsiusasteena (oletus)
float t = dht.readTemperature ();
// Lue lämpötila Fahrenheitina (isFahrenheit = true)
float f = dht.readTemperature (tosi);
// Tarkista, jos jokin lukeminen epäonnistui, ja poistu aikaisin (yritä uudelleen).
jos (isnan (h) || isnan (t) || isnan (f)) {
Serial.println (F ("DHT -anturin lukeminen epäonnistui!"));
palata;
}
// Laske lämpöindeksi Fahrenheit -asteina (oletus)
float hif = dht.computeHeatIndex (f, h);
// Laske lämpöindeksi celsiusasteina (isFahreheit = false)
float hic = dht.computeHeatIndex (t, h, false);
Serial.print (F ("Kosteus:"));
Sarjanjälki (h);
Sarjajälki (F ("% lämpötila:"));
Sarjanjälki (t);
Sarjanjälki (F ("° C"));
Sarjanjälki (f);
Sarjajälki (F ("° F Lämpöindeksi:"));
Serial.print (hic);
Sarjanjälki (F ("° C"));
Sarjanjälki (hif);
Sarja.println (F ("° F"));
}
// Kun olet koonnut ohjelman, tarkista tiedot valitsemalla TOOLS >> SERIAL MONITOR.
// Testausohjelman loppu.
Vaihe 6: Projektin koodi
#sisältää
#sisältää
#sisältää
#sisältää
#sisältää
#määritä DHTPIN 2
#define DHTTYPE DHT22
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);
DHT -anturi (DHTPIN, DHTTYPE);
mitätön arvonta (mitätön) {
u8g.setFont (u8g_font_unifont);
float h = sensor.readHumidity ();
// Lue lämpötila celsiusasteena (oletus)
float t = sensor.readTemperature ();
// Tarkista, jos jokin lukeminen epäonnistui, ja poistu aikaisin (yritä uudelleen).
jos (isnan (h) || isnan (t)) {
u8g.print ("Virhe");
(;;);
palata;
}
u8g.setPrintPos (4, 10);
u8g.print ("Lämpötila (C):");
u8g.setPrintPos (4, 25);
u8g. paino (t);
u8g.setPrintPos (4, 40);
u8g.print ("Kosteus (%):");
u8g.setPrintPos (4, 55);
u8g. paino (h);
}
mitätön asennus (mitätön) {
u8g.setRot180 ();
Sarja.alku (9600);
sensor.begin ();
}
void loop (void) {
// kuvasilmukka
u8g.firstPage ();
tehdä {
piirtää ();
} while (u8g.nextPage ());
// rakentaa kuva uudelleen jonkin viiveen jälkeen (2000);
}
// Pääohjelman loppu.
Vaihe 7: Kuvaus
Alusta sitten nastapiiri Arduino -kortille. Koska anturikirjasto vaatii tiedot objektin ilmoittamiseen.
Voit myös testata anturin tietoja seuraamalla lähtötietoja digitaalisen nastan 2 kautta käyttämällä toimintoa nimeltä "Serial.print ()". Koska tiedonsiirtotaajuus on noin 1 lukema 2 sekunnin välein (joka on 0,5 Hz), meidän on asetettava Arduino IDE: ssä ohjelmoituna viive silmukan sisällä yli 2 sekuntia. Joten silmukkafunktion sisällä on "viive (2000)". Tämä varmistaa, että tiedot päivitetään usein. Hae "piirtää" -funktiossa tiedot sarjatietoportista ja laita ne kelluviin numeroihin käyttämällä "readHumidity" - ja "readTemperature" -toimintoja.
Tulosta kosteus ja lämpötila käyttämällä u8glib -tiedoston tulostustoimintoa. Voit säätää sijaintia muuttamalla numeroa "setPrintPos" -toiminnossa. Tulostustoiminto voi näyttää tekstin ja numerot suoraan.
Asenna laitteisto antamalla sarjaportille 10 sekunnin viive. Soita sitten anturin käynnistystoiminto. Piirini mukaan näyttöni oli ylösalaisin. Joten sisällytin myös "setRot180" -toiminnon näytön kääntämiseen.
Arduino -levyn silmukkatoiminto on päätoiminto. Se kutsuu jatkuvasti piirtotoimintoa näyttämään tekstiä ja tietoja aina, kun anturi päivitetään.
Näyttö näyttää tältä:
Voit irrottaa Arduino UNO -laitteen tietokoneesta ja kytkeä siihen virran käyttämällä 5 V: n tasavirtasovitinta, joka on liitetty sen 2,1 mm: n virtaliitäntään. Se tallentaa ohjelman asemaansa ja voi käynnistää ohjelman jatkuvasti uudelleen virran kytkemisen jälkeen.