Главная Проекты Идеи Soft О авторе
 

Модульный проект GraniCubicle.

Рис. 1 Иллюстрация простейших модульных конструкций.
(Приведено для наглядности.)

План.

       1) Вступление.
       2) Поиск решения.
       3) Развитие аналогий.
       4) Описание новой системы.
       5) Основные критерии системы.
       6) Деление на блоки.
       7) Сочетания блоков.

Описание блоков.

       A) Общее описание. - Эта страница.
       Б) Блок 1 для 'RS 232'. - тут.
       В) Блок 2 для 'IR'. - В разработке.
       Г) Блок 3 для 'LCD'. - В разработке.
       Д) Блок 4 для 'PS/2'. - тут.
       Е) Блок 5 для 'USB HID'. - тут.
       Ж) Блок 6 для 'DAC/ADC'. - В разработке.
       З) Блок 7 для 'DISEqC'. - тут.
       И) Блок 8 для 'Print Server'. - тут.
       К) Блок 9 для 'Lan Bridge'. - тут.

Соединение блоков в набор.

       А) Набор "Panorama Sat Scaner". - тут.

       X) Обратная связь - тут.

Вступление.

       После довольно долгой переписки с пользователями моего проекта IgorPlug2 мне в конце концов удалось в общих чертах определить и сформулировать достаточно конкретное ТЗ на создание новой системы, которая соответствует большинству их основных требований.
       Во многих пришедших письмах описывался условный универсальный "комбайн", основным функциональным назначением которого является управление компьютером, другими устройствами и/или подключаемыми ведомыми блоками с помощью ПДУ от бытовой техники. Причём эти "другие" устройства и/или ведомые блоки "комбайна" должны быть реализованы в виде неких модулей, подключаемых по необходимости в общую систему. Система, в свою очередь, должна быть самообучаемой в домашних условиях и по возможности совместимой со всеми доступными разработчику сэмплами кодировок ПДУ от бытовой техники.
       Говоря простым языком - при минимальной конфигурации (устанавливается требуемый минимум деталей и блоков) устройство выполняет только какой-то требуемый "минимум" функций, основной из которых всё же является управление компьютером с помощью ПДУ.
       При необходимости функциональность может быть расширена пользователем до требуемого ему в данный момент "полного" набора выполняемых функций (добавлением не обязательных для остальных пользователей функций) - простой установкой:

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

       На этом общая описательная часть требуемого универсального "комбайна" в принципе и заканчивается. Дополнительно можно отметить, что выбор легко изменяемой блочной структуры системы связан с тем, что каждый пользователь высказал свой набор "сверх" необходимых в его условиях функций - от банального включения компьютера с ПДУ до сложных зависимостей включения исполнительного механизма, учитывающих температуру (терморегулятор), влажность (гигрорегулятор), день недели и фазу луны (по данным бортовых часов).
       Одним словом всё, что может быть хоть как-то определено алгоритмически и функционально, вплоть до требования учитывать некие зареальные условия класса: "после дождичка в четверг и температуры окружающий среды не менее ХХ градусов" (ориентируясь на данных прямого замера температуры/влажности за окошком и на показаниях встроенных I2C часов реального времени DS1307 или их аналога).

Поиск решения.

       Суммируя и анализируя всё вышеперечисленное, я в общем однозначно пришел к выводу, что реализовать небольшой заданный набор функций на одном МК можно достаточно легко, но вся беда в том, что у каждого пользователя этот набор свой, а делать по одной модификации устройства на каждого пользователя в открытых некоммерческих разработках никто не будет.
       При реализации же на одном МК относительно большого набора функций, удовлетворяющих большинство пользователей, требуется соответственно относительно дорогой и "продвинутый" МК с большим количеством ОЗУ и ПЗУ для размещения блоков программы - "драйверов", большого количества портов ввода-вывода для стыковки с внешней периферией и т.д. и т.п. (Например, микроконтроллер AT Mega 128).
       Такой подход оправдан при постоянном использовании всего набора функций получившегося устройства, но при использовании только одной или двух функций из большого предложенного набора становится экономически невыгодно реализовывать относительно простое устройство на дорогостоящем МК. Да и просто неудобно возиться с большим количеством ног, которые надо подключать (см. прим 1), что непосредственно сказывается на габаритах и конструктивной сложности устройства.
       Примечание - 1. Для примера можно сравнить сложность установки SMD корпуса (т.к. реализации в PDIP корпусе не существует) AT Mega 128 с 64 выводами, расположенными с 4х сторон кристалла, который надо устанавливать с помощью паяльной станции и в противовес этой конструкции, конструкцию на AT Mega 8/48 в PDIP корпусе с 28 выводами, который можно разместить на любой макетной плате, подключившись к ним обычным монтажным проводом.

Развитие аналогий.

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

       Весь набор состоял из:
1) шара редуктора.
2) шара мотора.
3) шара сквозной передачи.
4) стыковочных элементов: пустого шара, пропеллера и колёс.
5) соединительно/исполнительных приспособлений.

       По пункту 5 поясню - к внешним штуцерам шаров (из которых собственно и состояла конструкция) при помощи муфт можно было крепить пропеллер или 4 колеса.

       Если собирать из одного набора конструктора, то ничего сложнее вентилятора, четырёх колесной тележки (в наборе колёс было почему-то 5) с прямым приводом или их комбинации ничего естественно не получалось. Но при наличии нескольких наборов, небольшой фантазии и подручных материалов, список "тележек" и их возможных свойств существенно расширялся. Например, мой знакомый на основе двух наборов собрал самодвижущуюся тележку с центральным поворотным механизмом (как у карьерных тягачей) и прикрутил проводной пульт управления. Правда это уже нестандартное применение конструктора.
       Но возвратимся к идее, что каждый "шар" выполняет строго определённый набор функций и при этом имеет стандартный способ соединения с другими шарами - блоками. При изменении количества задействованных шаров/блоков или при изменении последовательности соединения этих шаров/блоков можно получать существенно разные конструкции, обладающие разным предназначением и функциональностью.
       Для улучшения понимания приведу ещё один пример: детская игра в кубики. Их обычно рекомендуют родителям для облегчения освоения букваря. На гранях этих кубиков нанесены буквы, ребёнок меняя текущую грань кубика выбирает нужную букву для текущей задачи (составления заданного слова). То есть, один и тот же кубик в зависимости от выбранной грани несёт разный смысл, а при изменении числа и последовательности следования кубиков, мы получаем разные слова.

"Так давайте для наглядности представим, что этот относительно большой серый шарик на самом деле маленький синий кубик" (С) не мой, но в нём что-то есть.

Описание новой системы.

       Трансформируя всё вышесказанное и абстрагируясь от случайной конкретики мы получим описание конструкции, состоящей из нескольких взаимосвязанных самостоятельных блоков. Каждый блок в которой имеет свой, заранее обусловленный набор функций (аналогия с буквами на гранях кубика), часть этих функций используется в текущей конструкции, выбор нужного набора функций для данной конструкции обусловлен сменой прошивки. Расширяя аналогию, можно представить набор кубиков, буквы на которых мы наносим до выкладывания из них заданного слова. Подбирая наиболее подходящие блоки из имеющихся в наличии и соединяя требуемые цепи блоков между собой (аналогия с последовательностью следования кубиков), адаптируем набор под то или иное конкретное применение.
       Сопряжения между блоками будут реализовываться на аппаратно реализованных интерфейсах (RS232, I2C или SPI). Непосредственный тип интерфейса и их набор определяется назначением собираемого из этих блоков устройства. Cвязь между блоками должна иметь чисто командный характер, во избежание проблем с быстродействием системы в целом.
       Простой пример - измерительный комплекс/вагон, контролирующий состояние железнодорожных путей. Для МК, отвечающего за запись данных на флэш накопитель, вовсе не обязательно и даже вредно в плане ухудшения производительности, обрабатывать аналоговые входные данные от полсотни датчиков... Он должен контролировать процесс записи данных на флэш накопитель в цифровом виде, уже обработанных и подготовленных другими частями системы, на этом круг его функциональных обязанностей заканчивается - ВСЁ и ничего более. А если возложить всё на один МК, то быстродействия при опросе датчиков может и не хватить.
       При выполнении блочных конструкций значительно упрощается компоновка устройства, трассировка цепей и отладка готовой конструкции в сборе.
       То есть, значительно рациональнее создать конструкцию не на одном многофункциональном МК (задействовав при этом 10-20% от его периферии, 5% от его ОЗУ/ПЗУ и 100% от математического блока), а в виде интегрированной мультипроцессорной блочной системы, каждый блок которой выполнял бы свою функцию и использовал свои, пусть даже скромные, ресурсы более эффективно.
       Обычно функциональность однопроцессорной системы, созданной на распространенном, недорогом МК, упирается в нехватку ресурсов вычислительной мощности, ПЗУ, ОЗУ, ног ввода - вывода. При этом разработчики МК систем стараются решить эти проблемы либо путем усложнения схемы, либо переходом на более старший МК из этой серии. В результате усложнения разводки цепей, растёт количество деталей, сложность и цена конструкции.
       В случае применения мультипроцессорных систем с командным связывающим интерфейсом все эти недостатки практически снимаются.

