Проекты с использованием дополнительных ЖКИ дисплеев меня как то не устраивали, потому что при их использовании требуется дополнительное место установки , лепка рамки и много других трудностей. К тому же у меня в автомобиле уже есть Монитор . Так что осталось состыковать Arduino с моим монитором. Вариант использования микросхемы MAX7456 нашел сразу , а вот протестировать получилось спустя несколько месяцев.
Для чего это нужно?
Для того что бы в случай умирания компа я мог управлять любыми системами автомобиля.
Например:
Панель приборов
Климат контроль
Управление навесным оборудованием, противотуманки, люк, стеклоподьемники и др.
Окочательным решением в пользу использования ArduinoVideioCard стало USB FM Radio(Arduino Radio), в случаи слета операционки или других неполадок я останусь без Радио. Для этого мной также было проделана определенная работа с arduino TouchScreen , так как перспектива использования доп кнопок меня тоже напрягала.
Перехожу к конкретике.
Микросхема OSD MAX7456 умеет накладывать хранящиеся в ней символы на любое изображение. Так же умеет формировать свою синхру и работать без видео источника. Выход микросхемы подключается к свободному видео входу на мониторе AV1 Вложение 8301
Так как я не собираюсь использовать ни каких видео источников , я настроил в скетче автоматическую синхронизацию, то есть у меня будет работать как с видео сигналом идущего с камеры так и без него.
В EEPROM OSD MAX 7456 можно нарисовать и залить любые символы и шрифты. Спасибо aptm за помощь в дорисовывании шрифтов
Заливать можно при помощи ниже выложеного скетча и программы Hiper Terminal. Скачиваеи и распаковываем файлик arduino.mcm , запускаем гипер терминал, выбираем порт на котором сидит Ардуино, скорость порта 9600. В меню программы гипертерминал выбираем пункт send to file и указываем путь к файлу arduino.mcm
PHP код:
// Code to copy a MCM font file to the Arduino + Max7456 OSD
// with PAL
// all VM0_reg commands need bit 6 set
//#define ENABLE_display 0x48
//#define ENABLE_display_vert 0x4c
//#define MAX7456_reset 0x42
//#define DISABLE_display 0x40
// SPCR = 01010000
//interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
//sample on leading edge of clk,system clock/4 rate (4 meg)
SPCR = (1<<SPE)|(1<<MSTR);
spi_junk=SPSR;
spi_junk=SPDR;
delay(250);
// force soft reset on Max7456
digitalWrite(MAX7456SELECT,LOW);
spi_transfer(VM0_reg);
spi_transfer(MAX7456_reset);
digitalWrite(MAX7456SELECT,HIGH);
delay(500);
// set all rows to same character white level, 90%
digitalWrite(MAX7456SELECT,LOW);
for (x = 0; x < MAX_screen_rows; x++)
{
spi_transfer(x + 0x10);
spi_transfer(WHITE_level_90);
}
// make sure the Max7456 is enabled
spi_transfer(VM0_reg);
spi_transfer(ENABLE_display);
digitalWrite(MAX7456SELECT,HIGH);
if (Serial.available() > 0)
{
// read the incoming byte:
incomingByte = Serial.read();
switch(incomingByte) // parse and decode mcm file
{
case 0x0d: // carridge return, end of line
//Serial.println("cr");
if (bit_count == 8 && (ascii_binary[0] == 0x30 || ascii_binary[0] == 0x31))
{
// turn 8 ascii binary bytes to single byte '01010101' = 0x55
// fill in 64 bytes of character data
character_bitmap[byte_count] = decode_ascii_binary();
byte_count++;
bit_count = 0;
}
else
bit_count = 0;
break;
case 0x0a: // line feed, ignore
//Serial.println("ln");
break;
case 0x30: // ascii '0'
case 0x31: // ascii '1'
ascii_binary[bit_count] = incomingByte;
bit_count++;
break;
default:
break;
}
}
// we have one completed character
// write the character to NVM
if(byte_count == 64)
{
write_NVM();
byte_count = 0;
font_count++;
}
// we have burned all 256 characters in NVM
if(font_count == 256)
{
font_count = 0;
// force soft reset on Max7456
digitalWrite(MAX7456SELECT,LOW);
spi_transfer(VM0_reg);
spi_transfer(MAX7456_reset);
digitalWrite(MAX7456SELECT,HIGH);
delay(500);
// display all 256 new internal MAX7456 characters
for (x = 0; x < MAX_font_rom; x++)
{
screen_buffer[x] = x;
}
count = MAX_font_rom;
write_new_screen();
Serial.println("");
Serial.println("Done with file download");
}
}
//////////////////////////////////////////////////////////////
byte spi_transfer(volatile byte data)
{
SPDR = data; // Start the transmission
while (!(SPSR & (1<<SPIF))) // Wait the end of the transmission
{
};
return SPDR; // return the received byte
}
spi_transfer(CMAH_reg); // set start address high
spi_transfer(char_address_hi);
for(x = 0; x < NVM_ram_size; x++) // write out 54 (out of 64) bytes of character to shadow ram
{
screen_char = character_bitmap[x];
spi_transfer(CMAL_reg); // set start address low
spi_transfer(x);
spi_transfer(CMDI_reg);
spi_transfer(screen_char);
}
// transfer a 54 bytes from shadow ram to NVM
spi_transfer(CMM_reg);
spi_transfer(WRITE_nvr);
// wait until bit 5 in the status register returns to 0 (12ms)
while ((spi_transfer(STAT_reg) & STATUS_reg_nvr_busy) != 0x00);
spi_transfer(VM0_reg); // turn on screen next vertical
spi_transfer(ENABLE_display_vert);
digitalWrite(MAX7456SELECT,HIGH);
}
Посмотрел цену на платане за MAX7456 - 1280.00 руб. Прямо скажем не бюджетно. Давно нашел более бюджетный вариант, правда так и не собрал http://www.batsocks.co.uk/products/S...e%20Shield.htm
Он конечно не может накладывать видео, выводит только черно-белое изображение, разрешением 38x25 символов и занимает сом порт на ардуине, но может кому пригодится (тем более, что собрать его можно рублей за 100)
12.04.2010, 18:50
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
В ДЕЛЬТА Электронике 660руб.
Странно, я покупал за 250 руб. примерно пол года назад или возможно что-то путаю.
Видеоролик remzibi с польского заинтересовал. Только мне показалось по данным скорости - запаздывание достаточно большое.
Интересно насколько геморно сделать "проходную" железку накладывающую данные с gps приемника на несколько видеоканалов одновременно (для синхронизации роликов, если что ;)), и дающую возможность получать их и программам навигации на компьютере?
13.04.2010, 03:39
(vS)
Re: Видеокарта для Arduino(CarduinoVideioCard).
дуины точно не хвати ;)
13.04.2010, 16:03
SBorovkov
Re: Видеокарта для Arduino(CarduinoVideioCard).
да ладно, ардуина - достаточно быстрая железка. Обработать поток nmea не проблема и делается быстро, отправить текстовые данные раз в секунду на экраны - тоже не долго.
13.04.2010, 16:49
ak1976
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от Chip
В ДЕЛЬТА Электронике 660руб.
Странно, я покупал за 250 руб. примерно пол года назад или возможно что-то путаю.
В Дельта Электронике 654.14 руб в партиях больше 5 штук, а по одной 1034.71 руб
да ладно, ардуина - достаточно быстрая железка. Обработать поток nmea не проблема и делается быстро, отправить текстовые данные раз в секунду на экраны - тоже не долго.
нмеа 9600 бод, а видео, да еще несколько... это уже совсем другие цыфры :)
13.04.2010, 18:41
Pinin
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
В Дельта Электронике 654.14 руб в партиях больше 5 штук, а по одной 1034.71 руб
Chip, а ты бы закупил партейку для кармонитора, а мы бы разобрали ;)
Если что - я в очередь выстраиваюсь.
13.04.2010, 19:58
Chip
Цитата:
Сообщение от (vS)
нмеа 9600 бод, а видео, да еще несколько... это уже совсем другие цыфры :)
Ресурсов вполне хватит, потому как всю работу выполняет MAX7456
PS
Еще можно использовать для разметки камеры ЗХ и для индикации растояния парковочного радара
13.04.2010, 20:10
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
Давайте соберем всех желающих здесь и я куплю по 660р. без всяких наценок.
Записывайтесь
Pinin - 1шт.
13.04.2010, 20:25
(vS)
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от Chip
Ресурсов вполне хватит, потому как всю работу выполняет MAX7456
PS
Еще можно использовать для разметки камеры ЗХ и для индикации растояния парковочного радара
читай внимательно
Цитата:
Сообщение от aptm
Видеоролик remzibi с польского заинтересовал. Только мне показалось по данным скорости - запаздывание достаточно большое.
Интересно насколько геморно сделать "проходную" железку накладывающую данные с gps приемника на несколько видеоканалов одновременно (для синхронизации роликов, если что ;)), и дающую возможность получать их и программам навигации на компьютере?
13.04.2010, 20:38
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
Читал естественно
14.04.2010, 00:27
(vS)
Re: Видеокарта для Arduino(CarduinoVideioCard).
и что, несколько МАХов? :)
14.04.2010, 01:33
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
По моему другого нет способа
15.04.2010, 18:34
skystorm
Re: Видеокарта для Arduino(CarduinoVideioCard).
Еще один вариант применения
16.04.2010, 16:30
MiD_E34
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от Chip
Давайте соберем всех желающих здесь и я куплю по 660р. без всяких наценок.
Записывайтесь
Pinin - 1шт.
Pinin - 1шт
MiD_E34 - 1шт
18.04.2010, 16:37
AVP87
Re: Видеокарта для Arduino(CarduinoVideioCard).
Может чего помощнее найти, не только что бы текст, но и графику можно было?
18.04.2010, 16:49
AVP87
Re: Видеокарта для Arduino(CarduinoVideioCard).
Ни кто не знает о стоимости такой штучки например? http://arduino.cc/playground/Main/MicroVGA
А еще видел Свитчи для мониторов, и вот он имел накладывать OSD. Вот бы что нить найти такое что бы на VGA сигнал накладывал
18.04.2010, 17:00
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
С графикой можно на Atmega или на PIC сделать, могу даже поделится исходниками
18.04.2010, 17:34
AVP87
Re: Видеокарта для Arduino(CarduinoVideioCard).
А в современных мониках менюшка прориовывается видео процессором или стоит отдельная микруха для OSD?
А то щас красивые меню пошли и картиночки и полупрозрачность можно...
18.04.2010, 18:09
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
Вообще на сколько мне известно, контроллеры VGA на Лилипутах прошиваются.
Думаю что графика с процессором неотъемлемая часть .
18.04.2010, 18:25
AVP87
Re: Видеокарта для Arduino(CarduinoVideioCard).
KS2508 OSD PROCESSOR FOR MONITOR
Но он древний
18.04.2010, 18:32
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
В Pоссии их нет в наличии :(
Под заказ 5 недель , только оптом
18.04.2010, 18:37
AVP87
Re: Видеокарта для Arduino(CarduinoVideioCard).
Такой в мониках на ЭЛТ стоит, думаю найти будет не проблемма для эксперементов
18.04.2010, 18:38
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
Еще бы моник такой где нибудь найти :)
18.04.2010, 23:21
ashu
Re: Видеокарта для Arduino(CarduinoVideioCard).
Pinin - 1шт
MiD_E34 - 1шт
ashu - 2шт
19.04.2010, 00:28
Pinin
Re: Видеокарта для Arduino(CarduinoVideioCard).
Что-то нет ажиотажа на такую знатную в общем-то вещицу...
М.б. взять на вырост десяток хотя бы - пусть их будет в ассортименте кармонитора и желающие со временем подтянутся (после того, как мы тут отчитаемся, какие кудрявые фичи мы на них забабахали ;) )?
19.04.2010, 21:21
Chip
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Что-то нет ажиотажа на такую знатную в общем-то вещицу...
М.б. взять на вырост десяток хотя бы - пусть их будет в ассортименте кармонитора и желающие со временем подтянутся (после того, как мы тут отчитаемся, какие кудрявые фичи мы на них забабахали )?
В ассортимент можно добавить, только товар этот не ходовой и наценку в 100руб. делать нет смысла , а сделаешь дороже начнут все обижаться
Микросхемы заказал, будут через 3 дня.
Теперь осталось согласовать кто и как будет забирать.
19.04.2010, 21:58
Pinin
Re: Видеокарта для Arduino(CarduinoVideioCard).
Отлично! Полагаю, согласовывать будем через личку?