Satura rādītājs:

Laika stacija, izmantojot Arduino UNO: 7 soļi
Laika stacija, izmantojot Arduino UNO: 7 soļi

Video: Laika stacija, izmantojot Arduino UNO: 7 soļi

Video: Laika stacija, izmantojot Arduino UNO: 7 soļi
Video: Установка приложения ArduBlock 2024, Novembris
Anonim
Laika stacija, izmantojot Arduino UNO
Laika stacija, izmantojot Arduino UNO

Izveidoja: Hazel Yang

Šis projekts ir laika apstākļu stacija, kas izmanto Arduino UNO plati, lai kontrolētu datu plūsmu, DHT22 sensoru, lai savāktu datus, un OLED ekrānu, lai parādītu datus.

1. darbība: vienumu saraksts

Preču saraksts
Preču saraksts

1. Ekrāns: OLED, 1,3 collu displejs SH1106, I2C balta krāsa ---- PID: 18283

2. Sensors: digitālais mitruma un temperatūras sensors DHT22 ---- PID: 7375

3. Savieno: Džemperu vadi ---- PID: 10316 vai 10318 vai 10312 (atkarīgs no garuma), vai arī varat izmantot cietu vadu 22 AWG ---- PID: 22490

Maizes dēlis ---- PID: 10686 vai 10698 vai 103142 (atkarīgs no izmēra)

4. Barošana: šo kabeli var savienot tikai ar datora USB portu, un kabeli izmanto arī datu pārsūtīšanai starp IDE un Arduino plati. USB KABelis, A līdz B, M/M, 0.5M (1.5FT) ---- PID: 29862

Vai arī varat to izmantot, lai barotu plati: 5V 2A AC/DC adapteris ---- PID: 10817.

2. darbība. Relatīvais ievads

Relatīvais ievads
Relatīvais ievads
Relatīvais ievads
Relatīvais ievads

Ekrāna ievads: 1,3 collu OLED displejs balts

1. Dokumentu, kurā parādīti pamata iestatījumi un apraksti, varat atrast:

Sensora ievads: mitruma un temperatūras sensors DHT22 1. Dokumentu, kurā parādīti apraksti, varat atrast:

3. solis: pievienojiet ķēdi

Pievienojiet ķēdi
Pievienojiet ķēdi

DHT22 sensors nosūta sērijas datus uz tapu 2. Tātad, pievienojiet otro tapu no kreisās puses, "SDA" tapa jāpievieno 2. tapai.

SSH1106 displejam tā pārsūtīšanai izmanto analogo tapu. Ekrāna shēma būs "SCL" tapa līdz Arduino "A5" un "SDA" tapa - Arduino "A4". Kamēr pikseļu pozīcijas dati tiek pārraidīti nepārtraukti, displeja funkcija programmā aktivizē komandu tikai vienu reizi katru reizi, kad tā nolasa datus no sensora.

Gan sensors, gan ekrāns var izmantot 3.3V, lai ieslēgtu Arduino kā līdzstrāvas ieeju. Lai iegūtu jaudu, mums ir jāpievieno abas "VCC" tapas ar Arduino "3.3V". Un "GND" tapas var vienkārši savienot ar "GND" tapu Arduino plāksnē.

Izmantojiet USB A līdz B kabeli, savienojiet Arudino ar datoru.

4. darbība: sagatavojieties apkopošanai

"u8glib" SSH1106 ekrānam no Olikraus.

"DHT sensoru bibliotēka" DHT22 sensoram no Adafruit. Jums vajadzētu lejupielādēt abas bibliotēkas: DHT22 sensoru bibliotēka:

U8glib:

Un izmantojiet “pārvaldīt bibliotēku” IDE, lai tos neizsaiņotu. Tiešsaistes instrukcijas par bibliotēku pārvaldību:

5. darbība. DHT22 sensora seriālā porta pārbaudes kods

DHT22 sensora seriālā porta testa kods (kas atrodas DHT22 bibliotēkas >> piemēros):

(Jūs varat izlaist šo daļu.)

Tas ir tikai, lai pārbaudītu, vai DHT22 sensors normāli nolasa datus

#iekļaut

#iekļaut

#iekļaut

#iekļaut

#iekļaut

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Sērijas sākums (9600);

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

dht.begin ();

}

void loop () {

// Pagaidiet dažas sekundes starp mērījumiem.

kavēšanās (2000);

// Temperatūras vai mitruma nolasīšana prasa apmēram 250 milisekundes!

// Sensora rādījumi var būt arī līdz 2 sekundēm veci (tas ir ļoti lēns sensors)

pludiņš h = dht.readHumidity ();

// Temperatūras lasīšana pēc Celsija (noklusējums)

pludiņš t = dht.readTemperature ();

// Lasīt temperatūru pēc Fārenheita (isFahrenheit = true)

pludiņš f = dht.readTemperature (true);

// Pārbaudiet, vai kāda nolasīšana neizdevās, un izejiet agri (lai mēģinātu vēlreiz).

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

Serial.println (F ("Neizdevās nolasīt no DHT sensora!"));

atgriešanās;

}

// Aprēķināt siltuma indeksu pēc Fārenheita (noklusējums)

pludiņš hif = dht.computeHeatIndex (f, h);

// Aprēķināt siltuma indeksu pēc Celsija (isFahreheit = false)

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

Sērijas nospiedums (F ("Mitrums:"));

Sērijas nospiedums (h);

Sērijas nospiedums (F ("% temperatūra:"));

Sērijas nospiedums (t);

Sērijas nospiedums (F ("° C"));

Sērijas nospiedums (f);

Sērijas nospiedums (F ("° F Siltuma indekss:"));

Serial.print (hic);

Sērijas nospiedums (F ("° C"));

Sērijas nospiedums (hif);

Sērijas.println (F ("° F"));

}

// Pēc programmas apkopošanas noklikšķiniet uz TOOLS >> SERIAL MONITOR, lai pārbaudītu datus.

// Testēšanas programmas beigas.

6. darbība: projekta kods

#iekļaut

#iekļaut

#iekļaut

#iekļaut

#iekļaut

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT sensors (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

pludiņš h = sensor.readHumidity ();

// Temperatūras lasīšana pēc Celsija (noklusējums)

pludiņš t = sensors.readTemperature ();

// Pārbaudiet, vai kāda nolasīšana neizdevās, un izejiet agri (lai mēģinātu vēlreiz).

ja (isnan (h) || isnan (t)) {

u8g.print ("Kļūda");

priekš(;;);

atgriešanās;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temperatūra (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Sērijas sākums (9600);

sensors.begin ();

}

void loop (void) {

// attēla cilpa

u8g.firstPage ();

darīt {

izdarīt ();

} while (u8g.nextPage ());

// atjaunot attēlu pēc nelielas kavēšanās (2000);

}

// Galvenās programmas beigas.

7. darbība. Apraksts

Apraksts
Apraksts

Pēc tam inicializējiet Arduino plates tapas shēmu. Tā kā sensoru bibliotēka pieprasa datus, lai deklarētu objektu.

Un jūs varat pārbaudīt sensora datus, uzraugot izejas datus, izmantojot 2. ciparu tapu, izmantojot funkciju "Serial.print ()". Tā kā datu pārraides biežums ir aptuveni 1 lasījums ik pēc 2 sekundēm (kas ir 0,5 Hz), ja tas ir ieprogrammēts Arduino IDE, mums ir jāiestata aizkave cilpas funkcijā vairāk nekā 2 sekundes. Tātad cilpas funkcijas iekšpusē ir "kavēšanās (2000)". Tas nodrošina, ka dati tiks bieži atjaunināti. Funkcijā "draw" iegūstiet datus no sērijas datu porta un ievietojiet tos peldošos skaitļos, izmantojot funkcijas "readHumidity" un "readTemperature".

Drukājiet mitrumu un temperatūru, izmantojot drukāšanas funkciju failā "u8glib". Jūs varat pielāgot pozīciju, mainot numuru "setPrintPos" funkcijā. Drukāšanas funkcija var tieši parādīt tekstu un ciparus.

Lai iestatītu aparatūru, dodiet sērijas portam 10 sekunžu aizkavi. Pēc tam izsauciet sensora sākuma funkciju. Saskaņā ar manu shēmu mans ekrāns bija otrādi. Tāpēc es arī iekļāvu funkciju "setRot180", lai pagrieztu displeju.

Arduino plates cilpas funkcija ir galvenā funkcija. Tā turpina izsaukt zīmēšanas funkciju, lai parādītu tekstu un datus ikreiz, kad sensors tiek atsvaidzināts.

Ekrāns izskatās šādi:

Jūs varat atvienot Arduino UNO no datora un barot to, izmantojot 5 V līdzstrāvas adapteri, kas pievienots tā 2,1 mm strāvas ligzdai. Tā saglabā programmu savā diskdzinī un var nepārtraukti palaist programmu pēc barošanas.

Ieteicams: