Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Arduino Weather Clock: часы с датой, временем, температурой и влажностью в реальном времени

Компоненты и материалы

Компонент Количество
Arduino UNO 1
Датчик температуры и влажности DHT11 (4 вывода) 1
Модуль реального времени DS3231 (Maxim Integrated) 1
Резистор 10 кОм 1
OLED-дисплей 128x64 (Adafruit) 1
Макетная плата (breadboard) 1
Перемычки (набор) 15

О проекте

Хотите создать собственное устройство, которое показывает текущие дату, время, температуру и влажность? Это проще, чем кажется. Ниже описаны ключевые компоненты и принципы работы.

Arduino Uno / Nano

В качестве микроконтроллера используется Arduino Uno, но также подойдёт Arduino Nano — у него достаточно выводов для всех подключений.

Датчик DHT11

DHT11 — недорогой цифровой датчик температуры и влажности. Он использует ёмкостной датчик влажности и термистор для измерения параметров окружающей среды. Важно соблюдать интервал опроса: считывание данных рекомендуется производить не чаще раза в 2 секунды.

Важно: после первоначальной установки времени в RTC-модуле закомментируйте строку установки времени и перекомпилируйте скетч. Иначе при каждом включении время будет сбрасываться на момент компиляции.

Модуль реального времени DS3231

DS3231 — это высокоточный RTC-модуль с температурокомпенсированным кварцевым генератором (TCXO). Он точнее популярного DS1307 и имеет вход для резервной батареи, что позволяет сохранять время при отключении основного питания.

OLED-дисплей 128x64

На этом компактном и ярком экране выводится вся информация. Дисплей Adafruit можно управлять по SPI или I2C (выбор делается перемычками на обратной стороне). Можно использовать и более дешёвые аналоги, но нужно убедиться в совместимости с библиотеками Adafruit.

Скетч (программный код)

Код компилируется в Arduino IDE. Обязательно подключите все необходимые библиотеки: Adafruit_GFX, Adafruit_SSD1306, dht и стандартную Wire для I2C.

Основные функции скетча:

// Основные библиотеки
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <dht.h>

// Пины OLED (программный SPI)
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// DHT11
dht DHT;
#define DHT11_PIN 3
int DHTtimer = 0;

// DS3231 I2C адрес
#define DS3231_I2C_ADDRESS 0x68

// Функции преобразования BCD
byte decToBcd(byte val) { return (val/10*16) + (val%10); }
byte bcdToDec(byte val) { return (val/16*10) + (val%16); }

void setup() {
  Wire.begin();
  Serial.begin(9600);
  // Первичная установка времени (после закомментировать):
  // setDS3231time(0, 24, 12, 6, 3, 2, 17); // сек, мин, час, день нед, день, мес, год
  display.begin(SSD1306_SWITCHCAPVCC);
  display.clearDisplay();
}

void loop() {
  displayTime();
  DHTtimer++;
  if (DHTtimer > 1) {
    display.fillRect(70, 45, 128, 64, BLACK);
    ReadTempAndHum();
    DHTtimer = 0;
  }
  delay(1000);
  display.display();
  // Очистка областей экрана для следующего кадра
  display.fillRect(0, 0, 64, 64, BLACK);
  display.fillRect(0, 0, 128, 20, BLACK);
}
// ... функции setDS3231time, readDS3231time, displayTime, ReadTempAndHum
// (полный код см. в оригинале или скачайте .ino файл)

Схемы и документация

Совет: При сборке обратите внимание на питание: OLED и DHT11 работают от 5V, DS3231 — от 3.3V или 5V (на модуле обычно есть стабилизатор). Подтягивающий резистор 10 кОм нужен для линии данных DHT11.

Производственный процесс

  1. Получение текущей даты и времени в Python: практическое руководство
  2. Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
  3. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  4. Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
  5. Создание сетевой лабораторной метеостанции на Raspberry Pi
  6. Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
  7. Проверка и калибровка датчика влажности для точных измерений
  8. Работа с датой и временем в Java: Date, SimpleDateFormat, printf, GregorianCalendar
  9. Полное руководство по дате и времени в C++
  10. Работа с датами и временем в Python: Практическое руководство