Хватит ли ресурсов Arduino Micro/Nano/Mini для формирования файла JPEG 800х600?
- Войдите на сайт для отправки комментариев
Сб, 22/02/2014 - 17:22
Есть большая и красивая цифровая фоторамка, которая умеет только показывать слайд-шоу из JPG-файлов.
Хочется приспособить ее под отображение показаний температуры, давления, состояния исполнительных устройств и т.д.
Хватит ли ресурсов и памяти Arduino Micro/Nano/Mini для формирования файла JPEG 800х600?
Т.е. раз в 10-30 минут формируем новый файл, заливаем на SD-карту, если успешно - предыдущий файл с карты стираем.
Врятли найдется библиотека для Arduino выполняющая сжатие JPEG. Проще в битмап без сжатия сохранять.
Ну и считайте: 800x600 256цветов (1 байт на пиксел) займет в памяти 480000 байт.
Оперативки 2K - должно хватить.
А как вы собрались фоторамку к Arduino подключить? Или карточку памяти перестовлять раз в 10 минут? :)
просто подпаяться к картридеру фоторамки, т.е. одной картой будут пользоваться два устройства - МК читать и писать, а фоторамка - только читать.
Можно, конечно из фоторамки взять только дисплей и корпус, а всем рулить булет только МК, но тут и памяти больше надо, и не факт, что сумею подружиться с контроллером дисплея.
Можно, конечно из фоторамки взять только дисплей и корпус, а всем рулить булет только МК, но тут и памяти больше надо, и не факт, что сумею подружиться с контроллером дисплея.
как вы объясните фоторамке, что в определенные моменты нельзя обращаться к карте памяти ?
а зачем? она нечитаемые файлы просто игнорирует, при этом не очищая уже выведенное на экране. Не удалось прочитать файл сейчас (адруина пишет в него) - прпробует через 8 сек.
Можно и по-другому: формировать на карте файл IMGxxx.tmp, а когда он успешно записался, переименовать его в IMGxxx.jpg - при этом с точки зрения рамки файл появляется мгновенно. Затем попытаться стереть предыдущий .jpg, не удалось - попробовать через пару секунд еще раз.
а зачем? она нечитаемые файлы просто игнорирует, при этом не очищая уже выведенное на экране. Не удалось прочитать файл сейчас (адруина пишет в него) - прпробует через 8 сек.
Можно и по-другому: формировать на карте файл IMGxxx.tmp, а когда он успешно записался, переименовать его в IMGxxx.jpg - при этом с точки зрения рамки файл появляется мгновенно. Затем попытаться стереть предыдущий .jpg, не удалось - попробовать через пару секунд еще раз.
еще нужно разрулить одновременную попытку доступа двух контроллеров к одному SPI устройству, или вам их аппаратный конфликт по барабану?
не получится сделать так чтобы и рамка и ардуино одновременно работали с SD картой
как вариант делать виртуальную SD карту которую ардуина будет из себя изображать, вот только здесь уже может не хватить производительности
Tomasina не желает этого понимать:
Можно и по-другому: формировать на карте файл IMGxxx.tmp, а когда он успешно записался, переименовать его в IMGxxx.jpg - при этом с точки зрения рамки файл появляется мгновенно. Затем попытаться стереть предыдущий .jpg, не удалось - попробовать через пару секунд еще раз.
хорошо, спрошу по-другому: как работает чип на SD-карте - тупо обрабатывает входящие команды, неважно откуда они поступили, или там есть какой-то сигнал "линия занята" или ещё какая-то авторизация/блокировка?
работа с SD картой стоится по SPI протоколу. Начните изучение с протокола http://chipenable.ru/index.php/programming-avr/item/137-avr-spi-module.html
карточка выступает как SPI slave
Вот теперь понятно.
Жаль что не получится задумка.
Советую начать с попытки доступа к дисплею напрямую из Ардуины. Наверняка там последовательный интерфейс, как у всех. Всю картинку в памяти держать не обязательно, если есть возможность вывода на экран в любой позиции.
Второй вариант - формировать BMP на карте, но предварительно отрубив ее от фоторамки, а потом включать снова. Тут все зависит от реакции фоторамки на отключение карточки.
Можно впаять транзисторы между рамкой и сд слотом и ардуино будет резать спи линии рамки когда пишет
Может вообще убрать SD карту - а в место нее подключить ардуину - и эмулировать файловую систему FAT с одним Файлом BMP 256 цветным. И при его запросе будет отвечать рендер - который передаст готовую инфу. файл не обязательно 800х600 генерить - можно и 256х128.
https://github.com/freetronics/FTOLED/wiki/Displaying-BMPs