Могу ли я программировать на Arduino без реальной доски?


204

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


1
Мне тоже интересно, вы нашли тот, который хорошо сочетается с Arduino IDE ? то есть определяется IDE, как будто это плата, со всеми ее функциями.
rraallvv

Ответы:


127

Есть целый ряд симуляторов Arduino, много бесплатных, а также некоторые платные продукты.

  • CodeBlocks среда разработки Arduino включает в себя бесплатный Arduino тренажер, все еще в стадии разработки , но функциональный.
  • Simuino моделирует контакты Arduino Uno и Mega - не очень реалистичный симулятор, но он работает.
  • Arduino Simulator на Python - это еще один вариант, который хорошо сочетается с официальной IDE
  • Virtronics Simulator для Arduino выглядит многообещающе, но я не понимаю, почему я заплатил бы за него $ 14,99, когда я мог бы купить один или несколько реальных клонов Arduino по этой цене

Многие другие симуляторы Arduino будут доступны, если вы будете искать, и все время объявляются новые, даже краудфандинговые.


10
к сведению, это не эмуляторы, а симуляторы , самое важное отличие состоит в том, что он не запускает код на виртуальной машине AVR (как это делает qemu ), а связывает функции Arduino с нативным кодом. Таким образом, в основном они не смогут запускать нативные AVR-файлы, и поведение регистра / таймера не будет таким же, как на реальном оборудовании AVR. Видите разницу, хорошо объясненную в этом ответе . Тем не менее, теоретически возможно эмулировать код Arduino Due с помощью qemu .
Zmo

5
Вы «не понимаете, почему [один] заплатил бы за это $ 14,99, когда [один] мог купить один или несколько реальных клонов Arduino по этой цене»? Я могу сказать вам, почему: потому что в оборудовании нет встроенного отладчика с функциями, которые могут быть предоставлены симулятором.
Р. Мартиньо Фернандес

8
Arduino Simulator пробудила мой интерес, но , к сожалению , кажется , не имеет никаких файлов , связанные с этим на сайте SourceForge. Я что-то упустил или устарел с тех пор, как вы написали свой ответ?
Greenonline

Как отмечено в комментарии выше, на сайте подделки исходников симулятора arduino нет файлов. Есть ли для него веб-сайт или есть другой симулятор, который хорошо работает в Mac, с официальной IDE?
gordanvij

4
Симуино ужасен, непрофессиональн и бесполезен. Они понятия не имеют, как кодировать. Arduino Simulator не имеет релизов. CodeBlocks только для Windows. Симулятор для Arduino не с открытым исходным кодом.
dhchdhd

81

Для этого мне нравится использовать circuit.io aka TinkerCAD .

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

ИМО имитация и возможности Arduino впечатляют и интуитивно понятны.


3
Это очень красиво и чисто, а базовая функциональность действительно впечатляет, проста в использовании и мощна. Однако многие общие части (включая ЖК-дисплей и датчики температуры) пока не поддерживаются. Я сомневаюсь, что на этом этапе вы можете протестировать что угодно, кроме самых простых проектов. Я надеюсь, что со временем это станет лучше.
Сума

Я быстро попробовал и нашел очень впечатляющим для бесплатного продукта. Я не знаю его ограничений с точки зрения реалистичности симуляции, но редактор очень дружелюбен и просто помещает светодиод в соответствующий слот, автоматически создавая код с правильным пин-кодом и мигающей петлей!
Хелтонбайкер

даже мой выбор был бы 123d, но моя единственная жалоба на этот сайт - они не добавляют новые компоненты. Было бы здорово, если бы в их списке были новые компоненты
KD.

2
Электронных лаборатории часть circuits.io сайта переехала в tinkercad.com , где вы можете найти его под цепями .
SiggyF

1
Я отредактировал его и обновил ссылки.
sa_leinad

40

В мире электронных симуляторов существует множество опций, но, по всей видимости, схема. TinkerCAD , вероятно, самая универсальная.

  • Вы можете создать свою схему на виртуальном макете, который выглядит как настоящий.
  • На самом деле вы можете наблюдать мигание светодиода или нажать кнопку во время симуляции в реальном времени, а не бороться с абстрактными волнами.
  • Вы можете комбинировать цифровые устройства, такие как таймер 555 или регистры сдвига, с (интерактивными) аналоговыми компонентами, такими как резисторы и светодиоды.
  • Вы можете запрограммировать Arduino и моделировать микроконтроллер вместе с вашей аналоговой схемой вокруг него.
  • Вы можете отлаживать Arduino: когда симулятор достигает вашей точки останова, симуляция приостанавливается, и вы можете легко проверить каждую переменную в вашем коде и каждое напряжение или ток в вашей цепи.
  • Вы можете использовать и соблюдать различные протоколы связи, такие как UART, I2C и SPI.
  • Вы можете приостановить моделирование в середине последовательности I2C, поместив точку останова в коде драйвера (например, подпрограмма обработки прерываний для событий I2C)
  • Это бесплатно!

пример

Это пример схемы с ИК-пультом и ЖК-экраном.

Отказ от ответственности: мы производители 123D Circuits


1
Как это работает с Arduino IDE ? будет ли он доступен для прошивки, отладки и т. д.?
rraallvv

14

Имейте в виду, что никакой симулятор не будет воспроизводить реальные ситуации. На форуме Arduino было много сообщений о проблемах с кодом или электроникой, которые оказываются не такими тонкими, как:

  • Сроки проблемы
  • Условия гонки (связанные / зависимые события не всегда происходят в одном и том же порядке)
  • Уровни напряжения, например плавающие входные контакты
  • Приводные двигатели, которые сбрасывают напряжение Arduino настолько, что оно сбрасывается
  • Не имея развязывающих конденсаторов
  • Входные контакты находятся в «неопределенном» состоянии (например, 2,5 В на контакте, где 2 или менее V - НИЗКИЙ, а 3 В или более - ВЫСОКИЙ)
  • Проблемы с обработчиками прерываний, такие как переменные, не объявленные как volatile
  • Пики напряжения из-за отсутствия диодов обратного хода на двигателях
  • Процессор перезагружается при включении более 10 светодиодов, поскольку потребление тока превышает количество, которое может предоставить оборудование
  • Обработчики прерываний требуют 10 мкс для обработки прерывания, когда доступно только 9 мкс.

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


Что касается подготовки к прибытию платы, загрузите IDE и начните программирование. Вы можете установить библиотеки, написать код без синтаксических ошибок, аккуратно организовать его и быть готовым к большому дню, когда аппаратное обеспечение находится в ваших руках.


Получайте удовольствие и наслаждайтесь экспериментированием со своим Arduino!


13

Вы можете использовать Yenka (бесплатно для домашнего использования) для симуляции Arduino, PIX, PIXACE и других плат с цифровым, аналоговым и последовательным вводом / выводом. Он предоставляет множество компонентов и примеров проектов.

Скриншот:

Енка Ардуино симуляция


Можно ли его запрограммировать, отладить в Arduino IDE ?
rraallvv

12

Да, вы можете попробовать использовать Proteus ISIS для имитации вашего кода ...

Для полной эмуляции Arduino есть условно-бесплатная программа VBB (Virtual BreadBoard) , я тоже попробовал, и это было приятно.

Изменить: вы можете проверить мой подробный учебник здесь о том, как симулировать на Proteus ISIS


9

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

Обновить:

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

  • Emulino : программное обеспечение на основе Linux с открытым исходным кодом, находящееся на ранней стадии разработки и эмулирующее микроконтроллеры для Arduino.

  • Emulare : аппаратный эмулятор общего назначения. Он призван обеспечить центральный интерфейс для создания электронных симуляторов для разработки встроенного программного обеспечения. В настоящее время emulare ориентирована на линейку микроконтроллеров ATMega (Arduino UNO имеет процессор ATMega).

  • SimAVR : это новый симулятор AVR для Linux или любой платформы, которая использует avr-gcc. Симулятор загружает файлы ELF напрямую, и есть даже способ указать параметры симуляции непосредственно в эмулируемом коде, используя раздел .elf. Он поддерживает эмуляцию многих процессоров ATMega и упоминается, что легко даже добавлять новые.

  • Amtel Studio : похоже, здесь не упоминается термин эмуляция, но это сложная среда IDE для отладки вашего кода для многих платформ, особенно Arduino. Atmel Studio 7 обеспечивает простой импорт проектов, созданных в среде разработки Arduino, одним щелчком мыши. Ваш эскиз, включая все библиотеки, на которые он ссылается, будет импортирован в Studio 7 как проект C ++. После импорта вы можете использовать все возможности Studio 7 для точной настройки и отладки вашего проекта. Atmel Studio 7 полностью поддерживает мощный встроенный отладчик на плате Arduino Zero. Для других плат Arduino доступны экранирующие адаптеры, которые предоставляют отладочные разъемы, или переключитесь на одну из многих доступных плат Xplained-Mini / PRO, чтобы полностью использовать экосистему Atmel HW.

Вы все еще можете использовать симуляторы, такие как EasyEDA, для тестирования своего кода и в большинстве случаев иметь возможность запускать его на устройстве. Но учтите, что с учетом характера электронных компонентов вам, возможно, придется предоставить внешние резисторы, конденсаторы и т. Д., Чтобы получить ожидаемые результаты.


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

Я согласен с @totymedli - если эта ссылка не работает, ответ становится бесполезным. Пожалуйста, суммируйте, по крайней мере, упомянутые эмуляторы и текущую цену. Вы можете начать строки со звездочки, чтобы сделать маркеры, если это поможет.
Ник Гэммон

7

Virtualbreadboard имеет новую редакцию VBB4Arduino 'Two Arduino's', которая включает ОБА эмулятор JVM Arduino И симулятор набора инструкций AVR с примерами, охватывающими почти все примеры дистрибутива Arduino, и набор периферийного оборудования - ЖК-дисплеи, WS2812 Neo LEDS, Motors, Servo's. , Логический анализатор и многое другое.

http://www.virtualbreadboard.com

Отказ от ответственности: я автор виртуального макета


6

Попробуйте Simulator для Arduino - он лучший, но тогда мы предвзяты, так как являемся частью команды разработчиков. Не все хотят платить $ 19,99, хотя почти 5 тысяч пользователей Arduino получили за последние несколько лет. Существует бесплатная версия симулятора для Arduino, которая работает в течение 45 дней или 100 эскизов и максимум 200 строк. Попробуйте это, а затем купите, если можете себе это позволить и / или если это кажется стоящим.

Если есть что-то не то или что можно улучшить, дайте нам знать - все так и делают, поэтому Simulator for Arduino был на 99% построен на основе пользовательских идей и сообщений об ошибках.

Кроме того, единственная другая программа, которую мы попробовали, которая близка по качеству, - это Proteus, но это полноценная студия дизайна печатных плат, которая выглядит очень дорогой, т. Е. Намного дороже 20 долларов. И мы планируем игнорировать недавний запрос пользователя на повышение цены до 200 долларов.


5

Например, вы можете использовать мой симулятор. Это особенно подходит для приложений, подобных ПЛК, где многозадачность достигается путем циклической оценки взаимосвязанных схемоподобных объектов: таймеров, маркеров, защелок, одноразовых импульсов и регистров. Вы также можете использовать его для симуляции вашей управляемой системы, что становится ясно из примеров в загрузке. Он обладает скромными возможностями визуализации, может рисовать временные диаграммы и позволяет вам получать и изменять cq force все переменные в реальном времени во время выполнения симуляции. Также вы можете заморозить время. Когда вы удовлетворены поведением вашего элемента управления, он генерирует код C для загрузки в реальный Arduino.

https://pypi.python.org/pypi/SimPyLC


1

способ, которым я могу написать свой код и эмулировать / протестировать его с помощью настольного компьютера

Если вы имеете в виду возможность «модульного тестирования» с помощью настольного компьютера, я могу предложить написанную мной библиотеку под названием arduino_ci .

Это не предлагает эмуляцию. Вы бы выразили свои тесты в коде. Например, вот тест, извлеченный из справочной документации, которая проверяет данные, записанные в порт:

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // pin will start LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // pin history is queued in case we want to analyze it later.
  // we expect 6 values in that queue.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // convert history queue into an array so we can verify it.
  // we expect to find 6 values: the 5 we set, plus the initial LOW
  // and this is where/how we assert that
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // verify each element
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

На практике вы, вероятно, не будете вызывать digitalWriteфункции напрямую - вы вызовете функцию в своей библиотеке, а затем убедитесь, что «мировое состояние» (представленное здесь GODMODEконструкцией) соответствует тому, что вы ожидали от вашей библиотеки.


0

Да, вы можете и довольно легко. Существует замечательная онлайн-симуляция (абсолютно бесплатная) под названием TinkerCAD . Он имеет отличный макет с такими деталями, как транзисторы, светодиоды, микросхемы и Arduino. Вы можете запрограммировать Arduino и запускать все это в режиме реального времени, который включает интерактивные входы (кнопки, DIP-переключатели и т. Д.).


[Редактировать: следующий текст относится к функциональности, которая была перемещена в Circuits.io , а именно Eagle PCB ]

Это не все. Он также включает в себя отдельную вкладку схемы для вашей схемы и еще одну вкладку для проектирования печатной платы вашей схемы! Или вы можете просто сделать свою схему с нуля и сделать свою печатную плату оттуда.

Вы можете сделать свои схемы и купить их. Вы можете сделать все это в Cirits.io, и вы не рискуете испортить ваш настоящий Arduino. В симуляции также есть предупреждающие индикаторы (например, если вы не использовали достаточное сопротивление на светодиодах или микросхемах).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.