Проект, який відмінно впишеться в інтер'єр вашого DIY кута, кімнати, гаража або офісу, в якому ви збираєте роботів і всякі гіковскіе автоматизовані проекти на Arduino. На виході проекту ви отримаєте в межах одного модуля такі фічі:
  • Годинники !;
  • Відображення дати і часу на LCD екрані;
  • Вбудований лічильник часу (для того, щоб засікати час, витрачений на один проект);
  • Будильник (щоб нагадувати про те, що ви засиділися і пора влаштувати собі розминку);
  • Відстеження руху (зберігає заряд акумулятора, відключаючи LCD екран, коли вас немає поруч);
  • Відмінно впишеться в ваш інтер'єр Arduino-розробника!

Необхідні матеріали для проекту

  • Arduino Uno;
  • LCD Keypad Shield (LCD Шилд з кнопками) для Arduino (в даному випадку - від виробника DFRobot)
  • Годинник реального часу (RTC) DS1307 (від Adafruit);
  • Закривається бокс (можна знайти в радіомагазині або замовити у китайців);
  • Зумер (Piezo Buzzer);
  • PIR (Пасивний інфрачервоний датчик руху);
  • Провідники мама / мама;
  • Джек 2.1 мм;
  • Перехідник для батарейки 9 В 5.5 мм / 2.1 мм;
  • Крона 9 В.
Фото деталей і вузлів для проекту
Arduino Uno
LCD шилд
Модуль годин реального часу
Коробка
зумер
Датчик руху
Коннектори
Джек
Перехідник для батарейки
Блок живлення

Збірка модуля годин реального часу

Часом модуль годин реального часу (наприклад, від компанії Adafruit DS1307), поставляється у вигляді окремих компонентів. Збірка не повинна викликати проблем. Тим більше, є відмінна інструкція по використанню і збірці модуля годин реального часу . Як правило, батарейка йде в комплектації модуля. Працювати від однієї батарейки він буде не менше трьох років.

Конектор для харчування

Для того, щоб не виникало проблем з підключенням Arduino, використовується джек на 2.1 мм, до якого припав контакти. У боксі зроблено отвір, джек посаджений на клей. Тепер підключення Arduino не складає проблем.
Батарейка (крона) на 9 В просто встановлюється на задню частину боксу.
живленняхарчування 2 Якщо ви звернули увагу, в боксі є ще один отвір. Це була перша невдала спроба. Джек в цей отвір не помістився.

Під'єднуємо дроти до всіх елементів

Дуже рекомендую закупити різнокольорові провідники типу мама / мама. Коштують вони недорого, а процес складання полегшують дуже сильно. Підключаємо провідники до модуля годин реального часу, ПІР датчику руху , зумер, щоб в подальшому підключити їх до LCD Шілд.
Фото деталей підключених вузлів
Годинник реального часу з коннекторами
ПІР датчик руху з коннекторами
Зумер з коннекторами
Вся обв'язка коннекторами

Підключаємо все до LCD Шілд

На LCD Шілд 5 рядів контактів, які відповідають пінам 1-5 на платі Arduino. Є контакт для 5v, GND і сигнал. Ці контакти і використовувалися для підключення. Для обміну даними з годинником реального часу, датчиком і зумером використовувалися аналогові Піни на Arduino. Природно, датчик і годинник реального часу підключаються до харчування і землі.
LCD шилдLCD Шилд і сенсориLCD Шилд і все обв'язування

Установка в коробку

Наступний крок - упаковка нашого чуда в окремий бокс. Спочатку покладіть в коробку кабелі, які тягнуться від LCD Шілд.
Arduino кріпиться гвинтом до правої нижньої частини боксу. Одного гвинта в принципі достатньо, щоб утримати плату. Крім того, даному конкретному випадку, ребра жорсткості в коробці розташовуються якраз в місці, де на платі передбачено отвір для другого і третього гвинтів.
Після цього встановлюємо на Arduino наш LCD Шилд. Кабелі огинають плату з правого боку (дивіться на фото нижче).
Модуль годин реального часу відмінно встановлюється в лівому нижньому кутку коробки. Для кріплення теж використовувався один гвинт. Подібна установка дає можливість підключити 2.1 мм джек до Arduino.
Датчик руху (PIR) встановлено таким чином, щоб його можна було легко і швидко зняти, так як він заважає підключенню USB кабелю до Arduino.
фото установки
Установка в коробку 1
Установка в коробку 2
Установка в коробку 3
Установка в коробку 4
Установка в коробку 5
Установка в коробку 6
Установка в коробку 5
Установка в коробку 6

програмуємо годинник

Як було зазначено в першій частині статті, крім відображення часу і дати, нам необхідно реалізувати таймер і будильник.
На LCD Шілд передбачено 5 програмованих кнопок. Вони використовуються для установки різних режимів роботи годин. Зумер відпрацьовує кожен раз, коли ви натискаєте кнопки. Коли спрацьовує будильник, зумер подає кілька сигналів.

Скетч для Arduino

За основу програми було взято скетч від Adafruit, який розроблений для модуля годин реального часу. У цьому скетчі використовується їх же бібліотека RTClib. Цей скетч ви можете знайти на GitHub .
Після цього доданий шматок коду з скетчу від DFRobot для LCD Шілд (включаючи опцію управління кнопками). Цей скетч можна скачати тут .
Ну і, звичайно ж, доданий шматок коду безпосередньо під наш проект годин-будильника. Остаточна версія скетчу доступна по посиланню .
На фотографіях нижче показані різні режими роботи наших годин з LCD Шілд.
Фото різних режимів роботи
Фото різних режимів роботи 1
Фото різних режимів роботи 2
Фото різних режимів роботи 3
Фото різних режимів роботи 4
Фото різних режимів роботи 5
Фото різних режимів роботи 6
Фото різних режимів роботи 7
Фото різних режимів роботи 8
Фото різних режимів роботи 9

функції кнопок

На LCD Шілд кнопки підписані (дивіться на фото). Перші п'ять з шести доступних кнопок (button) були запрограмовані таким чином:
Кнопки на LCD Шілд Кнопка # 1 (підписана SELECT) - це кнопка Menu. Ця кнопка відповідає за відображення гортає список доступних функцій (таймер, установка будильника).
Кнопка # 2 (підписана LEFT) - кнопка Select. Служить для вибору функції. Примітка: також використовується для інкремента на 10, коли обрані години, хвилини і т.п.
Кнопки # 3 і 4 (підписані UP і DOWN) - кнопки Increment і Decrement (інкремент і декремент). Використовуються для зменшення і збільшення годин і хвилин при налаштуванні таймера або будильника. Використовуються також для перемикання між часом доби AM і PM.
Кнопка # 5 (підписана RIGHT) - GO! Використовується для прийняття цього значення (наприклад, налаштованих хвилин або годин).
Кнопка # 6 (відзначена RST) - Reset, яка перезавантажує наш Arduino.

- Copyright © Основи мікроелектроніки в школі