Часы на arduino nano: Arduino электронные часы своими руками на основе микроконтроллера

Содержание

делаем своими руками компактные часы

На нашем сайте было написано уже много уроков по созданию различных часов на основе Ардуино и микроконтроллеров - и самые недорогие часы, и цифровые часы на ATMega328, и даже самые стильные электронные часы. Сегодня мы сделаем современные, компактные и удобные наручные часы на основе платы Sparkfun Pro Micro и дисплея ST7789.

Шаг 1. Комплектующие

Для того, чтобы сделать компактные наручные часы на основе Ардуино или аналогов нам понадобятся следующий набор комплектующих:

Плата Arduino

На этот раз мы используем плату Sparkfun Pro Micro 3.3 V 8 MHz.

Дисплей

Используем ST7789 1.3" IPS LCD.

Литий-полимерный аккумулятор

Возьмем для часов 301420 LiPo.

Зарядник LiPo

Используем плату для зарядки LiPo 15 х 15 мм.

Чип RTC

На этот раз мы используем DS3231M, это встроенный кварцевый генератор, никаких дополнительных компонентов не требуется.

Батарея RTC

Необязательно, только если вы хотите сохранить время, даже если батарея LiPo разряжена. MS412FE - это крошечная перезаряжаемая батарея емкостью 1 мАч, согласно спецификации RTC, 1 мАч может сохранять время в течение многих дней.

Ремешок для часов

Самый простой и недорогой вариант - заказать ремешок для часов из ткани шириной 20 мм.

Дополнительно

Дополнительно могут пригодиться, например, диод 1N5822, четыре 6 мм винта M2, лента из медной фольги и несколько проводов.

Шаг 2. Фиксируем плату и дисплей

Используйте небольшой кусок прозрачного пластика как на фото выше, чтобы скрепить вместе Pro Micro и дисплей.

Шаг 3. Подключаем землю

Прочитайте технические характеристики ЖК-дисплея, предоставленные вашим поставщиком.

Отрежьте немного ленты из медной фольги, соедините все выводы GND (земля) и отрицательные выводы дисплея и закрепите на пластине FPC. Затем паяем контакты с медной фольгой.

Шаг 4. Питание

Подсоедините выводы GND платы к медной фольге. Подключите контакты Vcc к выводу Vcc дисплея.

Шаг 5. Подключаем выводы дисплея

Вот краткое описание всех соединений:

LCD  -> Arduino
LED+ -> GPIO 10
SDA  -> GPIO 16(MOSI)
SCL  -> GPIO 15(SCLK)
RST  -> GPIO 18(A0)
DC   -> GPIO 19(A1)
CS   -> GPIO 20(A2)

Шаг 6. Удаляем индикатор питания

Индикатор питания всегда включен и потребляет более 1 мА непрерывно, поэтому лучше его убрать. Нужно распаять и аккуратно снять светодиод.

Шаг 7. Подключаем LiPo батарею

Вот краткое описание всех соединений:

Плата зарядки +ve      -> Pro Micro J1 коннектор рядом с USB сокетом (5V)
Плата зарядки -ve      -> Pro Micro GND пин
Плата зарядки Батарея +ve -> LiPo +ve -> 1N5822 диод -> Pro Micro Raw Pin
Плата зарядки Батарея -ve -> LiPo -ve

Большинство плат зарядки LiPo лучше использовать в качестве входа 5В. Тем не менее, плата Pro Micro не обеспечивает вывод USB 5В. К счастью, разъем J1 рядом с USB-разъемом на самом деле подключен к контакту USB 5В. Внимание! Не паяйте 2 разъема вместе.

Шаг 8. Подключаем RTC

DS3231M очень маленький и требует подключения к крошечной батарее, будьте терпеливы и соедините все вместе:

DS3231M pin 2 (Vcc)  -> плата Vcc
DS3231M pin 5 (GND)  -> плата GND, MS412FE RTC батарея -ve
DS3231M pin 6 (VBAT) -> MS412FE RTC батарея +ve
DS3231M pin 7 (SDA)  -> плата GPIO 2 (SDA)
DS3231M pin 8 (SCL)  -> плата GPIO 3 (SCL)

Шаг 9. Подключаем датчик движения

Мы можем использовать 2 датчика вибрации в качестве датчика движения, чтобы активировать "пробуждение" платы. Однако в часах нет места для установки двух 5-миллиметровых датчиков вибрации. Мы пытались заменить на один 3 мм датчик вибрации и тестировали несколько дней. Но это приводит к неверному пробуждению часов и батарея разряжается в течение дня.

Шаг 10. Программируем

Если вы этого еще не сделали - скачайте и установите Arduino IDE.

Добавить поддержку Sparkfun Pro Micro

Следуйте инструкциям по установке, чтобы добавить поддержку плат Sparkfun: https://github.com/sparkfun/Arduino_Boards

После установки поддержки не забудьте

выбрать правильную плату в Arduino IDE:

Сервис -> Плата -> SparkFun Pro Micro (Tools -> Board -> SparkFun Pro Micro)

Сервис -> Процессор -> ATmega32U4 (3,3 В, 8 МГц) (Tools -> Processor -> ATmega32U4 (3.3V, 8MHz))

Библиотека Adafruit RTClib

Используйте Arduino IDE Library Manager для установки RTClib: https://www.arduino.cc/en/guide/libraries

Библиотека Arduino GFX

Добавьте библиотеку Arduino_GFX в Arduino IDE: https://github.com/moononournation/Arduino_GFX.git

Если вы никогда этого не делали, то просто добавьте библиотеку из GitHub, - нажмите зеленую кнопку «Клонировать или скачать», а затем «Скачать ZIP». Далее в Arduino IDE выберите меню: Эскиз -> Включить библиотеку -> Добавить библиотеку .ZIP ... -> выберите загруженный файл ZIP (англ.: Sketch -> Include Library -> Add .ZIP Library... -> ZIP).

Библиотека LowPower

Добавьте библиотеку Arduino_GFX в Arduino IDE: https://github.com/rocketscream/Low-Power.git

Установка такая же, как описано выше.

Основной код часов Arduino  - Watch Core

Основной код наших часов Ардуино можно скачать по ссылке: https://github.com/moononournation/ArduinoWatch.git. Также вы можете скачать ZIP-архив часов ниже:

Пожалуйста, используйте Arduino IDE, скомпилируйте и загрузите RTClibSetRTC.ino, чтобы инициализировать время в RTC. А затем скомпилируйте и загрузите Arduino_Watch.ino.

Шаг 11. Печатаем корпус на 3D-принтере

Скачать схему и проект корпуса можно по ссылке: https://www.thingiverse.com/thing:3799868

Шаг 12. Итоговый результат

Теперь вы можете показать то, что вы сделали своим друзьям! Кроме того, вы также можете:

  • запрограммировать и создать свой собственный циферблат;
  • добавить больше датчиков или компонентов, чтобы они стали, например, умными часами;
  • создать свой собственный корпус для часов.

Наверх ↑

Простые часы на Arduino и матричном индикаторе


Приветствую дорогие самоделкины! Совсем недавно познакомился с одной очень интересной штукой микроконтроллером – который меня сильно заинтересовал, и тогда показавшись чем-то волшебным и непостижимым. Но я решил начать их изучение, почитав немного литературы, насмотревшись видеороликов в YouTube других пользователей, а также повторив парочку чужих конструкций, задумал спроектировать свое несложное, но в то же время полезное устройство, которым бы можно было пользоваться каждый день, и которое бы смог повторить любой начинающий радиолюбитель. Посмотрел свои запасы, и нашел матричный светодиодный индикатор на драйвере MAX7219, и вот подумал, с этого могут получится неплохие красивые часы.

Признаюсь, идея на такое применение этого типа дисплея не моя, подобных проектов в интернете полно, но всё же. Основными требованиями были простота конструкции и доступность компонентов. Чтобы максимально упростить конструкцию решил в качестве мозгов применить платформу Arduino Nano, и готовый модули часов реального времени на точном чипе DS3231, а также для отображения температуры окружающей среды применил цифровой датчик температуры DS18B20.

В течении недели на макетной плате был собран прототип устройства, написана и отлажена прошивка, а также составлена схема устройства.

Остаточно схема начала выглядеть так:


В последствии при наладке устройства оказалось, что яркость дисплея даже в дневное время достаточно велика, не говоря уже об ночном, поэтому было решено добавить автоматическую регулировку яркости дисплея в зависимости от окружающего освещения, для чего я применил фоторезистор. Теперь днём яркость дисплея составляет около 80%, что позволяет продлить срок службы индикатора не перегревая светодиоды, и не режет глаза, а ночью около 10%, чего хватает для комфортного отображения. Также были добавлены кнопки для настройки времени и даты.

Итак, в последней версии часы умеют:
• настраивать время и дату с кнопок
• раз в минуту отображать окружающую температуру (только плюсовую).
• При нажатии на определенные кнопки отображать кроме времени еще дату, или температуру
• Автоматически регулировать яркость дисплея (четыре уровня яркости)


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

До этого времени я постоянно делал платы методом ЛУТа, но в этот раз я решил попробовать сделать с помощью фоторезиста, и результатом был полностью доволен.


Подробнее о фоторезистивном изготовлении платы полно материала в сети Интернет.
Далее залудив плату в сплаве Розе, я установил все модули и компоненты кроме Arduino на свои посадочные места и запаял так как Arduino в свою очередь сначала нужно запрограммировать, а потом запаять. После пайки обязательно необходимо отмыть флюс с платы.
Процесс прошивки стандартный для данного типа плат Arduino, который я очень коротко опишу:
• Нужно открыть файл прошивки в программе Arduino IDE

• В меню Инструменты – плата выбрать плату Arduino Nano

• В меню Инструменты – порт выбрать свой COM порт к которому подключена Arduino
Простые часы на Arduino и матричном индикаторе
Далее нужно прошить контроллер нажав кнопку Загрузка.
Простые часы на Arduino и матричном индикаторе

