Список публикаций

  1. Андронова А.И., Бурдинов К.А. «Высокочастотная фильтрация как способ повышения контраста изображения» //  Материалы IX международной молодежной научной конференции  по естественнонаучным и техническим дисциплинам. [Текст],: материалы конференции / Йошкар-Ола: Поволжский государственный технический университет, 2014 – Ч.2. – С. 131-132 – ISBN 978-5-8158-1409-7
  2. Бурдинов К.А. «Высокочастотная фильтрация как способ повышения контраста изображения» //  XL Международная молодежная научная конференция Гагаринские Чтения. [Текст],  материалы конференции / Москва: Москва, 2014 – T.4. – С. 62-63 – ISBN 978-5-93271-665-6
  3. Андронова А.И., Бурдинов К.А. «Исследование возможностей спектроанализатора СИРИУС для определения тяжелых металлов в пищевых продуктах» //  “Прикладная электродинамика, фотоника и живые системы – 2013” (ПРЭЖС – 2013). [Текст],  материалы конференции / Казань: «Новое знание», 2013 – С. 50 – ISBN 978-5-89347-719-1
  4. Бурдинов К.А. «Динамика систем виброзащиты оптико-электронных приборов» //  Предпринимательство в современной России и за рубежом: проблемы, опыт, перспективы развития. [Текст],  материалы конференции / Казань: Печать-Сервис XXIвек, 2013 – С. 212 – ISBN 978-5-91838-093-2
  5. Бурдинов К.А. «Исследование возможностей спектроанализатора СИРИУС для определения тяжелых металлов в пищевых продуктах» //  XXIТуполевские чтения (школа молодых ученых). [Текст],  материалы конференции / Казань: Изд-во Казан. гос. тех. ун-та., 2013 – T.1. – С. 240 – ISBN 978-5-7579-1930-0
  6. Молин Д.А., Смирнов А.Е., Бурдинов К.А. «К задаче моделирования формирования поверхности составного параболического зеркала и оценке качества изображения» //  Труды Xмеждународной Четаевской конференции. [Текст],  материалы конференции / Казань: Изд-во Казан. гос. тех. ун-та., 2012 – T.3. – С. 182-188 – ISBN 987-5-7579-1730-6
  7. Бурдинов К.А. «К задаче моделирования динамики формирования поверхности составного параболического зеркала» //  XXXVIII Международная молодежная научная конференция Гагаринские Чтения. [Текст],  материалы конференции / Москва: Москва, 2012 – T.3. – С. 43-44 – ISBN 978-5-93-271-641-0
  8. Бурдинов К.А. «Разработка и исследование алгоритмов управления бортовой ОЭС, реализованных на микроконтроллерах» //  XXТуполевские чтения: Международная молодежная научная конференция. [Текст],  материалы конференции / Казань: Изд-во Казан. гос. тех. ун-та., 2013 – T.4. – С. 10-13 – ISBN987-5-7579-1876-1
  9. Бурдинов К.А. «Исследование динамики управления аэрофотоаппаратом и оценка влияния динамических погрешностей систем, обеспечивающих его работу, на качество изображения» //  XIXТуполевские чтения: Международная молодежная научная конференция. [Текст],  материалы конференции / Казань: Изд-во Казан. гос. тех. ун-та., 2011 – T.4. – С. 30-31 – ISBN 978-5-7579-1655-2

Использование библиотек Arduino в AVR Studio

 

Оказывается уже сравнительно давно есть возможность программировать Arduino через нормальную IDE как AVR Studio.

Делается это довольно таки легко.

Есть такая великолепная компания http://www.visualmicro.com/. Она сделала расширение для AVR Studio которое позволяет без особых усилий использовать гигантское количество библиотек написаны под Arduino IDE.

Поставив новую AVR Studio 6.2 я увидел там интересную закладочку

Решил посмотреть и увидел это:

Решил установить это расширение и вот что получил в итоге.

В закладке Tools появилась вкладка с возможностями которые предоставляла Arduino IDE.

Из особенностей здесь 2 вещи галка Upload Using Programmer и Automatic Debugging. Плюс внизу помощь и настройки в которых указывается путь к папке с Arduino IDE.

Platform Explorer представляет собой несколько закладок, которые могут пригодиться. Закладка с примерами теперь находится здесь.

Кроме этого появилась панель в меню:

В ней можно быстро выбрать порт плату и открыть терминал. Собственно вещи которыми пользуешься чаще всего.

Подсказки и подсветка!!!

А вот и самое главное! Сбылась моя мечта. Теперь все подсказки и подсветка работают нормально!

Последнее, как создать новый проект:

Соответственно Sketch Project создается в папке с проектами Arduino.

 

PS: Часто для меня важный момент, это бинарник. Теперь все по человечески, его можно залить отдельно, просто обычными способами.

Hello world для ПЛИС на языке Verilog

Наконец-то пришла макетная плата с ПЛИС. Вот ссылка  на нее на ebay. Называется она EP4CE6E22 FPGA Dev Board + USB Blaster Programmer.

Это мой первый опыт с ПЛИС`ами так, что взял по совету именно эту макетку.

Что здесь есть

  • программатор
  • плата
    • 8 светодиодов
    • 2 кнопки
    • питание от USB
    • выведенные все ноги
    • 3 регулятора напряжения
    • резонатор на 25 МГц
  • 2 USB кабеля

Ниже показана обратная сторона платы.

С чего начать

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

И все же хотелось бы сделать что-то свое.

Hello world.

Анализ мной интернетов привел к выводам, что все придумывают слишком сложный стартовый пример.

Так как это программируемая логика, то я бы хотел просто реализовать какой нибудь логический элемент, например И или ИЛИ.

Я все делал по инструкции в последней ссылке за исключением некоторых моментов:

  • Шаг 9. Код программы я адаптировал под свою плату. Хочу чтобы один СД светился, когда нажимаешь хотя бы одну кнопку из двух (ИЛИ), а второй когда обе нажаты (И).
module test_wires(
     input wire key1,
     input wire key2,
     output wire led1,
     output wire led2
     );
assign led1 = key1 & key2;
assign led2 = key1 | key2;

endmodule

На деле все получилось наоборот. Они светились по умолчанию и когда нажимаешь соответствующее комбо гасли.

  • Шаг 22 – 24. Вместо непонятной таблички использовал красивую картинку Assignment/Pin Planner (Ctrl+Shift+N)

С ней намного проще. Просто нажимаешь на вывод который хочешь использовать и  в окне (справа) указываешь провод или регистр который хочешь подцепить.

После этого в табличке снизу заполняется соответствующая строка. Все. Можно закрывать.

  • Шаг 26-28. Вообще странно. Как-то все по другому. + Драйвера пришлось искать непонятно где.

Открываем этот Programmer делаем поиск оборудования, все норм, а вот потом надо найти нашу плату. Это делается нажатием на кнопку Auto Detect.

После этого появляется список возможных устройств. Похоже он не может распознать его однозначно.

Это не все. После этого появится какая-то строка в табличке а столбец – файл будет пуст. Надо его заполнить. Я делаю это так:

В папке с проектом есть папка output_files. Именно в ней лежит нужный файл.

Ну и все. После того как все графы заполнены ставим галку Programm/… Нажимаем Start. Все!

Про прошивку в ОЗУ и в EEPROM

http://we.easyelectronics.ru/plis/osvoenie-plis-s-ispolzovaniem-yazyka-verilog.html

Должно работать.

Дальше будем разбираться с работой регистров, тем как обрабатывать тактирование от резонатора, как сделать делитель частоты и как сделать ШИМ.

Генерируем изображение на телеке с помощью Arduino

Недавно пришла мысль, сделать что-нибудь связанное с выводом на обычный телевизор. Поиски навели меня на вот эту статью:

http://www.instructables.com/id/TV-Out-with-Arduino/

и соответственно библиотеку которая там используется https://code.google.com/p/arduino-tvout/downloads/detail?name=TVout_R5.91.zip&can=2&q= .

Создатели библиотеки хорошо постарались над ее созданием и написали довольно таки подробный вики: https://code.google.com/p/arduino-tvout/wiki/Useage .

Предлагаю рассмотреть сначала функции библиотеки, а затем саму начинку библиотеки.

Библиоткеа

Рассмотрим работу библиотеки сразу на простом примере:

#include <TVout.h>
#include <fontALL.h>
TVout TV;
 
void setup ( )
{
  TV.begin(NTSC,120,96);
  TV.select_font(font6x8);
  TV.println("Sainquake");
  TV.delay ( 1000 );
}
int i=0;
void loop ( )
{
  TV.clear_screen ( );
  //TV.println("Sainquake");
  TV.draw_rect(0,0,119,95,WHITE);
  TV.print(10,40,"Happy new Year!!!");
  TV.draw_line(10,50,110,50,WHITE);
  TV.print(80,1,i);
  TV.delay ( 10 );
  i++;
}

 

В проекте подключены 2 библиотеки которые скачиваются по ссылке выше. Соответственно содержимое архива надо положить в папку Arduino/libraries/

Итак. В setup у нас стандартная конструкция инициализации: begin. В ней мы указываем стандарт телевидения NTSC или PAL. PAL вам нужен будет только, если вы захотите подключиться к старому ламповому телевизору. Далее задается количество строк и столбцов в будущем изображении. Может быть я что-то каряво сделал, но изменение этих параметров не дало никаких результатов. К сожалению разрешение изображение ограничивается тактовой частотой самой Arduino.

Ну и собственно сразу после инициализации мы можем подключить шрифт и писать текст на экране.

Далее в loop у меня есть несколько функций которые скорее всего понадобятся.

TV.clear_screen ( );

Очистка экрана.

TV.draw_rect(0,0,119,95,WHITE);

Рисуем квадрат. Соответственно аргументы: x0, y0, width, height, color (WHITE || BLACK || INVERT)

TV.draw_line(10,50,110,50,WHITE);

Рисуем линию. Аргументы такие же, только не ширина и высота, а координаты конечной точки.

По большому счету больше функций то и не понадобится.

Теперь о HW части.

По сути это все что вам нужно.

У контроллера выделяетя 2 вывода которые соединяются в один через резисторы. На схеме так же показаны диоды для защиты от обратного тока, но и без них работает.

Эти 2 вывода по распиновке Arduino UNO будут 7 – Video и 9 – Sync.

Теперь самое сложное, вам нужно найти у себя на телевизоре вход под названием тюльпан.

О том как работает библиотека

При инициализации работы (begin) в памяти занимается место под буфер экрана.

А дальше идет только работа с таймером. В функции render_setup запускается таймер1.

Во момент прерывания от переполнения таймера вызывается функция по ссылке line_handler();. В свою очередь эта ссылка меняется на разные функции. Вот тут то и начинается магия.

Далее последовательно по таймеру выполняются несколько функций:

  • vsync_line() – генерирует синхроимпульс
  • blank_line() – вызывает либо синхронизацию либо прорисовку строки.
  • active_line() – прорисовывает строку вызывая функцию render_line();

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

 Бонус

Сделал на основе этой библиотеки следующий проект. По сути создание 3D кубика взято из примера к той же библиотеке.

Описание: Ардуинка считывает с АЦП напряжение на потенциометре и вращает кубик со скоростью пропорционально считанному значению. + идет счет времени (левый верхний угол) + выводится откалиброванное считанное значение с АЦП (Правый верхний угол).

Ставим софт под Altera Cyclone 4

В общем многие ругаются, что новые версии не поддерживают старые железки. Описываю способ подключения.

1.Качаем Web Edition отсюда http://dl.altera.com/14.0/?edition=web

В какой то момент будет такое окно:

Нужно убедиться, что в Devices стоят галки напротив Cyclone в моем случае. Скачиваем файлы.

ОК.

Запускаем Quartus II открываем закладку tools->Install Devices…

Открывается диалоговое окно, где выбираем место куда вы загружали все. (В частности файлы с расширением .qdz ).

Next – Next – Next… Устанавливается вся эта хрень.

И вуаля. Создаем новый прожект:

Теперь можно выбрать необходимый девайс.

На этом все.

 

Следовал этой статье: http://we.easyelectronics.ru/plis/quartus-ii-nachalo-znakomstva.html

 

Еще полезная ссылка “Hello world”: http://we.easyelectronics.ru/plis/chto-takoe-vhdl-prosteyshiy-primer-sozdaniya-logicheskogo-elementa-v-plis.html

Bluetooth выключатель света

Подключение Bluetooth к Arduino UNO

По сути все это было описано уже много раз например:

Рассмотрим только код:

/*
 The circuit: 
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)
 */
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()  
{
 mySerial.begin(9600);
 mySerial.println("Hello, world?");
}
char incomingByte;
void loop()
{
  if (mySerial.available()){
    incomingByte = mySerial.read();
    if(incomingByte == '0') {
       pinMode(13, INPUT); 
       mySerial.println("LED OFF. Press 1 to LED ON!");
    }
    if(incomingByte == '1') {
       pinMode(13, OUTPUT);
       mySerial.println("LED ON. Press 0 to LED OFF!");
    }
  }
}

Чтобы не было проблем подключаем Bluetooth через софтварный UART на других ногах.

Подключение реле

Чтобы не мучатся с разводкой купил следующие готовые платки http://ru.aliexpress.com/item/5V-One-1-Channel-Relay-Module. Там 3 вывода. Земля, питание и дата. На выходе общая точка и 2 вывода. И вот здесь самый главный нюанс – принцип работы ключа.

При подключении ее к любой ноге контроллера замыкание реле происходит при установке ее как вывод. Ввод – реле разомкнуто.

pinMode(13, INPUT);

Как видно на рисунке реле держит до 10А, то есть через него можно подключать электрочайник или пылесос. В моем случае лампочку.

Тест

Скачал https://play.google.com/store/apps/details?id=Qwerty.BluetoothTerminal. Особых проблем нет, только при поиске не определяются имена устройств, так что пришлось перебирать.

Вот собственно как это работает.

Документация на HC-XX: http://www.exp-tech.de/service/datasheet/HC-Serial-Bluetooth-Products.pdf

Запускаем Cubieboard2 UART

Для работы с UART на Cubieboard2 под Android необходимо:

  1. Поставить Android Terminal Emulator
  2. Поставить например Serial Port API Sample или любую другую программу для работы с UART
  3. Иметь на компе любой терминал. Я использую такой терминал

Теперь собственно мы готовы к работе.

Запускаем Терминал эмулятор

Пишем в нем:

$ su
# ls -l /dev/ttyS*

Получаем список UART портов. У меня ttyS0, ttyS2. У них нет прав на запись и чтение, даем их им (по этому поводу моно почитать здесь):

# chmod 666 /dev/ttyS*

ОК. Идем дальше. Запускаем Serial Port:

Setup -> Device -> /dev/ttyS0
Setup -> Baud rate -> 115200

Нажимем Loopback.

Соединяемся

Теперь требуется каким-либо образом соединить UART компа с устройством.

Для этого можно использовать FT232RL или плату о которой я говорил в прошлый раз. Если используете DVK521 то не забудьте подключить проводок:

На Cubie и на DVK521 соединить UART.

Переходим к компу

К USB порту на расширительной плате подключаем комп. Драйверы для платы PL2303 можно установить здесь.

Запускаем Terminal на компутере. Выбираем соответствующий COM порт и скорость 115200, соединяемся. Если на Cubie запустить Loopback то в Терминале сразу польется поток хрени. Это значит что все работает.

Более вразумительной проверкой работоспособности можно в Console

Первый запуск DVK521 Cubieboard

Напишу пока не забыл.
Купил такую штуку

Для Cubieboard
Вот есть видео как ее установить

Там в видео одна проблема, провод для Тач Скрина (маленький) надо вставлять синей стороной вверх с обоих концов.

И лучше сразу выдернуть Джампер BUZ_JMP. С ним при старте платы идет долгий писк.

Запуск на андройде

Запуск на Android требует дополнительных усилий. А именно обновление прошивки. На этой страничке есть образ (img) для платы с Android 4.2 адаптированный под плату. Чтобы его установить без лишних плясок с бубном вам понадобится PhoenixSuit. В папке с ним есть установщик драйверов, его необходимо запустить. После запускаем саму программу. Следуя инструкции отсюда нам надо:

  1. Запустить Suit
  2. Открыть закладку Firmware
  3. Выбрать необходимый образ
  4. Подключить кабель miniUSB к порту USB OTG на Cubieboard
  5. Нажать на Cubieboard на кнопку FEL расположенную на торце платы, возле разъема USB OTG
  6. Не отпуская кнопку подключить кабель USB к ПК
  7. После подключения к ПК, зажатую кнопку FEL отпустить (Отпустить только после запуска установки на компе)

Он ставится где-то минуты 2 и все ОК.

Dota 2 Quiz

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

В игре 107 героев которые Вам предстоит отгадать!
Для каждого героя Вы можете использовать подсказку.

ОСОБЕННОСТИ
- 7 уровней!
- более чем ~ 100 героев
- для каждого героя в викторине, есть подсказки, которые помогут вам помочь
- если не знаете что это за герой, спросите у своих друзей!