СТРАННЫЕ ЧАСЫ В NTP

Уважаемые ElectroFriends,

Это было в то время’ времени, что я не вижу новых публикаций .... Я надеюсь, что это не вина какого-то вируса, и я надеюсь, что вы все в добром здравии. У меня лично нет (К счастью) проблемы, но с социальной точки зрения у меня было бы промышленное количество. Я живу 1000 метров в стране, которая должна быть туристическим направлением: но гулять по стране в этот период - как в пустыне. Действительно, возможно, пустыня более живая.

Но оставим это в покое и перейдем к цели этой статьи.. К настоящему времени вы знаете, что я одержим часами, и я думаю, что произвел несколько десятков нынешних и других, более древних и вышедших из употребления..
На этот раз я изготовил часы, которые отмечают только часы.. E и минуты ?. Да даже те, но каждый 5 минут.
На этой фотографии представлен готовый продукт. (так сказать: пожалей эстетику): Я использовал его как основу для 12 Светодиоды, отображающие часы, диск, уничтоженный отказавшим Hard_Disk. Каждый светодиод представляет час согласно классическому расположению всех циферблатов..

Следующие фото: перед часами и внутренним оборудованием:

E и минуты ??. Они тоже представлены, но с шагом 5 используя часовые светодиоды и заставляя их мигать точно на 5 минут. Два центральных светодиода определяют AM / PM..
Возьмем пример: Руда 10 е 17 минут: Горит светодиодный индикатор часа 10 и индикатор часа «3», который мигает, пока минуты не пройдут 20 Индикатор часов «4» мигает и т. д.. Что происходит на данный момент (например) как 10,10. Только индикатор часа «10» будет мигать, указывая на то, что 10 е 10 минут. И эта система действует для всех минут, которые совпадают с часами..

Скажем так, часы никогда не бьют точное время !. Но зная трюк, мы всегда можем сказать, что это X часов, 5 минут. Вместо этого часы точны. почему ?.
Потому что я устал от различных RTC типа DS1307, DS3231 и другие, которые никогда не могут быть точными с течением времени и всегда нуждаются в корректировке. Есть и другие способы составить точное расписание: например получить из сети 220В i 50 Гц доступны с очень простой схемой, и что с помощью подходящей схемы делителя можно получить частоту 1 HZ может управлять счетными цепями, начиная с секунд. Но это решение годилось несколько десятилетий назад.: Я сам использовал его для создания первых цифровых часов.. Понятно, что сегодня этот путь нежизнеспособен по ряду причин.: 1) напряжение 220 это опасно, 2) вам нужно несколько интегрированных, чтобы все это, 3) Это не удобно. Итак, в этом проекте я теперь полагался на ИНТЕРНЕТ.. То есть получение времени и даты с серверов NTP, которые управляют временем. Я уже создал часы, которые через ЖК-дисплей отображали полную дату и время, взятые с серверов NTP..

Итак, давайте посмотрим на особенности конструкции:

Используемое оборудование:
• Микро Arduino Nano 328 как главный двигатель для управления часами
• Микро ESP8266_1 для управления NTP-сервером
MAX7219 для управления светодиодами. большой: с 3 провода летают 64 светодиод только с одним интегрированным с возможностью последовательного подключения других микросхем.
12 светодиод (холодный белый цилиндр высокой яркости).
• N.1 Двунаправленный преобразователь уровня 3V / 5V для адаптации уровней ESP к уровням Arduino
• N.1 по модулю Контроллер AMS1117 (да 5В и 3В) для питания микро ESP

Преобразователь уровня необходим, поскольку ESP работает только при 3 В, и поэтому все уровни PIN управляются с помощью этого уровня.. Стабилизатор напряжения на 3 В используется для питания ESP независимо от Micro Arduino_Nano. (который, в свою очередь, имеет выход 3 В).

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

IDE ARDUINO для составления и программирования скетча, относящегося к управлению сервером NTP. IDE должна быть настроена соответствующим образом, чтобы распознавать серии ESP от самых маленьких до самых универсальных с точки зрения функциональности и наличия PIN-кода.. Список "ОТКРЫТКИ"А также"КНИГИ». Основным скетчем для управления можно управлять с помощью ARDUINO IDE.: Я лично предпочитаю использовать другую, гораздо более производительную среду IDE.: КОД:БЛОКИРОВАТЬ. Он отлично работает практически со всеми версиями ARDUINO, включая стандартные библиотеки.. Это очень быстро и имеет практичное «автоматическое завершение» для каждой функции / инструкции.. И сообщения об ошибках намного четче, чем в Arduino IDE.. Не обновляется до библиотек WIFI. А если для скетча библиотеки не нужны, просто вставьте их в «проект» как в виде файла .h, так и .cpp..

Для управления MAX7219 Я использую "кастомную" библиотеку, расширенную и измененную мной по сравнению с исходными библиотеками. (присутствует в сети). Он не имеет функций и форм стандартной библиотеки. (у него нет файлов .h и .cpp) но это файл .ino. Может управлять светодиодами любого типа., любой тип дисплея 7 сегменты и модули матричного отображения 8×8 е 7×5. За то, что я отображаю 7 также предусмотрены сегменты типа А COMMON_ANODE: это потому, что чип обрабатывает только устройства COMMON_CATODE. В этом случае требуется небольшое дополнение оборудования.. Кто-то теперь задается вопросом, зачем использовать два Micro для создания часов, которые никогда не будут "ТОЧНЫМИ".. Было бы намного проще использовать ESP32, который оснащен более чем достаточным количеством контактов для управления устройствами, используемыми в проекте.. Но в то время у меня было куплено несколько ESP8266, и я не был заинтересован в приобретении ESP32 и необходимости заново открывать для себя функции..

мама, я повторяю, это личный выбор.

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

Сторона ESP: этот микро произведен компанией "Эспрессиф»Позволяет полностью управлять подключением к Интернету для разработки веб-страниц. (через WIFI) для просмотра на обычном планшете или ПК. Я сделал несколько набросков, чтобы попытаться создать WEB-страницы разных размеров и размеров.. В моем проекте "CIABATTA ELETTRONICA" управление реле осуществляется с помощью веб-страницы, на которой состояние ВКЛ / ВЫКЛ 5 Relais.

К сожалению, этот ESP очень скуп на PIN-коды.: на практике они только 2 usabili GPIO / 0 и GPIO / 2. Я приколоть RX / TX они используются как последовательный интерфейс. Для программирования очень важно иметь интерфейс между Arduino IDE и самой микросхемой.: если уровни GPIO / 0, они не в правильном состоянии NON вы никогда не сможете его запрограммировать: IDE не распознает последовательный порт, даже если он подключен.
Когда я купил первый ESP, я также купил модуль "ОТЛАДЧИК». Этот модуль рассматривается как последовательный порт.. Вставив ESP в разъем, IDE распознает порт и программирование (заземление на GPIO / 0 автоматически) сделано правильно. Модуль также имеет кнопку сброса для перезапуска ESP..

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

Набросок su ESP8266_1:
После обычных настроек для ВАЙ-ФАЙ (с подключением к роутеру и присвоением динамического IP-адреса) последовательный порт открыт (baud_rate 19200) управляется стандартной библиотекой "Software_Serial”Использование булавок GPIO / 0 и GPIO / 1 приехать RX / TX которые через модуль преобразователя уровня подключены к двум контактам Arduino. А "РУКОПОЖАТИЕ" или же "Я отправляю вам данные, вы отвечаете, что получили их”Использование определенного RX / TX. Это первое интервью используется для управления зимним / летним временем.: скетч ожидает получить код от Arduino »36«На солнечное время или»72"На летнее время. Это связано с тем, что сервер NTP передает время только в солнечном времени, но библиотека, которая управляет им с помощью "SetTimeOffset»Обновите время на летнее время, установив значение на 7200. Все это управляется в «Настройках»..

Нел «петля»: вы ждете получения определенного символа от Arduino, чтобы указать, что сам Arduino готов принять значения HOUR и MINUTE, которые используются для обновления часов. Получив этот символ, ESP запрашивает у NTP-сервера почасовые значения, и они принимаются. 8 символы в форме HH:М.М.:SS и хранится в строке. Сервер NTP также может отправлять значения даты, которые в этом случае не нужны.. Помните, что существует несколько библиотек, которые управляют серверами NTP, но не все из них управляют значениями даты и времени.. Вместо этого используемая библиотека является полной. Затем мы переходим к преобразованию значений часов и минут в двоичный формат, получая два байта: он байты СЕЙЧАС (ценности из 00 а 23) и байт MINUTI (ценности в группах 5) после простого десятичного / двоичного преобразования. Эти два байта последовательно отправляются через последовательный порт в ARDUINO, который будет использовать их для обновления часов.. Затем цикл возобновляется с самого начала..

Примечание: Описанная выше система является последней из серии испытаний.: изначально ESP отправил строку HH:М.М.:Завершите SS, который Arduino получил и сохранил по очереди в аналогичной строке, чтобы затем выполнить преобразование и обновить время. Эта система до определенного момента работала корректно: затем он "сошел с ума" в том смысле, что полученная строка была "ГРЯЗНОЙ" со значениями, абсолютно неконтролируемыми. Это поставило под угрозу правильность значений. Все это мне удалось обнаружить через обычную систему «отладки»., на серийном мониторе, сообщений, чтобы проверить, что на самом деле получила Arduino. И ESP отправил правильные значения !.

Нарисуйте свой Arduino (микро использовал Arduino_Nano):

Также в этом скетче сделаны обычные настройки портов, включая стандартные последовательные и относящиеся к “Software_Serial” и инициализировал библиотеку для управления MAX719 и соответствующими светодиодами, первая выполняемая операция - отправить код «36» или «72» в ESP для установки летнего / зимнего времени.. Этот выбор происходит от перемычки на контакте Arduino, который заземлен или оставлен свободным.. После отправки и подтверждения ESP цикл настройки завершается..

Секция ПЕТЛЯ это проще, чем вы можете себе представить: они запускаются последовательно 3 функции: первым получит значения времени (два байта, отправленные ESP), второй для обновления индикаторов часов и третий для обновления индикатора минут. И цикл возобновляется.
«Львиная» часть - это процедура, которая должна получать значения «ЧЧ» и «ММ» от ESP.: также в этом случае "РУКОПОЖАТИЕ»: персонаж отправляется, чтобы уведомить ESP. ESP отвечает, отправляя два преобразованных байта.. Проверка значения часов определяет включение светодиодов AM / PM, расположенных на передней панели часов.. Две другие процедуры проверяют значения ЧЧ и ММ и получают доступ к их светодиодным индикаторам..

Давайте посмотрим, как загораются светодиоды часов, а значит, и минут.:
MAX7219 может индивидуально управлять до 64 светодиод или матрица 8×8 (64 светодиод). Регистр обращается к отдельным цепочкам (D0 / D7) в то время как другой регистр определяет, какой светодиод (или точка матрицы) включить (или выключить) в зависимости от того, как установлен другой регистр, в соответствии со следующей конфигурацией:

DP, A / G относятся соответственно к положению сегментов классического дисплея 7 сегменты + десятичная точка (DP). Oppure a 8 подключенные светодиоды (общий катод) таким же образом, назначив позицию от DP до G каждому светодиоду.. Часы имеют 12 светодиод: чтобы решить их все, я определил по две цепочки, каждая из 6 светодиод: в этом случае: реестр "Д0”Направлю светодиоды с часов 12(00) все 5(17), в то время как регистр "D1»Направлю часы из 6(18) все 11(23). Светодиоды будут гореть до тех пор, пока не изменятся часы или минуты.. Это связано с тем, что MAX7219 также заботится о мультиплексировании.. И никаких ограничивающих резисторов для светодиодов не требуется..