Подробнее об прошивке плат Arduino и причины возникновения разных ошибок смотрите в интернете.
После успешной прошивки Arduino необходимо запаять на плату на свое место согласно распиновке. Запаянные компоненты на плате выглядят так:
Простые часы на Arduino и матричном индикаторе
Далее нужно правильно установить индикатор, а именно - если смотреть на плату со стороны деталей, как показано на рисунке ниже, контакт Din должен быть справа.
Простые часы на Arduino и матричном индикаторе
После соединения половинок должен получится вот такой «бутерброд»
Простые часы на Arduino и матричном индикаторе
Если все собрано и прошито правильно часы должны заработать сразу после подключения питания. В качестве источника питания необходимо применять блок питания с выходным напряжением в 5В. Ток потребления часов в режиме максимальной яркости не более 200мА, что позволяет в качестве источника питания применить USB порт компьютера. Я применил отдельный сетевой блок питания на 5В с током в 1А.
Простые часы на Arduino и матричном индикаторе
Для подключения блока питания я установил стандартный для этого разъем 5мм*2мм
Простые часы на Arduino и матричном индикаторе
Далее следует настроить время и дату, специальными кнопками:
Простые часы на Arduino и матричном индикаторе
Для этого необходимо на две секунды зажать копку «Настройка» после чего начнут мигать цифры отображающие часы, кнопками «Вверх» и «Вниз» выставить необходимое время, после чего кратковременно еще раз нажать кнопку «Настройка», и начнут мигать минуты, которые выставляются аналогично, и после окончательной настройки снова на две секунды зажать кнопку «Настройка», для перевода в режим отображения. Для установки даты необходимо в режиме показа времени кратковременно нажать кнопку «Настройка», после чего отобразится дата и еще на две секунды зажать кнопку «Настройка», после чего начнёт мигать дата, которую можно установить кнопками «Вверх» и «Вниз» по аналогии с установкой времени. В итоге получились неплохие часы, которые под силу собрать практически каждому. Часы работают стабильно, ход времени очень точен. В процессе прошивка для них ещё будет обновляться, и исправляться, так что следите…
Простые часы на Arduino и матричном индикаторе
Простые часы на Arduino и матричном индикаторе

Все необходимые для сборки часов материалы Вы можете скачать с Гугл диска.

Простые часы на Arduino Uno [Амперка / Вики]

Что потребуется

Видеоинструкция

Как собрать

Скетч

Прошейте контроллер скетчем через Arduino IDE.

simple-clock.ino
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay2.h>
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(10);
// создаем объекты класса bute для хранения текущего значения Часов, Минут, Секунд
int hours = 0;
int minutes = 0;
int seconds = 0;
// создаем объект класса long для хранения счетчика
long lastTime = 0;
 
void setup() {
   // инициализация дисплея
  qd.begin();
  // инициализируем время
  setTime(__TIMESTAMP__);
}
 
void loop() {
  // как только разница между текущим временем и временем записанным в lastTime становится больше 1000 миллисекунд...
  while(millis()-lastTime > 1000) {
    //...обновляем  lastTime и добавляем к счетчику Секунд +1
    lastTime = millis();
    seconds++;
    // как только счетчик секунд достигнет 60, обнуляем его и добавляем к счетчику Минут +1...
    if (seconds >= 60) {
       seconds = 0;
       minutes++;
    }
    // ...тоже самое для Часов...
    if (minutes >= 60) {
       minutes = 0;
       hours++;
    }
    // ... и обнуляем счетчик Часов в конце дня
    if (hours >= 24) {
       hours = 0;
    }
  }
  // выводим время на дисплей
  qd.displayScore(hours, minutes, true);
}
 
// функция записи текущего времени в переменные
 
void setTime(const char* compileTimeStamp) 
{
    hours = ((compileTimeStamp[11] - '0') * 10
        + (compileTimeStamp[12] - '0'));
 
    minutes = ((compileTimeStamp[14] - '0') * 10
        + (compileTimeStamp[15] - '0'));
 
    seconds = ((compileTimeStamp[17] - '0') * 10
        + (compileTimeStamp[18] - '0'));
}

Где скачать необходимые библиотеки и как их установить?

У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?

У вас предыдущая версия модуля. Она снята с производства пару лет назад. С этим скетчем, библиотекой и схемой сборки модуль работать не будет.

OLED часы (термометр) на arduino и DS3231 – RobotChip

/*

  Тестирование производилось на Arduino IDE 1.8.0

  Дата тестирования 17.02.2017г.

*/

 

#include <OLED_I2C.h>                                  // Подключение библиотеки OLED_I2C

#include <DS3231.h>                                    // Подключение библиотеки DS3231

OLED  myOLED(SDA, SCL, 8);                            

DS3231  rtc(SDA, SCL);                                

extern uint8_t MegaNumbers[];                          // Подключение больших шрифтов

extern uint8_t SmallFont[];                            // Подключение маленьких шрифтов

 

int x = 0;                                             // Создаем переменную "х"

 

void setup()

{

  myOLED.begin();                                      // Инициализация Oled дисплея

  rtc.begin();                                         // Инициализация RS3231

}

void loop()

{

  if (x >= 10) {temp();                                // Если "x", больше или равно 10, выполняем цикл "temp"

      x=0;}                                            // Обнулить "x"

  else {clock();}                                      // Если "x", меньше 10, выполняем цикл "clock"

      x++;                                             // Увеличить "x" на 1

}

 

void clock()                                           // Цикл считывания и отображения времени

{  

  myOLED.clrScr();                                     // Очищаем экран

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print(rtc.getDOWStr(), CENTER, 0);            // Отображение дня недели

  String stringOne = rtc.getTimeStr();

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print(stringOne.substring(0,2), 4, 12);       // Отображение часов

  myOLED.print("/", 51, 12);                           // Отображение двоеточие

  myOLED.print(stringOne.substring(3,5), 75, 12);      // Отображение минут

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print(rtc.getDateStr(), CENTER, 57);          // Отображение даты

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(500);                                          // Пауза

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print("-", 51, 12);                           // Убираем двоеточие

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(500);                                          // Пауза

}

 

void temp()                                            // Цикл считывания и отображения температуры

{

  myOLED.clrScr();                                     // Очищаем экран

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print(String(rtc.getTemp() , 1), CENTER, 12);

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print("Temperature", CENTER, 57);             // Отображение надписи

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(2000);                                         // Пауза

}

Часы пропеллер на Arduino NANO своими руками | Лучшие самоделки

Сегодня я буду делать замечательное устройство, которое приковывает взгляд людей своим магическим светодиодным свечением, это – часы, но не обычные, а часы-пропеллер на Arduino NANO. Линейка светодиодов вращаясь по кругу с высокой скоростью вырисовывает циферблат аналоговых часов с ходящими по ним стрелками. Кроме такого отображения они могут показывать любую другую информацию, например, цифровые часы с датой и различными надписями. Я думаю, что подобные часы-пропеллер должен сделать для себя каждый гик-радиолюбитель так как это легко, а результат просто впечатляющий!

Часы пропеллер на Arduino NANO своими руками

Что понадобится чтобы сделать вращающиеся часы:

  • Arduino NANO;
  • Яркие красные светодиоды – 11 шт;
  • Яркие зелёные светодиоды – 5 шт;
  • Синий светодиод – 1 шт;
  • Резисторы 330 Ом – 16 шт;
  • Резистор 2,2 кОм – 1 шт;
  • Резистор 10 кОм – 1шт;
  • Датчик Холла W130;
  • Макетная плата;
  • Небольшой неодимовый магнит;
  • Двигатель от кассетного магнитофона;
  • Аккумулятор – 3,7 В, 240 мА/ч.

Как сделать часы-пропеллер, пошаговая инструкция:

Шаг 1

Часы-пропеллер будем собирать по такой схеме:

Часы-пропеллер схема

Часы пропеллер на Arduino NANO своими руками

Отрежем от макетной платы полоску, на ней будет размещаться вся схема часов-пропеллера вместе с аккумулятором и Ардуино.

Часы пропеллер на Arduino NANO своими руками

Размещаем в линию светодиоды на макетной плате, катоды светодиодов будут спаиваться вместе, поэтому загибаем их к верху в одном направлении, а анод в бок, к каждому из этих анодов будет припаян ограничивающий ток резистор на 330 Ом.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

На фото пока нет самого крайнего синего светодиода, который будет сигнализатором, что на часы подано питание и который будет вырисовывать внешнюю красивую синюю рамку. Так что можете сразу его впаять, я это сделал позже, ему также понадобится резистор, на этот раз 2,2 кОм.

Шаг 2

На другом конце платы припаиваем коннекторы под плату Ардуино, чтобы плата могла в любое время без проблем быть извлечена из схемы часов. Плата не должна располагаться на самом конце мекетной платы, должно оставаться немного места для противовеса, который установим чуть позже. Вставляем плату Arduino на своё место.

Часы пропеллер на Arduino NANO своими руками

Шаг 3

Соединяем проводниками ножки Ардуины со светодиодами согласно схемы.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Теперь подключим датчик Холла.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Припаиваем два пина для джампера который будет подключать питание от аккумулятора, чуть позже к этим контактам я подпаяю микропереключатель, и также два пина под подключение аккумулятора, который будет съёмным. Аккумулятор я притянул к передней части Ардуино с помощью резинки.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Шаг 4

Между платой Arduino и светодиодами я просверлил отверстие. Взял сверло по диаметру вала двигателя надел на неё ролик который стоял на двигателе от кассетного магнитофона, продел свело через отверстие в плате и приклеил этот ролик к макетной плате. Затем взял ещё один точно такой же ролик и надел на сверло (чтобы ролики стояли ровно по оси) с другой стороны платы и также залил термоклеем.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Также термоклеем я зафиксировал проводники снизу платы в нескольких местах.

Часы пропеллер на Arduino NANO своими руками

Шаг 5

Всё, теперь можем заливать счетч часов-пропеллера в Ардуино, его Вы можете скачать отсюда.

Шаг 6

На скорую руку сделал корпус из косков ДСП и фанеры, покрасил переднюю панель в чёрный цвет, по центру сделал отверстие для вала двигателя, который был прикреплён сзади.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Также на обратном от светодиоде конце платы, возле Ардуино просверлил отверстие под болтик, на который я накрутил 3 гайки, чтобы был противовес и можно было сбалансировать стороны платы, чтобы не было большого перевеса какой-либо из сторон.

Шаг 7

Надеваем на вал двигателя нашу плату. Теперь нужно приклеить неодимовый магнит в верхней части, в том месте где будет проходить датчик Холла.

Часы пропеллер на Arduino NANO своими руками

Теперь начинаем плавно подавать напряжение, чтобы часы отрегулировать таким образом, чтобы отметка 12 часов была точно вверху.

Часы пропеллер на Arduino NANO своими руками

Шаг 8

Когда я убедился, что всё работает отлично, я припаял синий светодиод «состояния часов» и также подпаял выключатель питания.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Всё, самодельные часы-пропеллер готовы! Чтобы их включить надо сначала переключить выключатель на плате во включенное состояние, при этом загорится синий крайний светодиод, а затем уже подаём питание на двигатель, настраивая на лабораторном БП необходимое напряжение, чтобы циферблат выровнялся.

Часы пропеллер на Arduino NANO своими руками

Часы пропеллер на Arduino NANO своими руками

Внизу Вы видите аналоговые часы совмещённые с цифровыми и дополнительной надписью, это моя экспериментальная прошивка. Надеюсь Вам понравилась данная самоделка и Вы повторите её, так как она не сложная на самом деле.

Часы пропеллер на Arduino NANO своими руками

Светодиодные часы своими руками на ардуино (Arduino) WS2812 управляемых (адресных)

После очередной модернизации своего 3D принтера . Кстати статья и видео по модернизации Anet 8A скоро выложу.

И так о чем это я. Ах да. И вот решил я напечатать плоские и большие детали. Именно они у меня отрывались от стала 3D принтера. Даже бывало отрывало вместе со скотчем.

Нашел я модель светодиодных часов . Скачать модель можно со страницы автора.

Нашел я модель светодиодных часов

Для проекта желательно взять плату Arduino Nano , и модуль часов DS3231.

Сборка часов на Arduino и адресных светодиодах WS2812:

1. Печатаем все детали на 3D принтере.

Печатаем все детали на 3D принтере

2. Приклеиваем светодиодную ленту на 2 пластины и спаиваем их зигзагом.

Приклеиваем светодиодную ленту на 2 пластины и спаиваем их зигзагом

Нашел я модель светодиодных часов.

3. Устанавливаем решетки поверх ленты. Получим вот такой результат. Устанавливаем решетки поверх ленты

4. Укладываем все в корпус часов и крепим все на винтики М3.

Укладываем все в корпус часов и крепим все на винтики М3

5. Ставим крепление для ножек и крепим ножки.

Ставим крепление для ножек и крепим ножки.

6. Подключаем электронику по схеме.

Подключаем электронику по схеме.

Подключаем электронику по схеме.

7. Загружаем прошивку в Arduino. Автор использует Arduino Pro Mini, я решил использовать Arduino NANO v2 (ATmega168).

Загружаем прошивку в Arduino. Автор использует Arduino Pro Mini, я решил использовать Arduino NANO v2 (ATmega168)

Прошивка у автора мне не понравилась и я решил ее полностью переписать. В связи с тем что у часов всего 5 строк. То стандартные библиотеки для вывода текста на матрицу не подошли. И пришлось самостоятельно создавать каждый символ.

В итоги у часов получились вот такие возможности:

1. Настройка цвета циферблата.

2. Изменение яркости 10 режимов.

3. Вывод текущей даты в виде бегущей строки.

4. Сохранение всех настроек в энергонезависимую память. При выключении часы сохраняются все настройки.

5. Модуль часов реального времени, оснащенный дополнительной батарей, позволяет хранить текущую дату и время не завися от наличия питания на самом устройстве.

6. Прошивка уменьшаться на Arduino Nano V2.0 (ATmega168) . При увеличение функционала часов необходимо использовать Arduino Nano V3.0 (ATmega328) .

В итоги у часов получились вот такие возможности

В связи с тем что я использовал Arduino Nano V2.0 (ATmega168), дальше расширять функционал не получится. Нет свободной памяти. Но если поставить Arduino Nano V3.0 (ATmega328) в которой памяти в 2 раза больше . Соответственно функционал можно расширят:

1. Сделать авто регулировку яркости. Поставив фото резистор.

2. Поставить спикер и написать настройку будильника.

3. К функциям будильника можно сделать стробоскоп. Мигать просто белым или как полицейская сирена одна сторона синим другая красным.

4. Поменять Arduino Nano на NodeMCU и сделать управление часами через смартфон. Вывести погоду, курс валюты. Грубо говорят сделать информер. Но так как дисплей часов не очень большой. Большая информация будет не очень читабельная.

У автора корпуса есть доработанные версии часов. Например подставка сделана уже побольше и часы более устойчивые. Также сделаны накладки которые закрывают провода с задней стороны.

Больше фото по проекту сотрите тут: Светодиодные часы своими руками на ардуино (Arduino) WS2312

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока. И до встречи в следующем проекте.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Clock_v1 Clock_v1.ino10 Kb 261 Скачать

Вы можете скачать файл.

Самодельные часы - плеер на Arduino с сенсорным дисплеем Nextion.

Разработка часов на Arduino достаточно увлекательная и интересная тема. На моём сайте вы найдете большое количество различных проектов часов, в том числе и проект часов на Arduino с дисплеем Nextion.

В данном проекте будем дорабатывать часы на Arduino с сенсорным дисплеем Nextion. Напечатаем новый корпус на 3D принтере и добавим возможность воспроизведения MP3 файлов с карты памяти.

В данном проекте будем дорабатывать часы на Arduino с сенсорным дисплеем Nextion. Напечатаем новый корпус на 3D принтере

Первая версия часов с сенсорным дисплеем.

Предыдущая версия часов получилась неплохой, но были недостатки. Один из недостатков заключался в том, что часы обладали минимальным набором функций: вывод даты и времени, температуры, влажности в помещении. Но больше всего не понравился моим подписчикам на YouTube корпус. Он был сделан из банки из-под чипсов и имел ряд недочетов. Подписчики на канале предложили переделать корпус, и напечатать его на 3D принтере, что я и сделал.

Для того, чтобы собрать часы на Arduino с дисплеем Nextion нам понадобится:

1. Arduino Nano V3.0 (ATmega328). Версия Arduino Nano V2.0 (ATmega168) не подойдет, так как для текущего функционала недостаточно памяти.

2. Дисплей Nextion 2,8 дюйма. Можно и другого размера.

3. Датчик температуры и влажности SHT3x (SHT31) .

4. Часы реального времени (RTC) DS3231, я использовал версию mini.

5. Разъем 5.5 мм, для подключения питания часов.

6. MP3-плеер DFPlayer Mini.

7. Динамик 3Вт. 4Ом.

8. Провода для соединения элементов.

9. Пластик для печати корпуса.

10. Винты, гайки и шайбы М3.

11. Краска для покраски корпуса. Можно и не красить.

Эти комплектующие пригодятся при сборе часов с сенсорным дисплеем

Эти комплектующие пригодятся при сборе часов с сенсорным дисплеем. Возможно, упустил и расписал не все, что использовал. Если есть замечания или предложения, пишите в комментарии.


Схема подключения самодельных часов и плеера.

С комплектующими определились. Сейчас можно все собрать. Для тестирования работы часов я собрал электронику на макетной плате вот по такой схеме.

Схема подключения самодельных часов и плеера.

Перед тем, как установить все в корпус, необходимо запрограммировать Arduino. Это связано с тем, что мы будем использовать аппаратные пины RX TX. На плате это pin 0 и 1. Если мы подключим к ним дисплей, то прошить Ардуино не получится, будет выводить ошибку. Вот почему так важно перед сборкой загрузить скетч в Arduino NANO.

Скетч часов на Arduino с дисплеем Nextion.

Скетч часов на Arduino с дисплеем Nextion можно скачать внизу статьи, в разделе материалы для скачивания. Там же вы найдете все необходимые библиотеки.

Скетч часов на Arduino с дисплеем Nextion можно скачать внизу статьи, в разделе материалы для скачивания. Там же вы найдете все необходимые библиотеки.

В коде менять ни чего не нужно, достаточно правильно установить все библиотеки и загрузить код в Arduino.

Если у вас возникнут трудности, задавайте вопросы на форуме, там быстрее увижу и отвечу вам.

Корпус для часов Nextion.

После того, как забраковали мой первый корпус для часов, я решил не расстраиваться, а сделать 3D Model в программе Fusion 360.

3D Model в программе Fusion 360

Модель, к сожалению, утеряна, так как у меня сломался жёсткий диск. Остался только код для печати на 3D принтере пластиком PLA, соплом 0,4 мм.Код можно скачать в разделе материалы для скачивания.

Корпус удался не с первого раза.

Первая модель получилась достаточно маленькая и компактная, но устанавливать элементы было бы достаточно сложно.

Первая модель получилась достаточно маленькая и компактная, но устанавливать элементы было бы достаточно сложно. А порой даже невозможно. Для установки дисплея мне пришлось подточить крепления задней крышки.

Долго мучиться я не стал с подгонкой всех элементов и сделал вторую версию. Но тут ждал меня ещё один небольшой казус. При распечатке выпал нагреватель и пластик перестал нагреваться до нужной температуры, что привело к расслоению верхних слоев детали.

Долго мучиться я не стал с подгонкой всех элементов и сделал вторую версию.

Третий вариант получился более удачный. Я решил его зачистить и покрасить. В итоге получился вот такой красивый белый корпус.

Третий вариант получился более удачный. Я решил его зачистить и покрасить. В итоге получился вот такой красивый белый корпус.

Сборка часов с сенсорным дисплеем.

Сборка часов с сенсорным дисплеем.

После того, как Arduino запрограммирована, можно приступить к установке электроники в корпус. Поэтапно устанавливаем все элементы: датчик температуры и влажности, модуль MP3 плеера, динамик, его устанавливаю на заднюю крышку с помощью крепежного кольца.

крышку с помощью крепежного кольца.

Дисплей Nextion закрепляю с помощью винтов M3, предварительно подложив по три шайбы между корпусом и дисплеем. Это необходимо для того, чтобы корпус и дисплей были на одном уровне. Устанавливаем разъём питания на заднюю крышку. После чего зданию крышку устанавливаем на место, и закрепляем ее с помощью двух винтов.

Часы готовы и теперь их можно проверить.

Часы готовы и теперь их можно проверить.

Обзор готовых часов плеера на Ардуино с дисплеем.

Часы готовы и пора проверить их работоспособность. Предлагаю рассмотреть, что уже умеет данная самоделка?

Функции и возможности самодельных часов на Ардуино

Функции и возможности самодельных часов на Ардуино:

  • Вывод даты и времени;
  • Вывод температуры и влажности;
  • Настройка даты и времени;
  • Время не сбрасывается при отключении питания;
  • Воспроизведение музыки с карты памяти;
  • Настраиваемые плейлисты.
  • Воспроизведение композиций из выбранного плейлиста.
  • Воспроизведение случайной композиции.
  • Настройка громкости.

Более наглядно о возможностях данной самоделки вы сможете посмотреть в видео.

Вывод.

Возможности Arduino NANO достаточно обширные и реализовать на данной отладочной плате можно различные самоделки. Я планировал добавить еще пару функций, но памяти уже не достаточно и ардуинка начинает подвисать, если посылать большое количество команд с дисплея. Поэтому следующая версия часов с дисплеем Nextion будет на ESP32.

Если есть вопросы, проблемы, предложения и пожелания, пишите их в комментариях. Комментарий можно написать без регистрации на сайте.

Не забывайте подписываться на мой YouTube канал, вступать в группу Вконтакте, в группу на Facebook.

И всем пока-пока.

До встречи в новом проекте.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Скетч Clock-v1.3 Скетч Clock-v1.3.zip5 Kb 83 Скачать

Вы можете скачать файл.

Часы-1.3.HMI Часы-1.3.HMI.zip154 Kb 73 Скачать

Вы можете скачать файл.

Часы-1.3.tft Часы-1.3.tft.zip155 Kb 71 Скачать

Вы можете скачать файл.

gcode, PLA, соплом 0,4 мм gcode, PLA, соплом 0,4 мм.zip1797 Kb 63 Скачать

Вы можете скачать файл.

leonardosposina / arduino-led-dot-matrix-clock: Простой светодиодный точечный матричный проект на основе Arduino Nano (ATmega328), также использующий модуль DS3231RTC и датчик LDR.
перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Мобильный
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
.
Nano V3.0 Модуль щита записи данных для устройства записи Arduino Nano 3,3 В с интерфейсным модулем SD-карты Часы реального времени RTC | |

Щит регистрации данных для Arduino NANO

новый для Arduino NANO Shield. Вы можете быстро приступить к работе - сохраняете данные в файлы на любой SD-карте, отформатированной в FAT16 или FAT32, для чтения любой программой построения графиков, электронных таблиц или анализа.

Включенные часы реального времени ставят все ваши данные вместе с текущим временем, чтобы вы точно знали, что произошло, когда!

Пожалуйста, обратите внимание, что этот предмет не поставляется с Arduino NANO (вам понадобится один со щитом) или SD-картой.Это не с батареей RTC.

Интерфейс SD-карты работает с картами формата FAT16 или FAT32. Схема переключения уровня 3.3 В предотвращает повреждение вашей SD-карты

Часы реального времени (RTC) поддерживают текущее время, даже когда Arduino отключен. Резервная батарея длится годами

Включенные библиотеки и примеры кода для SD и RTC означают, что вы можете быстро начать работу

Область прототипирования для пайки разъемов, схем или датчиков.

Встроенный регулятор 3, является одновременно надежным опорным напряжением, а также надежно работает SD карты, которые требуют много энергии для запуска

Работает с Arduino NANO или MICRO

Примечание: это не включает батарею

В пакет включено:

1 х Nano Data Logging Shield для Arduino

,

Arduino - Библиотеки

Справочник Язык | Библиотеки | Сравнение изменения

Библиотеки

Среда Arduino может быть расширена за счет использования библиотек, как и большинство платформ программирования. Библиотеки предоставляют дополнительную функциональность для использования в эскизах, например, работа с оборудованием или манипулирование данными. Чтобы использовать библиотеку в эскизе, выберите ее из « Эскиз»> «Импортировать библиотеку ».
Ряд библиотек поставляется с IDE, но вы также можете загрузить или создать свою собственную.Посмотрите эти инструкции для деталей об установке библиотек. Также есть учебник по написанию ваших собственных библиотек. См. Руководство по стилю API для получения информации о создании хорошего API в стиле Arduino для вашей библиотеки.

Стандартные библиотеки

  • EEPROM - чтение и запись в «постоянное» хранилище
  • Ethernet - для подключения к Интернету с использованием Arduino Ethernet Shield, Arduino Ethernet Shield 2 и Arduino Leonardo ETH
  • Firmata - для связи с приложениями на компьютере по стандартному последовательному протоколу.
  • GSM - для подключения к сети GSM / GRPS со щитом GSM.
  • LiquidCrystal - для управления жидкокристаллическими дисплеями (ЖК-дисплеями)
  • SD - для чтения и записи SD-карт
  • Servo - для управления серводвигателями
  • SPI - для связи с устройствами, использующими шину последовательного периферийного интерфейса (SPI)
  • SoftwareSerial - для последовательной связи на любых цифровых выводах. Версия 1.0 и позже Arduino включают библиотеку NewSoftSerial Микала Харта как SoftwareSerial.
  • Stepper - для управления шаговыми двигателями
  • TFT - для рисования текста, изображений и фигур на экране Arduino TFT
  • WiFi - для подключения к интернету с помощью Arduino WiFi Shield
  • Wire - двухпроводной интерфейс (TWI / I2C) для отправки и получения данных через сеть устройств или датчиков.

Библиотеки Matrix и Sprite больше не являются частью основного дистрибутива.

101 только библиотеки

  • CurieBLE - Взаимодействие со смартфонами и планшетами с Bluetooth Low Energy (BLE).
  • CurieIMU - Управление бортовым акселерометром и гироскопом.
  • CurieTimerOne - Позволяет использовать функции таймера.
  • CurieTime - Позволяет контролировать и использовать внутренние RTC (часы реального времени)

Должны только библиотеки

  • Аудио - Воспроизведение аудиофайлов с SD-карты.

библиотеки Due, Zero и MKR1000

  • USBHost - общение с периферийными устройствами USB, такими как мыши и клавиатуры.
  • Планировщик - Управление несколькими неблокирующими задачами.

Ноль и все библиотеки MKR на базе SAMD21

  • AudioFrequencyMeter - сэмплируйте аудиосигнал и верните его частоту
  • AudioZero - воспроизведение аудио файлов с SD-карты
  • RTC - часы реального времени для планирования событий
  • ArduinoSound - простой способ воспроизведения и анализа аудиоданных
  • I2S - Чтобы использовать протокол I2S на SAMD21

WiFi 101 и MKR1000 Библиотека

  • WiFi101 - библиотека для использования только с Wifi shield 101
  • WiFi101OTA - беспроводные обновления на MKR1000

MKR WiFi 1010, MKR VIDOR 4000, Arduino NANO 33 IoT и Arduino UNO WiFi Rev.2

  • WiFi NINA - библиотека для использования модуля WiFi Nina вышеперечисленных плат.

Arduino Nano 33 BLE, Nano 33 BLE Sense, NANO 33 IoT, Uno WiFi Rev 2, MKR WiFi 1010.

  • ArduinoBLE - библиотека для использования функций BLE вышеперечисленных плат.

Arduino Nano 33 IoT и UNO WiFi Rev. 2

  • ArduinoLSM6DS3 - библиотека для использования 6-осевого IMU LSM6DS3, доступная в Arduino Nano 33 IoT и Arduino UNO WiFi Rev. 2.

Arduino Nano 33 BLE и BLE Sense

  • ArduinoLSM9DS1 - библиотека для использования 9-осевого IMU LSM9DS1, доступная на Arduino Nano 33 BLE и Arduino Nano 33 BLE Sense.

Arduino Nano 33 BLE Sense

  • PDM - библиотека для использования цифрового микрофона MP34DT05, наша библиотека PDM может использоваться также с нашей библиотекой ArduinoSound.
  • ArduinoAPDS9960 - библиотека для использования датчика жеста APDS9960; он чувствует жест, цвет, освещение и близость окружения.
  • ArduinoLPS22HB - библиотека для использования барометра и датчика температуры LPS22; это ультракомпактный датчик, который функционирует как цифровой выходной барометр.
  • ArduinoHTS221 - библиотека для использования датчика относительной влажности HTS221; это ультракомпактный датчик, в котором используется планарная конденсаторная структура из полимерного диэлектрика, способная обнаруживать изменения относительной влажности, возвращаемые в виде цифрового выхода на последовательный интерфейс.

MKR Только для транспортных средств Библиотека

MKR FOX 1200 только библиотека

  • SigFox - библиотека для использования только с MKRFOX1200

MKR WAN 1300 только библиотека

  • MKRWAN - библиотека для использования только с MKR WAN 1300

MKR Только GSM 1400 Библиотека

  • MKRGSM - библиотека для использования только с MKR GSM 1400

MKR NB 1500 только Библиотека

  • MKRNB - библиотека для использования только с MKR NB 1500
.

Arduino - Провод

Эта библиотека позволяет вам общаться с устройствами I2C / TWI. На платах Arduino с разметкой R3 (разводка 1.0) SDA (линия передачи данных) и SCL (линия синхронизации) находятся на разъемах выводов рядом с выводом AREF. Arduino Due имеет два интерфейса I2C / TWI: SDA1 и SCL1 находятся рядом с выводом AREF, а дополнительный - на контактах 20 и 21.

В качестве ссылки в таблице ниже показано расположение TWI-выводов на различных платах Arduino.

Плата I2C / TWI контакты
Uno, Ethernet A4 (SDA), A5 (SCL)
Мега2560 20 (SDA), 21 (SCL)
Леонардо 2 (SDA), 3 (SCL)
Должно 20 (SDA), 21 (SCL), SDA1, SCL1

По состоянию на Arduino 1.0, библиотека наследует от функций Stream, что делает ее совместимой с другими библиотеками чтения / записи. Из-за этого send () и receive () были заменены read () и write ().

Примечание

Существуют как 7-, так и 8-битные версии адресов I2C. 7 бит идентифицируют устройство, а восьмой бит определяет, записывается оно или читается с него. Библиотека Wire использует 7-битные адреса. Если у вас есть таблица данных или пример кода, который использует 8-битный адрес, вы должны отбросить младший бит (т.е.е. сдвиньте значение на один бит вправо), получая адрес от 0 до 127. Однако адреса от 0 до 7 не используются, поскольку они зарезервированы, поэтому первый адрес, который можно использовать, равен 8. Обратите внимание, что при подключении контактов SDA / SCL необходим подтягивающий резистор. Пожалуйста, обратитесь к примерам для получения дополнительной информации. На плате MEGA 2560 имеются подтягивающие резисторы на контактах 20 - 21 на борту.


Реализация библиотеки Wire использует 32-байтовый буфер, поэтому любая связь должна быть в пределах этого предела.Превышение байтов в одной передаче будет просто сброшено.

Для использования этой библиотеки
#include

Примеры

    Цифровой потенциометр
  • : Управление аналоговыми устройствами Цифровой потенциометр AD5171.
  • Master Reader / Slave Writer: Запрограммируйте две платы Arduino для связи друг с другом в конфигурации Master Reader / Slave Sender через I2C.
  • Master Writer / Slave: Запрограммируйте две платы Arduino для связи друг с другом в конфигурации Master Writer / Slave Receiver через I2C.
  • SFR Ranger Reader: считывание ультразвукового дальномера с интерфейсом I2C.
  • Добавить SerCom: добавление дополнительных функций Последовательные интерфейсы к микроконтроллерам SAMD.

См. Также

Последняя редакция 2019/12/24 по SM

Функции
.

Отправить ответ

avatar
  Подписаться  
Уведомление о