У меня есть идея встроенного проекта, которую я хочу начать. У меня много вопросов - PullRequest
4 голосов
/ 09 октября 2009

Это мой первый пост на stackoverflow, я слышал об этом сайте и думаю, что он потрясающий! Давайте посмотрим, смогу ли я получить некоторые рекомендации о том, как начать свой проект.

Идея: По сути, я хочу создать свой собственный контроллер OSC (OSC - это протокол, основанный на UDP с намерением заменить MIDI). Что интересно в этом, так это то, что я хочу построить контроллер как гитару, чтобы я мог использовать его как синтезатор и включить некоторые типичные аппаратные средства контроллера MIDI в корпус гитары. Это будет включать чувствительные к скорости пэды, оптические датчики, ЖК-панель, чувствительные к скорости струны и чувствительные к прикосновениям лады. Вот пример .

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

  1. Какая аппаратная платформа будет хорошей для создания этого устройства? Я предполагаю, что PIC18 будет медленнее иметь дело с OSC, поскольку это современный протокол. Какой тип микроконтроллера может иметь дело с реализацией OSC?
  2. На каком языке можно реализовать этот протокол? Я понимаю, что C обычно используется для встроенного программного обеспечения, но Ада вызвала у меня интерес. Целью здесь является создание прошивки с низкой задержкой, которая может работать с несколькими входами от пользователя. Я так понимаю, что Ада используется во многих ситуациях такого типа и является "более стабильной"? Что вы думаете по этому поводу?
  3. Можно ли имитировать аппаратное обеспечение и микроконтроллер без физического оборудования? Я немного сомневаюсь, что могу потратить несколько сотен долларов на оборудование, не зная, что это подходящее решение для моих нужд (у меня бюджет для студентов). Если бы мне удалось смоделировать все входы и написать прошивку без аппаратного обеспечения, это сделало бы меня гораздо более уверенным в моей способности завершить этот проект. Даже возможность имитировать базовую версию моей идеи была бы более идеальной, чем ничего.

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

Еще раз спасибо!

Ответы [ 4 ]

2 голосов
/ 09 октября 2009
  1. Для начала взгляните на Arduino и Make Controller. Оба являются модулями микроконтроллера с открытым исходным кодом (hw & sw), которые могут обрабатывать OSC и иметь сильные пользовательские сообщества. Вы можете найти примеры видео для обоих на YouTube.

  2. И C, и Ada по-прежнему компилируются в машинный код, поэтому, если вы хотите получить максимальный контроль над вашим оборудованием, вы можете захотеть взглянуть на язык ассемблера - но только тогда, когда это становится абсолютно необходимым. До тех пор я бы придерживался C. Это унесет вас довольно далеко.

  3. Да, можно смоделировать ваши схемы в программном обеспечении. Тем не менее, некоторые вещи проще с реальным оборудованием. Но, для некоторых хороших примеров программного обеспечения, взгляните на учебники Max / MSP на веб-сайте Cycling '74. Max / MSP - это своего рода графический язык программирования, который часто используется для взаимодействия компьютера и оборудования. Эта статья даст вам несколько идей о том, что она может сделать.

  4. Аналогично Max / MSP - продукт с открытым исходным кодом под названием Pd. Он менее отточен, чем Max / MSP, но, будучи свободно доступным, вы можете начать с ним возиться всякий раз.

  5. Несколько хороших книг для начинающих: «Физические вычисления» Тома Айго и «Практическая электроника для изобретателей» Пола Шерца. У Тома Айго также есть очень информативный веб-сайт.

  6. Несколько хороших журналов, которые вам могут пригодиться, - это Make, Circuit Cellar и Nuts & Volts. Все имеют дело с тем или иным типом электроники, которую вы бы использовали для такого проекта.

  7. Если вы не создаете прототип для коммерческого предприятия, вы можете рассмотреть возможность запуска проекта с открытым исходным кодом. Это звучит как отличная идея, и я уверен, что она вызовет много интереса.

2 голосов
/ 09 октября 2009
  1. Что-то с поддержкой Ethernet и доступным сетевым стеком может показаться разумным. Вы ищете готовую доску или разрабатываете свою собственную? Многие микроконтроллеры ARM включают встроенные контроллеры Ethernet. Вам необходимо подумать о поддержке сетевого оборудования и о том, требует ли такая поддержка (или даже самого приложения) ОС или ОСРВ.

  2. Компиляторы C распространены практически на всех архитектурах от 8 до 64 бит. Однако если вы используете 32-битную часть с более чем несколькими десятками Кбайт оперативной памяти, C ++ является жизнеспособным и почти таким же вездесущим. Ада - более редкий, менее хорошо поддерживаемый зверь, и вне военного / аэрокосмического пространства был бы необычным выбором ИМО. Вам может понадобиться поддержка сторонних производителей, например, сетевой стек и драйверы Ethernet - те, которые будут доступны для Ada; по разумной цене?

  3. Вам может не потребоваться моделировать оборудование на уровне команд или циклов. Если вы используете C или C ++, вы можете создать большую часть кода на ПК. Преимущество в том, что на ПК уже есть поддержка сети. Многие встроенные цепочки инструментов разработки включают имитаторы команд, некоторые также имитируют встроенную периферию, но их использование ограничено - они не выполняются в реальном времени, и имитация внешнего ввода-вывода может быть сложной и непрактичной.

** [править] ** Относительно C ++ (ответ на комментарий Джейсона С.). Дело не в том, что C ++ обязательно требует больше памяти; Вы платите за функции, которые вы используете. Однако необходимо соблюдать осторожность, поскольку вещи, которые C ++ делает легкими и привлекательными, могут иметь скрытые затраты ресурсов. Я использую C ++ во встроенных системах, но редко, например, использую стандартную библиотеку C ++ - это здорово и экономит много времени, но требует больших затрат с точки зрения ресурсов и детерминизма, которые некоторые системы могут не позволить. Я успешно использовал C ++ на 8- и 16-битных системах, но преимущества не столь критичны, когда используемое подмножество сильно ограничено, а тело кода мало. Я бы, например, не предлагал вам изучать C ++ только для того, чтобы использовать его в 8-битной системе; но если вы уже знаете C ++, продолжайте (с осторожностью). В настоящее время я работаю на устройстве dsPICF33, и отсутствие поддержки C ++ очень расстраивает.

1 голос
/ 09 марта 2011

Существует также PIC32, который основан на процессоре MIPS. Я бы сказал, используйте Ada для его функций реального времени, но вам также придется портировать среду выполнения, чтобы она работала, если только вы не используете язык с динамическим профилем времени выполнения, который также выполним.

1 голос
/ 09 октября 2009

Возможно, вы захотите взглянуть на что-то вроде gumstix . маленький, маломощный, работает под управлением linux, беспроводной и дешевый!

Похоже, есть доступные библиотеки linux OSC. вы определенно можете создать прототип своего приложения на компьютере с Linux и затем кросс-компилировать на встроенной платформе Linux.

...