Оглавление:

Истинные двоичные часы с синхронизацией по NTP: 4 шага
Истинные двоичные часы с синхронизацией по NTP: 4 шага

Видео: Истинные двоичные часы с синхронизацией по NTP: 4 шага

Видео: Истинные двоичные часы с синхронизацией по NTP: 4 шага
Видео: БЕСПОКОИМСЯ ЗА ВАШ КОД, А ТО ВСЕ ПЛОХО — Суровый веб #124 2024, Июль
Anonim
Истинные двоичные часы с синхронизацией по NTP
Истинные двоичные часы с синхронизацией по NTP
Истинные двоичные часы с синхронизацией по NTP
Истинные двоичные часы с синхронизацией по NTP

Настоящие двоичные часы отображают время дня как сумму двоичных долей полного дня, в отличие от традиционных «двоичных часов», которые отображают время в виде десятичных цифр в двоичной кодировке, соответствующих часам / минутам / секундам. Традиционные "двоичные часы" на самом деле используют двоично-десятичное-шестидесятеричное кодирование. Какой бардак! Настоящие двоичные часы значительно упрощают ситуацию.

В настоящих двоичных часах первая цифра показывает вам полдня, вторая цифра - четверть дня, третья цифра - восьмая часть дня и т. Д. Их можно очень быстро прочитать с любым разрешением (с практикой, конечно). Первая цифра эффективно кодирует AM по сравнению с PM, вторая цифра кодирует раннее AM / PM или позднее AM / PM и так далее.

При разработке своих настоящих двоичных часов я использовал двенадцатизначное разрешение, поэтому день разделен на 2 ^ 12 = 4096 частей (каждое приращение составляет примерно 20 секунд). Вместо того, чтобы хранить все цифры в строке, 12 цифр были разделены на 3 ряда по 4 цифры. Хотя фактические двоичные цифры не изменились, это позволяет считывать часы как 3 шестнадцатеричные цифры, закодированные в двоичном коде: первая строка показывает 16-е число дня (1,5 часа), вторая строка показывает 256-е число дня (~ 5 минут) и третья строка показывает 4096-е сутки (~ 20 секунд).

Часы синхронизируются с NTP (протокол сетевого времени) с помощью ESP8266. ESP8266 настроен так, что при запуске нажатие кнопки на часах переводит его в режим настроек. В режиме настроек часы создадут сеть Wi-Fi, которая обслуживает веб-страницу, которую можно использовать для ввода ваших собственных настроек Wi-Fi, сервера NTP и часового пояса. Эта информация хранится в EEPROM ESP8266 и считывается, когда часы запускаются в режиме часов, чтобы он мог подключиться к Интернету и получить время.

Запасы:

  • NodeMCU ESP8266
  • Светодиодная лента WS2812B
  • Нажать кнопку
  • Резистор 470 Ом
  • Резистор 10 кОм
  • Конденсатор 470 мкФ
  • эскимо
  • Мрамор
  • Дерево (или другой лист материала) для корпуса

Шаг 1: Схема

Схема
Схема
Схема
Схема
Схема
Схема
Схема
Схема

Для отображения в этом проекте используется светодиодная лента RGB, уложенная в 3 ряда. Я вырезал 3 полосы по 8 светодиодов из полосы светодиодов WS2812B и спаял их вместе. (Они хрупкие, и паять маленькие контактные площадки может быть затруднительно. Я обмотал припаянные концы изолентой, чтобы изолировать их от любых изгибов.) Хотя мне нужно было всего 4 светодиода на ряд, я вырезал полоски из 8, чтобы я можно было бы увеличить расстояние между огнями, используя только все остальные светодиоды. Затем эти полоски приклеивали к плоской основе из палочек для мороженого. Между каждым рядом двойной слой палочек для мороженого обеспечивает профиль, так что лицевая сторона может быть прижата к внутренней стороне корпуса часов (см. Фото).

Светодиодная лента питается от VU и GND NodeMCU. VU получает питание (почти) напрямую от USB, поэтому он обеспечивает 5 В для светодиодов WS2812B, хотя ESP8266 работает от 3,3 В. Я поместил конденсатор емкостью 470 мкФ напротив источника питания для ленты WS2812B, чтобы защитить светодиоды. Данные для светодиодной ленты подключены к выводу D3 NodeMCU через резистор 470 Ом. Обратитесь к этому руководству для получения дополнительной информации о том, как управлять светодиодами WS2812B с помощью ESP8266. Схема была припаяна к макетной плате с несколькими разъемами «папа-мама» для NodeMCU.

Кнопка также была прикреплена к D6 NodeMCU. Эту кнопку можно нажать во время запуска часов, чтобы отправить их в режим настроек (в котором можно изменить настройки Wi-Fi, NTP-сервер и настройки часового пояса). На одном конце кнопка подключена к D6, а также к GND через резистор 10 кОм, а на другом конце - к источнику питания. Когда кнопка не нажата, D6 показывает низкий уровень; при нажатии D6 показывает высокий уровень.

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

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

Программное обеспечение для ESP8266 было написано с использованием кода Arduino. Светодиоды обрабатываются с помощью библиотеки FastLED, а синхронизация NTP выполняется библиотекой NTPClient. Время синхронизируется NTP каждый час.

В начале функции настройки программа проверяет, нажата ли кнопка, подключенная к D6. Если это так, ESP8266 создает сеть Wi-Fi (SSID и пароль можно изменить в коде, SSID по умолчанию - «TrueBinary», а пароль - «thepoweroftwo»). Подключитесь к этой сети с любого устройства и перейдите к 192.168.1.1. ESP8266 будет обслуживать веб-страницу с формами, где вы можете ввести свой SSID и пароль Wi-Fi, предпочтительный сервер NTP и смещение часового пояса от UTC. После того, как эти формы будут отправлены на ESP8266, он сохранит информацию во внутреннем хранилище EEPROM.

Если кнопка не нажата, часы запускаются нормально, считывают настройки из EEPROM, подключаются к Wi-Fi для использования NTP и начинают отображать время.

ПРИМЕЧАНИЕ: функция setDisplay (int index) принимает цифровой номер от 0 до 11, где 0 - первая цифра (половина дня), а 11 - последняя цифра (1/4096 дня), и включает соответствующий светодиод, используя " светодиоды "массив. Эта функция должна быть заполнена в соответствии с тем, как вы настроили отображение. Мой закомментированный пример соответствует тому, как я спаял строки зигзагообразно, а не встык, и пропустил все остальные светодиоды.

Шаг 3: жилье

Корпус
Корпус
Корпус
Корпус
Корпус
Корпус

Чтобы разместить часы, я использовал уголок из крашеного дерева, который у меня оказался. На одной внешней стороне я просверлил 12 отверстий в сетке, соответствующих положениям светодиодов. Затем я прикрепил светодиоды к внутренней части уголка, приклеив выступающие грани палочек для мороженого между рядами к дереву (как показано). Чтобы рассеять свет от светодиодов, я наклеил стеклянные шарики поверх отверстий. Я добился этого, окунув нижнюю половину каждого шарика в эпоксидную смолу, а затем поместив их в отверстия. NodeMCU и макетная плата были прикручены к другой внутренней стороне уголка. Боковые стороны были покрыты небольшими треугольниками из дерева, прикрепленными столярным клеем. На одной из сторон есть отверстие для порта micro USB на NodeMCU и вырез в углу для кнопки.

Шаг 4: Готово

Выполнено!
Выполнено!
Выполнено!
Выполнено!

Наши настоящие бинарные часы готовы! Чтобы настроить его, удерживайте кнопку нажатой во время подключения, чтобы перевести его в режим настроек, а затем введите учетные данные WiFi на его веб-странице. После настройки часы можно подключить где угодно, они автоматически подключатся к Интернету и начнут отображать время в двоичном формате.

Чтобы считывать время в истинном двоичном формате, требуется определенная практика, но это забавное упражнение, и через некоторое время оно становится быстрым способом узнать время с первого взгляда!

Рекомендуемые: