No Image

Что можно сделать из цифровой фоторамки

СОДЕРЖАНИЕ
1 просмотров
10 марта 2020

Способы реализации

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

Таким образом, при условии, что разбирать рамку нельзя, остается только использовать ее интерфейсы внешней памяти — SPI (для работы с SD Card) и USB. Достаточно сделать устройство, имитирующее внешний накопитель, подключить его к рамке — и она сама будет запрашивать с такого устройства изображения. При помощи микроконтроллера эмулировать SD карту достаточно сложно, да и форм-фактор самой карты довольно сложно повторить. Можно было бы использовать готовую WiFi SD карту, но все такие карты, про которые я знаю, имели слишком высокую цену (>40$, что близко к стоимости самой рамки).
Использование USB для решения такой задачи подходит больше — не проблема найти производительный микроконтроллер с поддержкой USB; подключение к рамке осуществляется стандартным разъемом. Более того, на Хабре уже была публикация, посвященная эмуляции USB диска при помощи микроконтроллера stm32. В комментариях к этой статье обсуждалась возможность передачи динамически изменяемых данных таким методом. Из-за кеширования операционной системой данных при считывании файла нет смысла менять содержимое эмулируемых файлов — ОС просто не будет их запрашивать, так как не сможет узнать, что они изменились. Однако фоторамки не кешируют файлы (в них просто нет нужного объема ОЗУ)! Проверить это можно, подключив к фоторамке любую USB флешку, со светодиодом, мигающим при чтении файлов — он будет мигать постоянно при считывании файлов. Поэтому я решил использовать именно этот способ.

Программная часть

268Мб. В реальности этого нет, что и вызывает ошибки при определении типа файловой системы. Попытка увеличить объем диска, увеличив объем эмулируемого файла до 400 МБ не сработала — возможно, там еще что-то не сходилось. Поэтому я решил переделать «emfat» для эмуляции файловой системы FAT16.
В конечном счете это удалось, и накопитель начал корректно обнаруживаться всеми устройствами:

Стоит отметить, что у FAT16 тоже есть ограничение на размер диска — не менее 4087 кластеров, то есть 16 МБ в данном случае. Для выполнения этого условия приходится создать в «emfat» виртуальный файл на 20 Мб.

Проверка с фоторамкой прошла нормально — рамка успешно отображала тестовое изображение, хранящееся в Flash памяти контроллера. Следующий этап — вывод пользовательских изображений. Проще всего эмулировать BMP файлы — у них довольно простая структура, изображение может быть 256-цветным, т.е. на один пиксель приходится один байт. Вот только в таком случае для хранения картинки размером 800*600 понадобится 480 Кбайт ОЗУ. У микроконтроллера такого объема памяти нет, а значит остается один вариант — формировать изображение «на лету». Принцип работы следующий — в том случае, когда устройство-хост запрашивает с накопителя данные из файла, «emfat» вызывает callback-функцию, соответствующую этому файлу. В эту функцию передаются номер сектора, из которого запрашиваются данные, и указатель, по которому эти данные нужно записать. Зная номер сектора, можно определить, какой участок изображения запрошен и сформировать его.
В процессе экспериментов обнаружился неприятный факт — Windows может запрашивать данные из секторов не по порядку их следования. Почему так сделано — непонятно, но это усложняет формирование изображения на лету, так как приходится но номеру сектора вычислять — какой участок данных запрашивается в данный момент. Еще одна проблема — строки в BMP файлах идут снизу вверх, что еще больше запутывает расчет позиции.
Для отображения текста я использовал библиотеку mcufont. Она удобна тем, что позволяет использовать сжатые шрифты, за счет чего заметно сокращается использование Flash памяти. Так как я использовал достаточно крупные шрифты, то эта возможность является довольно важной.
Эта библиотека напрямую записывает сформированное изображение в память, так что для работы библиотеки приходится выделять отдельный массив в ОЗУ.
Также я реализовал отрисовку изображений из памяти контроллера. Все изображения, как и текст, выводятся в черно-белом виде, за счет чего в одном байте изображения можно хранить информацию о 8 пикселях. Для того, чтобы преобразовать обычные изображения в вид, пригодный для подключения к проекту, была использована программа LCD Assistant.

В результате на подключенном USB накопителе формируется изображение вот такого вида:

После того, как работа программы была проверена на STM32F4DISCOVERY, я сделал само устройство, которое представляет собой микроконтроллер с подключенным к нему WiFi модулем на ESP8266. Из подходящих у меня был только контроллер STM32F107RCT7.
Схема получившегося устройства вышла довольно простая:

А вот из-за ограничений на размер платы — 17×36мм (я планировал установить ее в готовый корпус) и большого размера контроллера печатная плата вышла не самая простая в изготовлении — двухсторонняя, с монтажом деталей с двух сторон. При этом некоторые линии питания пришлось сделать проводом.
Вид получившейся платы (в процессе отладки вместе с модулем ESP-01):

При указанных размерах платы наиболее подходящим был WiFi модуль ESP-03. Вот так выглядит получившаяся плата с уже установленным модулем:

И со стороны контроллера:

Читайте также:  Как запустить гта 5 через social club

В процессе экспериментов оказалось, что чувствительности керамической антенны явно не хватает — модуль с трудом подключался к роутеру. После подключения к выводу WIFI_ANT кусочка проволоки длиной 31 мм чувствительность заметно улучшилась, и стала сходной с чувствительностью ESP-01. Место, где фоторамка установлена постоянно, находится в нескольких метрах от роутера, и там нормально работает и родная антенна модуля, так что на фотографии дополнительной антенны нет.
Так как при постоянной работе ESP8266 довольно сильно нагревалась, я решил включать ее только во время запросов информации. Управление питанием можно производить, используя вывод CH_PD модуля. Перевод этого вывода в 0 приводит в переходу ESP8266 в режим пониженного потребления.
Для того, чтобы было удобнее тестировать работу ESP8266, я написал для микроконтроллера отдельную прошивку, реализующую мост USB-UART. Именно через нее ведется настройка модуля для работы с роутером, так что после включения ESP8266 автоматически подключается к нему.

Принцип работы получившегося устройства достаточно прост — каждые 10 минут контроллер пытается запросить данные с сервера, и если это удается, обновляет данные о погоде. Данные о текущей температуре и прогноз на 3 дня вперед берутся с сайта openweathermap.org, информация о температуре снаружи и внутри балкона — c сервера majordomo. В то же время фоторамка запрашивает изображение каждые 6 секунд, отображая при этом текущую информацию. Так как оба процесса могут происходить одновременно, то для приема данных от ESP8266 используется DMA.

В результате, на фоторамке отображается вот такое изображение:

Способы реализации

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

Таким образом, при условии, что разбирать рамку нельзя, остается только использовать ее интерфейсы внешней памяти — SPI (для работы с SD Card) и USB. Достаточно сделать устройство, имитирующее внешний накопитель, подключить его к рамке — и она сама будет запрашивать с такого устройства изображения. При помощи микроконтроллера эмулировать SD карту достаточно сложно, да и форм-фактор самой карты довольно сложно повторить. Можно было бы использовать готовую WiFi SD карту, но все такие карты, про которые я знаю, имели слишком высокую цену (>40$, что близко к стоимости самой рамки).
Использование USB для решения такой задачи подходит больше — не проблема найти производительный микроконтроллер с поддержкой USB; подключение к рамке осуществляется стандартным разъемом. Более того, на Хабре уже была публикация, посвященная эмуляции USB диска при помощи микроконтроллера stm32. В комментариях к этой статье обсуждалась возможность передачи динамически изменяемых данных таким методом. Из-за кеширования операционной системой данных при считывании файла нет смысла менять содержимое эмулируемых файлов — ОС просто не будет их запрашивать, так как не сможет узнать, что они изменились. Однако фоторамки не кешируют файлы (в них просто нет нужного объема ОЗУ)! Проверить это можно, подключив к фоторамке любую USB флешку, со светодиодом, мигающим при чтении файлов — он будет мигать постоянно при считывании файлов. Поэтому я решил использовать именно этот способ.

Программная часть

268Мб. В реальности этого нет, что и вызывает ошибки при определении типа файловой системы. Попытка увеличить объем диска, увеличив объем эмулируемого файла до 400 МБ не сработала — возможно, там еще что-то не сходилось. Поэтому я решил переделать «emfat» для эмуляции файловой системы FAT16.
В конечном счете это удалось, и накопитель начал корректно обнаруживаться всеми устройствами:

Стоит отметить, что у FAT16 тоже есть ограничение на размер диска — не менее 4087 кластеров, то есть 16 МБ в данном случае. Для выполнения этого условия приходится создать в «emfat» виртуальный файл на 20 Мб.

Проверка с фоторамкой прошла нормально — рамка успешно отображала тестовое изображение, хранящееся в Flash памяти контроллера. Следующий этап — вывод пользовательских изображений. Проще всего эмулировать BMP файлы — у них довольно простая структура, изображение может быть 256-цветным, т.е. на один пиксель приходится один байт. Вот только в таком случае для хранения картинки размером 800*600 понадобится 480 Кбайт ОЗУ. У микроконтроллера такого объема памяти нет, а значит остается один вариант — формировать изображение «на лету». Принцип работы следующий — в том случае, когда устройство-хост запрашивает с накопителя данные из файла, «emfat» вызывает callback-функцию, соответствующую этому файлу. В эту функцию передаются номер сектора, из которого запрашиваются данные, и указатель, по которому эти данные нужно записать. Зная номер сектора, можно определить, какой участок изображения запрошен и сформировать его.
В процессе экспериментов обнаружился неприятный факт — Windows может запрашивать данные из секторов не по порядку их следования. Почему так сделано — непонятно, но это усложняет формирование изображения на лету, так как приходится но номеру сектора вычислять — какой участок данных запрашивается в данный момент. Еще одна проблема — строки в BMP файлах идут снизу вверх, что еще больше запутывает расчет позиции.
Для отображения текста я использовал библиотеку mcufont. Она удобна тем, что позволяет использовать сжатые шрифты, за счет чего заметно сокращается использование Flash памяти. Так как я использовал достаточно крупные шрифты, то эта возможность является довольно важной.
Эта библиотека напрямую записывает сформированное изображение в память, так что для работы библиотеки приходится выделять отдельный массив в ОЗУ.
Также я реализовал отрисовку изображений из памяти контроллера. Все изображения, как и текст, выводятся в черно-белом виде, за счет чего в одном байте изображения можно хранить информацию о 8 пикселях. Для того, чтобы преобразовать обычные изображения в вид, пригодный для подключения к проекту, была использована программа LCD Assistant.

Читайте также:  Моноблок lenovo не запускается

В результате на подключенном USB накопителе формируется изображение вот такого вида:

После того, как работа программы была проверена на STM32F4DISCOVERY, я сделал само устройство, которое представляет собой микроконтроллер с подключенным к нему WiFi модулем на ESP8266. Из подходящих у меня был только контроллер STM32F107RCT7.
Схема получившегося устройства вышла довольно простая:

А вот из-за ограничений на размер платы — 17×36мм (я планировал установить ее в готовый корпус) и большого размера контроллера печатная плата вышла не самая простая в изготовлении — двухсторонняя, с монтажом деталей с двух сторон. При этом некоторые линии питания пришлось сделать проводом.
Вид получившейся платы (в процессе отладки вместе с модулем ESP-01):

При указанных размерах платы наиболее подходящим был WiFi модуль ESP-03. Вот так выглядит получившаяся плата с уже установленным модулем:

И со стороны контроллера:

В процессе экспериментов оказалось, что чувствительности керамической антенны явно не хватает — модуль с трудом подключался к роутеру. После подключения к выводу WIFI_ANT кусочка проволоки длиной 31 мм чувствительность заметно улучшилась, и стала сходной с чувствительностью ESP-01. Место, где фоторамка установлена постоянно, находится в нескольких метрах от роутера, и там нормально работает и родная антенна модуля, так что на фотографии дополнительной антенны нет.
Так как при постоянной работе ESP8266 довольно сильно нагревалась, я решил включать ее только во время запросов информации. Управление питанием можно производить, используя вывод CH_PD модуля. Перевод этого вывода в 0 приводит в переходу ESP8266 в режим пониженного потребления.
Для того, чтобы было удобнее тестировать работу ESP8266, я написал для микроконтроллера отдельную прошивку, реализующую мост USB-UART. Именно через нее ведется настройка модуля для работы с роутером, так что после включения ESP8266 автоматически подключается к нему.

Принцип работы получившегося устройства достаточно прост — каждые 10 минут контроллер пытается запросить данные с сервера, и если это удается, обновляет данные о погоде. Данные о текущей температуре и прогноз на 3 дня вперед берутся с сайта openweathermap.org, информация о температуре снаружи и внутри балкона — c сервера majordomo. В то же время фоторамка запрашивает изображение каждые 6 секунд, отображая при этом текущую информацию. Так как оба процесса могут происходить одновременно, то для приема данных от ESP8266 используется DMA.

В результате, на фоторамке отображается вот такое изображение:

Раздел | Лайфхаки, Старье

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

10. Перепрофилируйте старый компьютер по многим, многим направлениям

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

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

9. Создайте аудиовизуальную систему для вечеринок из цифровой фото/медиа-рамки

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

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

Читайте также:  Метод монте карло программа

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

8. Сделайте часы, подставку для смартфона или лазерное шоу из испорченного диска

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

7. Проститесь со старым ноутбуком и получите второй монитор

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

6. Создайте прекрасный брелок из старого кабеля

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

5. Превратите контроллер и игры Nintendo Entertainment System в несколько потрясающих новых гаджетов

Nintendo Entertainment System (NES) будет жить вечно, как и многое другое. Вы можете превратить его в DVD плеер, сделать из игрового картриджа беспроводной маршрутизатор, повторно использовать контроллер в качестве MP3-плеера или пульта дистанционного управления. Если вы не готовы расстаться с NES, то можно просто обновить его и, следовательно, немного продлить ему жизнь. Только не дайте ему пропасть.

4. Используйте незадействованные порты телевизора для зарядки телефона, настройки камеры видеонаблюдения и многого другого!

Порты на задней панели телевизора часто недооцениваются. Большинство из нас подключили блок или два HDMI и пользуется только этим, но порты старой модели (и даже некоторые более новые) позволяют делать всякие полезные вещи. Сервисный порт USB на большинстве плоских экранов один из самых интересных. Он позволяет осуществлять все виды действий с USB устройствами.

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

3. Превратите маршрутизатор в беспроводное радио

Я пользовался одним маршрутизатором четыре года (aww), но потом решил перейти на DD-WRT-ed LinkSys 310N, а старый отдал. Если бы я не отдал его и знал, что можно превратить маршрутизатор в беспроводное радио, я бы сразу сделал бы это. Хотя это одна из наиболее сложных самостоятельных переделок, которую вы можете сделать, но при этом она самая крутая. Это, безусловно, проект на целые выходные, но когда закончите, получите беспроводное радио по цене маршрутизатора, который думали выбросить.

2. Используйте мобильное устройство в качестве специального Voip телефона

У iPod touches будет больше возможностей, чем Iphones, когда вы добавите Skype или любой другой сервис VoIP к множеству приложений, но и другие старые устройства также подойдут. Если у вас есть планшет, которым вы больше не пользуетесь, можно получить отличный телефон (если добавить гарнитуру). Просто держите его в доме, и у вас будет большой импровизированный домашний телефон (особенно, если вы пользуетесь Google Voice). Из планшетов также получаются превосходные устройства для видеоконференций (если они имеют встроенные камеры). Если не хотите продавать подобное устройство, потому что оно недорого стоит, то используйте его исключительно для общения. Это чрезвычайно полезно, если в вашем доме плохие (или отсутствуют) мобильные сервисы.

1. Модернизируйте свои дрянные наушники

Когда тратите меньше $US50 на наушники, то не надейтесь получить от них хороший звук. Но есть много того, что можно сделать из них, и это повысит их стоимость. Самостоятельная замена драйвера может принести вам по дешевке уровень звука, достойный меломана.

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector