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

Часы реального времени на Arduino с расчётом времени намаза

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

Arduino UNO 1 шт.
Дисплей Nokia 5110 (84×48 пикселей) 1 шт.
RTC-модуль DS1307 (Seeed Pi RTC) 1 шт.

Необходимые инструменты

Программное обеспечение

О проекте

Это устройство – часы реального времени, отображающие григорианскую дату и ежедневное время намаза (салята). Для сборки нужны: Arduino UNO (или совместимая плата), RTC DS1307 и ЖК-дисплей Nokia 5110.

Описание компонентов

Arduino UNO

Микроконтроллерная плата на базе ATmega328P. Имеет 14 цифровых входов/выходов (6 с ШИМ), 6 аналоговых входов, 16 МГц керамический резонатор, 32 КБ флеш-памяти, 2 КБ ОЗУ, 1 КБ EEPROM, разъем питания и USB.

DS1307 – RTC (часы реального времени)

Низкопотребляющий календарь/часы с двоично-десятичным кодированием (BCD). Отслеживает секунды, минуты, часы, день недели, дату, месяц и год. Автоматически корректирует концы месяцев и високосные годы. Работает в 12- или 24-часовом формате с индикатором AM/PM. Имеет встроенный контроллер питания для переключения на батарею при отключении основного питания.

Выводы DS1307:

Дисплей Nokia 5110

Монохромный дисплей 84×48 пикселей с подсветкой, контроллер PCD8544 (как в Nokia 3310). Интерфейс – последовательный, похожий на SPI.

Выводы дисплея:

Настройка программы под ваш город

В строке 161 кода нужно указать географические координаты и параметры расчёта:

calcPrayerTimes(year, month, dayOfMonth, longitude, latitude, timeZone, fajrTwilight, ishaTwilight, fajr, sunRise, zuhr, asr, maghrib, isha);

Параметры:

Координаты и углы можно узнать на сайте IslamicFinder, введя название города.

Пример для Каира:

Строка кода для Каира:

calcPrayerTimes(year, month, dayOfMonth, 30.2, 30, 2, -19.5, -17.5, fajr, sunRise, zuhr, asr, maghrib, isha);

Как работает алгоритм

Функция принимает дату, координаты, часовой пояс и углы сумерков, возвращая 6 значений времени (фаджр, восход, зухр, аср, магриб, иша) в формате double. Функция doubleToHrMin преобразует их в часы и минуты.

Алгоритм расчёта времени намаза разработан Махмудом Адли Эззатом (источник).

Исходный код

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
#define DS1307_I2C_ADDRESS 0x68

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
double fajr, sunRise, zuhr, asr, maghrib, isha;
char *Day[] = {"", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

void setup() {
  Wire.begin();
  display.begin();
  display.setContrast(25);
  display.setTextColor(BLACK);
  display.setTextSize(1);
  getDateDs1307();
}

void loop() {
  getDateDs1307();
  // Пример координат (нужно заменить на свои)
  calcPrayerTimes(year, month, dayOfMonth, 39.8, 21.4, 3, -18.5, -19, fajr, sunRise, zuhr, asr, maghrib, isha);
  printTime();
  delay(5000);
}

// Функции преобразования BCD, чтения RTC, вывода на дисплей, расчёта времени намаза
// (полный код см. в оригинале)

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

Схема в формате Fritzing показывает подключение DS1307 по I2C (A4/A5) и дисплея Nokia 5110 к цифровым пинам 3–7.

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

  1. Arduino POV-часы: сборка дисплея на эффекте сохранения образа
  2. Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
  3. Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
  4. Создание пользовательских LED-часов с будильником — видно с 12 метров
  5. Умная копилка: управление монетоприёмником на Arduino Nano
  6. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  7. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  8. Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
  9. Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код
  10. Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты