
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04

Создал: 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 мм. Он хранит программу на своем диске и может непрерывно запускать программу снова после подачи питания.
Рекомендуемые:
Профессиональная метеостанция с использованием ESP8266 и ESP32 DIY: 9 шагов (с изображениями)

Профессиональная метеостанция с использованием ESP8266 и ESP32 DIY: LineaMeteoStazione - это законченная метеостанция, которая может быть сопряжена с профессиональными датчиками от Sensirion, а также с некоторыми компонентами прибора Дэвиса (датчик дождя, анемометр)
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)

Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: после 1 года успешной работы в 2 разных местах я делюсь своими планами по проекту метеостанции на солнечной энергии и объясняю, как она превратилась в систему, которая действительно может выжить в течение длительного времени. периоды от солнечной энергии. Если вы последуете
Умная метеостанция (с использованием Arduino): 5 шагов

Интеллектуальная метеостанция (с использованием Arduino): метеостанция - это объект, расположенный на суше или на море, с приборами и оборудованием для измерения атмосферных условий, чтобы предоставлять информацию для прогнозов погоды и изучать погоду и климат. Измерения включают температуру
Метеостанция Arduino с использованием BMP280-DHT11 - температура, влажность и давление: 8 шагов

Метеостанция Arduino с использованием BMP280-DHT11 - Температура, влажность и давление: в этом уроке мы узнаем, как создать метеостанцию, которая будет отображать ТЕМПЕРАТУРУ, ВЛАЖНОСТЬ И ДАВЛЕНИЕ на ЖК-дисплее TFT 7735Посмотрите демонстрационное видео
Внешняя метеостанция с использованием Arduino: 7 шагов

Внешняя метеостанция с использованием Arduino: Используемые материалы: Цены приблизительные и по памяти. NodeMCU V3 Lua - 3 € Цифровой датчик температуры и влажности DTH 22 - 2 € Модуль датчика фоторезистора (LDR) обнаруживает светочувствительный фотодиод для Arduino - 0,80 € 1 комплект / лот Датчик обнаружения снега / дождя