Përmbajtje:

Stacioni i motit duke përdorur Arduino UNO: 7 hapa
Stacioni i motit duke përdorur Arduino UNO: 7 hapa

Video: Stacioni i motit duke përdorur Arduino UNO: 7 hapa

Video: Stacioni i motit duke përdorur Arduino UNO: 7 hapa
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Nëntor
Anonim
Stacioni i motit duke përdorur Arduino UNO
Stacioni i motit duke përdorur Arduino UNO

Krijuar nga: Hazel Yang

Ky projekt është një stacion moti që përdor një bord Arduino UNO për të kontrolluar rrjedhën e të dhënave, një sensor DHT22 për të mbledhur të dhënat dhe një ekran OLED për të treguar të dhënat.

Hapi 1: Lista e artikujve

Lista e artikujve
Lista e artikujve

1. Ekran: OLED, Ekran 1.3 SH1106, ngjyrë e bardhë I2C ---- PID: 18283

2. Sensori: Sensori dixhital i lagështisë dhe temperaturës DHT22 ---- PID: 7375

3. Lidhet: Telat Jumper ---- PID: 10316 ose 10318 ose 10312 (varet nga gjatësia) ose mund të përdorni tela të fortë 22 AWG ---- PID: 22490

Breadboard ---- PID: 10686 ose 10698 ose 103142 (varet nga madhësia)

4. Fuqia: Ky kabllo mund të lidhet vetëm me një port USB të kompjuterit dhe kablli përdoret gjithashtu për transferimin e të dhënave midis bordit IDE dhe Arduino. USB CABLE, A TO B, M/M, 0.5M (1.5FT) ---- PID: 29862

Ose mund ta përdorni këtë për të fuqizuar bordin: Përshtatës 5V 2A AC/DC ---- PID: 10817.

Hapi 2: Hyrje relative

Hyrje Relative
Hyrje Relative
Hyrje Relative
Hyrje Relative

Prezantimi i ekranit: Ekran OLED 1.3 i bardhë

1. Mund të gjeni dokumentin që tregon konfigurimin bazë dhe përshkrimet:

Prezantimi i Sensorit: Sensori i Lagështisë dhe Temperaturës DHT22 1. Mund të gjeni dokumentin që tregon përshkrimet:

Hapi 3: Lidhni qarkun

Lidhni qarkun
Lidhni qarkun

Sensori DHT22 dërgon të dhëna serike në pin 2. Pra, lidhni pinin e dytë nga e majta, kunja "SDA" duhet të lidhet me pin 2.

Për ekranin SSH1106, ai përdor pin analoge për të transmetuar. Qarku i ekranit do të jetë pin "SCL" në "A5" të Arduino dhe pin "SDA" në "A4" të Arduino. Ndërsa të dhënat e pozicionit pixel transmetohen vazhdimisht, funksioni i shfaqjes në program aktivizon komandën vetëm një herë sa herë që lexon të dhënat nga sensori.

Sensori dhe ekrani mund të përdorin 3.3V për të ndezur Arduino si hyrje të energjisë DC. Për të fuqizuar, ne duhet të lidhim të dy kunjat "VCC" me "3.3V" të Arduino. Dhe kunjat "GND" mund të lidhen thjesht me kunjin "GND" në tabelën Arduino.

Përdorni kabllon USB A në B, lidhni Arudino me kompjuterin.

Hapi 4: Përgatituni për Kompilim

"u8glib" për ekranin SSH1106 nga Olikraus.

"Biblioteka e sensorëve DHT" për sensorin DHT22 nga Adafruit. Duhet të shkarkoni dy bibliotekat: Biblioteka e sensorit DHT22:

U8glib:

Dhe përdorni "menaxhoni bibliotekën" në IDE për t'i bërë ato të hapura. Udhëzime online për menaxhimin e bibliotekave:

Hapi 5: Kodi i Testit për Portën Seriale të Sensorit DHT22

Koe testi për portën serike të sensorit DHT22 (e cila është brenda bibliotekës DHT22 >> shembuj):

(Ju mund ta kaloni këtë pjesë.)

Thjesht për të testuar sensorin DHT22 i lexon të dhënat normalisht

#përfshi

#përfshi

#përfshi

#përfshi

#përfshi

#përcakto DHTPIN 2

#përcaktoni DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.filloj (9600);

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

dht.filloj ();

}

