Оглавление:

Метеостанция с использованием Arduino UNO: 7 шагов
Метеостанция с использованием Arduino UNO: 7 шагов

Видео: Метеостанция с использованием Arduino UNO: 7 шагов

Видео: Метеостанция с использованием Arduino UNO: 7 шагов
Видео: 2 в 1: Метеостанция + часы на Arduino 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, ОТ А К В, М / М, 0,5 М (1,5 ФУТА) ---- PID: 29862

Или вы можете использовать это для питания платы: адаптер переменного / постоянного тока 5V 2A ---- PID: 10817.

Шаг 2: относительное введение

Относительное введение
Относительное введение
Относительное введение
Относительное введение

Экран: 1,3-дюймовый OLED-дисплей, белый цвет

1. Вы можете найти документ, в котором показаны основные настройки и описания:

Знакомство с датчиком: датчик влажности и температуры DHT22 1. Вы можете найти документ с описанием:

Шаг 3: Подключите схему

Подключите цепь
Подключите цепь

Датчик DHT22 отправляет последовательные данные на контакт 2. Итак, подключите второй контакт слева, контакт SDA должен быть подключен к контакту 2.

Для дисплея SSH1106 он использует аналоговый вывод для передачи. Схема экрана будет выводом «SCL» к «A5» Arduino и выводом «SDA» к «A4» Arduino. В то время как данные о положении пикселей передаются непрерывно, функция отображения в программе запускает команду только один раз при каждом считывании данных с датчика.

И датчик, и экран могут использовать 3,3 В для питания 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 считывает данные нормально

#включают

#включают

#включают

#включают

#включают

#define DHTPIN 2

#define 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 = true)

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 (F ("% Температура:"));

Serial.print (t);

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

Серийный принт (е);

Serial.print (F ("Температурный индекс ° F:"));

Serial.print (ик);

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

Serial.print (hif);

Serial.println (F («° F»));

}

// После компиляции программы щелкните ИНСТРУМЕНТЫ >> ПОСЛЕДОВАТЕЛЬНЫЙ МОНИТОР, чтобы проверить данные.

// Конец программы тестирования.

Шаг 6: Код для проекта

#включают

#включают

#включают

#включают

#включают

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Датчик DHT (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Считываем температуру в градусах Цельсия (по умолчанию)

float t = sensor.readTemperature ();

// Проверяем, нет ли сбоев при чтении, и завершаем работу раньше (чтобы повторить попытку).

if (isnan (h) || isnan (t)) {

u8g.print («Ошибка.»);

для(;;);

возвращение;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Влажность (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// цикл изображения

u8g.firstPage ();

делать {

рисовать();

} while (u8g.nextPage ());

// перестраиваем картинку после некоторой задержки delay (2000);

}

// Конец основной программы.

Шаг 7: Описание

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

Затем инициализируйте схему контактов для платы Arduino. Поскольку библиотеке датчиков требуются данные для объявления объекта.

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

Распечатайте влажность и температуру, используя функцию печати из файла "u8glib". Вы можете отрегулировать положение, изменив число в функции "setPrintPos". Функция печати может напрямую отображать текст и числа.

Чтобы настроить оборудование, дайте последовательному порту задержку в 10 секунд. Затем вызовите функцию начала для датчика. По моей схеме у меня экран был перевернут. Поэтому я также включил функцию «setRot180» для поворота дисплея.

Функция цикла платы Arduino является основной функцией. Он продолжает вызывать функцию рисования для отображения текста и данных при каждом обновлении датчика.

Экран выглядит так:

Вы можете отключить Arduino UNO от компьютера и включить его с помощью адаптера питания 5 В постоянного тока, подключенного к разъему питания 2,1 мм. Он хранит программу на своем диске и может непрерывно запускать программу снова после подачи питания.

Рекомендуемые: