Выводим изображение рабочего стола Windows на внешний дисплей с помощью микроконтроллера stm32 USBFS

Выводим изображение рабочего стола Windows на внешний дисплей с помощью микроконтроллера. USB CDC Virtual COM Port, кодер и декодер jpeg. Клонирование изображения рабочего стола Windows на дисплее, подключенном к микроконтроллеру. Виртуальный COM порт. JPEG кодирование и декодирование. Проект демонстрирует работу с виртуальным COM портом. Воспроизведение потокового видео (motion jpeg). Сервер (компьютер) постоянно делает скриншоты рабочего стола, кодирует их в jpeg и передает клиенту (микроконтроллеру) через USB (виртуальный COM порт). Микроконтроллер декодирует изображение и отображает его на дисплее. Что потребуется: Отладочная плата на базе stm32 - blackpill stm32f401ccu6 Дисплей - st7789 или ili9341 (и совместимые с ними. Проект собран для дисплея st7789!). Как использовать: 1. Подключите дисплей к отладочной плате согласно таблице подключений: LCD_DC PA2 LCD_RES PA3 LCD_CS PA4 LCD_SCL PA5 LCD_BLK PA6 LCD_SDA PA7 2. Подключите прошитую плату микроконтроллера к USB разъему компьютера (папка Release, файл для прошивки Внимание. Прошивка для дисплея ST7789. При использовании дисплея ILI9341 необходимо пересобрать проект, указав требуемые параметры дисплея при вызове функции LCD_DisplayAdd в main). 3. Запустите серверную программу из папки Terminal\Release\ (это проект для компьютера). 4. Выберите com-порт, к которому подключен микроконтроллер. Узнать требуемый COM порт можно из диспетчера устройств. Он будет подписан, как “Устройство с последовательным интерфейсом USB (COM номер такой-то)“ в разделе “Порты (COM и LPT)“. Если все сделано правильно, то на дисплее, подключенном к микроконтроллеру, вы увидите копию того же изображения, что можете наблюдать на мониторе компьютера. Автор: @VadRov Исходный код проекта: Кодер jpeg: jpeg-compressor Public Domain or Apache 2.0, Richard Geldreich richgel99@ #stm32 #программирование #jpeg 00:00 Приветствие и поздравление с Рождеством. 00:24 Что будет использоваться в проекте. 00:43 Привет “пацанам“ из комментариев про крючок (из обзора ЭБУ). 😉 01:08 Про желание удивить зрителей. Зрители YouTube (и не только) любят “шоу“. 01:40 Что будет реализовано в этом проекте “выходного дня“. 02:30 STM32CubeIDE. Про настройку подключения дисплея (настройка spi и управляющих выходов gpio). 04:43 Про индикацию приема/передачи данных по USB. 05:06 Про настройку USB. Класс CDC (Virtual Port Com). 06:44 Про приоритеты прерываний. 07:20 Настройка тактирования ядра и периферии. Условие работы USB. 09:12 Настройка проекта. Библиотеки для настройки и работы с периферией. Ограничения драйвера USB Device от STM. 11:29 Обработчики прерываний: systick, dma, usb. 12:48 Объявление и инициализация глобальных переменных, в том числе, буфера для приема данных. Подключаемые к проекту библиотеки. 17:01 Организация приема данных по USB в режиме двойного буфера. Обработчик CDC_Receive_FS. Пакетный прием. Признаки последнего пакета данных для текущей передачи (сообщения). 24:23 О возможностях разгона ядра м/к stm32f401ccu6. Программная реализация. Ограничения в случае использования USB Device. 26:01 Формирование сообщения от клиента серверу о разрешении дисплея, подключенного к м/к, и максимальном размере файла. 30:50 Прием, декодирование и вывод на дисплей изображений, полученных от сервера. Переключение двойного буфера. Разрешение на прием нового пакета данных. 35:50 Микроконтроллер “не управляется по проводкам“... 😉 38:06 Visual Studio 2022. Программа для сервера (компьютера). Почему кодируем изображение в jpeg, а не передаем простым потоком “как есть“. 41:21 Скриншоты с использованием GDI, масштабирование и кодирование изображений в jpeg. 41:44 Интерпретация сервером сообщения, полученного от клиента, с настройками jpeg кодирования. Регулярные выражения. “Внутренние стандарты“ проекта: формат, разрешение и размер файла. 45:56 Кодер jpeg. Спасибо его автору. 48:29 “Бесконечный цикл“ сервера. Подстройка сервером качества кодирования jpeg в целях не превышения максимального размера файла. Минимальное качество кодирования. Последствия для клиента при превышении сервером максимального размера файла. 51:44 Подключение микроконтроллера к компьютеру. Обнаружение операционной системой устройства с последовательным интерфейсом. Просмотр диспетчера устройств. Запуск серверной программы и выбор порта, к которому подключен микроконтроллер. 54:13 Вывод на дисплей уменьшенной копии рабочего стола. Демонстрация работы.
Back to Top