Мазмұны:

Arduino UNO қолданатын ауа райы станциясы: 7 қадам
Arduino UNO қолданатын ауа райы станциясы: 7 қадам

Бейне: Arduino UNO қолданатын ауа райы станциясы: 7 қадам

Бейне: Arduino UNO қолданатын ауа райы станциясы: 7 қадам
Бейне: This newest airline in Korea has ONE unexpected drawback | Air Premia ICN - NRT 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 қолдануға болады

Нан тақтасы ---- 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» түйреуіші және «SDA» -нің Arduino -дің «A4» -іне қосылуы болады. Пиксельдің орналасу деректері үздіксіз берілсе де, бағдарламадағы дисплей функциясы сенсордан деректерді оқыған сайын команданы бір рет қана іске қосады.

Сенсор да, экран да 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);

жарамсыз орнату () {

Serial.begin (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 («Ылғалдылық:»));

Serial.print (h);

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

Serial.print (t);

Serial.print (F («° C»));

Serial.print (f);

Serial.print (F («° F Жылу индексі:»));

Serial.print (hic);

Serial.print (F («° C»));

Serial.print (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.баспа (сағ);

}

жарамсыз орнату (жарамсыз) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

жарамсыз цикл (жарамсыз) {

// сурет ілмегі

u8g.firstPage ();

істеу {

сурет салу ();

} while (u8g.nextPage ());

// біраз кешігуден кейін суретті қалпына келтіру (2000 ж.);

}

// Негізгі бағдарламаның соңы.

7 -қадам: Сипаттама

Сипаттама
Сипаттама

Содан кейін, Arduino тақтасының түйреуіш схемасын инициалдаңыз. Себебі сенсорлық кітапхана объектіні жариялау үшін деректерді қажет етеді.

Ал сенсорлық деректерді «Serial.print ()» деп аталатын функцияны қолдана отырып, 2 -ші цифрлық пин арқылы шығыс деректерін бақылау арқылы тексеруге болады. Деректерді беру жиілігі әр 2 секунд сайын шамамен 1 оқылымды құрайтындықтан (бұл 0,5 Гц), Arduino IDE -де бағдарламаланған кезде біз цикл функциясының кешігуін 2 секундтан артық етіп орнатуымыз керек. Сондықтан цикл функциясының ішінде «кешіктіру (2000)» бар. Бұл деректердің жиі жаңартылуын қамтамасыз етеді. «Draw» функциясында деректерді сериялық деректер портынан алыңыз және оларды «readHumidity» және «readTemperature» функциялары арқылы өзгермелі сандарға қойыңыз.

Ылғалдылық пен температураны «u8glib» файлындағы басып шығару функциясы арқылы басып шығарыңыз. Сіз «setPrintPos» функциясындағы нөмірді өзгерту арқылы орынды реттей аласыз. Басып шығару функциясы мәтін мен сандарды тікелей көрсете алады.

Жабдықты орнату үшін сериялық портқа 10 секундқа кідіріс беріңіз. Содан кейін сенсордың бастау функциясын шақырыңыз. Менің схемаға сәйкес, менің экран төңкерілген. Сонымен қатар мен дисплейді бұру үшін «setRot180» функциясын қостым.

Arduino тақтасының циклдық функциясы негізгі функция болып табылады. Ол сенсор жаңартылған сайын мәтін мен деректерді көрсету үшін Draw функциясын шақырады.

Экран келесідей көрінеді:

Сіз Arduino UNO -ны компьютерден ажыратып, оны 2,1 мм қуат ұясына қосылатын 5В тұрақты ток адаптері арқылы қуаттандыра аласыз. Ол бағдарламаны дискіде сақтайды және қуат қосылғаннан кейін бағдарламаны қайта жалғастыра алады.

Ұсынылған: