1 апреля в 07:46

Делаем проектор с поддержкой Full HD за 200 рублей (на самом деле да, но нет) recovery mode

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



С первым апрелем (для тех, кому лень читать статью. Осторожно, под спойлером спойлер!)
Насколько я вижу не все готовы дочитать до середины материал, который вполне очевидно не про разработку проектора. Жаль, я не хотел в самом начале раскрывать истину… Ну что ж. Эта статья не про Full HD проектор за 200 рублей (что было бы абсурдом). Эта статья про нечестный маркетинг и агрессивный обман со стороны маркетологов.

Итак, начнем.

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

Декодер видеосигнала


Для простоты будем работать с VGA. VGA-сигнал делится на три принципиальных части:

1) Передача цвета;
2) Вертикальная и горизонтальная синхронизция;
3) Передача на ПК информации о мониторе — родное разрешение, доступные частоты, инорфмация о производителе.

O VGA


Передача цвета производится аналоговым сигналом от 0 до 0.7 вольт. Остальные данные передаются в цифровом виде. Для работы с VGA будем использовать микроконтроллер atmega8. После разводки у меня получилась вот такая плата:



Слева — кварцевый резонатор и питание, сверху — uart по которому мы будем проекционному устройству отдавать сигнал, справа — VGA и снизу — разъем для подключения программатора.
R2 и R3 — это резисторы для i2c канала, по которому передается информация о мониторе.

Об идентификации


Ранее VGA мониторы отдавали информацию подтягиванием четырех пинов на землю. Однако нам такой вариант не подходит, поскольку он не позволяет задать Full HD разрешение.

С приходом больших разрешений VGA обзавелся DDC (Display Data Channel). Это i2c совместимый канал обмена данными. VGA монитор является slave устройством с адресом 0x50 и при запросе от мастера просто отдает фиксированное содержимое — EDID (Extended Display Identification Data).
EDID подробно разобран в той же википедии. Но формировать 128 байт (именно столько занимает блок данных) с нуля — задачка не веселая, даже по подробной спецификации.

Поэтому я просто подключил VGA монитор к нашей плате и написал простенький скетч (даже не буду приводить код, ибо примитивный он), который открывал i2c соединение в роли мастера, делал запрос по адресу 0x50 и просто ретранслировал всё на uart.

Получилось вот так:



Мой монитор отдает два блока данных. Первый блок содержит всё что требуется. Второй весь забит 0xff.

Я взял все эти данные и забил в скетч. Единственный момент — мой монитор имеет родное разрешение 1440x900, а нам нужно 1920х1080. Поэтому 38 байт переписывается для соответствия Full HD и заново считается контрольная сумма (последний байт). Контрольная сумма — так называемая Modular sum. То есть сумма всех байт (включая чек-сумму) должна быть 0.

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

Стоит отметить, что далеко не все ПК у меня определили этот модуль в качестве монитора. То ли из-за того, что я не подключил 4 и 11 пины к земле, то ли потому, что я не стал брать питание с 9 пина… Точно не знаю. Проверять не стал.

О получении картинки


С картинкой всё просто:

Когда приходит VSync сигнал — начинается новый кадр. Каждый HSync сигнал означает начало новой строки. Значения из аналоговых RGB каналов, полученные в период между двумя HSync сигналами, и представляют строку пикселей на экране. В теории все просто. Но есть нюанс: даже картинка 640х480 при частоте 60 герц требует для обработки 25 мегагерцовый процессор… Full HD почти на порядок требовательнее.

А у нас atmega8 с потолком в 15 мегагерц… Какие уж тут Full HD… Мы даже 640х480 не потянем…

Можно, конечно, прикрутить сюда stm32 и он справится без проблем… но зачем? Мы пойдем другим путем. И будем полностью игнорировать сигналы синхронизации. Просто в лоб, в течении 100 миллисекунд накапливаем r,g,b значения — сколько сможем, а потом получаем среднеарифметическое. Полученное RGB значение и будет средним цветом экрана… с некоторой погрешностью. Его и будем отдавать проекционному устройству.

Итоговый скетч выглядит примерно так:

VGA-to-UART.ino
#include "Wire.h"
const int EDID_BUFFER_SIZE = 256;
const int EDID_SIZE = 128;
uint8_t EDID[EDID_BUFFER_SIZE] = {
  0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
  0x1e,0x6d,
  0x7a,0x4b,
  0x02,0x12,0x01,0x00,
  0x0f,
  0x13,
  0x01,
  0x03,
  0x6e,0x29,0x1a,0x78,0xea,
  0xe5,0xb5,0xa3,0x55,0x49,0x99,0x27,0x13,0x50,0x54,
  0xbf,0xef,0x80,
  0x95,  //<<<PLACE RESOLUTION HERE (RES/8-31) EXAMPLE: 1440/8-31=0x95
  0x0f,
  0x45,0x4f,0x61,0x4f,0x81,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  0x9a,0x29,0xa0,0xd0,0x51,0x84,0x22,0x30,0x50,0x98,0x36,0x00,0x9a,0x00,0x11,0x00,0x00,0x1c,
  0x00,0x00,0x00,0xfd,0x00,0x38,0x4b,0x1e,0x53,0x0e,0x00,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
  0x00,0x00,0x00,0xfc,0x00,0x57,0x31,0x39,0x33,0x34,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  0x00,0x00,0x00,0xfc,0x00,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  0x00,
  0x5b
};

int requestPos = 0;

void setup() {
  Serial.begin(115200);  
  Serial.println("start");  

  EDID[38] = 1920/8 - 31;
  uint8_t sum = 0;
  for (int i = 0; i<EDID_SIZE-1; i++)
    sum+=EDID[i];
  EDID[EDID_SIZE-1] = 0-sum;


  for (int i = EDID_SIZE; i<EDID_BUFFER_SIZE; i++)
    EDID[i] = 0xff;

  Wire.begin(0x50);
  Wire.setClock(100000);
  Wire.onRequest(requestEvent);
}

int maxValue = 1;
float r_v = 0;
float g_v = 0;
float b_v = 0;
int count = 0;

long lastUpdate = 0;
int loopTime = 0;
const int LOOP_TIME = 100;

void loop() {  
  int r = analogRead(0);
  int g = analogRead(1);
  int b = analogRead(2);
  if (r>maxValue)
    maxValue = r;
  if (g>maxValue)
    maxValue = g;
  if (b>maxValue)
    maxValue = b;    

  r_v += r / (float)maxValue;
  g_v += g / (float)maxValue;
  b_v += b / (float)maxValue;
  count ++;

  long dt = millis() - lastUpdate;
  lastUpdate+=dt;
  loopTime+=dt;
  if (loopTime>=LOOP_TIME){
    loopTime=0;

    r_v = r_v / count;
    g_v = g_v / count;
    b_v = b_v / count;

    Serial.println("RGB");
    Serial.println((int)(r_v*100),DEC);
    Serial.println((int)(g_v*100),DEC);
    Serial.println((int)(b_v*100),DEC);

    r_v = 0;
    g_v = 0;
    b_v = 0;
    count = 0;
  }
}

void requestEvent(int count) {  
  if (count+requestPos>EDID_BUFFER_SIZE)
    count = EDID_BUFFER_SIZE-requestPos;
  Wire.write(&EDID[requestPos],count);
  
  requestPos+=count;
  if (requestPos>=EDID_BUFFER_SIZE)
    requestPos = 0;
}


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

Итак, видеосигнал декодирован, получено среднеарифметичское и отправлено по uart… куда? Конечно же проекционному устройству. О нем и поговорим.

Проекционное устройство


Правда, разговор будет короткий. Проекционное устройство — это RGB светодиод. В моем случае я просто подключил его к arduino nano и после получения по uart значения цвета устанавливаю шимом нужную яркость каналов светодиода.

И на этом всё.

Комплектующие:

— atmega8
— небольшая кучка резисторов
— небольшая кучка разъемов
— rgb-светодиод
— vga-разъем

P.S. Не спешите минусовать, ниже я расскажу, что за фигню мы тут собрали. А пока — небольшое лирическое отступление.

Чувствуете себя обманутыми?


Я уверен, что да. Конечно же, вы сразу понимали что не бывает Full HD проекторов за 200 рублей. Но так хочется верить в чудо.

Спешу вас заверить, с точки зрения современного маркетинга я вам не соврал! Ведь вот он — проектор. И он честно поддерживает 1920х1080.

А сподвигли меня на написание этой статьи — именно в такой форме — ребята, которые открыли «магазин крутых дешевых проекторов». Вполне возможно сейчас справа от этого текста висит как раз их реклама. Во всяком случае я к ним пришел именно с geektimes. Я не буду писать название этого магазина — это не принципиально. Их миллион и они — мошенники. Мошенники не потому, что присылают кирпичи вместо проекторов. Нет, я уверен что они так не делают. И не потому, что исчезают с деньгами. Так они, вероятно, не делают тоже. Они «честно» продают вам проектор. С заявленными характеристиками. Вот только, если вы не специалист, вы поймете где обман слишком поздно. Когда предъявить будет уже нечего. Ведь так хочется верить, что может существовать Full HD-проектор за 200 7000 рублей.

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

Вот так выглядит список характеристик на сайте таких магазинов:

Поддержка разрешения: 1920х1080
Яркость 1000 Люмен
Контрастность 1000:1
Диагональ экрана 34~130 дюймов
Проекц. расстояние 1~4 м
Срок службы лампы 30 000 часов
Вход: USB-2шт, HDMI, AV, AUDIO, SD

И это корректные характеристики. Видите подвох? Вот вам подсказка — вот так я мог бы написать характеристики проектора, которые собрал для этой статьи:
Поддержка разрешения: 1920х1080
Диагональ экрана 34~130 дюймов
Проекц. расстояние 1~4 м
Срок службы лампы 30 000 часов
Вход: VGA

А теперь для тех, кому лень играть в угадайку: в этих списках есть полная ерунда под названием «Поддержка разрешения», которая не значит вообще ничего. Это разрешение, которое может схавать декодер и не более того. Причем, что характерно, тот же проектор у производителя имеет еще одну строку: Native resolution: 800x480. Согласитесь, сразу всё встает на свои места!
Поддержка разрешения: 1920х1080
Родное разрешение: 800х480
Яркость 1000 Люмен
Контрастность 1000:1
Диагональ экрана 34~130 дюймов
Проекц. расстояние 1~4 м
Срок службы лампы 30 000 часов
Вход: USB-2шт, HDMI, AV, AUDIO, SD
Поддержка разрешения: 1920х1080
Родное разрешение: 1х1
Диагональ экрана 34~130 дюймов
Проекц. расстояние 1~4 м
Срок службы лампы 30 000 часов
Вход: VGA

И ведь нечего предъявить… Формально всё прекрасно! Проектор? Проектор! 1920х1080 поддерживает? Поддерживает! Ну, а чтобы вы случайно не нашли проектор на китайском сайте — картинки проектора они показывают отраженными.

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

Который вовсе и не проектор.

Hardware ambilight первого поколения


Ambilight (Ambient Lighting Technology) — это технология подсветки пространства за экраном.
Philips были первыми, кто это придумал. Первая версия ambilight просто брала среднее значение цвета на экране и освещала стену позади экрана этим средним цветом. Эффект достаточно интересный, т.к. усиливает погружение. Этот эффект возможен потому, что наше периферическое зрение значительно хуже различает детали, но при этом хорошо определяет общий цвет. То есть даже ambilight первого поколения обладает отличным эффектом.

На али вы можете легко купить комплект ambilight, но мне они не нравятся тем, что требуют установки китайского софта. Это и потеря производительности, и отсутствие кроссплатформы, и китайский софт на ПК…

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

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

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

Поэтому есть второй вариант аппаратного видеодекодера для ambilight. Выглядит вот так (сделал под arduino nano — для простоты):


Как можно заметить — это просто врезка в VGA кабель, с пассивным чтением RGB канала. Из минусов тут — возможное ухудшение качества сигнала. Хотя я ничего такого не заметил. Плюсы очевидны — просто втыкаем перед монитором и имеем автономный декодер.

Выглядит в работе это вот так:


Светодиод, конечно, имеет очень посредственную передачу. Да еще и камера не успевает быструю смену цвета светодиода показать.

P.S. VGA-разъемы я, конечно же, не покупал. Я их выпаял из старой материнки и двух плат от мониторов.

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

Александр Басов @AllexIn
карма
7,0
рейтинг 21,2
Пользователь
Похожие публикации
Самое читаемое

Комментарии (115)

  • +1
    Не спешите минусовать, ниже я расскажу что за фигню мы тут собрали.

    Рассказать-то рассказали, но осадочек от обманутых ожиданий остался :))
    • +3
      время нынче (вот конкретно сегодня) такое, что ожидать особо ничего и не стоит
    • +5
      Но ведь вы понимали, еще только прочитав заголовок, что 200 рублей за проектор — это абсурд. Так просто не может быть.
      Собственно, я не стал делать более серьезную версию ambilight — потому что это бы значительно увеличило цену. И тогда кто-то мог уже серьезно рассчитывать получить проектор по итогу прочтения.
      Но даже понимая, что это абсурд — вы все равно ждали результат…
      А теперь представьте человека, который не ориентируется в рынке проекторов. И видит рекламу — FullHD проектор за 11 000. Только сегодня мега скидка — 7000. Он подсознательно может понимать, что цена низковата. Но спишет это на удачу и мега скидку! Свезло же!
      Вот ощущения от обманутых ожиданий такого покупателя я и хотел передать, чтобы показать серьезность темы. Судя по негативной реакции читателей — перестарался. :) Жаль, конечно, что статья и карма уходит в минус. Но на мой взгляд тема достаточно серьезная поднята, чтобынесмотря на это статью оставить на GT.
      • 0
        Просто поправьте заголовок в духе «Делаем проектор с поддержкой FullHD за 200 рублей (на самом деле нет)». И вы ещё так торопились сделать провокационный заголовок, что в букву пропустили.
        • +1
          «на самом деле нет» — ломает же всю идею. :(
          Тем более, что на самом деле — да. По итогу проектор с поддержкой FullHD сделан.

          И вы ещё так торопились сделать провокационный заголовок, что в букву пропустили.

          О, нет. Я накосячил гораздо сильнее. Я по ошибке пересохранил статью при публикации и отменил все редакторские правки. В итоге опубликовался текст с кучей ошибок и опечаток.
      • 0
        Разумеется, я понимал, что ожидать полноценный FullHD проектор за 200 рублей не стоит, но, честно говоря, я надеялся на какую-то интересную конструкцию, которая хоть чуть-чуть бы соответствовала слову «проектор» :) Ну не знаю, типа «берем лазерную указку, моторчик с зеркалом, ардуину и получаем вот такой результат» (сильно утрировано, конечно) :)
        Нет, минусовать Вашу статью конечно же желания не появилось, идея интересная, реализация простая. Но слово «проектор» в названии настраивает на несколько другие ожидания :)
        • +1
          моторчик с зеркалом
          С двумя зеркальными призмами, сделанными из обрезков зеркала, наклеенных на 3D-печатные шестерёнки.
      • 0
        Я ждал проектора из FullHD телефона и коробки.Возможно, даже с системой зеркал.
        • 0
          По итогу вы скорее разочарованы или нет?
          • +1
            Разумеется. Интрига есть в начале, а в конце всё так банально. Заголовок можно поменять на «Маркетологи из магазина Ledunix — мудаки (на самом деле нет, но да)».
            • 0
              А разве проектор из коробки — это не банально? тем более что вот уж чем-чем, а инструкциями по таким проекторам весь инет завален.

              Ну и не только ledunix.ru так делают. Это общая практика. Я поэтому и не упоминал их название, тыщи их.
  • –1
    с точки зрения современного маркетинга

    Когда предъявить будет уже нечего


    Есть пара нюансов: «с точки зрения закона» и «правила дистанционной продажи» ;).
    Насчёт нечего предъявить — очень даже есть чего, непредоставление всей полноты информации о товаре, например. Покупатель покупает не декодер, а проектор, который используется определённым образом. И так далее. Да, это несёт за собой кучу гемороя и потраченного времени, но прижать такого продавца можно с, не то чтобы лёгкостью, но не запредельной сложностью.
    • +2
      Прижать ИМХО почти не реально.
      Можно вернуть товар. В законе не оговорено что такое «основные потребительские свойства». При этом только в суде можно доказать, что потребительские свойства не указаны. Но до суда не дойдет, потому что вы сначала должны написать претензию в магазин. А магазин вашу претензию удовлетворит и просто вернет вам деньги.
      То есть «вернуть товар» — можно попробовать и скорее всего получится. А вот «прижать продавца» — я пока способа не вижу.
      • –1
        «Основные потребительские свойства» — свойства на основании которых потребитель выбирает и для использования которых приобретает товар. Указываются, например, в «инструкции» — должна быть (читай «продавец обязан») предоставлена, для возможности совершить выбор, мало того — на русском языке.
        информация, предусмотренная п.2 ст.10, доводится до сведения потребителей в технической документации, прилагаемой к товарам, на этикетках, маркировкой или иным способом, принятым для отдельных видов товаров.


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

        но в самом начале вы написали
        Прижать ИМХО почти не реально

        А разве это не есть «прижать»?
        • +2
          А разве это не есть «прижать»?

          Нет, это равносильно отсутствию покупки.
          Прижать — это заставить прекратить деятельность, ну или хотя бы нанести какой-то ущерб.
          • 0
            Какой вы кровожадный однако :).

            Я считал, что возврат деножков будет уже после покупки. Отмена ДКП после заключения, а не до. Мне казалось, что речь шла именно об этом:
            Вот только, если вы не специалист, вы поймете где обман слишком поздно. Когда предъявить будет уже нечего.
            • +1
              Ну отлично, а те, кто обычный народ так дурят пачками, они не кровожадные? Лох не мамонт, типа того?
              • 0
                Ой, ну прям они торгуют тем, без чего ну никак не обойтись… Я не оправдываю такой «бизнец», но и покупателям голова не только для шапки.
                • +4
                  Человек разбирается в проекторах на уровне обывателя. О Native Resolution естественно знать не знает.
                  Приходит на такой сайт. Всё выглядит нормально. Что должно его смутить?
                  • –2
                    Помимо цены?
                    • +1
                      Цена не является очевидно низкой. Особенно для человека не ориентирующегося в проекторах. Меня цена сразу смутила, потому что я уже парой проекторов владею и рынок изучал целенаправленно. Очевидно что подавляющее большинство так не делает.
                      • –2
                        Ну, допустим я не ориентируюсь и не владею ни одним. Но перед покупкой я, как нормальный индивид, с мозгом в голове, который хочет купить то что нужно, а не НЁХ чёрный ящик — хотя бы на я.маркете поинтересуюсь ценами, характеристиками и отзывами.
                        • +1
                          То есть для того, чтобы продать вам этот проектор, достаточно увеличить на него цену в два-три раза и купить десяток отзывов?
                          • 0
                            А ещё придётся приписать ему характеристики схожие с соседями. И, нет, десятком отзывов не обойдётся и придётся их оставить ещё и на других ресурсах.

                            Встречный вопрос — выбирая нечто вам незнакомое, если оно будет таким же, как аналогичные товары той же функциональности, но точно так же вам не знакомые, вы не можете попасть в ловушку?
                            • 0
                              Человек разбирается в проекторах на уровне обывателя. О Native Resolution естественно знать не знает.

                              А ещё придётся приписать ему характеристики схожие с соседями.

                              О жонглировании характеристиками, собственно, в статье и пишется.
                              • 0
                                В статье сказано, что разрешение вообще не указано, кроме «поддержки».
                                Вот так выглядит список характеристик на сайте таких магазинов:

                                Поддержка разрешения: 1920х1080
                                Яркость 1000 Люмен
                                Контрастность 1000:1
                                Диагональ экрана 34~130 дюймов
                                Проекц. расстояние 1~4 м
                                Срок службы лампы 30 000 часов
                                Вход: USB-2шт, HDMI, AV, AUDIO, SD

                                Если начать выяснять важные для выбора параметры (а иначе, как его вообще делать?!), оно обязательно всплывёт у других приборов или в каком-либо обсуждении.
                • +2
                  Да такой бизнец сейчас тут и там. Видел «лендинг» продавцов GPS-маячков в машину, цена вроде не совсем заоблачная. Захожу на алик, проверить, что продают: выясняется, что в маячке нету GPS, только местоположение по вышкам с ужасной точностью. На «лендинге» просто откровенно врут про характеристики.
                  • –3
                    Я скажу немного «крамольную» вещь, но такие продавцы в какой-то мере даже помогают развитию покупателей.
                    • +5
                      Ваше утверждение не является правдой.
                      Развитие защиты всегда отстает от оружия. В любой сфере. Так что каким бы умным не был покупатель — найдется сетодика как его обмануть. Поэтому надо не покупателя улучшать(развитие это вообще отдельная тема за гранью данной ситуации), а мошенников гнобить.
                      • 0
                        Моё утверждение — абсолютная, совершеннейшая правда, просто по причине того, как оно написано.
                    • +1

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

                      • –1
                        «Плохая аналогия похожа на котёнка с дверцей».
                        Хирургическое вмешательство «слегка» необратимо (подсказка — «в какой-то мере»).

                        Речь идёт не об одном конкретном индивиде а о группах — «покупатели» и «продавцы» (пусть и не очень честные). Мало того, даже при наличии кристально честного продавца, найдутся «особо одарённые» покупатели, которые предъявят претензии по какому-либо поводу. Но речь не о том.

                        Вы так тупите самостоятельно или курсы какие проходили?
                        Читайте предложение целиком, не выкидывая слова. Да, я иногда забываю проставить запятые, но, был уверен, что их отсутствие не могло настолько серьёзно сказаться на сложности понимания.
                        • 0

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


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


                          Что ещё разжевать?

                          • +1
                            А может я просто анекдотов и прочих шуток-прибауток знаю больше?
                            Чем незнакомые люди заслужили другое отношение?

                            Дверца ваша, отнюдь не моя, не я же кривую аналогию привёл.

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

                            Дальше будем пререкаться или просто достанем и к линейке приложим?
  • +2
    Надеялся хотя бы на три светодиода — верхний, нижний, средний «ряд».
    • +1
      Нету в наличии контроллера, который бы вытянул Sync сигналы.
      • 0
        По-моему было бы достаточно стартовать по кадровому импульсу подсчет трех зон «среднее значение цвета на экране». t..t+1/3 — считаем средне для первого диода, t+1/3..t+2/3 — для второго, и остальное для третьего светодиода
        • +2
          Да мы просто кадровый импулсь не поймаем, если не имеем достаточной частоты. Вернее ловить его будем не стабильно.
          • +1
            Аппаратный детектор синхроимпульса добавить. Наверняка что-то есть типа LM1881, К174ХА11
      • +3

        Не понял, у вас контроллер тактируется десятками килогерц? Строчные синхроимпульсы всего 35кГц… любой современный контроллер уделывает их в лёгкую. Я как-то на тиньке программный 4-х канальный ШИМ делал на частоте в 48кГц, ещё половина свободного времени остаётся.
        В вашем случае всё ещё проще — кадровый импульс заводим на вход INT0 в обработчике — обнуление счетчика группы строк и настройка таймера(установка регистра сравнения на размер региона строк). Сам таймер работает в режиме CTC — обнуление по регистру сравнения.
        Строчный синхроимпульс подаётся на счетный вход таймера! Всё…
        Настраиваем таймер на сравнение с числом 16, например, и каждые 16 строк у нас выдаётся прерывание и на его обработчик у нас есть время как минимум 16 строк — просто вагон времени. В это же время, работает ваш изначальный алгоритм сбора статистики, только теперь результат ложится не в общую копилку, а согласно насчитанному номеру группы строк… В конце(на самом деле по прерыванию от кадрового импульса) имеем статистику по разным регионам картинки.

        • 0
          Ваша квалификация несоизмеримо выше моей. Я так пока не смогу.
  • +1
    По-моему ваше решение с амбилайтом достойно отдельной статьи, да и про прикуриватель стало интересно и не понятно :)
    • +3
      Про прикуриватель я не буду повторяться — в гугле миллион уже людей рассказало как делать из прикуривателя паяльник. Ищите по запросу «ИК паяльник из прикуривателя».
      Пожалуй единственное отличие моего — то что я не стал лепить мощный БП на 12 вольт, а просто взял аккум. Я выпаиваю не часто, поэтому просто достаю аккум из машины в этом случае.

      По поводу отдельной статьи про абмилайт… Мне он просто не нужен. :) То есть чтобы сделать абмилайт — надо купить свтододиодные управляемые ленты, они дни стоят порядка 50 долларов за комплект. Можно было бы взять… Но я сделаю амбилайт и положу его на полку, потому что мне его негде использовать. Как-то жаба душит тратить 50 долларов на то, чтобы написать статью.
      В принципе, если кому-то интересно, могу сделать амбилайт на заказ бесплатно с оплатой только материалов(светодиодная лента и БП к ней) и тогда могу написать статью по мотивам.
      • 0
        Я бы согласился с вашим предложением, но я из Украины, и у нас будут сложности с логистикой. :(
        • 0
          Не будет. Недавно покупал в Киеве конструктор для сборки часов на лампах ИН-14. И не взирая на то, что продавец ошибся в имени дошло быстро и без проблем.
          P.S. В крайнем случае есть лайфхак — заказать на AliExpress нужные компоненты сразу на адрес AllexIn.
          • 0
            Еще есть не нулевой риск что я могу налажать.
            Правда светодиодную ленту сжечь — это надо постараться. Но не справится вполне могу. Тем более в комментах уже указали на ряд моих ошибок в оценках этого проекта.
            • 0
              Не ошибается, кто ничего не делает. И Элоном Маском не рождаются:)
              А если серьёзно, то u010602 переживал из-за логистики. Два варианта я ему предложил, теперь его ход…
          • 0
            Не сильно понял я суть вашего совета. У меня у многих знакомых есть родственники в РФ, проблемы и с посылками и с денежными переводами. Люди ищут разные лазейки, что-бы это делать. Тем более что транспортное сообщение ухудшается с каждым месяцем, пока проект будет готов, может многое изменится. Все это кажется чрезмерной сложностью лично для меня.
        • 0
          Я не воспринимаю ваше предложение как конечное. Никаких планов на сей счет не строю. Если у вас есть желание в это вписаться — велкам в личку. Если нет — никаких претензий нет и быть не может.
          Это так, на всякий случай. А то бывает люди не хотят вписываться(нет денег, желания, etc), но стесняются отказаться.
      • 0

        Я давно хочу абмилайт на телевизор. У меня даже лежит какой-то. Но меня не устраивает ПК как источник контента. Поэтому у меня tv-приставка. Подключение по hdmi.
        Возможно ли что-то сделать?

        • 0
          Да. Можно сделать такой же вариант с hdmi, только тут уже не обойтись дешевым МК.
          Сигнал полностью цифровой. Соответственно его нужно полноценно прочитать, а не урывками как прокатывает с аналоговым. Нужен контроллер, который сможет переварить 20 ГБ/с данных. Я на практике такое не делал. Плюс возможно на таких частотах начнутся проблемы с разведенными дорожками, т.к. я плохо знаком с теорией и не умею разводить платы такого уровня.
          • +4

            Реализовал у себя нечто подобное на основе hdmi2av конвертера и usb tv-тюнера. Обработкой данных и выводом на ленту занимается RPi.

          • +1

            На самом деле там МК делать нечего, поток обрабатывать должна ПЛИС, причем ещё и не рядовая — с дифференциальными входами и выходами(она ведь ещё и ретранслировать сигнал должна).
            На самом деле, с ПЛИС алгоритм становится даже проще, если вообще понять концепцию ПЛИС. Да вобщем-то чип не самый дорогой нужен, порядка 10-20$$.

            • 0
              Зачем ретранслировать?
            • 0
              Кстати, а какой ПЛИС на ваш взгляд сгодится для чтения hdmi?
              • 0

                Нам же в общем случае незачем занимать целый HDMI-порт, который используется для вывода изображения впустую. Сигнал надо передать дальше, на телевизор. А сделать простой "отвод" для высокоскоростных дифференциальных линий не выйдет, начнутся все мыслимые эффекты несогласованных длинных линий. Поэтому проще ретраслировать силами самой ПЛИС, благо это сделать очень просто — пара строчек в "программе" и несколько задействованных макро-ячеек из тысяч.
                Сам я ПЛИС под такие задачи не подбирал, но если посмотреть на монстра XILINX SPARTAN 6 стоимостью порядка 100$ и явно избыточного для такой задачи, а с другой стороны переходники на основе ПЛИС+ASIC с DVI(примерно одинаковый уровень быстродействия и схожие сигналы) на LVDS(ЖК матрица) стоимостью 10...20$ то можно ожидать стоимость необходимой ПЛИС в районе 20$.
                По быстродействию, ПЛИС нужна с рабочими частотами 300...400Мгц а потом в процессе реализации посмотреть пойдёт ли конкретный чип, может оказаться так что из-за сложности синтезированной конфигурации быстродействие схемы снизится. Поэтому сразу и однозначно сказать нельзя — общее быстродействие будет зависеть ещё и от реализации "прошивки".
                Да, ещё один немаловажный ньюанс — по HDMI могут передаваться данные с шифрованием, поэтому не всегда можно будет перехватить поток в нужном виде…

    • 0
      в ютюбе поищи по фразе «ик из прикуривателя». Там видео об этом валом.
    • +1
      Если интересует установка аналога амбилайта, есть проект lightpack, они продают комплекты для компьютера или для телевизора. Но это к тому же это проект с открытой аппаратной и программной частями, можно его не покупать, а собрать самому, что ближе духу статьи.
  • +1
    У них на сайте написано «ОЩУТИТЕ БУРЮ ЭМОЦИЙ».

    С этим-то не обманули получается?
    • +4
      Ну, при пригорании стула вы тоже испытываете бурю эмоций. Так что получается, не обманули. :)
  • 0
    Самое смешное, что сделать проектор с поддержкой Full HD за 200 рублей вероятно действительно возможно — из телевизора или монитора. Он будет представлять собой картонную коробку, выкрашенную изнутри в черный цвет, плотно одеваемую на перевёрнутый Full HD монитор, с дешевым б/у объективом от старого диапроектора. И с таким проектором вероятно можно смотреть фильмы в Full HD-качестве на экране с диагональю 4 метра — но только в тёмной комнате. Про яркость изображения ничего же не сказано.
    • +4
      Старые детали же не бесплатные все равно.
      • –5
        Но монитор же уже имеется, и его можно использовать и по прямому назначению — так что он в некотором смысле бесплатен.
        • +4
          Всё уже придумано до нас. :)
        • –1
          Не совсем точно выразился — бесплатен не монитор, а его использование. Но, подобно тому как и HTC Valve Vive за $1370, и Nomi VR Box за $10 — это очки виртуальной реальности, — и DLP-проектор и коробка для смартфона с линзой — проекторы. А старые детали, да, не бесплатные — объектив от диапроектора Этюд-2 на olx.ua можно курить за 60грн (128рублей), 72 рубля ещё останется на картон, клей и краску.
  • 0
    А возможно за эти 200р сделать не проектор, а декодер с выходом на RCA (тюльпаны), чтобы подключить vga выход к обычному ТВ? Цены на такие устройства заметно выше, потому стало интересно.
    • 0
      Полагаю что да. Взять только контроллер, который сможет вытянуть это дело. Полагаю stm32 справится. Но я с ним еще на практике не знаком, только жду когда приедет, чтобы опробовать.
      Но вообще HDMI->AV стоит порядка 400 рублей на али.
      • +1
        STM не справится. Как мне верно напомнил KivApple — АЦП слишком медленный для таких задач.
    • 0
      да вроде не так уж и выше
      https://www.aliexpress.com/item/New-PC-Laptop-Composite-VGA-to-AV-RCA-TV-Monitor-S-video-Signal-Adapter-Converter-Switch/32767470608.html
  • 0
    Господа, на волне темы о маркетолообманологах:
    сравнил Huawei Mate 9 и LG G Pro 2 (D838)
    у обоих в характеристиках указан экран 5.9"
    однако по факту изображение у Huawei меньше, где подвох?
    Может это размер дисплейного модуля а не изображения?
    • 0
      Это надо понимать как «размер экрана без рамки» и «размер видимой области», видимо хуавеевцы указывают физический размер всего экрана (с рамкой).
  • +3
    Не в качестве рекламы, а просто в тему http://diyprojector.info/
    • 0
      Шикарная ссылка. Спасибо!
      • +1
        Все спасибы заносите туда, на форум, например, я совершенно ни при чём!
  • 0

    Они продают проектора типа Unic uc40?

    • 0
      Я навскидку не скажу какие продают. Когда с ними столкнулся — нашел модель, но это было несколько месяцев назад — я точно не помню что это было.
  • 0
    Можно было попробовать разогнать атмегу до 25 мегагерц, до 20 точно гонится, где-то видел обзор.
    • +1
      Мне кажется это лишний геморрой. Проще сразу мощный контроллер взять. Тем более что 25 мегагерц — это впритык чтобы 640х480 обработать.
      Меня малость раззадорили комментарии… Так что попробую HDMI сигнал разобрать на stm32. Как раз в планах с этим контроллером разобраться.
      • 0
        А вы в 25-мегагерцах учитываете, что совсем не обязательно на обработку одного значения будет уходить 1 такт? Точнее даже наоборот — готов поспорить, что будет уходить больше, даже если прошивку переписать на ассемблере.

        Ещё вы используете АЦП. Насколько я помню, для atmega максимальная частота считывания АЦП — 15 кГц (при условии, что активен только один канал), при этом при использовании ардуиновских обёрток скорость ещё ниже. Для stm32f103 — 1 МГц, для stm32f407 — 2.4 МГц (вроде можно как-то заставить работать вместе все 3 модуля АЦП данного чипа и получить 7.2 МГц). Так что единственным адекватным вариантом для VGA мне видится использование внешнего высокоскоростного АЦП.

        Про HDMI: 1920 * 1080 * 60 * 3 (3 байта на пиксель, у нас же True Color) это 370 мегабайт/сек. А теперь учтите, что тупо копировать данные со входа на выход смысла мало (зачем тогда вообще ваше устройство нужно), надо с ними делать хоть минимальные действия (типа подсчёта среднего). Так что закладывайте десятки тактов на пиксель, а не единицы (тем более если вы не знакомы с ассемблером). В общем, туго с этим у микроконтроллеров.

        Тут подойдёт разве что ПЛИС (они не такие уж сложные и дорогие).
        • –1
          А зачем копировать данные в полном объеме, можно же просто сесть на те-же линии без разрыва.
          Если я понимаю правильно саму подсветку, то анализировать нужно только боковые полосы, по 10% от общего размера. Да и каждый пиксель не нужно анализировать, можно брать каждый 4ый, при фулл шд там все равно примерно одно и то-же.
        • –1
          Вы совершенно правы! Самое смешное, что большую часто того, что вы написали — я знаю. Но при расчете для VGA просто не применил почему-то.

          По поводу HDMI — читать/передавать — дорого.
          Поэтому делать надо снифер. Писать естественно на асме.
          Предполагаю в таком виде:
          Один кадр только считываем в лоб все данные, пиксели сохраняем только каждый пятый в пятой линии. В итоге буффер получается разрешением 384х216. Что при 24 битном цвете даст нам немного более 200 килобайт данных.
          Одна строка занимает чуть больше килобайта. В идеале добиться ситуации, когда мы строку сохраняем в кэш, потом следующие 4 строки лэш сбрасывается в оперативку.
          Когда кадр дочитали — считаем подсветку, зажигаем всё что нужно. Скорее всего это означает один или несколько кадров пропуска. ТО есть мы будем обрабатывать не каждый кадр, а например, каждый третий.

          По идее stm32 h7 должен вытянуть. Хоть и впритык.
          • 0
            Вот только я не могу найти в продаже stm32h743…
  • 0
    Ардуино там лишнее. Можно сделать на одних ОУ.
    • 0
      Не ардуино тогда уж, а вообще МК.
      Но как вы на ОУ сделаете передачу данных по uart?
      • 0
        Так для DDC просто последовательную ПЗУшку поставить, так же, как в мониторе сделано.
        • 0
          Речь не про DDC. Во втором случае его вообще нет.
          Речь про контроль светодиода. Во втором случае действительно можно сделать всё без МК, но только для мигания светодиодом. Если планируется что-то чуть более серьезное — все равно придется к МК/ПЛИС/etc придти.
          Я поэтому и не стал даже вариант такой рассматривать.
          • 0
            Речь идет, я полагаю, о текущей реализации, описанной в статье — усреднение всего экрана по трем цветам и выдача результата на три светодиода (красный, синий, зеленый). С этим справятся и ОУ и, как ниже написали, даже просто транзисторы :)
            • 0
              Текущая реализация — это база, с которой можно работать и развивать. Proof of concept.
              Вариант с ОУ и транзисторами — тупиковый.
              • –1
                На атмеге Вы тоже не много сможете развить :)
                • 0
                  Ничего не мешает заменить его на другой МК, более мощный.
                  При этом структура платы не не изменится, принципы не изменятся.
                  Схема на ОУ или транзисторах — целиком на выброс.
                  • 0

                    Чтобы посчитать среднее значения яркости 1920 * 1080 = 2 073 600 точек за 20 мс, нужен очень хороший контроллер. Или простенький интегратор на ОУ.

                    • 0
                      НАрисуйте мне «простенький» интегратор на ОУ для расчета средней яркости по 25 пикселей по всем 4 краям экрана.
                      Я лично такую задачу не могу решить. Будет интересно посмотреть на ваше решение.
                      • 0

                        Каюсь, невнимательно читал принцип действия гаджета. Решил, что нужна средняя яркость по всему экрану.
                        Придется добавить генераторы кадровых и строчных синхроимпульсов (555) и коммутатор. Хотя они в любом случае нужны.
                        Тут еще такое дело… Точность, которую будет обеспечивать правильное чисто цифровое решение, вряд ли нужна.

            • 0

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

              • 0
                Думаю, что искажения, которые будут вносить эти синхроимпульсы, очень мало повлияют на общую картину :)
    • +1

      Да что уж там. Усреднить и усилить (для питания одного RGB-диода) уровни RGB можно и на трех транзисторах, по одному на канал...

  • +2
    Спасибо за наводку на ИК-паяльник. Сам почему-то никогда не думал, что прикуриватель сгодится на эту роль.
  • 0
    Где прочитать подробнее про P.S.?
    • +1
      В гугле по запросу «ИК паяльник из прикуривателя».
      Впрочем на фотографии всё уже и так видно. Берете спираль прикуривателя и подрубаете к источнику 12 вольт, ампер на 15 минимум. Конец.
  • +1
    За 7-10 т. р. вполне реально собрать fullHD проектор самому. Для этого понадобится 6' LCD экран и HDMI->MIPI плата к нему. Мы использовали такие в своём проекте VR шлема VRD.
    Читал, что убирают заднюю стенку с экрана и ставят мощную лампу + линза.
    Кому интересно и хочет попробовать, пишите в группу. Если наберётся до 10 желающих, то думаю, сможем поставить экраны с платами.
    • 0
      Повыше проскакивала ссылка от Ezhyg
      http://diyprojector.info/
    • 0
      А чего используются такие… не самые распространённые диагонали экранов? Ладно 5-5,5" — не проблема ваще, 7 — тоже легко, а 6 это и уже не телефонное, и ещё не планшетное.
      • +1
        Экран от смартфона достать не проблема — проблема завести на него HDMI сигнал поскольку у каждого экрана свой разъём и распиновка, а интерфейс MIPI (LVDS для мобильных экранов не встречал). И как оказалось, самые доступные экраны, на которые удалось найти документацию и к которым удалось сделать такую плату оказались 6'.
        • 0
          Ах вон оно что, не дотумкал.
        • 0
          Разве имеет смысл использовать мелкие экраны? Большой экран, конечно, увеличит стоимость линзы, но при этом даст более качественную картинку. верно?
    • 0

      Не думаю, что от такого проектора будет какой-то практический смысл.


      • большую яркость на большом экране сделать сложно
      • равномерную подсветку при большой яркости сделать сложно
      • отсутствие искажений на периферии сделать сложно
      • габариты, охлаждение

      Если уж нужен именно проектор для большого экрана, проще его купить (причем часто 720p дает вполне сносный результат, на фильмах 1080p не сильно хуже полноценных 1080p). От самодельных решений будут слезы. А если достаточно диагонали 20-40" — так любой современный FHD телик уделает по качеству изображения и покупной, и тем более самодельный проектор...


      А если хочется собрать что-то свое и\или нестандартное, есть разборные экраны c HDMI, разных размеров, пара дней с Компела или пара недель с Али:


      http://www.waveshare.com/wiki/7inch_HDMI_LCD_%28C%29
      http://www.compel.ru/?s=HDMI+LCD

      • +1
        Не знаю как на проекторах, но на обычном ТВ и в очках VR разница между изображением 1080p качества и 720p ощущается сильно.
        Мы использовали такие экраны в своём проекте:

        image
        • 0
          На проекторах разница тоже сильно ощущается. Сейчас с FullHD проектора уходить на HD Ready не хочется совсем.
  • 0

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

    • 0
      Цена складывается. Во первых лампа весьма дорогой элемент. Во вторых матрица с маленькой диагональю, но большим разрешением, так же дорога. Ну и оптика с моторизированным приводом.
  • 0
    а я думал сначала, что по мотивам проекторов из жк матрицы от убитого монитора+чего-нибудь типа старого проектора для слайдов :)
    как бэ тоже бюджетненькое решение было :)
  • 0
    Автору за статью и оригинальность — зачёт!
    Ну а с вопросом применимости МК при улучшении/расширении сферы применения — в калькулятор.
    Набросок программы и затрат в в тактах очень просто решаемы.
    Хотя для таких задач лучше обработку делать на FPGA и на МК уже только заниматься управлением периферией.
    Бюджет даже для VGA окажется побольше, но комфорт от подсветки наверное того стоит ;).

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