Агуулгын хүснэгт:

Arduino UNO ашиглан цаг уурын станц: 7 алхам
Arduino UNO ашиглан цаг уурын станц: 7 алхам

Видео: Arduino UNO ашиглан цаг уурын станц: 7 алхам

Видео: Arduino UNO ашиглан цаг уурын станц: 7 алхам
Видео: 50 САМЫХ ИННОВАЦИОННЫХ ЛИЧНЫХ ТРАНСПОРТНЫХ СРЕДСТВ 2021–2022 гг. 2024, Долдугаар сарын
Anonim
Arduino UNO ашиглан цаг уурын станц
Arduino UNO ашиглан цаг уурын станц

Бүтээсэн: Хазел Ян

Энэхүү төсөл нь өгөгдлийн урсгалыг хянах Arduino UNO самбар, өгөгдөл цуглуулах DHT22 мэдрэгч, өгөгдлийг харуулах OLED дэлгэц ашиглан цаг агаарын станц юм.

Алхам 1: Барааны жагсаалт

Барааны жагсаалт
Барааны жагсаалт

1. Дэлгэц: OLED, 1.3 инчийн дэлгэц SH1106, I2C цагаан өнгө ---- PID: 18283

2. Мэдрэгч: Дижитал чийгшил ба температур мэдрэгч DHT22 ---- PID: 7375

3. Холбоно: холбогч утас ---- PID: 10316 эсвэл 10318 эсвэл 10312 (уртаас хамаарна) эсвэл та хатуу утсыг ашиглаж болно 22 AWG ---- PID: 22490

Breadboard ---- PID: 10686 эсвэл 10698 эсвэл 103142 (хэмжээнээс хамаарна)

4. Эрчим хүч: Энэхүү кабель нь зөвхөн компьютерийн USB портоор холбогдох боломжтой бөгөөд кабелийг IDE болон Arduino самбар хооронд өгөгдөл дамжуулахад ашигладаг. USB кабель, A-B, M/M, 0.5M (1.5FT) ---- PID: 29862

Эсвэл та үүнийг ашиглан самбарыг тэжээх боломжтой: 5V 2A AC/DC адаптер ---- PID: 10817.

Алхам 2: Харьцангуй танилцуулга

Харьцангуй танилцуулга
Харьцангуй танилцуулга
Харьцангуй танилцуулга
Харьцангуй танилцуулга

Дэлгэцийн танилцуулга: 1.3 инчийн OLED дэлгэц Цагаан

1. Та үндсэн тохиргоо, тайлбарыг харуулсан баримт бичгийг олж болно:

Мэдрэгчийн танилцуулга: Чийглэг ба температур мэдрэгч DHT22 1. Та тайлбарыг харуулсан баримт бичгийг олж болно:

Алхам 3: Хэлхээг холбоно уу

Цахилгаан хэлхээг холбоно уу
Цахилгаан хэлхээг холбоно уу

DHT22 мэдрэгч нь цуваа өгөгдлийг 2 -р зүү рүү илгээдэг. Тиймээс хоёр дахь зүүгээ зүүн талаас нь холбоно уу. "SDA" зүү нь 2 -р зүүтэй холбогдсон байх ёстой.

SSH1106 дэлгэцийн хувьд дамжуулахын тулд аналог пин ашигладаг. Дэлгэцийн хэлхээ нь Arduino "A5" руу "SCL", Ардуино "A4" руу "SDA" зүү байх болно. Пикселийн байршлын өгөгдлийг тасралтгүй дамжуулж байх үед програмын дэлгэцийн функц нь мэдрэгчийн өгөгдлийг унших бүрт нэг л удаа команд өгдөг.

Мэдрэгч болон дэлгэц хоёулаа 3.3V хүчдэлийг ашиглан Arduino -ийг тогтмол тэжээлийн оролт болгон асаах боломжтой. Эрчим хүч авахын тулд бид "VCC" зүүг хоёуланг нь Arduino -ийн "3.3V" руу холбох хэрэгтэй. Мөн "GND" тээглүүрийг Arduino самбар дээрх "GND" зүүтэй холбож болно.

USB A -аас B кабель ашиглаад Arudino -г компьютерт холбоно уу.

Алхам 4: Эмхэтгэхэд бэлтгэ

Olikraus -аас SSH1106 дэлгэцийн "u8glib".

Adafruit -ийн DHT22 мэдрэгчийн "DHT мэдрэгчийн номын сан". Та хоёр номын санг татаж авах хэрэгтэй: DHT22 мэдрэгчийн номын сан:

U8glib:

Үүнийг задлахын тулд IDE дахь "номын сан удирдах" -ыг ашиглана уу. Номын санг удирдах онлайн заавар:

Алхам 5: DHT22 мэдрэгчийн цуваа портын туршилтын код

DHT22 мэдрэгчийн цуваа портыг шалгах тест (DHT22 номын санд байгаа >> жишээ):

(Та энэ хэсгийг алгасаж болно.)

DHT22 мэдрэгчийг шалгахын тулд өгөгдлийг хэвийн уншдаг

#оруулах

#оруулах

#оруулах

#оруулах

#оруулах

#DHTPIN 2 -ийг тодорхойлох

#тодорхойлох DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

хүчингүй тохиргоо () {

Цуваа эхлэх (9600);

Serial.println (F ("DHT22 тест!"));

dht.begin ();

}

