dpohvar

dpohvar

Не более 512 символов
Пикабушник
20К рейтинг 184 подписчика 104 подписки 8 постов 5 в горячем
Награды:
За международные достижения Финансовый гений За лучший сплит За супергеройскую помощь Сборщик Пыли За участие в Пикабу-Оскаре 10 лет на Пикабу За обновление Чемпион МЕГАборья Высокий разум Отпетый киноман За контакт с инопланетным разумом За сборку компьютера За победу над кибермошенниками За победу в продуктовом сёрфинге За страсть к путешествиям За помощь Лампочгуку

Ошибка при добавлении картинки в мобильной версии сайта

Одну картинку можно добавить без проблем:

Ошибка при добавлении картинки в мобильной версии сайта

При попытке добавить вторую картинку путем нажатия на иконку - клик срабатывает на другом ближайшем элементе:

- либо клик на корзине, при этом загруженная фотография удаляется

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

- либо клик по имени юзера, если такой есть ниже под формой.

- совсем маленький шанс добавить фото. При этом надо тапнуть на 5-10px левее иконки.

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

Android 4.0.3, Chrome beta 43, Диагональ 10.1''

Нет возможности обновиться.

UPD: в режиме эмуляции на десктопном хроме не воспроизводится.

На мобильном firefox не воспроизводится.

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

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

Показать полностью
2

Не подгружаются шрифты для иконок

На всех страницах вместо некоторых иконок отображаются такие символы:

Причина ошибка в консоли:


Access to Font at 'http://s.pikabu.ru/app/1.0.17/vendors/font-awesome/fonts/fon...' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

UPD: Chrome Версия 58.0.3004.3 (Официальная сборка), dev (64 бит)

UPD: в firefox - аналогично, только символы другие

222

Агрессивная реклама вконтакте

Врем привет!


Недавно я заметил, что adblock перестал справляться с рекламой вконтакте.

После небольшого анализа оказалось:

1) adblock все-таки удаляет рекламу

2) раз в N минут рекламный блок обновляется целиком. При этом, если adblock все-таки похерил его, блок восстанавливается.

Первое, что пришло в голову - установить на хром плагин stylebot и добавить css:

display:none;

И это работало...


Но через полчаса появляется это:

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

К счастью, в css скрыть элемент можно множеством способов. Вот еще один из них:

transform: scale(0);


Вот рецепт счастья для ярых ненавистников рекламных баннеров (таких как я):

- установить stylebot

- добавить transform: scale(0); на элемент #left_ads

Показать полностью 2
2

Бинарные светодиодные часы

Добрый вечер!


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

Лентой управляет Raspberry PI. Команды смены яркости и цвета передаются с компьютера/планшета по вебсокету. На все вопросы по теме отвечу в комментариях.

Для справки: время на видео 03:52

Показать полностью
169

Управление светодиодной лентой на Raspberry PI через websocket

Всем привет!

Продолжаем тему Raspberry PI и гирлянд. (Предыдущий пост)

Сейчас мы рассмотрим светодиодные ленты/гирлянды на чипах WS2811WS2812WS2812b и способы управления ими .

Сначала немного теории.

WS2811 и WS2812 работают на частоте около 800 кГц. Данные передаются с помощью широтно-импульсной модуляции.

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

Каждый отдельный светодиод принимает только 24 бита информации, все оставшееся биты пропускает на следующий светодиод.

биты передаются в таком порядке:

G7 G6 G5 G4 G3 G2 G1 G0    R7 R6 R5 R4 R3 R2 R1 R0    R8 B7 B6 B5 B4 B3 B2 B1 B0

Обратите внимание, что сначала передается зеленый, а не красный, как в RGB-системе.

То есть, чтобы зажечь светодиод оранжевым цветом (#FF8000), мы отправим:

| 1 0 0 0 | 0 0 0 0 | 1 1 1 1 | 1 1 1 1 | 0 0 0 0 | 0 0 0 0 |

|     8     |     0     |      F     |     F     |     0     |     0     |

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

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

Один из способов управлять светодиодами - подключить управление ленты (DATA) к разъему SPI_MOSI (GPIO10). Затем включить драйвер SPI на частоте 3.2 мГц (в 4 раза выше частоты ленты) и передавать бинарные данные:

1000 - для передачи на ленту нуля

1100 - для передачи на ленту единицы

Очень похоже на графики выше, при этом мы отлично укладываемся в погрешность 0.15 микросекунд.

Таким образом у нас получается четырехкратная избыточность информации.

К сожалению, стандартный драйвер SPI имеет ограничение на 32767 байт в одном непрерывном сообщении, Поэтому максимальное число светодиодов, которыми мы можем управлять:

                (байт в сообщении) * (бит в байте) / (бит на светодиод) / (избыточность)

                                                 32767 * 8 / 24 / 4 = 2730

Мало? В принципе, достаточно, чтобы управлять 45-метровой лентой с частотой по 60 диодов на метр, или почти 19-метровой лентой с максимальной плотностью диодов (144 на метр)

Напряжение на портах GPIO составляет 0 и 3.3v, а лента требует 5v.

Чтобы поднять уровень сигнала до 5v, рекомендуют использовать сместитель уровня 74HCT125P или 74HCT125. Подключается он таким образом:

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

Теперь о том, как управлять ленточками удаленно через браузер.

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

Для манипуляции с адресной лентой проще всего использовать уже готовый драйвер. Мой выбор остановился на библиотеке rpi-ws281x-native для nodejs.

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

Скопировать и установить его себе можно так:

git clone https://github.com/DPOH-VAR/pi-strip-websocket.git

sudo npm install node-gyp -g

cd pi-strip-websocket

sudo npm install

Теперь переходим в папку pi-strip-websocket, открываем config.json и настраиваем под себя:

В этом примере указано подключение трёх ленточек. Ими можно будет управлять по адресам:

ws://raspberrypi:4440/LED-RGB/

ws://raspberrypi:4440/LED-WS2812/

ws://raspberrypi:4440/LED-WHITE/

Запускаем приложение:

sudo node index

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

- Для RGB лент мы отправляем три байта, отвечающие за R,G,B компоненты.

- Для адресной ленты мы отправляем по три байта на каждый светодиод (порядок RGB)

На любом компьютере открываем гуглохром, на не https страничке заходим в консоль (F12) и пишем:

Этот скрипт будет каждый раз в 500 миллисекунд зажигать RGB ленту случайным цветом.

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

Показать полностью 6
485

Управление светодиодной лентой с помощью Raspberry PI

Всем привет!

Этот длиннопост будет о том, как сделать контроллер светодиодных лент с помощью Raspberry PI подобный этому.


Нам понадобятся:

 ●  Сам Raspberry PI.

 ●  Транзисторы P1703BDG, IRLZ34N или аналогичные n-типа, рассчитанные на нагрузку ленты и напряжение 12v. В количестве по одному на каждый канал управления.

 ● Светодиодные ленты на 12v. Можно использовать как одноцветные, так и RGB.

 ● Адресная светодиодная лента на основе контроллеров WS281x.

 ● Макетная плата и соединительные провода.

 ● Мощный блок питания на 12v. Компьютерный отлично подойдет.

 ● подключение к raspberry pi по LAN или наличие адаптера USB Wi-Fi

Начнем с основного, это выбор Raspberry PI

На данный момент существуют такие модели:

    «A» (700MHz, 256 Мб ОЗУ, 26 GPIO, 1 USB), $25

    «A+» (700MHz, 256 Мб ОЗУ, 40 GPIO, 1 USB), $20

    «B» (700MHz, 512 Мб ОЗУ, 26 GPIO, 2 USB, ethernet), $35

    «B+» (700MHz, 512 Мб ОЗУ, 40 GPIO, 4 USB,ethernet), $30

    «2B» (4x900MHz, 1 Гб ОЗУ, 40 GPIO, 4 USB, ethernet), $35

    «Zero» (1GHz, 512 МБ ОЗУ, 40 GPIO, 1 USB), $5

Для наших целей подойдет любая из этих моделей, Все, кроме Zero, можно купить на aliexpress по цене от 20$. Найти Zero по заявленной стоимости на данный момент невозможно из-за спекуляций с первой небольшой партией. Лично я купил модель 2B в технопойнте за 3500р.

Выбор светодиодных лент

На али есть огромное количество разнообразных лент в разделе

Lights & Lighting  < LED Lighting <  LED Strips

Ленты на диодах SMD 5050 очень яркие. стоимость около 100-150р за метр. Бывают как одноцветные, так и RGB. Белые и теплые белые светодиоды могут быть залиты люминофором желтого или оранжевого цвета. В ленте они объединяются по 3 на секцию.

Другой вариант - лента с диодами SMD 3528. Они меньшего размера и менее яркие. Однако в RGB ленте на секцию стоят три разных светодиода: зеленый, красный и синий. Благодаря этому ленточка смотрится эффектнее в качестве гирлянды. Для освещения комнаты такая лента не годится

В адресных лентах  можно управлять каждым светодиодом независимо. Самые распространенные контроллеры это WS2801, WS2811 и WS2812.

WS2801 - имеет 4 контакта (5v, SI, Clock, Gnd). Это отдельная тема, я не буду его сейчас рассматривать. Ленты на этом контроллере дорогие. вот про него  интересная статья на хабре.

WS281x - трехконтактные (5v, Data, Gnd). Ленты с WS2811 делают на основе диодов SMD 5050. При этом на ленте в каждой секции по 3 светодиода. Они самые дешевые из этой группы, около 1000р за 5м. WS2812 содержит по одному светодиоду и одному контроллеру на секцию. Светодиоды обычно тоже SMD 5050. Цена от 1300р за 5 метров, зависит от частоты диодов.  WS2812b отличаются тем, что контроллер встроен вовнутрь светодиода. Благодаря этому их можно уместить до 144 шт/метр. По цене и качеству почти то же, что и WS2812.

На этих контроллерах можно найти и обычные ёлочные гирлянды.  Кстати, вот неплохой вариант адресной гирлянды WS2811 за 1000р+. Её можно использовать таким же образом.

Установка ОС на Raspberry PI

В этом нет ничего сложного, инструкция есть на официальном сайте, которая сводится к тому, что нужно извлечь ZIP архив на SD или MicroSD карту.

Дисклеймер:

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

Управлять подачей питания мы можем на любом GPIO разъеме, на картинке ниже они подписаны как GPIO2, GPIO4, GPIO22 и т.д. У моделей A и B отсутствуют пины после 26го.

Подключение простой ленты к разъему GPIO:

● Разъем  GPIO18  подключается к затвору транзистора (GATE)

● Исток транзистора (SOURCE) подключается на землю в Raspberry PI и к блоку питания.

● Сток (DRAIN) подключаем к минусу у светодиодной ленты

● с блока питания 12v подаем напрямую на ленту.

Если у одноцветной ленты 4 контакта, подключите белый к +12V, а все остальные (R,G,B) к стоку.

С RGB лентой будет чуть сложнее, потребуется уже три транзистора:

Управление яркостью ленты будет осуществляться с помощью широтно-импульсной модуляции (PWM). Грубо говоря, лента будет мигать с очень большой скоростью так, что будет казаться, будто она горит в половину мощности. Для этого потребуется драйвер pigpio.

Установить можно его следующим образом:

wget abyz.co.uk/rpi/pigpio/pigpio.zip

unzip pigpio.zip

cd PIGPIO

make

sudo make install

Теперь можно запустить службу:

sudo pigpiod

Чтобы не запускать ее каждый раз при загрузке, можно прописать эту строчку в файл /etc/rc.local

Проверяем работоспособность PWM:

echo "p 18 128" > /dev/pigpio

эта команда должна установить скважность импульса у разъема GPIO18 на 50%.

Если до этого момента все было сделано верно, лента должна загореться на 50% мощности.

echo "p 18 255" > /dev/pigpio - включить ленту на полную яркость

echo "p 18 0" > /dev/pigpio - выключить ленту.

Отлично! Теперь можно подключаться с мобильного телефона по SSH и с помощью этих команд задать любой цвет и яркость освещения. Подойдет Android Terminal Emulator, который есть во многих прошивках Android.

Труъ-линуксойды могут написать такой скрипт ~/setColor.sh :

#!/bin/bash

echo "p 23 $1 p 24 $2 p 25 $3" > /dev/pigpio

где 23,24,25 - номера GPIO, к которым подключена лента.

Делаем файл исполняемым:

chmod 755 ~/setColor.sh

И запускаем с параметрами:

~/setColor.sh 255 64 0

Подключение адресной ленты WS281x

Адресную ленту можно подключить напрямую к Raspberry PI.

"+" к пину 2 или 4, чтобы получить 5v;

"-" к любому пину Ground (6,9,14,20,25,30,34,39)

Data - к любому пину GPIO, желательно GPIO18

Если у вас есть отдельный источник питания на 5v, лучше подключить ленточку именно к нему.

>> Делись схемой!

Вот схема, которую я собрал для своих гирлянд:

(две RGB ленты, одна WS2812 и белая лента)

>> Почему именно Raspberry PI, а не другой дешевый контроллер

Простейший алгоритм для гирлянды действительно можно сделать на Arduino nano за 130-150р. Но это уже программирование микроконтроллера на языке C и высокий порог вхождения. К тому же, его будет сложно приспособить к дистанционному управлению по локальной сети.

Raspberry PI - это полноценный компьютер, который можно настроить как угодно, в том числе писать программу для работы с лентами на любом языке программирования. А если надоест - он может использоваться как домашний медиа-сервер или Smart-TV.

На этом пока что всё. В следующий раз расскажу, как управлять адресной гирляндой, а также сделать доступ к ним через интернет или локальную сеть. Будет node.js и немного кода на javascript.

Показать полностью 8
513

Новогодняя ёлка на Raspberry PI

Вот такую ёлочку мы сделали с помощью Raspberry PI и четырех светодиодных лент.

Всем счастливого Нового Года!

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

На все вопросы постараюсь ответить в комментариях.

Отличная работа, все прочитано!