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

Arduino погодные часы реального времени: OLED-дисплей для времени, даты и температуры

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

Arduino UNO 1
Adafruit DS3231 RTC (модуль реального времени) 1
Digilent Pmod OLED (SSD1306) 1
Датчик температуры LM35 (Texas Instruments) 1
Перемычки 1 набор
Макетная плата 1

О проекте

Сделаем Arduino-погодные часы, показывающие время, дату и температуру. LM35 дает температуру, DS3231 — точное время и дату, OLED (SSD1306) — вывод на экран.

Необходимые компоненты

Схема подключения

OLED (SPI): SPI пины Arduino — 8, 9, 10, 11, 13.

DS3231 (I2C): I2C пины — A4 (SDA), A5 (SCL).

LM35:

Arduino погодные часы реального времени: OLED-дисплей для времени, даты и температуры

Полноразмерная схема здесь.

Пояснение кода

Подключаем библиотеки для DS3231 и OLED. Библиотека Adafruit для OLED богаче функциями.

#include <DS3231.h>
#include <Adafruit_SSD1306.h>

Определяем пины и объекты:

DS3231 rtc(SDA, SCL);
#define OLED_MOSI 11
#define OLED_CLK  13
#define OLED_DC   9
#define OLED_CS   10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp, output;

В setup() настраиваем пин датчика на вход, инициализируем RTC и OLED.

pinMode(sensor_pin, INPUT);
rtc.begin();
display.begin(SSD1306_SWITCHCAPVCC);

Раскомментируйте блок ниже для первичной установки времени/даты:

// rtc.setDOW(WEDNESDAY);
// rtc.setTime(19, 02, 0);
// rtc.setDate(7, 12, 2017);

Выводим заставку «Weather Clock» на 5 секунд:

display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);  display.print(" Weather ");
display.setCursor(0,17); display.print(" Clock ");
display.display();
delay(5000);

В loop() читаем LM35, считаем температуру, получаем время/дату и выводим на OLED:

output = analogRead(sensor_pin);
temp = (output * 500.0) / 1023.0;

display.clearDisplay();
display.setTextSize(2);
display.setCursor(20,0); display.print(rtc.getTimeStr());
display.setTextSize(1);
display.setCursor(0,15); display.print(rtc.getDateStr());
display.setCursor(70,15); display.print(rtc.getDOWStr());
display.setCursor(20,25); display.print("Temp: "); display.print(temp); display.print("C");
display.display();
delay(1000);

Полный скетч Arduino

#include <DS3231.h>
#include <Adafruit_SSD1306.h>

DS3231 rtc(SDA, SCL);
#define OLED_MOSI 11
#define OLED_CLK  13
#define OLED_DC   9
#define OLED_CS   10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp, output;

void setup() {
  pinMode(sensor_pin, INPUT);
  rtc.begin();
  display.begin(SSD1306_SWITCHCAPVCC);
  // rtc.setDOW(WEDNESDAY);
  // rtc.setTime(19, 02, 0);
  // rtc.setDate(7, 12, 2017);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(0,0); display.print(" Weather ");
  display.setCursor(0,17); display.print(" Clock ");
  display.display();
  delay(5000);
}

void loop() {
  output = analogRead(sensor_pin);
  temp = (output * 500.0) / 1023.0;
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20,0); display.print(rtc.getTimeStr());
  display.setTextSize(1);
  display.setCursor(0,15); display.print(rtc.getDateStr());
  display.setCursor(70,15); display.print(rtc.getDOWStr());
  display.setCursor(20,25); display.print("Temp: "); display.print(temp); display.print("C");
  display.display();
  delay(1000);
}

Схемы

Arduino погодные часы реального времени: OLED-дисплей для времени, даты и температуры

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

  1. Создание аудио-эффектов, управляемых датчиками, с набором Satellite CCRMA
  2. Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
  3. Часы реального времени на Arduino с расчётом времени намаза
  4. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  5. Точные словесные часы: отображение времени в словах с точностью до минуты
  6. Создание пользовательских LED-часов с будильником — видно с 12 метров
  7. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  8. Сборка Берлинских часов на Arduino UNO — LED-матричные часы своими руками
  9. Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
  10. Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код