void loop () {

// Хэмжлийн хооронд хэдэн секунд хүлээнэ үү.

саатал (2000);

// Унших температур эсвэл чийгшил 250 миллисекунд зарцуулдаг!

// Мэдрэгчийн уншилт нь 2 секундын настай байж болно (энэ нь маш удаан мэдрэгч юм)

float h = dht.readHumidity ();

// Температурыг Цельсийн байдлаар уншина уу (анхдагчаар)

float t = dht.readTemperature ();

// Температурыг Фаренгейтээр уншина уу (isFahrenheit = true)

float f = dht.readTemperature (үнэн);

// Уншиж чадаагүй эсэхийг шалгаад эрт гараарай (дахин оролдоно уу).

хэрэв (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("DHT мэдрэгчээс уншиж чадсангүй!"));

буцах;

}

// Фаренгейт дэх дулааны индексийг тооцоолох (анхдагч)

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

// Цельсийн дулааны индексийг тооцоолох (isFahreheit = false)

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

Serial.print (F ("Чийгшил:"));

Цуваа.хэвлэх (h);

Serial.print (F ("% Температур:"));

Цуваа.хэвлэх (t);

Цуваа.хэвлэх (F ("° C"));

Цуваа.хэвлэх (f);

Serial.print (F ("° F Дулааны индекс:"));

Цуваа.хэвлэх (hic);

Цуваа.хэвлэх (F ("° C"));

Цуваа.хэвлэх (hif);

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

}

// Хөтөлбөрийг эмхэтгэсний дараа TOOLS >> SERIAL MONITOR дээр дарж өгөгдлийг шалгана уу.

// Туршилтын програмын төгсгөл.

Алхам 6: Төслийн код

#оруулах

#оруулах

#оруулах

#оруулах

#оруулах

#DHTPIN 2 -ийг тодорхойлох

#тодорхойлох DHTTYPE DHT22

#"U8glib.h" оруулна уу

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT мэдрэгч (DHTPIN, DHTTYPE);

хүчингүй сугалаа (хүчингүй) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Температурыг Цельсийн байдлаар уншина уу (анхдагчаар)

float t = sensor.readTemperature ();

// Уншиж чадаагүй эсэхийг шалгаад эрт гараарай (дахин оролдоно уу).

хэрэв (isnan (h) || isnan (t)) {

u8g.print ("Алдаа.");

(;;) хувьд;

буцах;

}

u8g.setPrintPos (4, 10);

u8g.print ("Температур (C):");

u8g.setPrintPos (4, 25);

u8g.хэвлэх (t);

u8g.setPrintPos (4, 40);

u8g.print ("Чийгшил (%):");

u8g.setPrintPos (4, 55);

u8g.хэвлэх (h);

}

хүчингүй тохиргоо (хүчингүй) {

u8g.setRot180 ();

Цуваа эхлэх (9600);

мэдрэгч.begin ();

}

void loop (хүчингүй) {

// зургийн гогцоо

u8g.firstPage ();

хийх {

зурах ();

} байхад (u8g.nextPage ());

// хэсэг хоцорсны дараа зургийг дахин бүтээх (2000);

}

// Үндсэн програмын төгсгөл.

Алхам 7: Тодорхойлолт

Тодорхойлолт
Тодорхойлолт

Дараа нь Arduino хавтангийн зүү хэлхээг эхлүүлнэ үү. Учир нь мэдрэгчийн номын сан нь объектыг зарлахын тулд өгөгдөл шаарддаг.

Та "Serial.print ()" функцийг ашиглан дижитал зүү 2 -ээр гаралтын өгөгдлийг хянах замаар мэдрэгчийн өгөгдлийг шалгаж болно. Мэдээлэл дамжуулах давтамж нь 2 секунд тутамд ойролцоогоор 1 уншилттай байдаг (энэ нь 0.5 Гц юм), Arduino IDE дээр програмчлахдаа бид давталтын функц доторх хоцролтыг 2 секундээс илүү байх ёстой. Тиймээс давталтын функц дотор "саатал (2000)" байна. Энэ нь өгөгдлийг байнга шинэчилж байх боломжийг олгодог. "Draw" функц дээр өгөгдлийг цуваа өгөгдлийн портоос аваад "readHumidity" ба "readTemperature" функцийг ашиглан тоонуудыг хөвүүлэхэд оруулна уу.

"U8glib" файл дахь хэвлэх функцийг ашиглан чийгшил, температурыг хэвлэ. Та "setPrintPos" функцын дугаарыг өөрчлөх замаар байрлалыг тохируулж болно. Хэвлэх функц нь текст болон тоонуудыг шууд харуулах боломжтой.

Тоног төхөөрөмжийг тохируулахын тулд цуваа портыг 10 секундын хугацаагаар хойшлуулна уу. Дараа нь мэдрэгчийн эхлэх функцийг дуудаарай. Миний хэлснээр миний дэлгэц дээшээ харсан байв. Тиймээс би дэлгэцийг эргүүлэх "setRot180" функцийг оруулсан болно.

Arduino самбарын давталтын функц нь үндсэн функц юм. Мэдрэгчийг шинэчлэх тоолонд текст, өгөгдлийг харуулахын тулд зурах функцийг дуудах болно.

Дэлгэц иймэрхүү харагдаж байна:

Та Arduino UNO -г компьютерээсээ салгаж, 5 мм тогтмол гүйдлийн адаптер ашиглан 2.1 мм цахилгаан залгуурт залгаарай. Энэ нь програмыг хөтөч дотроо хадгалдаг бөгөөд асаасны дараа програмыг үргэлжлүүлэн ажиллуулж чаддаг.

Зөвлөмж болгож буй: