У меня есть идея встроенного проекта, которую я хочу начать. У меня много вопросов

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

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

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

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

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

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

4 ответа

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

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

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

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

  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. Если вы не создаете прототип для коммерческого предприятия, вы можете рассмотреть возможность запуска проекта с открытым исходным кодом. Это звучит как отличная идея, и я уверен, что это вызовет много интереса.

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

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

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

Другие вопросы по тегам