Выводим изображение рабочего стола 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)“.
Если все сделано правильно, то на дисплее, подключенном к микроконтроллеру, вы увидите копию того же изображения, что можете наблюдать на мониторе компьютера.
Таймкоды:
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 Вывод на дисплей уменьшенной копии рабочего стола. Демонстрация работы.
Автор:
@VadRov
Исходный код проекта:
Кодер jpeg:
jpeg-compressor
Public Domain or Apache 2.0, Richard Geldreich richgel99@
#stm32
#программирование
#jpeg
3 views
584
141
1 month ago 00:16:28 1
Эти Фотографии Доказывают, Что Путешествие Во Времени Реально!
1 month ago 00:23:11 1
Что и как рисовать в ИНКТОБЕР | how to draw INKTOBER cool
1 month ago 00:00:55 1
😠 О́ДИН пытался покорить ВАЛЬГАЛЛУ и ВСЕХ ВАЛЬКИРИЙ 🔥God of War Ragnarök: Valhalla