lak void () {

// Prisni disa sekonda midis matjeve.

vonesa (2000);

// Temperatura ose lagështia e leximit zgjat rreth 250 milisekonda!

// Leximet e sensorit gjithashtu mund të jenë të vjetra deri në 2 sekonda (është një sensor shumë i ngadalshëm)

noton h = dht.readHumidity ();

// Lexoni temperaturën si Celsius (e parazgjedhur)

noton t = dht.readTemperatura ();

// Lexoni temperaturën si Fahrenheit (isFahrenheit = e vërtetë)

noton f = dht.readTemperatura (e vërtetë);

// Kontrolloni nëse ndonjë lexim dështoi dhe dilni herët (për të provuar përsëri).

nëse (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("Dështoi të lexohet nga sensori DHT!"));

kthim;

}

// Llogaritni indeksin e nxehtësisë në Fahrenheit (parazgjedhja)

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

// Llogaritja e indeksit të nxehtësisë në Celsius (isFahreheit = false)

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

Serial.print (F ("Lagështia:"));

Serial.print (h);

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

Serial.print (t);

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

Serial.print (f);

Serial.print (F ("° F Indeksi i nxehtësisë:"));

Serial.print (hic);

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

Serial.print (hif);

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

}

// Pas përpilimit të programit, klikoni TOOLS >> MONITOR SERIAL për të kontrolluar të dhënat.

// Fundi i programit të testimit.

Hapi 6: Kodi për Projektin

#përfshi

#përfshi

#përfshi

#përfshi

#përfshi

#përcakto DHTPIN 2

#përcaktoni DHTTYPE DHT22

#përfshi "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

tërheqje e zbrazët (e pavlefshme) {

u8g.setFont (u8g_font_unifont);

noton h = sensor.readHumidity ();

// Lexoni temperaturën si Celsius (e parazgjedhur)

noton t = sensor.readTemperature ();

// Kontrolloni nëse ndonjë lexim dështoi dhe dilni herët (për të provuar përsëri).

nëse (isnan (h) || isnan (t)) {

u8g.print ("Gabim.");

për (;;);

kthim;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Lagështia (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

konfigurimi i pavlefshëm (i pavlefshëm) {

u8g.setRot180 ();

Serial.filloj (9600);

sensor.filloj ();

}

lak void (i pavlefshëm) {

// lak fotografie

u8g.firstPage ();

bëj {

barazim ();

} ndërsa (u8g.nextPage ());

// rindërtoni fotografinë pas një vonese të vonuar (2000);

}

// Fundi i programit kryesor.

Hapi 7: Përshkrimi

Përshkrim
Përshkrim

Pastaj, filloni qarkun pin për bordin Arduino. Për shkak se biblioteka e sensorit kërkon të dhënat për të deklaruar objektin.

Dhe ju mund të testoni të dhënat e sensorit duke monitoruar të dhënat e daljes përmes pinit dixhital 2 duke përdorur funksionin e quajtur "Serial.print ()". Për shkak se frekuenca e transmetimit të të dhënave është afërsisht 1 lexim çdo 2 sekonda (që është 0.5 Hz), kur programohet në Arduino IDE, ne duhet të vendosim që vonesa brenda funksionit të lakut të jetë më shumë se 2 sekonda. Pra, ekziston një "vonesë (2000)" brenda funksionit të lakut. Kjo siguron që të dhënat do të rifreskohen shpesh. Në funksionin "barazim", merrni të dhënat nga porti i të dhënave serike dhe vendosini në numrat duke notuar duke përdorur funksionet "readHumidity" dhe "readTemperature".

Shtypni lagështinë dhe temperaturën duke përdorur funksionin e printimit në skedarin "u8glib". Mund ta rregulloni pozicionin duke ndryshuar numrin në funksionin "setPrintPos". Funksioni i printimit mund të tregojë drejtpërdrejt tekstin dhe numrat.

Për të konfiguruar pajisjen, jepni portës serike një vonesë prej 10 sekondash. Pastaj thirrni funksionin e fillimit për sensorin. Sipas qarkut tim, ekrani im ishte përmbys. Kështu që unë gjithashtu përfshiva një funksion "setRot180" për të rrotulluar ekranin.

Funksioni lak i bordit Arduino është funksioni kryesor. Vazhdon të thërrasë funksionin e tërheqjes për të shfaqur tekstin dhe të dhënat sa herë që sensori rifreskohet.

Ekrani duket kështu:

Mund ta shkëputni Arduino UNO nga kompjuteri juaj dhe ta furnizoni me energji duke përdorur një përshtatës 5V DC që lidhet me prizën e tij të energjisë 2.1mm. Ai ruan programin brenda diskut të tij dhe mund ta ekzekutojë vazhdimisht programin përsëri pasi të jetë mundësuar.

Recommended: