Можно ли программировать для Ардуино без реальной платы?
Я хотел бы начать разработку некоторых базовых проектов Arduino, но у меня пока нет платы Arduino. Есть ли способ написать свой код и эмулировать/протестировать его с помощью настольного компьютера, чтобы после того, как моя плата прибудет, я просто смогу загрузить и запустить на ней свой проект?
@totymedli, 👍244
Обсуждение13 ответов
Лучший ответ:
Существует множество симуляторов 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
Да, вы можете, попробуйте использовать Proteus ISIS для моделирования вашего кода...
Для полной эмуляции Arduino существует условно-бесплатная программа под названием VBB (виртуальный макет), я тоже пробовал, и это было приятно.
Изменить: Вы можете проверить мой подробный учебник здесь о том, как имитировать Proteus ISIS
Мне нравится использовать схемы.ио он же 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
Вы можете использовать Yenka (бесплатно для домашнего использования) для имитации Arduino, PIX, PIXACE и других плат с цифровым, аналоговым и последовательным вводом / выводом. Он предоставляет множество компонентов и примеров проектов.
Скриншот:
Можно ли его запрограммировать, отладить с помощью [Arduino IDE](https://www.arduino.cc/en/Main/Software)?, @rraallvv
Virtualbreadboard имеет новое издание VBB4Arduino "Два Arduino", которое включает В себя КАК эмулятор Arduino JVM, так и симулятор набора инструкций AVR с примерами, охватывающими почти все примеры распространения Arduino, и кучу периферийного оборудования - ЖК-дисплеи, светодиоды WS2812 Neo, Двигатели, сервоприводы, Логический анализатор и многое другое.
http://www.virtualbreadboard.com
Отказ от ответственности: Я являюсь автором виртуального макета
Имейте в виду, что ни один симулятор не будет воспроизводить реальные жизненные ситуации. На форуме Arduino было много сообщений о проблемах с кодом или электроникой, которые оказались чем-то неуловимым, например:
- Проблемы со сроками
- Условия гонки (связанные/зависимые события не всегда происходят в одном и том же порядке)
- Уровни напряжения, например, плавающие входные контакты
- Приводные двигатели, которые снижают напряжение Arduino настолько, что оно сбрасывается
- Не имеющие развязывающих конденсаторов
- Входные контакты находятся в "неопределенном" состоянии (например, 2,5 В на выводе, где 2 или менее В-НИЗКИЙ, а 3 В или более-ВЫСОКИЙ)
- Проблемы с обработчиками прерываний, такие как переменные, не объявленные изменчивыми
- Скачки напряжения из - за отсутствия обратных диодов на двигателях
- Процессор, сбросивший один раз более 10 светодиодов, включается, потому что текущее напряжение превышает количество, которое может обеспечить оборудование
- Обработчикам прерываний требуется 10 мкс для обработки прерывания, когда доступно только 9 мкс.
По своей природе симуляторы не могут воспроизвести все это. Даже если бы они могли, не подумали бы вы включить опцию "вставить случайный шум из двигателей"?
Что касается подготовки к поступлению платы, скачайте IDE и начните программировать. Вы можете установить библиотеки, написать код без синтаксических ошибок, аккуратно организовать его и в целом быть готовым к важному дню, когда оборудование будет в ваших руках.
Получайте удовольствие и наслаждайтесь экспериментами с вашим Arduino!
Это хороший контрольный список для устранения неполадок, когда схема ведет себя неправильно и кажется "логически" правильной., @misterbee
Есть один момент, за который я хотел бы поблагодарить вас. Эффект отскока кнопок создает так много проблем для начинающих, если их не устранить. вдохновленный вашим списком, я попросил добавить эту функцию в [wokwi](https://wokwi.com) и теперь симулятор поддерживает [отскок](https://wokwi.com/arduino/projects/288681423014986248) функция в кнопках!, @ArduinoFan
В мире электронных симуляторов существует множество вариантов, кроме схем.io, он же TinkerCAD, вероятно, является самым универсальным из существующих.
- Вы можете создать свою схему на виртуальном макете, который выглядит точно так же, как настоящий.
- Вы действительно можете наблюдать мигание светодиода или нажимать кнопку во время моделирования в реальном времени, а не бороться с абстрактными формами сигналов.
- Вы можете комбинировать цифровые устройства, такие как таймер 555 или регистры сдвига, с (интерактивными) аналоговыми компонентами, такими как резисторы и светодиоды.
- Вы можете запрограммировать Arduino и смоделировать микроконтроллер вместе с аналоговой схемой вокруг него.
- Вы можете отлаживать Arduino: когда симулятор достигает точки останова, моделирование приостанавливается, и вы можете легко проверить каждую переменную в вашем коде и каждое напряжение или ток в вашей цепи.
- Вы можете использовать и соблюдать различные протоколы связи, такие как UART, I2C и SPI.
- Вы можете приостановить моделирование в середине последовательности I2C, указав точку останова в коде драйвера (например, процедура прерывания обслуживания для событий I2C)
- Это БЕСПЛАТНО!
Это пример схемы, которая имеет ИК-пульт дистанционного управления и ЖК-экран.
Отказ от ответственности: Мы являемся создателями 123D схем
Как это работает с [Arduino IDE](https://www.arduino.cc/en/Main/Software)? будет ли он доступен для прошивки, отладки и т. Д.?, @rraallvv
Вы могли бы, например, использовать мой симулятор. Он особенно подходит для приложений, подобных ПЛК, где многозадачность достигается циклической оценкой взаимосвязанных объектов, похожих на схемы: Таймеров, Маркеров, Защелок, Шотов и Регистров. Вы также можете использовать его для имитации своей управляемой системы, как видно из примеров в загрузке. Он обладает скромными возможностями визуализации, может рисовать временные диаграммы и позволяет вам получать доступ и изменять c.q. принудительно все переменные в режиме реального времени во время выполнения моделирования. Также вы можете заморозить время. Когда вы удовлетворены поведением своего элемента управления, он генерирует код C, который будет загружен в настоящий Arduino.
https://pypi.python.org/pypi/SimPyLC
Я полагаю, что на этом сайте есть список как эмуляторов, так и симуляторов, а также их цена и доступность.
Обновление:
Поскольку некоторые пользователи упомянули, что на этом сайте есть неработающие ссылки, вот подборка эмуляторов, которые я нашел. Обратите внимание, что некоторые описания, возможно, были взяты из указанной ссылки:
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
Да, вы можете, и довольно легко. Существует замечательный онлайн-симулятор (совершенно бесплатный) под названием TinkerCAD. Он имеет отличную имитацию макетной платы с такими деталями, как транзисторы, светодиоды, микросхемы и Arduino. Вы можете запрограммировать Arduino и запустить все это в режиме реального времени, который включает интерактивные входы (кнопки, DIP-переключатели и т.д.).
[Редактировать: Следующий текст относится к функциям, которые были перенесены в Circuits.io, а именно печатная плата Eagle]
И это еще не все. Он также включает в себя отдельную вкладку схемы для вашей схемы и еще одну вкладку для проектирования печатной платы вашей макетной платы! Или вы можете просто создать свои схемы с нуля и оттуда изготовить печатную плату.
Вы можете сделать свои схемы и купить их. Вы можете сделать все это в circuits.io, и ты не рискуешь испортить свой настоящий Arduino. Он также имеет предупреждающие индикаторы в моделировании (например, если вы не использовали достаточное сопротивление на светодиоде или микросхеме).
способ, которым я могу написать свой код и эмулировать/протестировать его с помощью настольного компьютера
Если вы имеете в виду возможность "модульного тестирования" с помощью настольного компьютера, я могу предложить библиотеку, которую я написал, под названием 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
) соответствует тому, что вы ожидали от своей библиотеки.
Обновление 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. Мы добавляем новые элементы один за другим. Это бесплатно, и мы приглашаем вас попробовать его.
Пожалуйста, оставьте комментарий, чтобы добавить больше библиотек или функций, а также
Альтернативой симуляторам являются сервисы, аналогичные онлайн-компиляторам, таким как coliru, которые позволяют пользователям создавать и запускать свой код в удаленной системе. Этот подход имеет те же ограничения, что и онлайн-компиляторы:
Конфигурация и состояние оборудования не могут быть изменены удаленно, за исключением явно определенных интерфейсов.
Изменения состояния аппаратного обеспечения, опять же, невозможно наблюдать, за исключением явно определенных интерфейсов.
Как правило, большинство онлайн-компиляторов предоставляют пользователям доступ к командной строке и выходу из процесса. На Arduino предоставление удаленного доступа к последовательному порту обеспечит аналогичную степень контроля: пользователи смогут наблюдать и управлять своим запущенным скетчем через UART, но не смогут подключать/отсоединять провода, нажимать кнопки, воздействовать на внешние датчики и т.д.
Удивительно, но я не смог найти ни одного такого онлайн - сервиса, поэтому в итоге написал свою собственную ферму-HW. Если у вас есть веб-сервер и ардуино, к которым вы можете подключиться, вы можете установить на него ферму HW и предоставить людям доступ к этим ардуино через веб-интерфейс. Я также сам размещаю такой сервер, на котором есть один Arduino Mega с кучей подключенных к нему устройств I2C. Вы можете попробовать это, но не ожидайте, что это будет онлайн и доступно постоянно.
- Как скомпилировать программу Arduino для настольного ПК
- Как выполнить отладку на чипе с помощью Arduino?
- Есть ли симулятор Arduino или эмулятор, который работает на OS X?
- SPI: проверить, подключив MOSI к MISO
- есть ли какие-нибудь настоящие эмуляторы arduino (чтобы я мог загружать и запускать на нем машинный код)
- Эмуляция RFID-метки
- Ardutester Millenium I2c Lcd ничего не показывает!
- Эмуляция клавиатуры
Мне тоже интересно, нашли ли вы тот, который хорошо работает с [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