В ОСНОВНОМ скетче на arduino_Nano специальная таблица 12 элементы содержат кодировку регистра данных с битами, которые должны быть включены или выключены, а бит DP используется, чтобы различать, какую цепочку использовать для включения часов / минут. Светодиоды загораются при переводе относительного положения в «1» или «0», чтобы выключить его.. Это таблица:

байт Tab_Led_Ore [12] знак равно
{
DPABCDEFG ORE MIN HEX Nota: бит "G" никогда не используется
B01000000, // Компенсировать 0 руды “0” “12” 00 0х40
B00100000, // Компенсировать 1 руды “1” “13” 5 0х20
B00010000, // Компенсировать 2 руды “2” “14” 10 0x10
B00001000, // Компенсировать 3 руды “3” “15” 15 0x08
B00000100, // Компенсировать 4 руды “4” “16” 20 0x04
B00000010, // Компенсировать 5 руды “5” “17” 25 0x02
B11000000, // Компенсировать 6 руды “6” “18” 30 0xC0
B10100000, // Компенсировать 7 руды “7” “19” 35 0xA0
B10010000, // Компенсировать 8 руды “8” “20” 40 0х90
B10001000, // Компенсировать 9 руды “9” “21” 45 0x88
B10000100, // Офсетная руда А “10” “22” 50 0x84
B10000010 // Офсетная руда Б “11” “23” 55 0x82
};

ВНИМАНИЕ: Нет необходимости использовать регистры D0 / D1. Остальные от D2 до D7 также можно использовать, если они не используются для других целей.. У чипа нет особых предпочтений.

ПРОИЗВОДСТВО ПЕЧАТНЫХ ПЛАТ И СХЕМ

Не имея специального оборудования, мне приходится довольствоваться производством небольших печатных плат с использованием "PRESS_AND_PEEL». Однако после серии опытов мне удалось получить достаточно действенный конечный продукт.. Три печатные платы этого проекта:: первый содержит Arduino Nano micro и микросхему MAX7219, второй - ESP и интерфейсная электроника, а третий - i 12 часы LED.

Схема первой печатной платы:

Справа разъем для вставки micro Arduino Nano, слева корпус MAX7219. Специального источника питания нет, так как USB-разъем микроконтроллера подключается к любому зарядному устройству для мобильных телефонов или планшетов с выходом 5V 1 / A., достаточно, чтобы поддержать целое. К сбросу подключена небольшая кнопка, которая одновременно сбрасывает Nano и ESP. Один разъем передает сигналы сброса,V5, GND, Техас, RX к плате, на которой находится ESP. Контакт AM / PM подключен к небольшой пластине с двумя светодиодами AM / PM.. Наконец мост 36/72 установить так называемое летнее / зимнее время.

Схема второй платы:

Эта печатная плата поддерживает: регулятор 5V > 3V для питания ESP, преобразователь уровня для регулировки уровней от 5 до 3 в, и, наконец, разъем для размещения ESP. я 5 штифты наверху подключены соответственно к 5 штырь дель печатной платы основной. Входящие сигналы RX / TX регулярно подключаются к контактам TX / RX ESP через преобразователь уровня.. Примечание: делителя напряжения также было бы достаточно.

Схема третьей печатной платы:

Размещение i 12 светодиод с двумя разъемами (A_F) для соответствующих цепей и двух выводов DG0 / DG1. Затем соединения A / F соединяются параллельно. (А с А, B con B, и т.д.) для подключения к соответствующим контактам MAX7219. А также DG0 / DG1.

Я забыл эту последнюю печатную плату: это относится к двум светодиодам AM / PM, которые загораются в соответствии с уровнем 0/1 присутствует на входном контакте.

.

 

В заключении:

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

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

gvsoft март 2021

2 ответы
  1. Picmicro675
    Picmicro675 говорит:

    Поздравляю с работой.
    Пробую похожий, но с 7SD. Nano не используется, потому что ESP-03 (что я использую) это позволяет мне связать DS3231 и SPI с MAX7912.
    На данный момент у меня нет свободного времени. Может я заберу позже.

Ответить

Хотите принять участие в обсуждении?
Вы можете внести свой вклад!

оставьте ответ