Съдържание:

Метеорологична станция, използваща Arduino UNO: 7 стъпки
Метеорологична станция, използваща Arduino UNO: 7 стъпки

Видео: Метеорологична станция, използваща Arduino UNO: 7 стъпки

Видео: Метеорологична станция, използваща Arduino UNO: 7 стъпки
Видео: Arduino uno - wireless weather station - solar 2024, Ноември
Anonim
Метеорологична станция, използваща Arduino UNO
Метеорологична станция, използваща Arduino UNO

Създадено от: Hazel Yang

Този проект е метеорологична станция, използваща дъска 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 TO 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 той използва аналоговия щифт за предаване. Схемата на екрана ще бъде "SCL" щифт към "A5" на Arduino и "SDA" щифт към "A4" на Arduino. Докато данните за позицията на пиксела се предават непрекъснато, функцията за показване в програмата задейства командата само веднъж всеки път, когато чете данните от сензора.

И сензорът, и екранът могат да използват 3.3V за захранване на Arduino като вход за постоянен ток. За захранване трябва да свържем двата щифта "VCC" към "3.3V" на Arduino. И щифтовете "GND" могат просто да бъдат свързани към щифта "GND" на платката Arduino.

Използвайте USB A към B кабел, свържете Arudino към компютър.

Стъпка 4: Подгответе се за компилиране

"u8glib" за екран SSH1106 от Olikraus.

"DHT сензорна библиотека" за DHT22 сензор от Adafruit. Трябва да изтеглите двете библиотеки: DHT22 сензорна библиотека:

U8glib:

И използвайте „управление на библиотека“в IDE, за да ги направите разархивирани. Онлайн инструкции за управление на библиотеки:

Стъпка 5: Тестов код за DHT22 сензорен сериен порт

Тестово кое за DHT22 сензорен сериен порт (който е вътре в библиотеката DHT22 >> примери):

(Можете да пропуснете тази част.)

Просто за тестване на сензора DHT22 чете данни нормално

#включва

#включва

#включва

#включва

#включва

#дефинирайте DHTPIN 2

#дефинирайте DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

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

dht.begin ();

}

void loop () {

// Изчакайте няколко секунди между измерванията.

забавяне (2000);

// Температурата или влажността на четене отнемат около 250 милисекунди!

// Показанията на сензора също могат да бъдат до 2 секунди „стари“(това е много бавен сензор)

float h = dht.readHumidity ();

// Четене на температурата като Целзий (по подразбиране)

float t = dht.readTemperature ();

// Четене на температурата като Фаренхайт (isFahrenheit = вярно)

float f = dht.readTemperature (true);

// Проверете дали четенето е неуспешно и излезте рано (за да опитате отново).

if (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"));

}

// След компилиране на програмата, щракнете върху ИНСТРУМЕНТИ >> СЕРИЙЕН МОНИТОР, за да проверите данните.

// Край на програмата за тестване.

Стъпка 6: Код за проекта

#включва

#включва

#включва

#включва

#включва

#дефинирайте DHTPIN 2

#дефинирайте DHTTYPE DHT22

#включва "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT сензор (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

поплавък h = сензор.readHumidity ();

// Четене на температурата като Целзий (по подразбиране)

float t = sensor.readTemperature ();

// Проверете дали четенето е неуспешно и излезте рано (за да опитате отново).

if (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);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// цикъл на картината

u8g.firstPage ();

направете {

рисувам();

} while (u8g.nextPage ());

// възстановяване на картината след известно забавяне (2000);

}

// Край на основната програма.

Стъпка 7: Описание

Описание
Описание

След това инициализирайте пиновата схема за платката Arduino. Тъй като библиотеката на сензорите изисква данните да декларират обекта.

И можете да тествате данните на сензора, като наблюдавате изходните данни чрез цифров пин 2, като използвате функцията, наречена "Serial.print ()". Тъй като честотата на предаване на данни е приблизително 1 четене на всеки 2 секунди (което е 0,5 Hz), когато се програмира в Arduino IDE, трябва да зададем закъснението във вътрешността на цикъла да бъде повече от 2 секунди. Така че има "забавяне (2000)" вътре във функцията на цикъла. Това гарантира, че данните ще се обновяват често. Във функцията "draw" вземете данните от серийния порт за данни и ги поставете в плаващи числа, като използвате функциите "readHumidity" и "readTemperature".

Отпечатайте влажността и температурата, като използвате функцията за печат във файла "u8glib". Можете да регулирате позицията, като промените номера във функцията "setPrintPos". Функцията за печат може директно да показва текста и цифрите.

За да настроите хардуера, дайте на серийния порт 10 секунди закъснение. След това извикайте функцията за стартиране на сензора. Според схемата ми екранът беше обърнат с главата надолу. Затова включих и функция "setRot180" за завъртане на дисплея.

Цикличната функция на платката Arduino е основната функция. Той продължава да извиква функцията за изтегляне, за да показва текста и данните всеки път, когато сензорът се обновява.

Екранът изглежда така:

Можете да изключите Arduino UNO от компютъра си и да го захранвате с помощта на 5V DC адаптер за захранване, свързан към неговия 2,1 мм захранващ жак. Той съхранява програмата в устройството си и може непрекъснато да стартира програмата отново, след като се захранва.

Препоръчано: