Можно ли программировать для Ардуино без реальной платы?

testing emulation

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

, 👍243

Обсуждение

Мне тоже интересно, нашли ли вы тот, который хорошо работает с [Arduino IDE](https://www.arduino.cc/en/Main/Software)? то есть обнаруживается IDE так, как если бы это была плата, со всеми ее функциональными возможностями., @rraallvv

пожалуйста, ответьте на это https://arduinoprosto.ru/q/81780/72908, @eToll Systems

Меня интересует [бесплатный онлайн симулятор Arduino Wokwi](https://www.wokwi.com) по тем причинам, что он работает как на Windows, MAC, так и на мобильных браузерах. Он работает на основе AVR8js двигателя, а также сделан с открытым исходным кодом. вы можете просмотреть это?, @ArduinoFan


13 ответов


Лучший ответ:

140

Существует множество симуляторов Arduino, многие из которых бесплатны, а также некоторые платные продукты.

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

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

,

как примечание, это не *эмуляторы*, а *симуляторы*, самое важное отличие заключается в том, что он не запускает код на виртуальной машине AVR (например, что делает *qemu*), но связывает функции Arduino с собственным кодом. Таким образом, в основном они не смогут запускать собственные функции AVR, и поведение регистрации/таймера не будет таким же, как на реальном оборудовании AVR. Видите разницу, хорошо объясненную в [этом ответе](http://programmers.stackexchange.com/a/134783/70303). Однако теоретически возможно эмулировать код Arduino Due с помощью [qemu](https://github.com/myokota/qemu-cortex-m3)., @zmo

Вы "не понимаете, почему [один] заплатил бы за это 14,99 доллара, когда [один] мог бы купить один или несколько реальных клонов Arduino по этой цене"? Я могу сказать вам, почему: потому что аппаратное обеспечение не имеет встроенного отладчика с функциями, которые могут быть предоставлены симулятором., @R. Martinho Fernandes

[Симулятор Arduino](http://sourceforge.net/projects/arduinosim/) вызвал у меня интерес, но, к сожалению, на сайте sourceforge, похоже, нет файлов, связанных с ним. Я что-то упускаю или это стало устаревшим с тех пор, как вы написали свой ответ?, @Greenonline

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

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


13

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

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

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

,

93

Мне нравится использовать схемы.ио он же TinkerCAD для этого.

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

IMO моделирование и возможности Arduino впечатляют и интуитивно понятны.

,

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

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

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

Часть электронных лабораторий [circuits.io](http://circuits.io) сайт переместился в [tinkercad.com](https://www.tinkercad.com), где вы можете найти его в разделе **схемы**., @SiggyF

Ответ устарел, @thg

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

[бесплатный симулятор Arduino](https://wokwi.com) является **бесплатным**, основанным на открытом исходном коде [AVR8js](https://github.com/wokwi/avr8js), и работает на Android, iPhone, Windows и Linux. Не могли бы вы, пожалуйста, сначала проверить это, а затем обновить свой ответ. Это помогает охватить так много пользователей Arduino, которые ищут хороший симулятор arduino с [примерами](https://wokwi.com/arduino/libraries). Во [многих аспектах](https://www.hackster.io/write2puneeth/tinkercad-versus-wokwi-arduino-simulator-5ab08d), это лучше, чем Tinkercad., @ArduinoFan


14

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

Скриншот:

Yenka Arduino simulation

,

Можно ли его запрограммировать, отладить с помощью [Arduino IDE](https://www.arduino.cc/en/Main/Software)?, @rraallvv


8

Virtualbreadboard имеет новое издание VBB4Arduino "Два Arduino", которое включает В себя КАК эмулятор Arduino JVM, так и симулятор набора инструкций AVR с примерами, охватывающими почти все примеры распространения Arduino, и кучу периферийного оборудования - ЖК-дисплеи, светодиоды WS2812 Neo, Двигатели, сервоприводы, Логический анализатор и многое другое.

http://www.virtualbreadboard.com

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

,

18

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

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

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


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


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

,

Это хороший контрольный список для устранения неполадок, когда схема ведет себя неправильно и кажется "логически" правильной., @misterbee

Есть один момент, за который я хотел бы поблагодарить вас. Эффект отскока кнопок создает так много проблем для начинающих, если их не устранить. вдохновленный вашим списком, я попросил добавить эту функцию в [wokwi](https://wokwi.com) и теперь симулятор поддерживает [отскок](https://wokwi.com/arduino/projects/288681423014986248) функция в кнопках!, @ArduinoFan


44

В мире электронных симуляторов существует множество вариантов, кроме схем.io, он же TinkerCAD, вероятно, является самым универсальным из существующих.

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

Example

Это пример схемы, которая имеет ИК-пульт дистанционного управления и ЖК-экран.

Отказ от ответственности: Мы являемся создателями 123D схем

,

Как это работает с [Arduino IDE](https://www.arduino.cc/en/Main/Software)? будет ли он доступен для прошивки, отладки и т. Д.?, @rraallvv


5

Вы могли бы, например, использовать мой симулятор. Он особенно подходит для приложений, подобных ПЛК, где многозадачность достигается циклической оценкой взаимосвязанных объектов, похожих на схемы: Таймеров, Маркеров, Защелок, Шотов и Регистров. Вы также можете использовать его для имитации своей управляемой системы, как видно из примеров в загрузке. Он обладает скромными возможностями визуализации, может рисовать временные диаграммы и позволяет вам получать доступ и изменять c.q. принудительно все переменные в режиме реального времени во время выполнения моделирования. Также вы можете заморозить время. Когда вы удовлетворены поведением своего элемента управления, он генерирует код C, который будет загружен в настоящий Arduino.

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

,

11

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

Обновление:

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

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

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

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

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

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

,

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

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


1

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


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

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

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

,

3

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

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

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

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // выход начинается как LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // история выходов помещается в очередь на случай, если мы захотим проанализировать ее позже.
  // мы ожидаем, что в этой очереди будет 6 значений.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // преобразуйте очередь истории в массив, чтобы мы могли ее проверить.
  // мы ожидаем найти 6 значений: 5, которые мы установили, плюс начальный МИНИМУМ
  // и вот где/как мы утверждаем, что
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // проверьте каждый элемент
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

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

,

14

Обновление 2:

Я работаю с новым симулятором Wokwi Arduino. Симулятор Wokwi Arduino основан на движке AVR8js, который сделан с открытым исходным кодом. Вы можете найти ссылку здесь

Ниже приведены основные особенности тренажера

• Поддержка нескольких файловых проектов

• Поддержка библиотек Arduino

• Все, что компилируется в Arduino IDE, будет компилироваться на симуляторе

• Поддерживается всеми браузерами

• Компилируется с новейшей Arduino IDE

• Поддержка FastLED и многих других периферийных устройств

Не требуется никакой загрузки или установки

Легко поделиться кодом и проектом всего одним щелчком мыши.

Поддерживается Автозаполнение смарт - кода , автоматическое форматирование кода

• Предоставляет демонстрационные примеры стандартной библиотеки

• Проект может быть скомпилирован при запуске на мобильных браузерах, а также

• Пытается быть ближе к реальным схемам – Пример – Кнопка отскока, как в реальном оборудовании

• Поддержка Arduino Mega, Arduino Nano, Arduino UNO, ATtiny85

• Поддерживает выполнение инструкций по сборке

• Обеспечивает питание светодиодов и функции FPS для проектов FastLED

• Поддерживает множество периферийных устройств Arduino для проекта – ультразвуковые датчики, ползунковые переключатели, матрицу NeoPixel, потенциометр, сервомоторы, SSD1306 OLED-дисплеи, датчики температуры и влажности, поворотный номеронабиратель, мембранную клавиатуру и многое другое

Последовательный монитор также поддерживается

Несколько Примеров Arduino

Игра Simon с использованием ATtiny85, кнопок, зуммера и светодиодов

Ссылка на проект: https://wokwi.com/arduino/projects/285525640477671948

• Обратите внимание на использование одних и тех же контактов как для выхода, так и для входа • Код может быть написан для ATtiny85 так же, как он написан для Arduino


Слайд-переключатель демонстрационный пример

Ссылка на проект: https://wokwi.com/arduino/projects/292033853022798344

Переключатель скольжения можно также использовать как ВКЛЮЧЕНЫЙ-ВЫКЛЮЧЕНЫЙ переключатель


Простой Пример Фортепиано

Ссылка на проект: https://wokwi.com/arduino/projects/291958456169005577

Воспроизведение нескольких заметок на основе встроенной библиотеки Arduino


Max7219 LED dot matrix Arduino UNO пример проекта

Ссылка на проект: https://wokwi.com/arduino/projects/290144516831183368

Поддерживает конкатенацию модулей Max7219


Пример ультразвукового датчика HC-SR04

Ссылка на проект: https://wokwi.com/arduino/projects/290056311044833800

Очень полезный проект для построения нескольких интересных проектов (РАДАРНОЕ 3D картирование и многое другое )


Пример функции Bounce feature в симуляторе Arduino

Ссылка на проект: https://wokwi.com/arduino/projects/288332630964830728

Отказов является основной проблемой в большинстве начинающих проектов. Это может создать несколько входных триггеров, нежелательный шум и делает проект плохим. Иногда может быть трудно идентифицировать без надлежащих инструментов отладки или измерения. Знание о подпрыгивании в переключателях и советы и рекомендации о том, как его решить, - интересное исследование для каждого начинающего любителя.


Пример дисплея LCD1602 в симуляторе Wokwi Arduino

Ссылка на проект: https://wokwi.com/arduino/projects/287736345015616008

LCD1602 является одним из лучших HMI и был здесь в течение длительного времени. Он помогает в отладке проектов во время выполнения, мы также можем использовать его вместе с клавиатурой, чтобы сделать полностью практичный HMI (человеко-машинный интерфейс). Он очень прост в использовании и легко усваивается в программировании.


Пример FastLED с FPS и светодиодной мощностью

Ссылка на проект: https://wokwi.com/arduino/projects/287736345015616008

Вторая ссылка: https://wokwi.com/arduino/projects/281176629596652040

FastLED-это вторая революция в истории светодиодов. Это никогда не было проще, чем сейчас, чтобы запрограммировать несколько светодиодов только с одним выводом Arduino. С растущим сообществом FastLED (reddit, wokwi -Discordи другие) и примерами и библиотеками FastLED это один из самых важных элементов в симулятореwokwi .


Датчик температуры и влажности, пример модуля часов реального времени

Ссылка на проект: https://wokwi.com/arduino/projects/287736345015616008


Пример последовательного монитора

Ссылка на проект: https://wokwi.com/arduino/projects/286653669554782732

Последовательный плоттер - очень полезная функция при работе с аналоговой периферией.


  • Библиотека Adafruit SSD1306 Adafruit SSD1306
  • Библиотека датчиков Adafruit DHTБиблиотека
  • Другая библиотека DHT от GitHub
  • Пример библиотеки FastLED
  • SSD1306 GitHub пример
  • Arduino Servo Библиотека
  • Библиотека планировщика задач
  • Саймон Игра, Электронный Безопасный Пример
  • LCDGFX на примере Arduino
  • Примеры библиотек SSD1306

Симулятор Arduino является бесплатным для использования сообществом Arduino. Мы добавляем новые элементы один за другим. Это бесплатно, и мы приглашаем вас попробовать его.

Пожалуйста, оставьте комментарий, чтобы добавить больше библиотек или функций, а также

,

1

Альтернативой симуляторам являются сервисы, аналогичные онлайн-компиляторам, таким как coliru, которые позволяют пользователям создавать и запускать свой код в удаленной системе. Этот подход имеет те же ограничения, что и онлайн-компиляторы:

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

  • Изменения состояния аппаратного обеспечения, опять же, невозможно наблюдать, за исключением явно определенных интерфейсов.

Как правило, большинство онлайн-компиляторов предоставляют пользователям доступ к командной строке и выходу из процесса. На Arduino предоставление удаленного доступа к последовательному порту обеспечит аналогичную степень контроля: пользователи смогут наблюдать и управлять своим запущенным скетчем через UART, но не смогут подключать/отсоединять провода, нажимать кнопки, воздействовать на внешние датчики и т.д.

Удивительно, но я не смог найти ни одного такого онлайн - сервиса, поэтому в итоге написал свою собственную ферму-HW. Если у вас есть веб-сервер и ардуино, к которым вы можете подключиться, вы можете установить на него ферму HW и предоставить людям доступ к этим ардуино через веб-интерфейс. Я также сам размещаю такой сервер, на котором есть один Arduino Mega с кучей подключенных к нему устройств I2C. Вы можете попробовать это, но не ожидайте, что это будет онлайн и доступно постоянно.

,