Контакты

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (7)
  • Как подключить HDMI к stm32?

    @Catethysis
    Как подключить схемотехникчески? Проводами, я думаю.

    Вы задачу нормально опишите, что нужно получать, как обрабатывать. Думается мне, что даже если завести сигнал HDMI в STM32 - ну, сигнал разрешением 320*240 у вас может быть и получится принять, но на даже самую слабую обработку ресурсов не хватит. Налицо неверный выбор инструмента и/или задачи. По вашему вопросу непохоже что у вас получится каким-то образом решить все задачи ввода и обработки. Тем более ещё тег Ардуино, ну постеснялись бы уж, право слово :)

    Окей, я закончил плеваться ядом. Теперь по сути. Очевидно что это только ПЛИС и ничего больше.
    Во-первых, ввод сигнала. Как известно, в HDMI применяется LVDS сигнал, чтобы из него получить TTL-уровни, вам потребуется приёмник LVDS. Более того, стандарт последовательный и высокоскоростной, значит потребуется как-то распараллелить обработку. Всё это делают специальные микросхемы-десериализаторы, первое что приходит в голову - микросхема TMDS341. У максимки тоже есть несколько таких микросхем, например MAX9264. Из них выходит достаточно удобный интерфейс: от 18 до 24 бит цвета плюс несколько клоков (пиксельный клок и вертикальная/горизонтальная синхронизация). Это уже можно напрямую втыкать в ПЛИС, но кстати можно найти и ПЛИС с LVDS-входами, правда это выйдет дороже в сумме. Если нужно после обработки снова сделать HDMI - берёте похожую микросхему-сериализатор, вроде MAX9263.

    Как раз похожая задача, приём видео с HDMI и выделение в нём цветов на границах картинки для создания Ambilight: tqfp.org/Perfer/fonovaya-podsvetka-hdmi-fpga-led-c... Похоже, проект ещё не закончен, но думаю что с этого можно начать.

    Во-вторых, обработка. Честно, не знаю что сказать. Если вам нужно как-то по локти ковыряться в принятом видео, типа сжимать его или что-нибудь там распознавать - бросьте это всё, и возьмите просто компьютер с платой видеоввода. Вручную вы это всё не сделаете.
    В принципе, можно поискать компьютеры-на-плате вроде https://www.toradex.com/ru/products/colibri-arm-co... но вам потребуется как-то запихнуть в неё этот сигнал (понятно что не через GPIO, так как требуется прямой доступ к шине памяти), и написать драйвер для обработки этого дела.
    Кажется, на выставках я видел подобный комп с входом HDMI, но надо понимать что это крайне невостребованная фича, и найти такое будет огромной удачей.
    Если же вам нужно, к примеру, просто наложить на видео текст (это называется OSD, on-screen display), то в принципе всё решается прям внутри ПЛИС - вы закрашиваете в нужный момент пиксель белым цветом, и всё. Это чуть ли не единственная задача в железной обработке видео, которая решается более-менее просто.

    Готовых схем не найдёте, слишком уж специфичная задача. Инженеры, самостоятельно сделавшие такое, предпочтут продавать это решение, чем делиться им.

    Ну и всегда остаётся простой путь, сконвертировать hdmi в композит/компонент, а их уже легче ввести в любой компьютер или компьютерный модуль.
    Ответ написан
  • Как нужно изменить схему управления лампой через Arduino, чтобы транзистор открывался?

    @Catethysis
    IRFZ44N — хороший транзистор, но может быть ему недостаточно вашего напряжения, а 3.3 вольта уж точно мало. Возьмите какой-нибудь из серии IRL, я раньше часто использовал IRL2703 или IRL2705.
    Не забывайте смотреть на график №3 в даташитах, да и вообще на сам даташит.

    У вас сейчас много точек отказа, их нужно по отдельности проверить. Попробуйте включить/выключить транзистор сами, подавая на затвор 0 или 10 вольт. Затвор при этом должен быть замкнут на землю через резистор больше 10кОм, чтобы накопленный заряд рассасывался.
    Проверить транзистор нужно обязательно, потому что они довольно чувствительны к статике, и обижаются когда их трогают мокрыми руками.

    Я не использую ардуино (более того, я ардуинохейтер), но "тривиальная смена analogWrite(pinNumber, HIGH) и analogWrite(pinNumber, LOW) с частотой в 1000 мс" — разве это правильно? По-моему, в этом варианте нужно использовать digitalWrite.

    Дурацкая какая-то схема, что значит "0-60V+" и "0-60V-"? Это явно от недомыслия автора схемы. Вы не могли из-за этого случайно перепутать + и -?

    P.S. почитал сайт ergoz.ru, это просто насилие над мозгом. Нельзя обучаться по таким руководствам, разве что если себя не уважать, весь текст — дословный перевод с английского:
    * изобретение самодельных терминов, например "стягивающий резистор" или "ворота";
    * сплошные кальки с английского (например, "Arduino действительно пульсирует от 0 до 5V");
    * неверные объяснения процессов. "обязательно убедитесь, что подключаете диод правильно <...> иначе толку от него будет ноль, и может сделать даже хуже." Человек вообще не понимает о чём пишет.

    Найдите нормальный обучающий сайт, а лучше выбросьте эту ардуину в мусорное ведро.
    Ответ написан
  • Как создать NFC метку используя Arduino Nano?

    @Catethysis
    Слушайте, оно вам реально надо именно в таком виде? Ни в коем случае не хочу вас обидеть, но создание собственной nfc-метки на низком уровне - непростая задача, и я честно говоря не уверен что вы её решите.
    Сделайте гораздо проще - возьмите готовое решение от ST: www.st.com/web/en/catalog/mmc/FM76/CL1766/SC1412/SS851 они даже называются "dynamic RFID tags". Суть проста, эта микросхема - обычная EEPROM с I2C-интерфейсом, только у неё ещё есть выход на антенну. Получается, с этой микрой памяти можно общаться как по I2C, так и по RFID. Всё что остаётся сделать - записать в неё ардуиной нужные данные по I2C, и они станут доступны по RFID (и наоборот тоже).
    Ответ написан
  • Как реализоать экономный delay на микроконтроллере?

    @Catethysis
    Полностью согласен с @Gereykhanov, только на таймерах.
    Берём таймер TIM6 (самый простой таймер с базовыми функциями - чтобы более крутые таймеры оставить свободными), настраиваем его:

    // Включаем тактирование таймера
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); 
    
    // Настраиваем прескалер. При тактовой частоте 24МГц частота
    // таймера будет равна 24МГц/24000 = 1кГц
    TIM6->PSC = 24000;
    
    // Настраиваем период таймера = 1000 циклов - полный цикл таймера
    // будет равен 1/1кГц*1000 = 1 секунда.
    TIM6->ARR = 1000;
    
    // Разрешаем прерывание по окончанию счёта
    TIM6->DIER |= TIM_DIER_UIE;  
    
    // Включаем обработку всех прерываний от таймера TIM6
    NVIC_EnableIRQ(TIM6_DAC_IRQn);
    
    // Включаем таймер
    TIM6->CR1 |= TIM_CR1_CEN;

    после срабатывания таймера будет вызван обработчик прерывания
    void TIM6_DAC_IRQHandler(void)
    {
      if (TIM6->SR & TIM_SR_UIF) {
        // Сбрасываем флаг прерывания
        TIM6->SR &= ~TIM_SR_UIF;
    
        /* ваш код после задержки*/
      }
    }


    Это не функция delay(100), это скорее демонстрация асинхронного алгоритма - но нужно понимать, что в сложных программах, особенно связанных с передачей и приёмом данных снаружи, практически всё нужно делать на прерываниях.
    Во время работы таймера процессор полностью свободен, и может рассчитывать какую-то математику или обслуживать другие прерывания.
    Довольно часто в моих программах для STM32 void main выглядит просто как while(1) {}, а вся логика работы находится именно в прерываниях. Кстати, здесь уже рукой подать до конечных автоматов.
    Ответ написан
  • Как создать метеоcтанцию дома?

    @Catethysis
    К примеру, я сделал свою погодную станцию - catethysis.ru/home-meteostation-stm32 - там три статьи по этой теме.
    Мозг системы - STM32, датчики - DS18B20, BMP180 и DHT22, сервер - Node.js. Радиопередачу пока не сделал. По сути, вам достаточно купить плату STM32VLDiscovery и прошить туда этот код. Могу выложить прям весь проект, если нужно. Это, конечно, не ардуино по простоте - но на самом деле тоже не сильно сложно.
    Я уверен что не стоит завязываться на Bluetooth, в своём варианте я уже почти сделал отправку Push на андроид-телефон просто по Wi-Fi. Все показания хранит и складирует сервер, и я думаю что Wi-Fi гораздо удобнее чем Bluetooth.
    Сейчас сделана простенькая страница отображения погоды, с графиками на Flot.js: thermo.catethysis.ru
    Ответ написан