Основные критерии системы.

       Далее можно попытаться описать основные критерии данной системы:
    А) Критерий - Цена. МК с меньшим количеством ОЗУ дешевле более старших своих собратьев. (Для сравнения четыре ATMega 48 стоят примерно столько, сколько один ATMega 16).
    В) Критерий - Максимальная частота. Серия ATMega 48 имеет большую тактовую частоту, чем серия ATMega 8/16/32. Да серии разные, но 16 и 32 распространённее и дешевле ATmega64 (старшего из серии 48) при той же максимальной частоте.
    С) Критерий - Производительность. Несколько процессоров, работающих параллельно, выполняющих при этом разные задачи в один и тот же промежуток времени (например, следящие за несколькими процессами независимо друг от друга) намного эффективнее одного из них.
    D) Критерий - Разграничение функций. Каждый МК выполняет одну, две функции или следит за 1-2 процессами и сообщает о результатах. Это позволяет вынести буфера ввода - вывода блоков обслуживания периферии (драйверов) из ОЗУ (ПЗУ) ведущего МК в подчинённые. При этом центральный блок не тратит вычислительные ресурсы на обработку данных от периферии, в него передаётся уже результат вычислений (см. прим 2).
    Е) Критерий - Простота реализации. По сравнению с одной большой схемой и соответственно большой печатной платой, набор нужных функций на нескольких функциональных платах намного упрощает повторение.
    F) Критерий - Уменьшение используемых деталей. При избытке портов ввода - вывода (на нескольких платах) отпадает необходимость в буферизации портов и использовании ног порта ввода - вывода под несколько целей (Пример совмещения LCD и Клавиатуры 4х4 на одном порту)
    G) Критерий - Масштабируемость и гибкость. Благодаря блочной структуре и дублированию по разному настроенных блоков, возможно существенное увеличение функциональности.

       Примечание 2. При больших объёмах данных передаваемого результата, производительность будет ограничена скоростью интерфейса между МК.

Деление на блоки.

       Из всего вышесказанного следует, что каждый блок должен быть логически законченной конструкцией, оптимизированной под выполнение того или иного набора действий.
       Ориентируясь на "типовые" желания пользователей (по данным переписки), набор действий желательно компоновать по принципу минимального количества процессорных блоков для выполнения логически законченного набора действий. Блоки можно разделить по назначению:

   1) Блоки интерфейса, создают интерфейс с внешним миром
       (ПК, дисплеем, ММС/CD - флеш, и т.д.).
   2) Блоки приёма данных (АЦП, часов реального времени,
       опрашивающие другие конструкции).
   3) Исполнительные блоки, т.е. блоки, управляющие чем-либо
       по командам от блоков N1 и/или N2.

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

       Блок 1 для 'RS 232'.
Последовательный интерфейс RS 232 удобен для стыковки с IBM PC, реализован во всех процессорах аппаратно и позволяет обрабатывать пришедшие данные по факту окончания приёма очередного байта, не участвуя при этом в приёме каждого бита этого байта.

       Блок 2 для 'IR'.
Данный блок отвечает за: приём данных с IR, ХЭШирование этих данных, выполнение по этим данным запрограммированных действий.

       Блок 3 для 'LCD'.
Данный блок отвечает за подключение одного из нескольких типов дисплеев (типа HD4778 или HT или LED матрицы).

       Блок 4 для 'PS/2'.
Данный блок включаем в разрыв между PS/2 приёмником и PS/2 клавиатурой. Он служит для: Сохранять нажатые символы в Eprom, опрашивания клавиатуры и передавать символы в RS 232 (или PS/2), Отправлять по PS/2 символы, пришедшие из RS 232 (или PS/2), по командам из RS 232 (или PS/2) отправлять набор команд из Eprom в PS/2.

       Блок 5 для 'USB HID'.
Данный блок должен эмулировать USB HID мышь и клавиатуру. Он служит для эмулирования компьютерной клавиатуры или мыши, управляемых по командам от I2C (или RS 232).

       Блок 6 для 'DAC/ADC'.
