Русский
Русский
English
Статистика
Реклама

Новый год

Перевод Встречаем 2021 год с Raspberry Pi верхушка для новогодней елки с симуляцией огня

07.12.2020 18:15:24 | Автор: admin
Скоро Новый Год, и если у вас есть пара часов свободного времени, можно сделать hi-tech украшение для новогодней елки, пальмы или мандаринового дерева. Без разницы оно будет неплохо смотреться везде.


Под катом гифка с демонстрацией работы этой штуки

Основа конструкции светодиодная гибкая лента NeoPixel 32x8, Raspberry Pi и хорошее настроение. Ну и да, понадобится немного кода на Python.

Что нужно для работы



  • Raspberry Pi 3, Raspberry Pi 4 или Raspberry Pi Zero W с GPIO разъемом.
  • Источник питания, мышь, монитор, клавиатура и HDMI кабель для Raspberry Pi
  • Гибкая лента 32x8 NeoPixel RGB LED Matrix
  • Набор джамперов (M-to-F, M-to-M и F-to-F)
  • 5В источник питания
  • Конденсатор 1000 F
  • Еще можно взять полоску ткани для рассеивания света LED-ленты
  • Напечатанная на 3D-принтере основа для всей конструкции.

Часть 1. Подготовка RGB-матрицы


На этом этапе нужно будет припаять пару контактов и воспользоваться примером кода от Adafruits NeoPixel Uberguide. Для нашего проекта нужно два источника питания для малинки и светодиодной ленты. Для последней нужно будет подключить не только питание, но и данные. Здесь все просто.


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

Подключаем данные

Берем любую землю от малинки и подключаем ее к GND-линии данных светодиодной ленты.


Подключаем источник питания

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


Теперь давайте проверим матрицу, запустив код от Adafruit

Запускаем малинку подключаем питание RGB-матрицы, открываем терминал и устанавливаем зависимости:

sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka


Загружаем код из репозитория автора статьи:

git clone https://github.com/carolinedunn/RGBTreeTopper

Выбираем папку scrollingTextMask:

cd RGBTreeTopper

Запускаем тестовый код fillMatrix.py:

sudo python3 32-fillMatrix.py


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

Советы: Если система не работает с пином 21 GPIO малинки, попробуйте пины 10, 12 или 18. Затем нужно открыть 32-fillMatrix.py из папки scrollingTextMask и обновить вывод GPIO. В этом случае нужно будет соответствующим образом изменить и другие файлы проекта.

Останавливаем скрипт при помощи комбинации Ctrl+C.

Часть 2. Зажигай!


Теперь в терминале, который все еще открыт, набираем команду:

sudo python3 treeTopper.py


В папках, которые мы взяли с GitHub, есть папка fire, которая содержит 10 картинок в формате jpeg. Вот что делает код treeTopper.py:

Объявляет библиотеки, которые используются в коде. Внимание нужно обратить на PIL (Pillow Imaging Library), это библиотека, которая добавляет возможность обработки изображений в интерпретатор Python.


  • Сообщает Pi, куда отправлять данные на матрицу, указав 21 пин GPIO (строка 8).
  • Указывает параметры матрицы, включая размер, яркость и время паузы между демонстрацией каждой из картинок (строки 9-13).
  • Создает массив с данными тех самых 10 JPEG файлов в последовательном порядке (строки 28-32).
  • Анализирует пиксели изображений и преобразовывает их в RGB-матрицу с выводом изображения на матрицу RGB (строки 35-41).
  • Делает паузу на 0.2 секунды, затем повторяет процесс для следующего изображения (строка 42).
  • Процесс выполняется до момента выполнения комбинации Ctrl+C.

А если хочется собственных картинок?

Параметры должны быть следующими:

  • Формат JPEG.
  • Ширина 32 пикселя.
  • Высота 8 пикселей.

Каждый файл нужно сохранять под названиями 1-10.JPG в соответствующую папку.

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


Запуск при загрузке

Как только мы подготовили все изображения, используем Python для запуска скрипта при загрузке устройства. Лучший вариант Crontab.

В консоли открываем Crontab: crontab -e

Вводим 1 и нажимаем Enter.


Таким образом открывается новый файл crontab. Внутри опускаемся вниз и enter ->

sudo python3 /home/pi/RGBTreeTopper/treeTopper.py

@reboot sudo python3 /home/pi/RGBTreeTopper/treeTopper.py

Нажимаем Ctrl+X, а затем crontab для сохранения.

Выключаем малинку и отключаем все, что собрали.

Часть 3. Финальная сборка


На этом шаге уже можно продемонстрировать новогодний огонек на вершине не менее новогодней елки.

  • Печатаем корпус на 3D-принтере.
  • Пропускаем в нужные места провода и фиксируем их.
  • Изгибаем LED-матрицу, сильно давить не нужно.
  • Водружаем конструкцию на вершину елочки. Включаем и радуемся.


Кстати, автор в курсе, что его изобретение по форме напоминает рулон туалетной бумаги.


Она шутит, что на фоне происходящего в 2020 году это вполне адекватно. Но вообще ее можно и изменить конструкция при желании легко модифицируется, так что рулон бумаги превращается да во что угодно.

Подробнее..

Перевод Подарок на Рождество от программиста Alexa, WebSocket и мобильное приложение

25.12.2020 16:21:43 | Автор: admin
Каждый год я дарю брату рождественские подарки необычным способом. Это началось как шутка на Рождество, но в конце концов дошло до того, что я превращаю подарок в настоящее испытание. В прошлом году я заставил его писать и звонить подаркам, чтобы узнать, готовы ли они к открытию. За год до этого мой брат должен был провести некоторые исследования пород собак Американского клуба собаководов и воспользоваться их результатами, чтобы понять, в каком порядке открывать свои подарки. Но в этом году всё по-другому.

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




Игра


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

В игре можно выбрать два действия: move или explore. Explore исследование комнаты в поисках лакомства и возможности открыть подарок, move перемещение в соседнюю комнату. По мере перемещения карта начинает заполняться, с каждым движением макет видно всё лучше. Во всех комнатах Alexa рассказывает часть истории. Чем глубже мой брат в подземелье, тем более запутанной становится история. Здорово, да?


Карта

Мобильное приложение


Чтобы вызвать восторг от завтрашних приключений, каждый год в канун Рождества я даю брату ламинированное Руководство по получению подарков. В этом году в нём есть QR-код, в котором зашифрована ссылка для скачивания мобильного приложения. Брат установит приложение и будет готов к приключениям. Само приложение довольно простое. На самом деле это приложение только для того, чтобы смотреть на карту. Все команды идут через Alexa, так что нельзя делать ничего другого, кроме как смотреть на телефон и планировать следующий шаг.

У приложения два экрана: страница инвентаря и страница карты. На странице с инвентарем показываются найденные подарки и их изображения. На странице карты показаны исследованные комнаты и места, где нашлись предметы.


Страницы мобильного приложения

Каждый раз, когда мне нужно что-то быстро разработать, я захожу в OutSystems. Это интуитивно понятная платформа для разработки с минимумом кода, которая позволяет быстро создавать реактивные веб-страницы, веб-сервисы и мобильные приложения. Что в ней самое лучшее? Её можно бесплатно использовать для проверки концепции! Есть несколько подвижных частей, создающих впечатление волшебства:

  • API.
  • Мобильное приложение.
  • Навыки Alexa.
  • WebSocket.

API


Для выполнения логики и хранения состояния у приложения должен быть мозг. Мозг лучшего рождественского подарка это простой API, созданный в OutSystems. Он загружает положение на карте, проверяет возможность движения, перемещает вас, а затем рассказывает вам небольшую часть истории. Приложение целиком имеет только две конечные точки API: одну для перемещения, а другую для получения текущего состояния. Получить текущее состояние можно только при выходе из приложения и возврате в него (я знаю, что брат иногда будет делать перерывы). За кулисами, ниже, есть модель данных, которая строит карту, сюжет, подарок в инвентаре и переходы между комнатами.


Диаграмма отношений в игре.

С помощью OutSystems я создал модель данных, логику перемещения персонажа, а также REST API для управления всем этим. Пришло время создать фронтенд!

Мобильное приложение


И снова нам поможет OutSystems. У сервиса простой пользовательский интерфейс, позволяющий перетаскивать компоненты на экран, а затем собрать всё это в мобильное приложение для вас. Итак, я приступил к работе и нарисовал две страницы, чтобы отслеживать, какие подарки были найдены и какие области на карте исследованы. Для загрузки данных карты и их отображения на экране я воспользовался API. Как я уже упоминал, это довольно простое мобильное приложение, на него можно только смотреть. Я поиграл с CSS, добавил несколько рождественских изображений и решил, что этого достаточно.

Навык Alexa


Каждый день на работе я использую AWS, так что довольно хорошо знаком со многими сервисами платформы. Но я никогда раньше не разрабатывал навыки Alexa. Подойдя к приставке, я начал смотреть видео. Оказывается, команда Alexa в AWS действительно знает, что делает. Я увидел одно из лучших представлений простого решения сложной проблемы. В навыке есть две составляющие:

  • Модель взаимодействия.
  • Код на бэкенде.

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


Два интента для навыка Alexa.

Код на бэкенде писался так же легко. Можно написать код навыков в VS Code, с помощью расширения Alexa отправив его в облако. Это достаточно просто. Определите в коде, что будет делать каждый интент при вызове. В игре я только вызывал разработанное в OutSystems API, поэтому для каждого интента написал быстрый вызов с помощью axios к соответствующей конечной точке API, попросив Alexa повторить ответное сообщение. Готово!

WebSocket


Во время тестирования приложения я быстро понял, что кое-что забыл. Как обновить мобильное приложение, когда Alexa перемещает персонажа? Мне нужно было что-то, что передаёт данные в приложение всякий раз, когда происходит событие. И это был WebSocket. WebSocket, по сути, открывает двусторонний канал связи между браузером (или мобильным приложением) и сервером. Это позволяет получать сообщения сразу вместо того, чтобы постоянно опрашивать сервер на предмет обновлений.

Внутри WebSocket происходит много вещей. К счастью для меня, есть компании, сосредоточенные на упрощении всего этого для потребителей. Я создал бесплатную учётную запись на Pusher, сконфигурировал приложение несколькими щелчками мыши и был готов интегрировать Pusher в мой API и мобильное приложение. WebSocket можно представить себе как подход издатель/подписчик. Когда в системе что-то происходит, запускается событие, подписчик получает его и выполняет действие.

Я обновил API для публикации события Pusher всякий раз, когда персонаж перемещался или исследовал комнату. Кроме того, я включил в сообщение часть возвращённой API истории. В мобильное приложение я добавил простой фрагмент кода подписки на события на JavaScript. Подписка обновляет данные на экране и отображает новую часть истории. Быстрый тест через мою Echo показал, что персонаж перемещается по карте, как только я проговариваю слово. Круто, да?


Панель управления Pusher показывает график сообщений WebSocket.

Разоблачение


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

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

И это бесплатно! Всё, что я сделал для этого подарка, возможно на уровне бесплатного использования, а это значит, что единственной затратой было моё время. Я потратил около 30 часов, чтобы придумать историю, нарисовать карту и собрать всё воедино. Это была инвестиция наверняка. На Рождество мы узнаем, стоила ли она того. Обязательно сообщу о результатах. С Рождеством!


Обучение со скидкой чем не подарок самому себе, в новом 2021 году? А промокод HABR сделает этот подарок еще приятнее, добавив 10% к скидке на баннере.
image


Подробнее..

IoT-елочка, гори!..

26.12.2020 22:16:10 | Автор: admin
Пришел новый русский в магазин, чтобы сдать новогоднюю гирлянду.
Не работает? спрашивает его продавец.
Почему? Очень даже работает, отвечает тот.
А в чем тогда дело?
Покупатель вздохнул и ответил:
Не радует.


Привет, друзья!

Очень надеемся, что гирлянда, изготовление которой мы опишем в статье, порадует вас и своим видом, и тем фактом, что вы можете ее сделать сами. Совсем не претендуя на то, что эта гирлянда станет серьезным конкурентом недорогих китайских вариантов, мы все же считаем, что такой небольшой DIY в преддверии новогоднего праздника может стать прекрасным развлечением для всей семьи, ведь тут и сборка железочек, и программирование, и составление сценария логики работы гирлянды, и, в конечном счете, созидание красоты, сделанной собственной руками!

Под катом:
  1. Собираем прототип гирлянды
  2. Пишем код для нескольких режимов работы
  3. Подключаем к платформе Rightech IoT Cloud
  4. Придумываем и реализовываем сценарий работы гирлянды
  5. Создаем праздничное настроение


image



Идея сделать гирлянду возникла не случайно. Украшая офис, мы нашли в мешке маленькую елочку, которой совершенно не холодно в офисе зимой, но совсем одиноко без огоньков, тем более что основной елке в офисе достались и игрушки, и гирлянды, а маленькой ничего. Но мы посчитали, что это не беда, а даже ее преимущество. Значит сделаем для нее не только уникальную гирлянду своими руками, но и сами выберем ей цвета светодиодов (возьмем цвета нашей компании: белый и голубой) и даже организуем ей беспроводное управление режимами по Zigbee-кнопке. А для гарантии безопасности еще и добавим автоматическое выключение по расписанию.

Модели устройств, файлы со сценариями автоматов, код для NodeMCU в конце статьи (не пытайтесь повторить это дома попробуйте повторить это дома!).

image

Собираем прототип


Создание прототипов это процесс сборки простой рабочей модели продукта или системы. Для начала построим его на макетной плате, а затем, как водится, красиво спаяем.

Итак, для маленькой гирлянды нам понадобится:

  • 12 белых и 6 голубых светодиодов, управление которыми производится независимо (назначение: гореть и радовать)
  • 2 резистора на 220 Ом, подбираемые исходя из расчета сопротивления и мощности по закону Ома (назначение: защита светодиодов от перегрева и выхода из строя)
  • 2 биполярных NPN транзистора (назначение: управляем транзистором маленьким током от управляющего пина, а пропускаем на диоды большой ток с выхода 3.3 В, так мы защищаем управляющий пин платы)
  • 2 резистора на 1 кОм на базу транзистора (назначение аналогичное, ограничиваем ток)
  • плата NodeMCU (назначение: подключение к IoT-платформе и управление транзисторами)
  • батарейки или блок питания (назначение: источник питания для платы)

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

Если изобразить на схеме, то это выглядит так:

image

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




Пишем код


Ниже представлен код для управления режимами гирлянды. Его функции:

1) установить Wi-Fi соединение и подключиться к платформе;

2) подписаться на команды сообщения с топиками led_on, led_off, led_attenuation, led_flashing и выполнять соответствующие действия по управлению светодиодами.

Команды led_on и led_off включают и выключают гирлянду, а команды led_attenuation и led_flashing задают режимы плавного горения и быстрого мигания с периодом, указанным в payload команды.

Обратите внимание, в коде мы используем библиотека Sheduler, которая нужна для того, чтобы одновременно запускать несколько потоков с задачами. Если этого не сделать, то при запуске бесконечного цикла горения светодиодов параллельно получать команды с платформы уже не получится.

#include "Arduino.h"#include "Scheduler.h"      /* https://github.com/nrwiersma/ESP8266Scheduler */#include "EspMQTTClient.h"  /* https://github.com/plapointe6/EspMQTTClient */                           /* https://github.com/knolleary/pubsubclient */// Даем разумные имена для пинов, управляемых светодиодами#define BLUE_LED_PIN 12#define WHITE_LED_PIN 13EspMQTTClient client( "<wifi-ssid>", "<wifi-password>" "dev.rightech.io", "<ric-mqtt-client-id>");// Задача для обработки поступающих командclass ClientTask : public Task { public:   void loop() {     client.loop();   }} client_task;// Задача для включения светодиодовclass LedOnTask : public Task { protected:   void loop()   {     digitalWrite(WHITE_LED_PIN, HIGH);     digitalWrite(BLUE_LED_PIN, HIGH);     shouldRunValue = false; // останавливаем этот цикл сразу после включения   }   bool shouldRun()   {     return shouldRunValue;   } public:   bool shouldRunValue = false;} led_on_task;// Задача для выключения светодиодовclass LedOffTask : public Task { protected:   void loop()   {     digitalWrite(WHITE_LED_PIN, LOW);     digitalWrite(BLUE_LED_PIN, LOW);     shouldRunValue = false; // останавливаем этот цикл сразу после выключения   }   bool shouldRun()   {     return shouldRunValue;   } public:   bool shouldRunValue = false;} led_off_task;// Задача для плавного горения светодиодов в противофазеclass LedAttenuationTask : public Task { protected:   void loop()   {     // Вычисляем задержку на один проход цикла в зависимости от полученного в payload значения     float delayValue = period.toInt() * 1000 /*в миллисекунды*/ / 2 /*на два цикла*/ / 1024 /*на каждую итерацию в цикле*/;     for (int i = 0; i <= 1023; i++) {       analogWrite(WHITE_LED_PIN, i); // горит ярче       analogWrite(BLUE_LED_PIN, 1023 - i); // тускнеет       delay(delayValue);     }     for (int i = 1023; i >= 0; i--) {       analogWrite(WHITE_LED_PIN, i); // тускнеет       analogWrite(BLUE_LED_PIN, 1023 - i); // горит ярче       delay(delayValue);     }   }   bool shouldRun()   {     updateDelayTimer();     if (isDelayed()) return false;     if (!run_group_active) return false;     return shouldRunValue;   } public:   bool shouldRunValue = false;   String period;} led_attenuation_task;// Задача для быстрого мигания светодиодов в противофазеclass LedFlashingTask : public Task { protected:   void loop()   {     float delayValue = period.toInt() * 1000 /*в миллисекунды*/;     digitalWrite(WHITE_LED_PIN, HIGH);     digitalWrite(BLUE_LED_PIN, LOW);     delay(delayValue);     digitalWrite(WHITE_LED_PIN, LOW);     digitalWrite(BLUE_LED_PIN, HIGH);     delay(delayValue);   }   bool shouldRun()   {     updateDelayTimer();     if (isDelayed()) return false;     if (!run_group_active) return false;     return shouldRunValue;   } public:   bool shouldRunValue = false;   String period;} led_flashing_task;void setup() { // Настраиваем пины в режим выхода, т.е. в режим источника напряжения pinMode(WHITE_LED_PIN, OUTPUT); pinMode(BLUE_LED_PIN, OUTPUT); // Библиотека Scheduler позволяет при необходимости запустить несколько потоков Scheduler.start(&led_on_task); Scheduler.start(&led_off_task); Scheduler.start(&led_attenuation_task); Scheduler.start(&led_flashing_task); Scheduler.start(&client_task); Scheduler.begin();}void onConnectionEstablished() { // Подписываемся на команды и запускаем нужный поток путем изменения переменной shouldRunValue client.subscribe("led_on", [] (const String & payload)  {   client.publish("base/state/light", "on");   led_off_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_on_task.shouldRunValue = true; }); client.subscribe("led_off", [] (const String & payload)  {   client.publish("base/state/light", "off");   led_on_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_off_task.shouldRunValue = true; }); client.subscribe("led_attenuation", [] (const String & payload)  {   client.publish("base/state/light", "attenuation " + payload + " sec");   led_on_task.shouldRunValue = false;   led_off_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_attenuation_task.period = payload;   led_attenuation_task.shouldRunValue = true; }); client.subscribe("led_flashing", [] (const String & payload)  {   client.publish("base/state/light", "flashing " + payload + " sec");   led_on_task.shouldRunValue = false;   led_off_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.period = payload;   led_flashing_task.shouldRunValue = true; });}void loop() {}


Подключаем к платформе Rightech IoT Cloud


Подключение гирлянды:


1) Создаем модель




2) Создаем объект с этой моделью




Подключение кнопки:


1) Создаем модель




2) Создаем объект с этой моделью




Подробнее о том, как подключать ZigBee устройства, можно посмотреть в видеоуроке и почитать в статье.

Разрабатываем сценарий работы


От сценария автоматизации мы хотим следующей логики:

1) один клик (single) режим постоянного свечения и выключения;

2) два клика (double) режим плавного свечения;

3) три клика (triple) режим мигания;

4) после 20:00 автоматическое выключение гирлянды (здесь также можно использовать не просто расписание, а данные еще из одного объекта СКУДа, который собирает информацию о том, есть ли люди в офисе. Если вам интересен материал по такой теме, дайте обратную связь в комментариях ).

Готовый автомат




Давайте вкратце разберем, что тут происходит и зачем:
  1. Первым делом при старте автомата запускаем планировщик, который выключит гирлянду по расписанию, обезопасив нас от забывчивости. Запустили и забыли, он будет срабатывать каждый день автоматически.
  2. В следующем состоянии не делаем ничего, просто ждем нажатия кнопки. В это состояние мы возвращаемся каждый раз после отработки определенного режима гирлянды. Из него есть переход по событию получения данных и срабатыванию планировщика.
  3. Если получили какой-то пакет от кнопки, то переходим в состояние Получен пакет, из которого по таймеру и типу клика переходим в соответствующие режимы. Вы можете спросить, зачем тут таймер. А причина в том, что кнопка работает довольно интересненько. При нажатии три раза, она сначала присылает пакет с double, а сразу за ним triple. Такой нюанс мы и обходим таймером, иначе срабатывало бы по неактуальному клику.
  4. Также есть промежуточное состояние для одинарного клика. Как мы помним, вкл/выкл у нас работают по одному и тому же событию. Поэтому, если гирлянда не выключена (находится в любом из режимов активной работы), то мы ее выключаем, а если выключена, то включаем.

Запускаем автомат на наших объектах, проверяем фуууух, работает! Время паять!




Собираем готовое устройство


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

image

Но можно пойти немного другим путем сделать не просто гирлянду, которой мы обвяжем елку, облачив ее дополнительно во все эти провода. Вместо этого на каждую веточку посадим по светодиоду (в цветочках это смотрится особенно чудесно, см. итоговое фото), стянем провода по стеблю вниз и спаяем, спрятав всю электронику в горшочке. На выходе остается только разъем под кабель питания. Ювелирно, аккуратно и очень симпатично получается. Судите сами.

image

термоусадку нагреваем паяльным феном

image

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

image

и лудим (наносим небольшой слой припоя)

image

проводок готов воссоединяться со светодиодом

image

соединяем (паяем поверхности, на которых уже есть припой)

image

фиксируем на веточке, сгибая ножки (необходимо предварительно оставить не менее 10 мм) светодиода

image

на данном этапе проводим последнее тестирование

image

готово!





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

С наступающим праздником!

Материалы к статье


image
Подробнее..

IoT-елочка, гори!.

27.12.2020 00:14:52 | Автор: admin
Пришел новый русский в магазин, чтобы сдать новогоднюю гирлянду.
Не работает? спрашивает его продавец.
Почему? Очень даже работает, отвечает тот.
А в чем тогда дело?
Покупатель вздохнул и ответил:
Не радует.

Привет, друзья!

Очень надеемся, что гирлянда, изготовление которой мы опишем в статье, порадует вас и своим видом, и тем фактом, что вы можете ее сделать сами. Совсем не претендуя на то, что эта гирлянда станет серьезным конкурентом недорогих китайских вариантов, мы все же считаем, что такой небольшой DIY в преддверии новогоднего праздника может стать прекрасным развлечением для всей семьи, ведь тут и сборка железочек, и программирование, и составление сценария логики работы гирлянды, и, в конечном счете, созидание красоты, сделанной собственной руками!

Под катом:

  1. Собираем прототип гирлянды
  2. Пишем код для нескольких режимов работы
  3. Подключаем к платформе Rightech IoT Cloud
  4. Придумываем и реализовываем сценарий работы гирлянды
  5. Создаем праздничное настроение

image

Идея сделать гирлянду возникла не случайно. Украшая офис, мы нашли в мешке маленькую елочку, которой совершенно не холодно в офисе зимой, но совсем одиноко без огоньков, тем более что основной елке в офисе достались и игрушки, и гирлянды, а маленькой ничего. Но мы посчитали, что это не беда, а даже ее преимущество. Значит сделаем для нее не только уникальную гирлянду своими руками, но и сами выберем ей цвета светодиодов (возьмем цвета нашей компании: белый и голубой) и даже организуем ей беспроводное управление режимами по Zigbee-кнопке. А для гарантии безопасности еще и добавим автоматическое выключение по расписанию.

Модели устройств, файлы со сценариями автоматов, код для NodeMCU в конце статьи (не пытайтесь повторить это дома попробуйте повторить это дома!).

image

Собираем прототип


Создание прототипов это процесс сборки простой рабочей модели продукта или системы. Для начала построим его на макетной плате, а затем, как водится, красиво спаяем.

Итак, для маленькой гирлянды нам понадобится:

  • 12 белых и 6 голубых светодиодов, управление которыми производится независимо (назначение: гореть и радовать)
  • 2 резистора на 220 Ом, подбираемые исходя из расчета сопротивления и мощности по закону Ома (назначение: защита светодиодов от перегрева и выхода из строя)
  • 2 биполярных NPN транзистора (назначение: управляем транзистором маленьким током от управляющего пина, а пропускаем на диоды большой ток с выхода 3.3 В, так мы защищаем управляющий пин платы)
  • 2 резистора на 1 кОм на базу транзистора (назначение аналогичное, ограничиваем ток)
  • плата NodeMCU (назначение: подключение к IoT-платформе и управление транзисторами)
  • батарейки или блок питания (назначение: источник питания для платы)

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

Если изобразить на схеме, то это выглядит так:

image

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




Пишем код


Ниже представлен код для управления режимами гирлянды. Его функции:

  1. установить Wi-Fi соединение и подключиться к платформе;
  2. подписаться на команды сообщения с топиками led_on, led_off, led_attenuation, led_flashing и выполнять соответствующие действия по управлению светодиодами.

Команды led_on и led_off включают и выключают гирлянду, а команды led_attenuation и led_flashing задают режимы плавного горения и быстрого мигания с периодом, указанным в payload команды.

Обратите внимание, в коде мы используем библиотека Sheduler, которая нужна для того, чтобы одновременно запускать несколько потоков с задачами. Если этого не сделать, то при запуске бесконечного цикла горения светодиодов параллельно получать команды с платформы уже не получится.

#include "Arduino.h"#include "Scheduler.h"      /* https://github.com/nrwiersma/ESP8266Scheduler */#include "EspMQTTClient.h"  /* https://github.com/plapointe6/EspMQTTClient */                           /* https://github.com/knolleary/pubsubclient */// Даем разумные имена для пинов, управляемых светодиодами#define BLUE_LED_PIN 12#define WHITE_LED_PIN 13EspMQTTClient client( "<wifi-ssid>", "<wifi-password>" "dev.rightech.io", "<ric-mqtt-client-id>");// Задача для обработки поступающих командclass ClientTask : public Task { public:   void loop() {     client.loop();   }} client_task;// Задача для включения светодиодовclass LedOnTask : public Task { protected:   void loop()   {     digitalWrite(WHITE_LED_PIN, HIGH);     digitalWrite(BLUE_LED_PIN, HIGH);     shouldRunValue = false; // останавливаем этот цикл сразу после включения   }   bool shouldRun()   {     return shouldRunValue;   } public:   bool shouldRunValue = false;} led_on_task;// Задача для выключения светодиодовclass LedOffTask : public Task { protected:   void loop()   {     digitalWrite(WHITE_LED_PIN, LOW);     digitalWrite(BLUE_LED_PIN, LOW);     shouldRunValue = false; // останавливаем этот цикл сразу после выключения   }   bool shouldRun()   {     return shouldRunValue;   } public:   bool shouldRunValue = false;} led_off_task;// Задача для плавного горения светодиодов в противофазеclass LedAttenuationTask : public Task { protected:   void loop()   {     // Вычисляем задержку на один проход цикла в зависимости от полученного в payload значения     float delayValue = period.toInt() * 1000 /*в миллисекунды*/ / 2 /*на два цикла*/ / 1024 /*на каждую итерацию в цикле*/;     for (int i = 0; i <= 1023; i++) {       analogWrite(WHITE_LED_PIN, i); // горит ярче       analogWrite(BLUE_LED_PIN, 1023 - i); // тускнеет       delay(delayValue);     }     for (int i = 1023; i >= 0; i--) {       analogWrite(WHITE_LED_PIN, i); // тускнеет       analogWrite(BLUE_LED_PIN, 1023 - i); // горит ярче       delay(delayValue);     }   }   bool shouldRun()   {     updateDelayTimer();     if (isDelayed()) return false;     if (!run_group_active) return false;     return shouldRunValue;   } public:   bool shouldRunValue = false;   String period;} led_attenuation_task;// Задача для быстрого мигания светодиодов в противофазеclass LedFlashingTask : public Task { protected:   void loop()   {     float delayValue = period.toInt() * 1000 /*в миллисекунды*/;     digitalWrite(WHITE_LED_PIN, HIGH);     digitalWrite(BLUE_LED_PIN, LOW);     delay(delayValue);     digitalWrite(WHITE_LED_PIN, LOW);     digitalWrite(BLUE_LED_PIN, HIGH);     delay(delayValue);   }   bool shouldRun()   {     updateDelayTimer();     if (isDelayed()) return false;     if (!run_group_active) return false;     return shouldRunValue;   } public:   bool shouldRunValue = false;   String period;} led_flashing_task;void setup() { // Настраиваем пины в режим выхода, т.е. в режим источника напряжения pinMode(WHITE_LED_PIN, OUTPUT); pinMode(BLUE_LED_PIN, OUTPUT); // Библиотека Scheduler позволяет при необходимости запустить несколько потоков Scheduler.start(&led_on_task); Scheduler.start(&led_off_task); Scheduler.start(&led_attenuation_task); Scheduler.start(&led_flashing_task); Scheduler.start(&client_task); Scheduler.begin();}void onConnectionEstablished() { // Подписываемся на команды и запускаем нужный поток путем изменения переменной shouldRunValue client.subscribe("led_on", [] (const String & payload)  {   client.publish("base/state/light", "on");   led_off_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_on_task.shouldRunValue = true; }); client.subscribe("led_off", [] (const String & payload)  {   client.publish("base/state/light", "off");   led_on_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_off_task.shouldRunValue = true; }); client.subscribe("led_attenuation", [] (const String & payload)  {   client.publish("base/state/light", "attenuation " + payload + " sec");   led_on_task.shouldRunValue = false;   led_off_task.shouldRunValue = false;   led_flashing_task.shouldRunValue = false;   led_attenuation_task.period = payload;   led_attenuation_task.shouldRunValue = true; }); client.subscribe("led_flashing", [] (const String & payload)  {   client.publish("base/state/light", "flashing " + payload + " sec");   led_on_task.shouldRunValue = false;   led_off_task.shouldRunValue = false;   led_attenuation_task.shouldRunValue = false;   led_flashing_task.period = payload;   led_flashing_task.shouldRunValue = true; });}void loop() {}

Подключаем к платформе Rightech IoT Cloud


Подключение гирлянды:


1) Создаем модель




2) Создаем объект с этой моделью




Подключение кнопки:


1) Создаем модель




2) Создаем объект с этой моделью




Подробнее о том, как подключать ZigBee устройства, можно посмотреть в видеоуроке и почитать в статье.

Разрабатываем сценарий работы


От сценария автоматизации мы хотим следующей логики:

1) один клик (single) режим постоянного свечения и выключения;

2) два клика (double) режим плавного свечения;

3) три клика (triple) режим мигания;

4) после 20:00 автоматическое выключение гирлянды (здесь также можно использовать не просто расписание, а данные еще из одного объекта СКУДа, который собирает информацию о том, есть ли люди в офисе. Если вам интересен материал по такой теме, дайте обратную связь в комментариях ).

Готовый автомат




Давайте вкратце разберем, что тут происходит и зачем:

  1. Первым делом при старте автомата запускаем планировщик, который выключит гирлянду по расписанию, обезопасив нас от забывчивости. Запустили и забыли, он будет срабатывать каждый день автоматически.
  2. В следующем состоянии не делаем ничего, просто ждем нажатия кнопки. В это состояние мы возвращаемся каждый раз после отработки определенного режима гирлянды. Из него есть переход по событию получения данных и срабатыванию планировщика.
  3. Если получили какой-то пакет от кнопки, то переходим в состояние Получен пакет, из которого по таймеру и типу клика переходим в соответствующие режимы. Вы можете спросить, зачем тут таймер. А причина в том, что кнопка работает довольно интересненько. При нажатии три раза, она сначала присылает пакет с double, а сразу за ним triple. Такой нюанс мы и обходим таймером, иначе срабатывало бы по неактуальному клику.
  4. Также есть промежуточное состояние для одинарного клика. Как мы помним, вкл/выкл у нас работают по одному и тому же событию. Поэтому, если гирлянда не выключена (находится в любом из режимов активной работы), то мы ее выключаем, а если выключена, то включаем.

Запускаем автомат на наших объектах, проверяем фуууух, работает! Время паять!




Собираем готовое устройство


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

image

Но можно пойти немного другим путем сделать не просто гирлянду, которой мы обвяжем елку, облачив ее дополнительно во все эти провода. Вместо этого на каждую веточку посадим по светодиоду (в цветочках это смотрится особенно чудесно, см. итоговое фото), стянем провода по стеблю вниз и спаяем, спрятав всю электронику в горшочке. На выходе остается только разъем под кабель питания. Ювелирно, аккуратно и очень симпатично получается. Судите сами.

image

термоусадку нагреваем паяльным феном

image

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

image

и лудим (наносим небольшой слой припоя)

image

проводок готов воссоединяться со светодиодом

image

соединяем (паяем поверхности, на которых уже есть припой)

image

фиксируем на веточке, сгибая ножки (необходимо предварительно оставить не менее 10 мм) светодиода

image

на данном этапе проводим последнее тестирование

image

готово!




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

С наступающим праздником!

Материалы к статье


image
Подробнее..

Новогоднее обращение GPT-2

31.12.2020 18:20:33 | Автор: admin

Уважаемые граждане России! Дорогие друзья!


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

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

Все это мы поняли, когда стали взрослыми. Ведь не зря же наш народ так любил наш народ! И если мы верно воспитывались в России, нам это удалось.

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

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

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

Создание новых людей в нашей стране важнейшее условие благополучия. Так что я не просто так, а за давностью лет, всех вас знаю, и всю Вашу родословную знаю, про все помню. А если потребуется без особого труда справлюсь и с тем и с другим. Спасибо вам, дорогие друзья, с большой буквы. Давайте в этот год для всего Отечества будем беречь наших детей, наших жен и мужей! Давайте вместе за это поднимем и сами начнем готовиться к трудным и очень трудным годам, делая самые важные свои шаги.

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

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

Поздравляю вас с праздником! С Новым, 2021 годом!

Редактировался ли текст?

Текст генерировался абзацами начиная с нескольких фраз типа "Уважаемые граждане России! Дорогие друзья!" и "В новом/уходящем году", а эти абзацы уже были вручную склеены в "обращение"

Credits

От идеи до реализации прошло примерно полтора часа и во многом благодаря https://github.com/mgrankin/ru_transformers - это легко тюнящиеся gpt-2 модели, обученные на русских текстах

А отсюда https://kremlin.ru/events/president/transcripts я выкачал обращения президентов (да, Медведев там тоже был) за последние 20 лет. Вообще по ссылке можно найти очень много кремлёвских текстовых данных и обучить что-нибудь поинтереснее)

Ну и упомяну свой проект "нейроссия" https://vk.com/neurussia в контексте которого эта идея и возникла, а также картинка из которого использована в обложке статьи

Подробнее..

Recovery mode Как сделать ёлку, если ты математик

01.01.2021 00:16:35 | Автор: admin

Поздравляю Хабр и Хаброжителей с Новым 2021 годом и дарю всем нам вот такую незатейливую и приятную Функциональную Ёлку (fЁлка). В этой статье я рассказываю как сделать ёлочку на мониторе за 10 минут. Свою вторую статью я посвящу тому, как "слепить" снеговика, положить подарки под ёлку и всё это припорошить сверху снегом.

Базовая идея

Весь рисунок - это набор математических функций от двух аргументов, x и y. Все они так или иначе базируются на SDF. Для рисования графиков использовался desmos.com.

Базовые функции

Ограничение нуля

x+\left|x\right|

Эллипс

\frac{\left(x-2\right)^{2}}{3}+\frac{\left(y-3\right)^{2}}{1}=1

Ёлка

Опишем основу ёлки

-\left(y-13\right)-2\left|x\right|=0

Добавим ветви

-0.2\cos\left(6.8y\right)\left(y-13\right)-2\left|x\right|=0

Пригнём кончики ветвей к земле

-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|=0

Ограничим ель сверху

-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|-0.51\left(y+\left|y\right|\right)=0

Ель съехала вниз, это исправится позднее

Параллельный ход: ограничение снизу

Ограничитель

2x=5\left(y-\left|y-2\right|\right)

Итог данного этапа

-0.2\cos\left(6.8y+0.7\left|x\right|\right)-2\left|x\right|+5\left(y-\left|y-2\right|\right)=0

Комбинируем

-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|-0.51\left(y+\left|y\right|\right)+5\left(y-\left|y-2\right|\right)=0

Финальный штрих

2-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|-0.51\left(y+\left|y\right|\right)+5\left(y-\left|y-2\right|\right)=0

Займёмся стволом

Эллипс с более острыми углами

\ 0.1x^{10}+30\left(y-1\right)^{10}-1=0

Объединение объектов

Объединение, пересечение и вырезание базируются на простейшей операции min(a, b). В зависимости от знаков перед a и b получаются различные булевы операции.

Листва - a(xy), ствол - b(xy)

-a\le0, b\le0

Финал

\min\left(-a,b\right)\le0

Все формулы для вставки в desmos.com

a=2-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|-0.51\left(y+\left|y\right|\right)+5\left(y-\left|y-2\right|\right)

b\ =\ 0.1x^{10}+30\left(y-1\right)^{10}-1

\min\left(-a,\ b\right)\le0

Продолжение следует...

Подробнее..

Как сделать ёлку, если ты математик 2

02.01.2021 00:07:07 | Автор: admin

Продолжение вчерашней статьи, посвящённой fЁлке, ниже.

Базовые функции

Трапеция

y=\left|x-4\right|+\left|x+2\right|-5.5

Здесь дважды применяется модуль числа, меняя константы под модулем и вычитаемое мы можем регулировать длину отрезка с константным значением y и само значение y на данном отрезке. Данная функция позже пригодится для сугробов и ведра.

Альтернативный эллипс

\sqrt{\left(x-1\right)^{2}+1.9\left(y-2\right)^{2}}-1.3=0

Альтернативная запись эллипса. Константы внутри скобок отвечают за координаты центра эллипса, константы перед скобками - за степень сжатия по осям, число за корнем - радиус.

Эллипс по двум точкам

\sqrt{\left(x-1\right)^{2}+\left(y-2\right)^{2}}+\sqrt{\left(x-0.1\right)^{2}+\left(y+1\right)^{2}}-3.3=0

Согласно определению, эллипс - это замкнутая кривая, сумма расстояний каждой точки которой до двух точек (A и B на изображении) равна постоянной величине. Данный тип эллипса пригодится для рисования рук снеговику.

Прямоугольник

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

\max\left(\left|x\right|-1,\left|y\right|-1\right)\le0

Если размер прямоугольника одинаков - его можно вынести за знак сравнения:

\max\left(\left|x\right|,\left|y\right|\right)\le1

Снеговик

Тело - три эллипса

s_{1}=\sqrt{\left(x-10\right)^{2}+1.1\left(y-3.85\right)^{2}}-0.55s_{2}=\sqrt{\left(x-10\right)^{2}+1.1\left(y-2.7\right)^{2}}-0.85s_{3}=\sqrt{\left(x-10\right)^{2}+1.2\left(y-1.05\right)^{2}}-1.15s_1>=0, s_2>=0, s_3>=0

Объединение снеговика - операция min ко всем эллипсам.

\min\left(s_{1},\ s_{2},s_{3}\right)\le0

Ведро на голову!

Шаг первый - трапеция

-\left|x-1\right|-\left|x+1\right|-y\ge0

Шаг второй - доработаем форму, поднимем ведро

2-1.9\left|x-0.3\right|-1.9\left|x+0.3\right|-y\ge0

Для того, чтобы поднять ведро - добавляем 2 в начало, чтобы стенки ведра стали более крутыми - поставим множители перед модулями.

Шаг третий - ограничение снизу

Применим схожую методику, как делали это с ёлкой.

Черный график:

x=\frac{\left(\left|y\right|+y\right)}{2}

Красный график

x=\frac{100\left(\left|y\right|-y\right)}{2}

Суммируем, получаем ограничитель для ведра

x=\left(\frac{\left(\left|y\right|+y\right)}{2}+\frac{100\left(\left|y\right|-y\right)}{2}\right)

Применяем - ведро готово

2-1.9\left|x-0.3\right|-1.9\left|x+0.3\right|-\left(\frac{\left(\left|y\right|+y\right)}{2}+\frac{100\left(\left|y\right|-y\right)}{2}\right)\ge0

Шаг пятый - наденем ведро на голову

Переместим

2-1.9\left|x-9.7\right|-1.9\left|x-10.3\right|-\left(\frac{\left(\left|y-4\right|+y-4\right)}{2}+\frac{100\left(\left|y-4\right|-y+4\right)}{2}\right)\ge0

Объединим со снеговиком

s_{4}=2-1.9\left|x-9.7\right|-1.9\left|x-10.3\right|-\left(\frac{\left(\left|y-4\right|+y-4\right)}{2}+\frac{100\left(\left|y-4\right|-y+4\right)}{2}\right)\min\left(s_{1},\ s_{2},s_{3},-s_{4}\right)\le0

Здесь минус перед s4 по той причине, что для получения ведра использовалось сравнение >0, вместо <0, когда велась работа с эллипсами.

Руки - эллипсы

Ось симметрии снеговика - это x = 10, поэтому можно создать две руки, а позже глаза и рот, одной функцией.

h_{1}=\sqrt{\left(\left|x-10\right|\ -\ 0.8\right)^{2}+\left(y-2.7\right)^{2}}+\sqrt{\left(\left|x-10\right|\ -\ 2.8\right)^{2}+\left(y-2.5\right)^{2}}-2.015\\h_1\le0

Пальцы аналогично, но симметрия не только по х = 10, но и у = 2.55

h_{2}=\sqrt{\left(\left|x-10\right|\ -\ 1.9\right)^{2}+\left(y-2.55\right)^{2}}+\sqrt{\left(\left|x-10\right|\ -\ 2.3\right)^{2}+\left(\left|y-2.55\right|-0.3\right)^{2}}-0.51\\h_2\le0

Тело снеговика по элементам

Результат тела снеговика

\min\left(s_{1},\ s_{2},s_{3},-s_{4},h_{1},h_{2}\right)\le0

Лицо

Глаза - 2 круга

100\left(\left|x-10\right|-0.2\right)^{2}+100\left(y-3.95\right)^{2}\le1

Рот - два эллипса

\left(300\left(\left|x-10\right|-0.03-0.-\left(y-3.6\right)\right)^{2}+3000\left(y-3.6\right)^{2}\right)\le1

Все функции снеговика для вставки в desmos

s_{1}=\sqrt{\left(x-10\right)^{2}+1.1\left(y-2.7\right)^{2}}-0.85

s_{2}=\sqrt{\left(x-10\right)^{2}+1.2\left(y-1.05\right)^{2}}-1.15

s_{3}=\sqrt{\left(x-10\right)^{2}+1.1\left(y-3.85\right)^{2}}-0.55

s_{4}=2-1.9\left|x-9.7\right|-1.9\left|x-10.3\right|-\left(\frac{\left(\left|y-4\right|+y-4\right)}{2}+\frac{100\left(\left|y-4\right|-y+4\right)}{2}\right)

h_{1}=\sqrt{\left(\left|x-10\right|\ -\ 0.8\right)^{2}+\left(y-2.7\right)^{2}}+\sqrt{\left(\left|x-10\right|\ -\ 2.8\right)^{2}+\left(y-2.5\right)^{2}}-2.015

h_{2}=\sqrt{\left(\left|x-10\right|\ -\ 1.9\right)^{2}+\left(y-2.55\right)^{2}}+\sqrt{\left(\left|x-10\right|\ -\ 2.3\right)^{2}+\left(\left|y-2.55\right|-0.3\right)^{2}}-0.51

\min\left(s_{1},\ s_{2},s_{3},-s_{4},h_{1},h_{2}\right)\le0

100\left(\left|x-10\right|-0.2\right)^{2}+100\left(y-3.95\right)^{2}\le1

\left(300\left(\left|x-10\right|-0.03-0.-\left(y-3.6\right)\right)^{2}+3000\left(y-3.6\right)^{2}\right)\le1

Сугробы

Сугробы - функция модуля синуса с константной частотой и изменяемой амплитудой. Амплитуду будем регулировать с помощью трапеций.

d_{1}=-\left|x+7\right|-\left|x-14\right|+22\\d_{2}=\left|x+2.7\right|+\left|x-2.7\right|-6.35\\d_{3}=\left|x-9\right|+\left|x-11\right|-2.8

Суммируем

d=d_{1}+\left|d_{1}\right|+d_{2}-\left|d_{2}\right|+d_{3}-\left|d_{3}\right|

Результат

0.3d\left|\sin\left(13x\right)\right|

Все функции сугробов

d_{1}=-\left|x+7\right|-\left|x-14\right|+22

d_{2}=\left|x+2.7\right|+\left|x-2.7\right|-6.35

d_{3}=\left|x-9\right|+\left|x-11\right|-2.8

d=d_{1}+\left|d_{1}\right|+d_{2}-\left|d_{2}\right|+d_{3}-\left|d_{3}\right|

0.3d\left|\sin\left(13x\right)\right|

Снежинки

Всё предельно просто. Снежинка - это "окружность наоборот", вместо второй степени используется корень, а для того, чтобы он вычислялся используются модули x и у.

\sqrt{\left|x\right|}+\sqrt{\left|y\right|}-0.45\le0

Много снежинок

Используем mod, остаток от деления

\left|\operatorname{mod}\left(x,2\right)-1\right|

Результат

f_{1}=\sqrt{\left|\operatorname{mod}\left(x,2\right)-1\right|}+\sqrt{\left|\operatorname{mod}\left(y,2\right)-1\right|}-0.45\\f_1\le0

Корректировка снежинок

Снежинки закрывают ёлку и снеговика, исправим это с помощью эллипсов.

f_{2}=2xx+\left(y-6\right)^{2}-40\\f_{3}=2\left(x-10\right)^{2}+\left(y-2.5\right)^{2}-10\\f_2\le0\\f_3\le0

Комбинируем

\min\left(-f_{1},f_{2},f_{3}\right)\ge0

Все формулы снежинок

f_{1}=\sqrt{\left|\operatorname{mod}\left(x,2\right)-1\right|}+\sqrt{\left|\operatorname{mod}\left(y,2\right)-1\right|}-0.45

f_{2}=2xx+\left(y-6\right)^{2}-40

f_{3}=2\left(x-10\right)^{2}+\left(y-2.5\right)^{2}-10

\min\left(-f_{1},f_{2},f_{3}\right)\ge0

Подарки под ёлку

Подарок - это квадрат. Подарков будет два, поэтому используя |x| будем рисовать сразу два подарка и сразу два бантика к ним.

\max\left(\left|\left|x\right|-2.1\right|,\left|y-0.5\right|\right)\le0.5

Формула

\max\left(\left|\left|x\right|-2.1\right|,\left|y-0.5\right|\right)\le0.5

Бантики к подаркам

Модуль

j_{1}=\left|0.9\left|\left|x\right|-2.1\right|\right|-\left(y-1\right)-0.2\\j_1\le0

Гипербола

j_{2}=\left|\left|x\right|-2.1\right|^{2}-\left(y-1\right)^{2}-0.05\\j_2\ge0

Круг

j_{3}=0.2\left|\left|x\right|-2.1\right|^{2}+0.2\left(y-1\right)^{2}-0.1\\j_3\le0

Эллипс

j_{4}=\left(0.5\left|\left|x\right|-2.1\right|\right)^{2}+\left(y-1\right)^{2}-0.02\\j_4\le0

Внезапный ход: множим эллипс на модуль

j_1j_4\le0

Комбинируем все элементы

\max\left(j_{1}j_{4},\ -j_{2},\ j_{3}\right)\le0

Все формулы для бантиков

j_{1}=\left|0.9\left|\left|x\right|-2.1\right|\right|-\left(y-1\right)-0.2

j_{2}=\left|\left|x\right|-2.1\right|^{2}-\left(y-1\right)^{2}-0.05

j_{3}=0.2\left|\left|x\right|-2.1\right|^{2}+0.2\left(y-1\right)^{2}-0.1

j_{4}=\left(0.5\left|\left|x\right|-2.1\right|\right)^{2}+\left(y-1\right)^{2}-0.02

\max\left(j_{1}j_{4},\ -j_{2},\ j_{3}\right)\le0

Цифры

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

x_{1}=x\\y_{1}=y

2021 в римской системе счисления будет MMXXI, это несколько упрощает задачу

Две буквы "М"

Определим для начала функцию t2, которая будет ограничивать каждую букву М

t_{2}=\max\left(\left|\left|x_{1}\right|-1\right|,\left|y_{1}-0.89\right|\right)-0.95\\t_{2}\le0

Теперь "окошки", чтобы у букв появились вертикальные элементы

\max\left(\left|1.2\left|x_{1}\right|-1.2\right|,\left|y_{1}-0.9\right|\right)-1\ge0

Теперь V-образные элементы

\min\left(\left|2\left|x_{1}\right|-2\right|-y_{1},-\left|2\left|x_{1}\right|-2\right|+y_{1}+0.2,-t_{2}\right)\ge0

Скомбинируем в одну формулу

\max\left(\min\left(-t_{2},\max\left(\left|1.2\left|x_{1}\right|-1.2\right|,\left|y_{1}-0.9\right|\right)-1\right),\min\left(\left|2\left|x_{1}\right|-2\right|-y_{1},-\left|2\left|x_{1}\right|-2\right|+y_{1}+0.2,-t_{2}\right)\right)\ge0

Две буквы "Х"

Применяем знакомые ограничители

\max\left(\left|\left|x_{1}\right|-1.05\right|,\left|y_{1}-0.9\right|\right)-1\le0

Крестообразные элементы

\min\left(\left|\left|x_{1}\right|-1.05\right|-\left|y_{1}-0.9\right|,\ -\left|\left|x_{1}\right|-1.05\right|+\left|y_{1}-0.9\right|+0.15\right)\ge0

Объединим

\max\left(-\min\left(\left|\left|x_{1}\right|-1.05\right|-\left|y_{1}-0.9\right|,\ -\left|\left|x_{1}\right|-1.05\right|+\left|y_{1}-0.9\right|+0.15\right),\max\left(\left|\left|x_{1}\right|-1.05\right|,\left|y_{1}-0.9\right|\right)-1\right)\le0

Сдвинем на 4.1 вправо, теперь ХХ займут своё место

\max\left(-\min\left(\left|\left|x_{1}-4.1\right|-1.05\right|-\left|y_{1}-0.9\right|,\ -\left|\left|x_{1}-4.1\right|-1.05\right|+\left|y_{1}-0.9\right|+0.15\right),\max\left(\left|\left|x_{1}-4.1\right|-1.05\right|,\left|y_{1}-0.9\right|\right)-1\right)\le0

Одна буква "I"

Тривиально, сразу же поставим "I" на её место

\max\left(\left|x_{1}-6.4\right|-0.06,\left|y_{1}-0.9\right|-01\right)\le0

Все формулы для букв

t_{2}=\max\left(\left|\left|x_{1}\right|-1\right|,\left|y_{1}-0.89\right|\right)-0.95

\max\left(\min\left(-t_{2},\max\left(\left|1.2\left|x_{1}\right|-1.2\right|,\left|y_{1}-0.9\right|\right)-1\right),\min\left(\left|2\left|x_{1}\right|-2\right|-y_{1},-\left|2\left|x_{1}\right|-2\right|+y_{1}+0.2,-t_{2}\right)\right)\ge0

\max\left(-\min\left(\left|\left|x_{1}-4.1\right|-1.05\right|-\left|y_{1}-0.9\right|,\ -\left|\left|x_{1}-4.1\right|-1.05\right|+\left|y_{1}-0.9\right|+0.15\right),\max\left(\left|\left|x_{1}-4.1\right|-1.05\right|,\left|y_{1}-0.9\right|\right)-1\right)\le0

Сдвинем локальную систему координат

x_{1}=\left(x\ -8\right)\cdot1.3\\y_{1}=\left(y-9.3\right)\cdot1.3

Краткие замечания по работе

Первое, на что хочется обратить внимание - то, что для рисунка применялись функции, неограниченные искусственно, как например sin(x), x(-5, 5). Все ограничения создаются естественным путём на базе арифметических операций с функциями.

Минимум и максимум также можно выразить с помощью простейших операций:

min=\frac{f+g}{2}-\left|\frac{f-g}{2}\right|\\max=\frac{f+g}{2}+\left|\frac{f-g}{2}\right|

Поэтому использование функций min и max в формулах фигур легально в данной задаче.

Подробнее..

Прощай, 2020! В новый год с робокрабом, единорогом и другими подарками Madrobots

16.12.2020 20:13:35 | Автор: admin


2020 научил нас одной мудрости некоторые события невозможно предсказать. Но Новому году, кажется, быть. Не забыли заказать подарки, подбивая дедлайны года? Madrobots готовы с этим помочь, и даже красиво упаковать покупки, чтобы не отрываться от кода и не тратить последние силы на декор.

Умная камера наблюдения Ivideon Cute

Кому: начинающему бизнесмену или молодому родителю

Камера наблюдения Ivideon Cute маленькая, но самостоятельная. Не нужно переживать о том, как и куда ее подключать, как устанавливать и настраивать. Достаточно смартфона и Wi-Fi, а остальное решается через приложение и облако. Монтировать тоже не обязательно, у камеры магнитное крепление, которое плотно сидит на холодильнике или металлической полке.



Внутренний гик предпочел бы сложную в обращении камеру. Но у кого есть время и силы возиться с техникой, когда нужно срочно решить практическую задачу? Нужна видеоняня для ребенка это Ivideon Cute. Для любимого пса? Она же. Повесить в квартиру, или за десять минут настроить наблюдение в торговой точке? Берите Cute, не ошибетесь. Есть инфракрасная съемка, триггеры по событиям, и даже микрофон с динамиком, через которые можно общаться.



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

Подробный обзор читайте тут.

TimeCup 700

Кому: кофеману без кофемашины

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



У TimeCup 700 керамическая джезва, внутри спрятаны датчики пены. Кофе начнет подниматься и кофеварка отключится сама, чтобы драгоценный напиток не убежал. На ручке нашлось место миниатюрному дисплею, который показывает режим и температуру. Устройство управляется сенсорными кнопками в нижней части турки. Его можно подключать к компьютеру по Bluetooth, чтобы программировать новые рецепты.

Интерьерная лампа Glode ColorConer

Кому: минималисту с миссией



Торшер Glode ColorConer превращает любой подходящий угол дома в рубку космического корабля. Для полного эффекта Стар трека разве что не хватает эффекта Lens Flare, но его вы и сами можете вставить фильтром в Инстаграме. А фотографировать будет что лампа переключается между несколькими режимами свечения: есть и анимация, и статичный режим. Цвета, яркость и скорость огоньков настраиваются при помощи пульта.


Пазл Unidragon Единорог

Кому: коллеге на грани выгорания

Страдаете от стресса? Может быть, лучший друг или любимый коллега пугают вас депрессивными шутками или бездонными мешками под глазами? Начало января самое время расслабиться. Деревянный многоразовый пазл Unidragon Вдохновляющий Единорог поможет это сделать самым экологичным способом: без экрана.



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



Единорог, по версии Unidragon, состоит из принца, принцессы, бабочек, звезд, магических предметов и других очаровательных деталей. Вместе они соединяются в одного большого мега-единорога. Все по заветам Могучих Рейнджеров. Детали упакованы в мешочек и деревянную коробку, так что собирать и разбирать пазл можно много раз. Unidragon одобрили психологи, которым мы его показывали. Это достойная штука, чтобы бороться с выгоранием и перенапряжением настоящая арт-терапия. И детям тоже придется по душе. На выбор 3 размера и уровня сложности: примерно на 100, 200 и 300 деталей.

Фото-конструктор Mozabrick S

Кому: креативной душе

Выкладывали когда-нибудь кубиками LEGO-картины? Универсальный пазл Mozabrick состоит из таких фрагментов размером в один шип, которые фиксируются на крепежной пластине. Квадратики белые и черные, а также трех оттенков серого.



Загрузите фотографию или изображение на сайт Mozabrick, получите на почту готовую инструкцию с макетом. Теперь ее можно собрать на пластинах, чтобы вышло черно-белое мозаичное панно.

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



Комплект Mozabrick S состоит из 4 отдельных крепежных пластин и 5815 деталей. Картина получается размером 51 51 см, на ее сборку потребуется 12 часов. Такие пазлы лучше дарить людям, у которых найдется свободное время. Впрочем, на новогодних каникулах его будет достаточно, а готовый результат можно сразу повесить на стену двусторонним скотчем 3M.

Умный сад iGarden LED

Кому: амбициозному домашнему садоводу

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



Это пластиковая гидропоника со светодиодной лампой на регулируемой штанге. В резервуар заливается вода; в два специальных горшочка с инертным субстратом высаживаются растения; горшочки помещаются в резервуар. Теперь сад будет поддерживать себя освещенным и увлажненным. Когда вода закончится, он предупредит об этом. Кстати, iGarden LED можно ставить не только на подоконник.

Кроме земляники, в садике хорошо растут помидоры черри, салат, зелень и цветы. Советуем начать с базилика. Он неприхотливый, растет быстро, и ему всегда есть место в салатах, бутербродах или макаронах. Bon Apptit!

WowWee Crab

Кому: хорошему другу-гику

Эту игрушку называют настоящим робо-артоподом. В реальности у робота WowWee Crab всего лишь четыре ноги и голова на длинной шее. В голову встроены инфракрасные датчики-глаза. Робот похож не на краба, а на робо-собак Boston Dynamics. У него и нрав похожий, со склонностью к вечеринкам и танцам.


Робот заранее обучен 72 функциям и еще 40 можно запрограммировать. На самом деле его даже получится хакнуть. Создатель задумал робота таким, чтобы его можно было вскрыть и быстро разобраться, для чего каждая деталь. Некоторые даже подписаны.

WowWee Crab работает от четырех батареек типа C. Пульт от трех ААА. Это душевный подарок для ребенка или настоящего гика: причем из второго получится сделать первого. Вот так гики и размножаются, делением у новогодней елки.

Бонус: подарки для всех, и пусть никто не уйдет обиженным


Наши постоянные читатели могли бы удивиться: как так подборка подарков от Madrobots, где же весы Picooc, рюкзаки Bobby и Bluetooth-трекеры Chipolo? Все в порядке, они по-прежнему возглавляют наши новогодние чарты и выручат в любой непонятной праздничной ситуации.



Умный брелок Chipolo One сувенир для рассеянного друга или родственника: ждите весь следующий год благодарностей и историй, как с его помощью ключи отыскались под ванной, а смартфон в горшке на балконе.

К продвинутому Bobby Pro, как и к другим противокражным рюкзакам XD Design, полагается свой подарок фирменный защитный комплект с маской и сменными фильтрами.

Весы Picooc S3 Lite это уже 3 в одном: умный гаджет, измеряющий 10+ параметров, фитнес-ленты для тренировок и видеоуроки. Эти и многие другие праздничные хиты ищите в особом разделе нашего интернет-магазина Гиде по новогодним подаркам.



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

Скидка на новогодние подарки


Читателей Хабра ждет специальная скидка 10% на все перечисленные в обзоре гаджеты и игрушки. И на все подарки из нашего новогоднего раздела. Введите промокод: BYE2020. С наступающим, и да пребудет с вами Сила!
Подробнее..

История систем управления световым оборудованием

24.12.2020 14:22:40 | Автор: admin
Источник

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

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

Зарождение светомузыки


Первые мысли о совмещении света и звука зародились задолго до появления электроники. Оптический клавесин, цветовой орган, светомузыкальные композиции XX века далеко не полный список попыток приручить свет для шоу.

Одним из первый электронных музыкальных инструментов, который также создавал светомузыку, можно считать оптофоническое пианино (оптофон) художника Владимира Баранова, созданное в 1916 году.

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

До 1970-х годов интерес к светомузыке проявляли в основном ученые и художники.

Аналоговая эпоха


Оптофон Владимира Баранова. Источник.

В 1970-е светомузыка становится популярна среди молодежных субкультур, в частности, в рок-культуре. Успешный опыт музыкальных групп, таких как Pink Floyd, а также развитие радиоэлектроники и снижение стоимости компонентов привело к всплеску интереса к светомузыке. За приемлемые по тем временам деньги можно было получить примитивную домашнюю светомузыку для дискотеки.

Чаще всего такая светомузыка была представлена в виде светодинамических устройств, которые реализуют определенные алгоритмы и демонстрируют соответствующие световые эффекты, но не имеют прямой синхронизации с музыкой.

Светомузыка, имеющая синхронизацию со звуком, делится на две группы:

  • автоматические светомузыкальные устройства (АСМУ);
  • программируемые синхронные автоматы (ПСА).

Чаще всего автоматические светомузыкальные приборы основаны на принципах фильтрации диапазона частот в отдельные частотные каналы, которые подаются на соответствующие световые установки. Классическое сопоставление частот с цветами это линейное сопоставление частот АЧХ с порядком следования цветов в видимом спектре:

  • красный низкие частоты (диапазон до 200 Гц);
  • желтый средне-низкие частоты (диапазон от 200 до 800 Гц);
  • зеленый средние частоты (от 800 до 3500 Гц);
  • синий высокие частоты (выше 3500 Гц).

В АСМУ основным двигателем является звуковой сигнал, а в программируемых синхронных автоматах фантазия и профессионализм светоинженера. Проще говоря, в ПСА за синхронизацию света и музыки ответственен человек.

Изначально в сценическом освещении в качестве пульта управления (консоли) использовалась панель с большим количеством ручных потенциометров, которые управляли фонарями. Электричество подавалось от пульта к источникам освещения по большим силовым кабелям. Такая система была громоздкой и не самой простой в управлении.

Первым шагом в упрощении процесса стало соединение двигателей с потенциометрами. В такой схеме инженер управляет двигателями, а двигатели потенциометрами. Громоздкую панель можно спрятать под сцену, а в руки светотехнику дать компактный пульт управления двигателями. Однако двигатели имеют ограниченную скорость, что негативно влияет на систему.

Стойки с диммерами. Источник

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

Советский световой пульт СУТО. Источник

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

С появлением компьютеров производители стали добавлять цифровую составляющую в пульты управления.

DMX512


Переход на цифру сопряжен с созданием множества проприетарных протоколов, несовместимых между собой. Такое положение дел не устраивало конечных потребителей, так как весь комплект оборудования должен был быть от одного производителя. В таких условиях необходимость общего стандарта очевидна.

Институт театральных технологий США (United States Institute for Theatre Technology, USITT) в 1986 году разработал стандарт DMX512, предназначенный для унификации общения пультов управления и конечных устройств.

Кабель с разъемом DMX512 XLR. Источник

В основе DMX512 лежит промышленный интерфейс EIA/TIA-485, более известный как RS-485. Данные отправляются в виде дифференциального сигнала, что значительно снижает влияние наводок в цепи. Стандарт предписывает использовать кабели с пятью жилами:

  • экран;
  • отрицательный сигнальный провод;
  • положительный сигнальный провод;
  • отрицательный резервный провод;
  • положительный резервный провод.

Тем не менее, ревизии стандарта 1986 и 1990 годов не определяют назначение резервной пары, поэтому допустимо ее отбросить и использовать трехжильные провода, например, микрофонный кабель. Однако фантомное питание микрофона (+48 В) способно повредить DMX-совместимое оборудование, а DMX-сигналы от консоли могут повредить микрофон. Поэтому стандарт предписывает использовать именно коннекторы XLR-5.

Одна линия DMX512 вмещает 512 каналов, то есть один провод DMX512 эквивалентен 512 проводам аналогового интерфейса 0-10 В.

Сценическое оборудование в основном многоканальное. Один канал управляет одним параметром оборудования. Так, простой RGB-прожектор будет трехканальным, где каждый канал определяет яркость соответствующей компоненты.

DMX512 поддерживает последовательное подключение устройств. Так, от пульта управления может идти одна линия, которая подключается ко входу первого устройства, а второе устройство подключается к выходному порту первого. У такого способа, однако, есть ограничения. Во-первых, суммарное потребление каналов не должно превышать 512 каналов. Во-вторых, на линии допустимо не более 32 устройств. Она обязательно должна заканчиваться терминатором, если в последнем устройстве нет внутренней терминации.

Оптический изолятор DMX512. Источник

Стоит отметить, что DMX512 использует низковольтное маломощное соединение для управление мощными устройствами. Высоковольтный пробой в диммере может передаться в DMX-линию и привести к порче консоли. Для предотвращения таких ситуаций был разработан оптический изолятор. Это устройство конвертирует электрические сигналы DMX в оптические, а затем сразу же конвертирует оптический сигнал обратно в электрический. Таким образом, нежный пульт управления электрически изолирован от конечных устройств.

Консоль предоставляет несколько DMX-портов. Каждый DMX-порт, также называемый DMX-областью (DMX Universe), предоставляет до 512 каналов. Каждый канал передает ровно один байт данных, то есть число от 0 до 255. Передача DMX-кадра с максимальной длиной занимает 23 мс, что ограничивает скорость обновления до 44 раз в секунду.

Стандарт DMX512 не изменялся с 1990 года. Однако в 1998 году Ассоциация развлекательных услуг и технологий (Entertainment Services and Technology Association, ESTA) начала пересматривать стандарт с целью попасть в стандарты ANSI. В 2004 году DMX512 был стандартизирован как DMX512-A, а затем был повторно пересмотрен в 2008. Наиболее актуальная версия на момент написания статьи ANSI E1.11-2008, USITT DMX512-A.

С развитием техники стали появляться устройства, имеющие более 512 каналов. Возникла потребность в разработке нового стандарта, который элегантно решит эту проблему.

DMX512 over Ethernet


Решение проблемы ограниченности DMX-линий оказалось достаточно простым. Необходимо сменить среду передачи данных на Ethernet, который уже зарекомендовал себя и используется повсеместно. Благодаря такому решению можно передавать множество DMX-областей в одном кабеле. Для подключения устройств с DMX-коннекторами используются специальные конвертеры, которые извлекают из пакетов DMX-данные и отправляют подключенным устройствам.

На данный момент существуют два конкурирующих решения по отправке DMX512 в среде Ethernet:

  • Art-Net;
  • sACN.

Рассмотрим каждый из них.

Art-Net


Компания Artistic License в 1998 году выпустила первую версию Art-Net протокол для передачи DMX-данных через IP. В основе протокола были широковещательные сообщения, чтобы избавить пользователей от настройки сети. Art-Net I проектировалась на сетях 10 Мбит/с, которые выдерживали в среднем до 10 DMX-областей, а эффективный предел составлял 40 Мбит/с. Однако с широким распространением RGB-светодиодов количество каналов росло, и подход с широковещательными сообщениями создавал сильную нагрузку на сети.

Чтобы хоть как-то исправить эту проблему, в 2006 вышла следующая версия Art-Net II. В основе также лежали широковещательные сообщения, но консоль сопоставляла DMX-области с конкретными устройствами и переходила к адресной рассылке. При этом предельное количество DMX-областей расширилось до 256. В следующих релизах число выросло до 32768.

Art-Net не стал официально признанным стандартом, но используется по сей день. Современная версия Art-Net IV позволяет работать с устройствами, которые поддерживают только стандартизированный протокол sACN.

ACN и sACN


Протоколы Architecture for Control Networks (ACN) и Streaming ACN (sACN) это стандартизированный в 2006 году набор протоколов для управления развлекательным оборудованием в живых выступлениях и/или в крупных масштабах.

ACN определяет модульную сетевую архитектуру, включающую в себя два сетевых протокола, язык для описания устройств (Device Description Language, DDL) и профили для взаимодействия (E1.17 Profiles for Interoperability). Набор протоколов ACN изначально был разработан для работы поверх UDP/IP, поэтому он будет также работать в сетях IP, Ethernet и 802.11 (Wi-Fi).

Благодаря модульности ACN легко расширяется. Одно из расширений, ANSI E1.31, также известное как Streaming ACN (sACN), используется для отправки DMX-данных через ACN-совместимые сети. В сравнении с Art-Net sACN поддерживает до 65535 DMX-областей.

Заключение


Методы создания световых шоу значительно эволюционировали с момента их появления. В аналоговую эпоху не было единого стандарта, но относительная совместимость интерфейсов смягчала проблему. С переходом на цифру появилось множество несовместимых проприетарных протоколов, которые были успешно вытеснены стандартизированным DMX512. На данный момент наблюдается переход DMX в среду Ethernet в виде двух конкурирующих протоколов E1.31 и Art-Net. Кто выйдет победителем покажет время.

Подробнее..

Хабр 2020 подводим итоги и разыгрываем Raspberry Pi 4

28.12.2020 14:06:07 | Автор: admin

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

Обязательно дочитайте до конца! Там подробности, как стать обладателем новенькой малинки и бонусов от Selectel.

1 место


Как найти скрытую камеру в съемной квартире или номере отеля



Идея написать эту статью пришла нашей команде во время очередной командировки, когда шло заселение в гостиницу. Кто-то из коллег пошутил, что, дескать, Осторожно, вас снимает скрытая камера. Мы стали гуглить, как можно опознать, что ведется скрытая видеосъемка. Наши поиски в итоге стали основой статьи.

2 место


Что нового в Ubuntu 20.04



Выхода новой ОС ждали многие, но в особенности один из наших системных администраторов Артем Мингулов (aka mingulov). Шутка ли, столько кардинальных изменений в одном релизе. Еще с бета-версии было понятно, что новая LTS-версия станет популярной и будет крайне востребована. Мы заранее подготовили статью и выпустили ее практически одновременно с релизом Canonical.

3 место


Более мощный конкурент Raspberry Pi 3 стоит всего $10



В этом году вышло много разных одноплатных компьютеров, но вот недорогих и при этом мощных раз, два и обчелся. Так что выход Iconikal Rockchip 3328 не прошел для нас незамеченным. Низкая стоимость и сравнимая с Raspberry Pi 3 производительность стали сюрпризом, о котором мы постарались детально рассказать. Жаль, что их практически мгновенно раскупили.

Рейтинг нашей редакции


Мы отобрали три самых интересных статьи 2020 года по версии нашей команды. Да, они не набрали большое количество просмотров, но для нас эти статьи были новым интересным опытом как в сборе материала, так и в подготовке публикаций.

История одного переключения



Подготовка к переходу на 100GE-интерфейсы и необходимость в полной автоматизации процессов повлекли за собой необходимость замены сетевого оборудования, а именно коммутаторов агрегации. В этой статье технический директор Selectel Кирилл Малеванов (aka CMHungry) рассказал в деталях, как выполнялось переключение с минимальными перерывами связи для наших клиентов. Теперь мы готовы к росту трафика и продолжаем улучшать работу нашей сети.

Как запускается сервер: UEFI



Почти каждый системный администратор или инженер видел, как происходит запуск сервера, но вот не каждый знает в точности, что именно происходит в этот момент. Наш тестировщик Владимир Туров (aka Firemoon) перерыл гору документации и замучил вопросами технических специалистов компаний Intel и Supermicro, чтобы в деталях описать процесс запуска сервера и поделиться этим знанием с читателями нашего блога.

Самый точный прогноз погоды: бот для Telegram на облачных функциях



Использование бессерверных вычислений стало весьма интересным опытом для нашего старшего технического писателя Николая Рубанова (aka Darksa). Как узнать самый точный прогноз погоды? Правильно, в ближайшем аэропорту с помощью автоинформатора ATIS. Ну а как быть, если таскать радиоприемник на соответствующий диапазон неудобно? Создать бота. Ведь телефон с мессенджером всегда с собой. Чтобы не морочиться с настройкой сервера использовать Облачные функции от Selectel. Процесс создания такого бота лег в основу статьи.

А теперь конкурс


Мы предлагаем вам вспомнить самый эпичный момент 2020 года и рассказать о нем в комментариях. Тройка авторов самых эпичных историй получат не менее эпичную Raspberry Pi 4 с 8 Gb ОЗУ, которой хватит даже для запуска VMware ESXi. А еще 17 призерам достанется промокод номиналом 1500 рублей на баланс Облачной платформы Selectel, который можно использовать в любом из существующих или новых проектов. Промокод будет действителен до 31 мая 2021 года. С подробными правилами конкурса можно ознакомиться здесь.
Подробнее..

Смелее в Новый год

31.12.2020 12:04:32 | Автор: admin

Хабровчане, принимайте наши поздравления с наступающим 2021! Берегите себя, чтобы не перегореть, пытаясь и дедлайны закрыть, и к новогодней ночи все приготовить. Может быть, вам важно это услышать, но в этот раз точно можно встретить его по-простому. Да вот просто кинуть комочком гирлянду, пусть горит.

Можно без елки. Без мишуры. Без скотча на окнах и на стене. Оставить пылиться пакеты с коробками на антресоли до следующего нового года.

Без беготни по ТЦ, не искать для других то самое. Вместо этого позволить наконец себе, что давно откладывали.

Можно без упаковки, в обычном пакете-майке.

Можно просто по чашкам, без всяких бокалов. Зато самое вкусное из запасов. Чтобы чокаться смачно с размаху, заливая салаты.

Можно без каблуков. Без парада, в любимой толстовке, халате, той самой футболке, которая стала за год почти второй кожей.

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

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

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

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

Можно в смех и слезы от облегчения, и недоверчивое Он точно кончился?.

Мы желаем каждому найти то, что сейчас вам нужнее всего. Свою цель. Новые возможности. Работу мечты. Любовь. Смелость и силы действовать. Друзей. Пропавший любимый носок. Решение проблемы. Надежду.

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

Ждем вас отдохнувшими после праздников осваивать новые вершины мастерства.

С Новым годом и Рождеством!


Прямо сейчас в OTUS действуют максимальные новогодние скидки на все курсы. Ознакомиться с полным списком курсов вы можете по ссылке ниже. Также у всех желающих есть уникальная возможность отправить адресатуподарочный сертификат на обучение в OTUS.

Кстати, о "красивой упаковке" онлайн-сертификатов мырассказываем в этой статье.

ЗАБРАТЬ СКИДКУ

Подробнее..

IT-гороскоп 2021

03.01.2021 12:17:37 | Автор: admin

Хабровчане, с наступившим! 2020 наконец позади, можно выдохнуть. Наступление нового года дает повод вспомнить о своих устремлениях и пожеланиях, разложить всё по полочкам. Время ставить себе амбициозные цели и воплощать смелые мечты, или решить просто спокойно пожить без лишнего напряжения и преодоления вызовов. Даже если вы не верите в астрологию, звезды помогут вам в делах, и новый год будет лучше предыдущего, вот увидите. Отыщите свой знак зодиака и получайте персональное предсказание, а возможно, и подарок от OTUS.


Энергичный Овен

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


Благородный Телец

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


Яркие Близнецы

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


Многогранный Рак

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


Деятельный Лев

Лев долгие годы самозабвенно трудился, оттачивал мастерство написания чистого и лаконичного кода и оставил сотни полезных ответов на StackOverflow. И это наконец даст свои плоды в 2021 льву открываются головокружительные перспективы в профессиональной сфере, он станет частью проекта мечты. Во второй половине года лев вдруг вспомнит про баланс между работой и жизнью и устроит себе незабываемый отпуск, который подарит вдохновляющие впечатления и зарядит его энергией еще на год вперед.


Дева-интеллектуал

Практичные и проницательные девы точно знаю, чего хотят и как этого добиться. Они хорошенько поработали над своими планами на ближайшие пять лет даже точно смогут ответит на это вопрос рекрутерам. Жизнь, конечно, штука непредсказуемая (почти как поведение фронтенда сайта в IE) и вносит свои коррективы но девам точно понравится тот неожиданный поворот событий, который может произойти. Дева, словно вода, удивительно гармонично подстраивает свои мечты и цели под реальные обстоятельства. Можно с уверенностью сказать, что 2021 год дева проведет в полной внутренней гармонии.


Талантливые Весы

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


Целеустремлённый Скорпион

Энергичный, неиссякаемый источник новых идей скорпион всерьез возьмется за свое профессиональное развитие. Он забудет, что значит прокрастинация, поскольку будет полностью поглощен интересными проектами. За год скорпион освоит большое количество актуальных технологий и существенно поднимет свой уровень дохода. При этом мудрый скорпион не забудет и об отдыхе, физической нагрузке и смене обстановки так он точно не выгорит на длинной дистанции.


Стремительный Стрелец

Обаятельному и энергичному стрельцу 2021 год принесет множество интересных и полезных знакомств, которые могут привести его к самым желаемым проектам. Возможно, стрелец наконец соберет весь свой ценный опыт и решится выступить на профессиональной конференции, чем может запустить череду удачных событий. В то же время 2021 преподнесет стрельцу нетрививальные трудные задачи, с которыми он сможет успешно справиться, применив новые знания и систематический подход. Стрелец особенно полюбит отдых на природе.


Жизнелюбивый Козерог

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


Любознательный Водолей

В 2021 году водолей забудет, что такое финансовые трудности. Близкие люди будут поддерживать его в принятии непростых решений, так водолей сможет успешно преодолеть все препятствия. Дедлайны будут давить, но водолею хватает стойкости и опыта, чтобы успешно разбираться со всеми задачами. Возможно, появится непривычное желание стать наставником для джуна или вовсе запустить свой авторский курс словом, водолей испытает потребность делиться накопленным опытом. И у него это точно получится.


Творческие Рыбы

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

Подарок от OTUS

Друзья, мы продлеваем новогодние скидки на все курсы до конца каникул. Ознакомиться с полным списком курсов вы можете по ссылке ниже.

ЗАБРАТЬ СКИДКУ

Подробнее..

Почему Новогоднее настроение из года в год уходит от нас

30.12.2020 12:20:04 | Автор: admin
Spoiler

Да, заголовок кликбейтный, но как-то захотелось набросать мыслей на эту тему. Заранее извиняюсь за такой мрачный посыл, отличнейших вам праздников. Может в следующем году стану хабрее и напишу что-то в духе we wish you a merry christmas, но пока настроение такое :(

Тут всякие замечания и мысли:

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

А я все чаще замечаю, что меня как будто кто-то подменил.

О морях при карантине и не мечтаю, телевизор мне природу заменил.

Что было вчера позабыть мне пора

С завтрашнего дня, с завтрашнего дня!

Ни соседям ни друзьям. Никому не узнать меня!

Не узнать меня, ведь в зуме в виртуальном фоне растворяюсь я

Стал подмечать и за собой, и за друзьями последние пару лет, что мало кто прям горит Новогодним настроением как это происходило те же 3 года назад. Скорее уж все ищут повод собраться не как на праздник, а как просто возможность сойтись компанией, вместо уютного отмечания дома с роднёй, что более менее объяснимо в этом году, но в предыдущие лета это происходило тоже, что для меня является большой странностью, т.к. ту самую душевность и радостность от праздника, как мне кажется, можно постичь только в кругу семьи и близких. Можно конечно предположительно объяснить происходящее музыкой в магазинах, в которых ставят happy new year и подобное аж за месяц до праздника сколько лет подряд и всякими роликами на YouTube и прочих платформах, хотя настроения это особо не задаёт (у меня уж точно) и тогда на чём основывается эта тяга отметить, при отсутствии настроя. Понятное дело, что всегда приятно увидеться с друзьями, выпить чего-нибудь горячительного, поставить хорошую музыку, подарить и получить подарки, но это всегда можно сделать и в любые другие дни и не оправдываясь желанием душевно отметить Новый Год. Также приятно нарядить ёлку (ну или пронаблюдать за этим действом, лично я и тот и тот вариант одобряю), развесить гирлянды, мишуру, приготовить закуски, салатики и прочая. Но от вышеуказанных телодвижений настрой тоже особо не сдвигается в нужную сторону, хотя часть людей, признаю, может словить ту самую нотку, которую все так ищут к декабрю, но увы не все, как я приметил. Та если вспоминать всё те же магазинчики, наблюдая за случайными прохожими складывается чёткое ощущение просто бытовухи, только с повышенным употреблением съестного и спиртного. Может всё из-за миопии средней степени и я чего-то не замечаю, но вот даже просто уличные украшения радости не задают от слова совсем, как георгиевские ленточки на 9-е мая, разве что рекламные плакаты не так видны становятся. Хотя если я сейчас вспомню свои недалёкие детские годы, то наткнусь на такую мысль: раньше хотелось праздников, даже если ты уже неделю как ничего не делаешь и как бы уже празднуешь, а сейчас я рвусь на учёбку в универ к любимым зависающим компам на камнях intel, которые выпустили ещё до моего рождения, на лекции к преподам, где половину как всегда не поймёшь и будешь обсуждать потом с друзьями с видом мол дофига прошаренный, да даже просто хочется одногруппников увидеть просто так, а праздники особо не способствуют всему этому.

Так себе сформированный вывод:

Всё вышеуказанные наблюдения наталкивают меня на мысль, что из года в год обесцениваются те 3-4 дня с родителями и близкими при общем праздненстве, как происходит потеря новогоднего настроения. Трудно сказать кто или что виновато в таком постепенном отторжении Нового Года как праздника, и принятии его как данности. Возможно дело в том, что с каждым изменением этих цифр на календаре всё мрачнее выглядят перспективы просто всего мира, хотя когда пересматриваешь диснеевские фильмы про Рождество с трудом верится что в относительно ближайшем будущем нас ждёт энергетический кризис, митинги из-за скорости Интернета и сахарный дефицит, с полнейшим загрязнением всего и вся. Может быть всё дело в общем настроении в России (не буду повторять избитые темы, все всё понимают). Даже не знаю что ещё можно добавить, также могу предположить что из-за событий этого года я начал замечать какую-то мрачность и в предыдущих праздниках. Наверное на этой ноте хотелось бы закончить эту статью. Буду очень рад увидеть ваш комментарий внизу, может на какие-нибудь интересные мысли наведёт. Также очень надеюсь что вам понравилась моя статья или натолкнула на какие-нибудь мысли или выводы. Хороших вам выходных, счастливого Нового Года и отличнейших вам событий в следующем году, да прибудет с нами Хабр :)

Подробнее..

Анонимный Дед Мороз 2020-2021 пост хвастовства новогодними подарками

10.12.2020 14:11:17 | Автор: admin
АДМ 2020 на Хабре

Что мы делаем после каждого запуска Хабра-АДМ? Правильно! Публикуем пост Хвастовства.
И особенно приятно, что некоторые участники уже получили свои первые подарки. Так поторопимся и мы.

Пост Хвастовства объявляется открытым!

С НАСТУПАЮЩИМ НОВМ 2021 ГОДОМ!

Ваши iCTPEJlOK и kafeman

PS: А если вам кажется, что комментариев пока слишком мало, можете посмотреть, как это было в прошлых сезонах: 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
Подробнее..

Двигаем Новый год на Хабре

09.12.2020 10:19:32 | Автор: admin
Ну что, скорее бы уже этот 2020 закончится? Или пусть длится вечно? Герой, злодей или страж выбирайте расу и давайте решать.


Так, что-то ничего не понятно


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

А теперь нам самим стало интересно, кто в этой схватке победит. Если постараться, накликать НГ можно уже хоть на эти выходные, но может случиться и так, что праздник может наступить позднее боя курантов в 00:00 первого января.

Так когда наступит Новый год?


Новый год наступит тогда, когда решите вы. Счётчик работает на сайте в синем окне, вы его точно не пропустите.


А что будет, когда он наступит?


Ну мы вот прям сразу взяли и сказали. Конечно же эта информация на новый год. Хотя ладно, пусть будет подсказка: спец-ко[д/т]. Погнали двигать!


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

Клуб анонимных Дедов Морозов 20202021 на Habr

05.11.2020 10:06:30 | Автор: admin
КДПВ На дворе уже ноябрь и это говорит о том, что очередной високосный год наконец-то подходит к концу и приближается Новый Год! Приближение этого светлого, доброго, семейного праздника ознаменует старт очередного сезона, традиционной для Хабра забавы, Анонимный Дед Мороз!

К участию принимаются все с показателем кармы более 10, а также те, кто участвовал в каком-либо из предыдущих сезонов и имеют значок Дед Мороз (при наличии значка Дед мороз количество кармы значения не имеет).

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

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

Как принять участие
  1. Зарегистрироваться в качестве участника на сайте https://habra-adm.ru/ до 23:59 3 декабря
  2. После 4 декабря дождаться назначения личного Анонимного Получателя Подарка
  3. До 30 декабря отправить подарок, сделать заказ с доставкой в интернет-магазине или договориться в чате с получателем о личной встрече для вручения подарка
  4. Нажать кнопку Я отправил подарок
  5. Дождаться пока Анонимный Получатель Подарка получит ваш подарок и нажмёт на кнопку Подарок получен
  6. Вы удивительны!

Обо всех сложностях с регистрацией, с отметками об отправке или получении, а также если ваш Анонимный Получатель Подарка не выходит на связь, а адрес указан некорректно или он никак не прочитает ваше сообщение, что подарок уже ждёт его на почте срочно пишите iCTPEJlOK или kafeman.

Если участвовать хочется, но что подарить непонятно можно подглядеть какие штуки дарили хабровчане друг друг в прошлых сезонах: 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
Подробнее..

Санта Клаус поздравил пользователей Хабра

25.12.2020 10:05:30 | Автор: admin
На фоне неутешительных новостей об эпидемии коронавируса в мире, осталось незамеченным позитивное и долгожданное событие, которое произошло еще в ноябре. Санта-Клаус официально открыл рождественский сезон. С учетом нынешней ситуации сделал он это онлайн. И решил лично поздравить через видеообращение всех жителей планеты. Не обделил вниманием он и пользователей Хабра. За плодотворную работу всех IT-специалистов, которые читают и пишут посты на данном информационном ресурсе, Санта Клаус записал видеопоздравление.


На самом деле, ролик сделан при помощи deepfake. Synthesia британский стартап, который занимается дипфейк-роликами. В честь зимних праздников там запустили нейросеть-Санта-Клауса, который озвучит ваше поздравление и даже запишет видеообращение.
Для этого проекта снялся настоящий актер, но с его голосом и мимикой работает нейросеть.

Работает все довольно просто:

  1. Заходите на сайт Synthesia.
  2. Выбираете фон для Санты, пишете ему текст, который он должен озвучить. На самом деле необязательно писать именно поздравление, можно использовать любой другой текст (но только если он не обидный и пройдет цензуру).
  3. Дожидаетесь, пока ваше видео проходит проверку и получаете ссылку на него на вашу электронную почту. Обработка занимает от пары минут до нескольких часов.

И вуаля можно поздравлять друзей!

Тем временем, ВОЗ заверила, что у Санта Клауса есть иммунитет к COVID-19. Санта Клаус, несмотря на свой возраст, имеет иммунитет к COVID-19 и в этом году будет развозить всем подарки, заявила глава технической группы подразделения чрезвычайных заболеваний Всемирной организации здравоохранения Мария Ван Керкхове.

Мы разделяем озабоченность детей во всем мире, потому что Санта входит в группу риска для людей пожилого возраста. Но я могу сказать, что у Санты есть иммунитет к этому вирусу. У нас с ним была небольшая беседа, с ним все хорошо. Миссис Клаус тоже в порядке. И многие главы государств по всему миру заявили нам, что они облегчили карантинные ограничения для того, чтобы Санта Клаус мог войти в их воздушное пространство. Так что он доставит все подарки.


А Благотворительная организация Национальной службы здравоохранения Великобритании (NHS Charities Together) извинилась за видеоролик, в котором врачи оказывают помощь Санта-Клаусу в реанимации.


Ролик подвергся резкой критике со стороны пользователей YouTube они сочли, что вид Санты в реанимации может напугать детей. Абсолютно отвратительно. Ужасная ошибка. Дети и без того через многое прошли. Как вам не стыдно?, говорилось в самом популярном комментарии под видео.
В итоге Национальной службе здравоохранения пришлось убрать его со своего канала. Там подчеркнули, что он был предназначен для взрослой аудитории и не транслировался по ТВ, где его с большой вероятностью могли бы увидеть дети. Организация принесла извинения родителям, дети которых расстроились после просмотра рекламы.

Вот в США и некоторых странах Европы Сант прячут за стекло, а детям запрещают сидеть у них на коленях. Речь о Санта-Клаусах, работающих в торговых центрах. Каждый год дети приходят туда вместе с родителями, делают фотографию с дедушкой и получают от него подарки. Однако на время пандемии традиции пришлось пересмотреть.



В одних торговых центрах детям приходится общаться с Сантой с расстояния двух метров. Впрочем, в Дании к Санте и вовсе не подойти, ведь он спрятался ото всех внутри огромного прозрачного шара. Кое-где ребенка и слушать не станут без надетой маски (снимать ее нельзя даже для праздничного снимка). В некоторых торговых центрах перед Сантами ставят подарочные коробки и другие украшения, чтобы дети при виде дедушки не побежали его обнимать.
Еще во многих торговых центрах нужно занимать электронную очередь по задумке, это позволит избежать столпотворений. В свою очередь сотрудники постоянно протирают подарки, украшения, кресло и руки Санты. К слову, рабочие часы Сант в 2020 году тоже сократили, чтобы дать им отдохнуть от людей. В общем, какой год, такой и праздник.



Так что, настоящий Санта на полную катушку приступил к работе, вспоминая уютное гнездышко, где он загорал вместе с Кэти Пэрри (Katy Perry).





На правах рекламы


Вдсина поздравляет всех с наступающим Новым Годом!
Наши виртуальные серверы работают безупречно и в обычный день, и в праздничный. Используем исключительно брендовое оборудование, лучшую в своём роде панель управления серверами собственной разработки и одни из лучших дата-центров в России и ЕС. В Новом Году порадуем множеством приятных сюрпризов.

Подробнее..

Новый год хабровчан

30.12.2020 10:17:29 | Автор: admin

Бытует мнение, что IT-специалисты народ своеобразный, и все у них заточено под компьютеры и технологии. Что даже Новый год они встречают вместе с нейросетями среди роботов в костюме из полупроводников за написанием очередной программы для оборудования по вакцинации 5G-станций. И что питаются эти ребята инфракрасным излучением и двоичным кодом. Опросы показали, что для ИТ-специалистов Новый год это традиционный семейный и домашний праздник, на котором принято ставить ёлку, готовить Оливье, пить шампанское и запускать фейерверки. А в большинстве компаний принято отмечать праздник новогодним корпоративом, который чаще всего проходит в ресторане, с кокаином и шлюхами с алкоголем и высшим руководством. Но статистика и стереотипы не отображают истинное положение дел отдельно взятого человека. Поэтому про празднование НГ, про подарки, и вообще как хотели бы провести праздники, и как провели новогодние выходные, спросим у самих айтишников! Ниже приведена подборка комментариев хабровчан к постам с поздравлениями Нового года за предыдущие годы.

Когда-нибудь и комментарии с этого поста попадут в следующую подборку)). Делитесь впечатлениями от пережитого в 2020 году, как будете праздновать в современных реалиях, что нового приобрели или научились за год. Всех с наступающим НГ!



vadimkonshin
27 декабря 2006 в 23:07
Меня о том, как буду отмечать Новый год, не спрашивали? А, вас спрашивали? Кого-нибудь из хабравцев спрашивали, например, Какие блюда у тебя будут стоят на праздничном столе?

Terras
26 декабря 2016 в 18:17
Жена поедет к своим на каникулы, а я куплю 3 бутылки пива, 5 гамбургеров, 10 сникерсов, включу Tony Hawk Pro Skater и буду деградировать пару дней, потом снова включу редактор и буду делать небольшой рефакторинг.

Isis
31 декабря 2011 в 18:10
Объявляется новогодний пост добра. (В новый год можно ;)) Всем отписавшимся плюсую рейтинг и карму. Это ваша возможность вылезти из минусов! :)

valzevul
31 декабря 2011 в 19:41
За С, за Perl, за Unix-shell,
За Windows, Гейтса, за Intel,
За скрипт, за байт, за Unicode,
За Linux, да за Hello, World!!

С Новым годом, друзья! :)


ra1nbow
1 января 2010 в 03:19
Уррааа!!! С Новым 7DA годом Хабралюди!!! И пусть я сейчас сижу в скучном кафе, где пьяный народ веселится под попсу (да, занесла судьба), Хабрахабр со мной (ага, на телефоне)!!! Спасибо вам всем за прошлый год, я думаю новый будет еще лучше!

Новый год праздник, когда надо прощать и благодарить. Всех и за все. И желать всем всего наилучшего. Как себе)


ahiskali
1 января 2010 в 00:44
Желаю всем новых гаджетов, красивых девушек, интересных игр, кармы, вдохновения, желания что-нибудь сделать, времени и счастья, хотя бы от того, что они добились чего-то в жизни! Пусть вы получите все это в новом году.

white_panda
1 января 2013 в 01:29
А у меня +12, целый день дождь и, соответственно, никакого ощущения праздника. Поэтому спасибо всем в этом треде за создание настроения, работает!

Всех с Новым Годом, ура!


ADOLF88HITLER
31 декабря 2012 в 19:05
Обнулите себя. Начните Новый год с чистого листа

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


kahi4
31 декабря 2013 в 19:27
Все желают хорошего и безбажного кода, а я же хочу отдельно поздравить всех инженеров хабра!
С Новым годом, товарищи, без которых не было бы столь большого количества таких клевых вещей)
Желаю, чтобы у Вас просто удавались все расчеты, без проблем находились оптимальные программы управления, сходились все ряды и все системы были устойчивые! Чтобы у навигационных устройств СКО не выходило за требования, чтобы электромагнитные волны распространялись так, как вам нужно, а не как вздумается природе, чтобы фильтр Калмана не схлопывался, а радиоэлектроника не горела!
Чтобы Вы шли по намеченному пути и не отклонялись от него больше, чем на три сигмы, а все случайные шумы были Гауссовскими!
Ну и общее чтобы Вам всегда дул попутный ветер во всех ваших начинаниях и Вы всегда достигали поставленные цели!
С Новым годом, тов. инженеры, с Новым годом, жители Хабра, с Новым годом, IT сообщество)


omfg
31 декабря 2008 в 17:06
Хабралюди! Я в 2009 уже! Тут клево, кризиса нет, зарплату подняли, всех кого посокращали вернули обратно!!!
Всех с новым годом, всех люблю!!!!!)


Surgeon
31 декабря 2008 в 18:51
а я уже разок Новый год встретил в интернете дома новый год давно наступил(Камчатка).Шампанского одного нет, открыл:)
Через 5 часов встречу наяву в Питере:)
Всем удачи и новых идей!
и пусть желания офигеют от ваших возможностей! =)


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

iklementiev
31 декабря 2014 в 20:01
Дорогой Дед Мороз!
Подари мне пожалуйста сегодняшнюю ночь без компьютера!
Хороший мальчик Илюша.


vitalikk
31 декабря 2009 в 17:50
Вот мне, например, хочется найти под ёлочкой дизайнера/художника-фрилансера, который будет готов вместе со мной (программистом, в общем-то) работать много, кропотливо и фанатично над развитием своей студии =)

Новый Год время, когда следует подвести итоги уходящего года и составить планы на год наступающий.

Mako_357
2 января 2017 в 12:34
Хочу это желание. Человек чего то хочет, но двигаться от этого не будет. Если он чего то хочет, то это не означает, что он это сделает. Человек ставит цель и хочет её достигнуть. Но хотеть мало. Надо пообещать себе выполнить её.
На самом деле ничего страшного не произойдёт, если не сдержать слово. Это просто стиль жизни. Одни дают обещания и не выполняют, потом угнетают себя или вообще им всё равно. И другие, которым важно держать слово.
Какая выгода из этого? Если слово не дежишь или не даёшь выгода в том, что можно ничего не делать. Отдохнуть, расслабится. Это выгодно. Прикольная, классная жизнь, в которой ничего не происходит.
Какие выгоды от того, что держать и давать своё слово? Достижение своих целей.
Важно ли человеку жить той жизнью, где он достигает целей, быть успешным или той, где можно поленится, пожить в комфорте, откладывая дела на потом?


Tavee
2 января 2017 в 11:48
Обещаю выучить верстку и тд. Ну и немного секса

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

redhummer
28 декабря 2006 в 06:09
Однозначно прикуплю курицу гриль, какую-нибудь рыбину и шампанского. В обязательном порядке будет присутствовать салат из кальмаров. Но всё это мелочи.
Меня больше грют мысли о первом января =)

Встану утром, накачу припасеного специально на утро шампанского. Умоюсь. Выну из холодильника килограм отваренных с вечера креветок. Открою бутылку водки и буду весь день опохмеляться =)))

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


Coogle
28 декабря 2006 в 20:33
Буду поздравлять и выпивать тосты с колегами и друзьями, сидя за ноутбуком с включённой вебкамерой и приконектиным к Skype :-)

deenween
28 декабря 2016 в 17:52
Жена уже распланировала выходные. Поездки, кино, лыжи, теща А так хочется 3 бутылки пива, 5 гамбургеров, 10 сникерсов....

А еще Новый год это традиции: собираться всей семьей, запускать фейерверки, смотреть Крепкого орешка или один дома, идти в баню с друзьями, забираться в дома незнакомых людей)


Travin
30 декабря 2007 в 14:13
Призываю людей, которые зарабатывают в интернете, в знак уважения к компьютеру и интернет на новый год повесить свою компьютерную мышь на елку.

iOrange
1 января 2014 в 03:11
Продолжу свою Новогоднюю традицию по раздаче плюсов в каменты и то_слово_которое_нельзя_упоминать. С Новым Годом!

Isis
31 декабря 2011 в 20:47
Потратил 120+ голосов за карму. Ушел за стол :)
Еще раз с наступающим и наступившим!


Как бы вы не провели Новый год, с кем бы вы его не провели будьте здоровы, не унывайте и не сдавайтесь, желаю вам всего хорошего и успехов!

hrych
28 декабря 2006 в 14:47
В прошлую новогоднюю ночь я сидел один с бутылкой коньяка и хорошим шоколадом. Не скажу, что было весело. Но необычно и совсем неплохо. А необычное как раз и запоминается.

Djeid
28 декабря 2006 в 15:02
В прошлый НГ мне хотелось праздника и мы с друзьями его сделали, а в этом году хочется домашнего уюта, елку с фонарями, шоколадных конфет, мамины пельмени и телевизор до утра :)

MEXX
1 января 2008 в 22:16
Присоединяюсь ко всем, кто дома, в одиночестве и в интернете, только с поправкой, что я и не праздновал вовсе :))

ozware
13 ноября 2009 в 10:04
я понимаю, что одиночество это удел великих, но не дай бог такое случится!

пока что каждый раз НГ провожу в новом месте, обычно это заграница))


TuiKiken
12 ноября 2009 в 22:45
У меня тоже был случай Вышел с друзьями на Новый год на улицу, прошёлся Помню была слякоть, мелкий моросящий дождь создающий какую-то дымку, тусклые огни фонарей, свет которых вязнул в этой дымке и гопнички плясали у ёлок. Меня это всё как-то угнетало. Новый год у меня ассоциируется с чем-то новым, чистым и лучшим А тут я увидел полную противоположность. Пошёл домой, запустил онлайн игру а там мой друг сидит. Такой же угнетённый. Я принёс бочонок вина и сидел у монитора всю ночь попивая алкоголь.

dekin
29 декабря 2007 в 14:58
Я сегодня с утра работал у Заказчика и умудрился сделать, казалось бы, невозможное в последний рабочий день уходящего года: согласовать разработанное мной ТЗ (между прочим, 8 подписей!), у которого дедлайн истекает как раз сегодня.
И вот буквально пару минут назад с чувством выполненного долга залез на Хабр. И вновь приятно удивился: кому-то понравился мой пост про Новый Год:)
Спасибо вам, хабрадрузья! С наступающим!


masterOk
1 января 2012 в 07:45
Вот уходит старый год:
Пусть с собой он заберет
Все невзгоды и печали,
Коннекты, что порой слетали.

Заберет он пусть заботы,
Звезды, что идут с traceroute,
DoS'еров пусть с наших сайтов
Заберет он без возврата.

Жадных, мелочных клиентов,
Нелюбимых конкурентов,
Палки, что в колеса лезут,
Ламерских мозгов протезы.

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

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

Что с собой он принесет?
Мы сейчас, увы, не знаем,
Но, как прежде, пожелаем
Всем айтишникам сейчас

Не лагал чтоб комп у вас,
Чтоб программы компилились,
Сети чтоб всегда ловились.
Шашлыки чтобы на даче,

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

Много раз сходить в кино,
Наконец-то отоспаться,
От рутины оторваться,
Новых завести друзей,

Целей достигать быстрей,
И чтоб вири на машине
Никогда не заводились,
Да и вы чтоб не болели.

Чтобы вовремя успели
Сдать проект очередной.
Чтоб дедлайна геморрой
Не настиг, когда не надо.

И большой-большой зарплатой
Оценили чтобы вас.
Вот на этом я рассказ
И заканчиваю. Глянь!

На столе пивка стакан
Уж налит. Давай поднимем,
Программист, или админ ты,

Эникейщик ли виндовый,
BSD-шник ли суровый,
Новый Год встречать пора!
Drink, айтишники! Ура!





На правах рекламы


Вдсина поздравляет всех с Новым Годом! Пускай 2021 приносит только хорошее, а всякого рода неприятности и ковиды остаются в старом году!
И в обычный день, и в Новый Год наши виртуальные серверы работают безупречно и без сбоев. Используем исключительно брендовое оборудование, лучшую в своём роде панель управления серверами собственной разработки и одни из лучших дата-центров в России и ЕС. В Новом Году порадуем множеством приятных сюрпризов.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru