Led годинник на arduino nano. Робимо електронний годинник на ардуїно своїми руками. Готовий годинник на Arduino

На фото прототип, зібраний мною для налагодження програми, яка керуватиме всім цим господарством. Друга arduino nano у верхньому правому кутку макетки не відноситься до проекту і стирчить там просто так, увагу на неї можна не звертати.

Дещо про принцип роботи: ардуїно бере дані у таймера DS323, переробляє їх, визначає рівень освітленості за допомогою фоторезистора, потім все посилає на MAX7219, а вона в свою чергу запалює потрібні сегменти з потрібною яскравістю. Також за допомогою трьох кнопок можна виставити рік, місяць, день і час за бажанням. На фото індикатори відображають час і температуру, яку було взято з цифрового термодатчика.

Основна складність у моєму випадку - це те, що 2.7 дюймові індикатори із загальним анодом, і їх треба було по-перше подружити з max7219, яка заточена під індикатори із загальним катодом, а по-друге вирішити проблему з їх харчуванням, тому що їм потрібно 7,2 вольта для свічення, чого одна max7219 забезпечити не може. Попросивши допомоги на одному форумі я отримав відповідь.

Рішення на скріншоті:


До виходів сегментів з max7219 чіпляється мікросхемка, яка інвертує сигнал, а до кожного висновку, який повинен підключатися до загального катода дисплея, чіпляється схема з трьох транзисторів, які так само інвертують сигнал і підвищують напругу. Таким чином ми отримуємо можливість підключити до max7219 дисплеї із загальним анодом та напругою живлення більше 5 вольт

Для тесту підключив один індикатор, все працює, нічого не димить

Починаємо збирати.

Схему вирішив поділити на 2 частини через величезну кількість перемичок у розведеному моїми кривими лапками варіанті, де все було на одній платі. Годинник складатиметься з блоку дисплея та блоку живлення та управління. Останній було вирішено зібрати першим. Естетів і досвідчених радіоаматорів прошу не зомліти через жорстоке поводження з деталями. Купувати принтер заради ЛУТу немає жодного бажання, тому роблю по-старому - тренуюся на папірці, свердлю отвори за шаблоном, малюю маркером доріжки, потім цькування.

Принцип кріплення індикаторів залишив той самий, як і на .

Розмічаємо положення індикаторів та компонентів за допомогою шаблону з оргскла, зробленого для зручності.

Процес розмітки







Потім за допомогою шаблону свердлимо отвори у потрібних місцях та приміряємо всі компоненти. Все стало бездоганно.

Малюємо доріжки та труїмо.




купання у хлорному залозі

Готово!
плата керування:


плата індикації:


Плата управління вийшла добре, на платі індикації не критично зжерло доріжку, це можна виправити, настав час паяти. На цей раз я втратив SMD-невинності, і включив 0805 компоненти в схему. Найменш перші резистори і конденсатори були припаяні на місця. Думаю далі наб'ю руку, буде легше.
Для паяння використав флюс, який купив . Паяти з ним одне задоволення, спиртоканіфоль використовую тепер лише для лудіння.

Ось готові плати. На платі управління є посадкове місце для ардуїно нано, годин, а також виходи для підключення до плати дисплея і датчики (фоторезистор для автояркості і цифровий термометр ds18s20) і блок живлення з регулюванням вихідної напруги (для великих семисегментників) ардуїно, на платі індикації знаходяться посадкові гнізда для дисплеїв, панельки для max2719 та uln2003a, рішення для живлення чотирьох великих семисегментників та купа перемичок.




плата управління ззаду

Плата індикації ззаду:

Жахливий монтаж смд:


Запуск

Після припаювання всіх шлейфів, кнопок та датчиків настав час все це включити. Перший запуск виявив кілька проблем. Не світився останній великий індикатор, а решта світилася тьмяно. З першою проблемою розправився пропоюванням ніжки смд-транзистора, з другою - регулюванням напруги, що видається lm317.
Воно живе!

Одним з перших проектів, які новачки збирають на основі плати Arduino, є простий годинник, що веде відлік часу. В основному такий годинник заснований на модулі RTC, що підключається до Arduino (Real Time Clock або Годинник реального часу). Сьогодні на ринку електронних компонентів є різні моделі RTC, що відрізняються точністю та ціною. Серед найпоширеніших моделей можна назвати DS1302, DS1307, DS3231.



Але годинник на Arduino можна зробити і без використання RTC, особливо якщо не вдається дістати такі модулі. Звичайно, точність у цьому випадку буде невеликою, тому проект скоріше має розглядатися як навчальний.


Принцип роботи такого годинника досить простий. Щоразу, коли ви включаєте цей годинник на Arduino, ви повинні будете встановити для них поточне значення часу, так само як і будь-який аналоговий годинник. Такий годинник, безумовно, краще не використовувати у своїй повсякденному життіпри тривалій їх активності без перезавантаження та подальшого налаштування, оскільки розсинхронізація з поточним часом у процесі тривалої експлуатації може бути суттєвою.


Цей годинник можна зібрати на звичайній макетній платі, оскільки тут не потрібно багато компонентів. Основною нашою ланкою тут буде плата Arduino Uno. Для відображення часу можна отримати РК-дисплей 16x2. Щоб змінити налаштування часу, слід підключити дві кнопки (для годин і хвилин). Кнопки підключаються до Aduino через резистори 10 КОМ. Щоб змінювати яскравість дисплея потрібен потенціометр на 10 КОМ. Схема підключення всіх цих компонентів до плати Arduino Uno представлена ​​нижче.



Тепер слід запрограмувати Arduino. Простий код (скетч), що дозволяє виводити час на екран LCD-дисплея, наведено нижче.


#include LiquidCrystal lcd(12,11,5,4,3,2); int h=12; int m; int s; int flag; int TIME; const int hs = 8; const int ms=9; int state1; int state2; void setup() ( lcd.begin(16,2); ) void loop() ( lcd.setCursor(0,0); s=s+1; lcd.print("TIME:"); lcd.print(h) ); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s); if(flag<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12) lcd.print("PM"); if(flag==24)flag=0; delay(1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) ( m=0; h=h+1; flag=flag+1; ) if(h==13 ) ( h=1; ) lcd.setCursor(0,1); lcd.print("HAVE A NICE DAY"); //-------Time // setting-------// state1=digitalRead(hs); if(state1==1) ( h=h+1; flag=flag+1; if(flag<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12) lcd.print("PM"); if(flag==24)flag=0; if(h==13)h=1; ) state2 = digitalRead (ms); if(state2==1)( s=0; m=m+1; ) )

   Дякую Вам за інтерес до інформаційному проектусайт.
   Якщо Ви хочете, щоб цікаві та корисні матеріали виходили частіше, і було менше реклами,
   Ви можете підтримати наш проект, пожертвувавши будь-яку суму його розвитку.

Годинник зі світлодіодним підсвічуванням та пульсуючою хвилинною стрілкою на мікроконтролері Arduino
Цей унікальний годинник зі світлодіодним підсвічуванням і пульсуючою хвилинною стрілкою вдалося виготовити завдяки використанню мікросхеми ШІМ-контролера TLC5940. Його головним завданням є розширити кількість контактів із ШІМ-модуляцією. Ще однією особливістю цього годинника є перероблений аналоговий вольтметр в прилад вимірювальний хвилини. Для цього на стандартному принтері було роздруковано нову шкалу та наклеєно поверх старої. Як така, 5-а хвилина не відраховується, просто протягом п'ятої хвилини лічильник часу показує стрілку, що вперлася в кінець шкали (зашкалює). Основне керування реалізовано на мікроконтролері Arduino Uno.

Для того щоб підсвічування годинника не світилося надто яскраво в темній кімнаті, була реалізована схема автоматичного підстроювання яскравості в залежності від освітленості (використовувався фоторезистор).

Крок 1: Необхідні компоненти



Ось що потрібно:

  • Модуль аналогового вольтметра на DC 5V;
  • Мікроконтролер Arduino UNO або інший відповідний Arduino;
  • Монтажна плата Arduino (прото плата);
  • Модуль годинника реального часу DS1307 (RTC);
  • Модуль із ШІМ-контролером TLC5940;
  • Пелюсточні світлодіоди підсвічування – 12 шт.;
  • Компоненти для збирання схеми автоматичного регулювання яскравості (LDR).

Також, для виготовлення деяких інших компонентів проекту бажано мати доступ до 3D-принтера та верстата лазерного різання. Передбачається, що цей доступ у вас є, тому інструкції на відповідних етапах будуть додаватися креслення для виготовлення.

Крок 2: Циферблат




Циферблат складається з трьох деталей (шарів) вирізаних на верстаті лазерного різання з 3 мм листа МДФ, які скріплюються між собою за допомогою болтів. Пластина без прорізів (знизу праворуч на картинці) поміщається під іншою пластиною для позиціонування світлодіодів (знизу зліва). Потім окремі світлодіоди поміщаються у відповідні пази, і зверху одягається лицьова панель (зверху на малюнку). По краю циферблата просвердлено чотири отвори, через які всі три деталі скріплюються разом за допомогою болтів.

  • Для перевірки працездатності світлодіодів на цьому етапі використовувалася плоска батарейка CR2032;
  • Для фіксації світлодіодів використовувалися невеликі смужки липкої стрічки, що приклеювалися з заднього боку світлодіодів;
  • Усі ніжки світлодіодів були заздалегідь зігнуті відповідним чином;
  • Отвори з обох боків були просвердлені заново, якими й виконувалося скріплення болтами. Виявилося, що це набагато зручніше.

Технічне креслення деталей для циферблату доступне за :

Крок 3: Розробка схеми



На цьому етапі було розроблено електрична схема. Для цього використовувалися різні підручники та посібники. Не будемо сильно заглиблюватися в цей процес, у двох файлах нижче представлено готову електричну схему, яка була використана в цьому проекті.

Крок 4: Підключення монтажної плати Arduino





  1. Насамперед треба розпаяти всі голчасті контакти на монтажних та секційних платах;
  2. Далі, зважаючи на те, що харчування 5V і GND використовують дуже багато плат і периферійних пристроїв, для надійності, було припаяно по два дроти на 5V та GND на монтажній платі;
  3. Далі був встановлений ШІМ-контролер TLC5940 поруч із контактами, що використовуються;
  4. Після цього виконується підключення контролера TLC5940, згідно зі схемою підключення;
  5. Для того, щоб була можливість використовувати батарею, було встановлено модуль RTC на краю монтажної плати. Якщо припаяти його посередині плати, то не буде видно позначення контактів;
  6. Виконано підключення модуля RTC, згідно зі схемою підключення;
  7. Зібрано схему автоматичного контролю яскравості (LDR), ознайомитися можна за посиланням
  8. Виконано підключення проводів для вольтметра шляхом підключення проводів до висновку 6 і GND.
  9. Наприкінці було припаяно 13 проводів для світлодіодів (На практиці виявилося, що це було краще зробити до того, як приступати до кроку 3).

Крок 5: Програмний код

Програмний код, наведений нижче, був зібраний з різних шматків для компонентів годинника, знайденого в інтернеті. Він був повністю налагоджений і в даний час повністю працездатний, до того ж були додані докладні коментарі. Але перед завантаженням у мікроконтролер врахуйте такі пункти:

  • Перед прошивкою Arduino потрібно розкоментувати рядок, який встановлює час:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    Після прошивки контролера з цим рядком (час задано), потрібно знову закоментувати його і прошити контролер заново. Це дозволяє модулю RTC використовувати батарею для запам'ятовування часу, якщо зникне основне живлення.
  • Щоразу, коли ви використовуєте "Tlc.set()", вам потрібно використовувати "Tlc.update"

Крок 6: Зовнішнє кільце

Зовнішнє кільце для годинника було надруковано на 3D-принтері Replicator Z18. Воно прикріплюється до годинника за допомогою гвинтів на лицьовій стороні годинника. Нижче надається файл із 3D-моделлю кільця для друку на 3D-принтері.

Крок 7: Складання годинників


Мікроконтролер Arduino з рештою електроніки був закріплений на задній стороні годинника за допомогою саморізів і гайок як розпірки. Потім підключені всі світлодіоди, аналоговий вольтметр та LDR до проводів, які раніше були підпаяні до монтажної плати. Всі світлодіоди з'єднані між собою однією ніжкою і підключені до контакту VCC на контролері TLC5940 (колом просто припаяний шматок дроту).

Поки що все це не дуже добре ізольовано від коротких замикань, але робота над цим буде продовжена в наступних версіях.




Top