Данный блок используется для замеров аналоговых величин и управления преобразователем (например пиковым детектором).

       Блок 7 для 'DISEqC'.
Аббревиатура DiSEqC образована от слов Digital Satellite Equipment Control - цифровое управление спутниковым оборудованием. Т.е., говоря простым языком это мой функциональный аналог комплекта "DiSEqC Test Tool" дополненный и переработанный под мои нужды.

Сочетания блоков.

       Число типов блоков определяется только их функциональностью и может быть расширено по мере развития новых систем. Причём добавление новых блоков может в корне менять назначение системы (не обязательна жёсткая привязка к стационарным компьютерным системам).
       Например, соединяя четыре блока: Блок 1 для 'RS 232', Блок 2 для 'IR', Блок 6 для 'DAC/ADC', Блок 7 для 'DISEqC' можно получить панорамный SAT сканер с поддержкой управления DISEqC оборудованием (поддержка DISEqC переключателя удобна для настройки систем MultiFid).
       Данное соединение блоков (см. прим. N5) можно эксплуатировать как автономно (отображая заданную с ПДУ точку графика на встроенный аналоговый индикатор), так и в составе компьютерных систем (с управлением от ноутбука или КПК по интерфейсу RS232). На создание такого устройства меня подвиг тот факт, что при настройке бытовым цифровым ресивером качество сигнала появляется только при хорошем уровне сигнала, т.е., когда антенна уже точно настроена на нужный (а не соседний) спутник. На рисунках 2 и 3 показан слабый сигнал с 90того градуса, при котором бытовой цифровой ресивер OpenBox820 показывает качество сигнала - 0, но моя система отчётливо декодирует и интерпретирует принадлежность сигнала.

       Примечание 5.    Почему соединение?    Просто перекоммутировав соединение блоков и изменив прошивки можно получить другие функции.
       Например: Блок 7 для 'DISEqC' можно использовать для автономной проверки DISEqC переключателей, добавив к нему Блок 1 для 'RS 232', получим функции монитора DISEqC и отправку DISEqC команд из терминалки, а добавив к этому Блок 6 для 'DAC/ADC', получим функции панорамного SAT сканера с управлением по RS232 (от от ноутбука или КПК см. прим. N6), добавив ещё к этому Блок 2 для 'IR', получим автономный панорамный SAT сканер, управляемый с пульта дистанционного управления.

       Примечание 6.    Для поддержки железа со стороны IBM совместимых машин и КПК я (Граница Константин) написал две программы (для IBM совместимых машин на Дэльфи, а для КПК на визуал бэйсике). Ниже даю скрины программ в действии.

Рис 2. Скрин с экрана ноутбука - панорамный SAT сканер в действии.

Рис 3. Скрин с экрана КПК - мобильная версия панорамного SAT сканера в действии. Увеличить

       В то же время: Блок 2 для 'IR' может управлять компьютером через USB (прошивка с поддержкой протокола IgorPlug2), а добавив к нему другой Блок 1 для 'RS 232', получим управление устройствами (в том числе компьютером) через RS232 (прошивка с поддержкой протокола UIR). Причём, в отличии от протокола IgorPlug2, дополнительный не сертифицированный драйвер не нужен вовсе (драйвер RS232 идёт комплектно с матплатой или с RS232 - USB переходником).
       А добавив к блокам 1 и 2 и ещё Блок 5 для 'USB HID', получим эмуляцию клавиатуры и мыши. Преимущество данного набора: не нужны не только сторонние драйвера (входят в состав Windows), но и программа управления (эмулируются конечные устройства - мышь и клавиатура). После настройки, весь комплект можно воткнуть в любую машину под управлением Windows и через пару минут всё само настроится и установится.

       Продолжение следует...

Ограничения.

       Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.

       Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

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

       Кошелёк для оплаты накладных расходов на сайт Z158779319858 в системе WebMoney.

       Принимаю только безвозмездную помощь :)


       Все статьи, опубликованные на этом сайте защищены Частью 4 Гражданского Кодекса Российской Федерации. Запрещено полное или частичное копирование материалов без согласия их авторов. Незаконное использование материалов сайта влечет за собой административную ответственность в виде компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст. 1301, 1250, 1252, 1253 ГК РФ]. При согласованном использовании материалов сайта обязательна активная ссылка на www.mindrunway.ru и указание авторства.



Copyright© 2007-2012 QuickWitted Почта     grani СОБАКА mindrunway РУ
Ссылки
Гостевая
Форум