¿Puedo programar para Arduino sin tener una placa real?


204

Me gustaría comenzar el desarrollo de algunos proyectos básicos de Arduino, pero todavía no tengo una placa Arduino. ¿Hay alguna manera de escribir mi código y emularlo / probarlo usando una computadora de escritorio, así que después de que llegue mi placa, solo tengo que cargar y ejecutar mi proyecto en ella?


1
También estoy interesado, ¿encontraste uno que funcione bien con el IDE de Arduino ? es decir, detectado por el IDE como si fuera una placa, con toda su funcionalidad.
rraallvv

Respuestas:


127

Hay una gran cantidad de simuladores Arduino, muchos productos gratuitos y algunos productos pagados también.

  • El entorno de desarrollo CodeBlocks Arduino incluye un simulador Arduino gratuito, aún en desarrollo pero funcional.
  • Simuino simula los pines Arduino Uno y Mega, no es un simulador realista atractivo, pero funciona.
  • El simulador Arduino basado en Python es otra opción, que juega bien con el IDE oficial
  • Virtronics Simulator para Arduino parece prometedor, pero no veo por qué pagaría $ 14.99 por él, cuando podría comprar uno o más clones de Arduino reales por ese precio.

Si busca, hay muchos otros simuladores Arduino, y se anuncian nuevos, incluso financiados por crowdfunding, todo el tiempo.


10
Como nota, esos no son emuladores sino simuladores , la diferencia más importante es que no ejecuta el código en una máquina virtual AVR (como lo que hace qemu ), sino que vincula las funciones de Arduino al código nativo. Básicamente, no podrán ejecutar cosas AVR nativas y el comportamiento del registro / temporizador no será el mismo que en el hardware AVR real. Vea la diferencia bien explicada en esa respuesta . Sin embargo, es teóricamente posible emular el código de Arduino Due con qemu .
zmo

55
Usted "no ve por qué [uno] pagaría $ 14.99 por él, cuando [uno] podría comprar uno o más clones Arduino reales por ese precio"? Puedo decirte por qué: porque el hardware no tiene un depurador incorporado con las características que puede proporcionar un simulador.
R. Martinho Fernandes

8
El simulador Arduino despertó mi interés, pero desafortunadamente parece no tener archivos relacionados con él en el sitio de sourceforge. ¿Me estoy perdiendo algo o ha quedado obsoleto desde que escribiste tu respuesta?
Greenonline

Como se señaló en el comentario anterior, no hay archivos en el sitio de forja de origen del simulador arduino. ¿Hay un sitio web para él o hay otro simulador que funcione bien en Mac, con IDE oficial?
gordanvij

44
Simuino es terrible, poco profesional e inútil. No tienen idea de cómo codificar. Arduino Simulator no tiene lanzamientos. CodeBlocks es solo para Windows. Simulator for Arduino no es de código abierto.
dhchdhd

81

Me gusta usar circuit.io, también conocido como TinkerCAD, para esto.

Está basado en la nube y tiene algunas características agradables que incluyen diseño de PCB y colaboración.

OMI, la simulación y la capacidad de Arduino son impresionantes e intuitivas.


3
Es muy agradable y limpio y la funcionalidad básica es realmente impresionante, fácil de usar y potente. Sin embargo, muchas partes comunes (incluyendo LCD y sensores de temperatura) aún no son compatibles. Dudo que pueda probar cualquier cosa menos diseños muy básicos en esta etapa. Espero que esto mejore con el tiempo.
Suma

Lo probé rápidamente y me pareció muy impresionante para un producto gratuito. No conozco sus limitaciones en términos de realismo de simulación, ¡pero el editor es muy amigable y solo coloca un led en el código de ranura creado automáticamente con el pin correcto y un bucle intermitente!
Heltonbiker

incluso mi elección sería 123d, pero mi única queja sobre este sitio es que no agregan nuevos componentes. Sería genial si pudieran tener algunos componentes nuevos en su lista
KD.

2
La parte de laboratorios electrónicos del sitio de circuitos.io se ha trasladado a tinkercad.com , donde puede encontrarla en circuitos .
SiggyF

1
Lo he editado y actualizado los enlaces.
sa_leinad

40

Existen muchas opciones en el mundo de los simuladores electrónicos, pero circuitos.io, también conocido como TinkerCAD, es probablemente el más versátil que existe.

  • Puede componer su circuito en una placa virtual que se ve como real.
  • En realidad, puede ver un LED parpadear o presionar un botón durante la simulación en tiempo real en lugar de luchar con formas de onda abstractas.
  • Puede combinar dispositivos digitales como un temporizador 555 o registros de desplazamiento con componentes analógicos (interactivos) como resistencias y LED.
  • Puede programar un Arduino y simular el microcontrolador junto con su circuito analógico a su alrededor.
  • Puede depurar un Arduino: cuando el simulador alcanza su punto de interrupción, la simulación se detiene y puede verificar fácilmente cada variable en su código y cada voltaje o corriente en su circuito.
  • Puede usar y observar diferentes protocolos de comunicación como UART, I2C y SPI.
  • Puede pausar la simulación en el medio de una secuencia I2C colocando un punto de interrupción en el código del controlador (por ejemplo, interrumpir la rutina de servicio para eventos I2C)
  • ¡Es gratis!

Ejemplo

Este es un circuito de ejemplo que tiene un control remoto IR y una pantalla LCD.

Descargo de responsabilidad: Somos los creadores de 123D Circuits


1
¿Cómo juega con el IDE Arduino ? ¿estaría disponible para flashear, depurar, etc.?
rraallvv

14

Tenga en cuenta que ningún simulador reproducirá situaciones de la vida real. Ha habido muchas publicaciones en el foro de Arduino sobre problemas con el código o la electrónica, que resultan ser algo sutil, como:

  • Problemas de tiempo
  • Condiciones de carrera (los eventos relacionados / dependientes no siempre ocurren en el mismo orden)
  • Niveles de tensión, p. Ej. pines de entrada flotantes
  • Impulsar motores que reducen el voltaje de Arduino lo suficiente como para restablecer
  • No tener condensadores de desacoplamiento
  • Los pines de entrada están en un estado "indefinido" (por ejemplo, 2.5V en un pin donde 2 o menos V es BAJO y 3V o más es ALTO)
  • Problemas con los manejadores de interrupciones, como variables que no se declaran volátiles
  • Picos de voltaje por no tener diodos de retorno en los motores
  • El procesador se reinicia una vez que se encienden más de 10 LED porque el consumo de corriente excede la cantidad que el hardware puede suministrar
  • Los manipuladores de interrupciones toman 10 µS para procesar una interrupción cuando solo hay 9 µS disponibles.

Por su naturaleza, los simuladores no pueden reproducir todo esto. Incluso si pudieran, ¿pensaría en alternar la opción "insertar ruido aleatorio de los motores"?


En cuanto a prepararse para que llegue la placa, descargue el IDE y comience la programación. Puede instalar bibliotecas, escribir código y sin errores de sintaxis, organizarlo ordenadamente y, en general, estar listo para el gran día cuando el hardware esté en sus manos.


¡Diviértete y disfruta experimentando con tu Arduino!


13

Puede usar Yenka (gratis para uso doméstico) para simular Arduino, PIX, PIXACE y otras placas con E / S digitales, analógicas y en serie. Proporciona muchos componentes y proyectos de muestra.

Captura de pantalla:

Simulación Yenka Arduino


¿Se puede programar, depurar desde el IDE de Arduino ?
rraallvv

12

Sí, puede, intente usar Proteus ISIS para simular su código ...

Para la emulación completa de Arduino, hay un programa shareware llamado VBB (Virtual BreadBoard) , lo probé también y fue agradable.

Editar: Puede consultar mi tutorial detallado aquí sobre cómo simular en Proteus ISIS


9

Creo que este sitio web tiene una lista de emuladores y simuladores junto con su precio y disponibilidad.

Actualizar:

Como algunos usuarios mencionaron que hay enlaces rotos en ese sitio web, he encontrado una selección de emuladores. Tenga en cuenta que algunas descripciones pueden haberse tomado del enlace mencionado:

  • Emulino : es un software de código abierto basado en Linux en desarrollo temprano que emula MCU específicas de Arduino.

  • Emulare : es un emulador de hardware de uso general. Su objetivo es proporcionar una interfaz central para construir simulaciones electrónicas para el desarrollo de software integrado. En la actualidad, emulare se centra en la línea de microcontroladores ATMega (Arduino UNO tiene el procesador ATMega).

  • SimAVR : es un nuevo simulador AVR para Linux, o cualquier plataforma que use avr-gcc. El simulador carga archivos ELF directamente, e incluso hay una manera de especificar parámetros de simulación directamente en el código emulado usando una sección .elf. Admite la emulación de muchos procesadores ATMega y se menciona que es fácil incluso agregar nuevos.

  • Amtel Studio : Esto no parece mencionar el término emulación, pero es un IDE sofisticado para depurar su código para muchas plataformas, especialmente Arduino. Atmel Studio 7 presenta la importación sin problemas con un solo clic de proyectos creados en el entorno de desarrollo Arduino. Su boceto, incluidas las bibliotecas a las que hace referencia, se importará a Studio 7 como un proyecto C ++. Una vez importado, puede aprovechar todas las capacidades de Studio 7 para ajustar y depurar su diseño. Atmel Studio 7 es totalmente compatible con el potente depurador integrado en la placa Arduino Zero. Para otras placas Arduino, hay disponibles adaptadores de pantalla que exponen conectores de depuración, o cambie a una de las muchas placas Xplained-Mini / PRO disponibles para aprovechar al máximo el ecosistema Atmel HW.

Todavía puede usar simuladores como EasyEDA para probar su código y, en la mayoría de los casos, ejecutarlo en el dispositivo. Pero tenga en cuenta que dada la naturaleza de los componentes electrónicos, es posible que deba proporcionar resistencias externas, condensadores, etc. para obtener los resultados esperados.


El enlace solo responde que no es algo bueno aquí porque serán inútiles cuando el sitio vinculado se caiga. Escriba un resumen y también asegúrese de que su respuesta agregue valor y no solo repita las que ya tenemos.
totymedli

Estoy de acuerdo con @totymedli: si ese enlace se corta, la respuesta se vuelve inútil. Resuma, al menos, los emuladores mencionados y el precio actual. Puede comenzar líneas con un asterisco para hacer viñetas, si eso ayuda.
Nick Gammon

7

Virtualbreadboard tiene una nueva edición VBB4Arduino 'Two Arduino's' que incluye AMBOS un emulador JVM Arduino Y un simulador de conjunto de instrucciones AVR con ejemplos que cubren casi todos los ejemplos de distribución Arduino y un montón de hardware periférico: LCD, WS2812 Neo LEDS, motores, Servo's , Analizador lógico y más.

http://www.virtualbreadboard.com

Descargo de responsabilidad: soy el autor de Virtual Breadboard


6

Pruebe Simulator para Arduino : es el mejor, pero estamos sesgados ya que somos parte del equipo de desarrollo. No todos quieren pagar $ 19.99 aunque casi 5k usuarios de Arduino lo han hecho en los últimos años. Hay una versión gratuita de Simulator for Arduino que se ejecuta durante 45 días o 100 cargas de croquis y 200 líneas como máximo. Pruebe esto y luego compre si puede pagarlo y / o si parece que vale la pena.

Si hay algo que no está bien o que podría mejorarse, infórmenos: todos los demás lo hacen y lo tienen, razón por la cual el Simulador para Arduino ha sido desarrollado en un 99% por ideas de usuarios e informes de errores.

Además, el único otro programa que hemos probado que se acerca a la calidad es Proteus, pero este es un estudio de diseño de PCB completo y parece ser muy costoso, es decir, mucho más de $ 20. Y planeamos ignorar una solicitud reciente del usuario para aumentar el precio a $ 200.


5

Podrías, por ejemplo, usar mi simulador. Es especialmente adecuado para aplicaciones tipo PLC, donde la multitarea se logra mediante la evaluación cíclica de objetos interconectados como circuitos: temporizadores, marcadores, pestillos, disparos y registros. También puede usarlo para simular su sistema controlado, como queda claro a partir de los ejemplos en la descarga. Tiene capacidades de visualización modestas, puede dibujar gráficos de tiempo y le permite acceder y modificar cq force todas las variables en tiempo real durante una simulación en ejecución. También puedes congelar el tiempo. Cuando esté satisfecho con el comportamiento de su control, genera el código C para cargarlo en un Arduino real.

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


1

una forma en que puedo escribir mi código y emularlo / probarlo usando una computadora de escritorio

Si quiere decir "prueba unitaria" usando una computadora de escritorio, puedo ofrecerle una biblioteca que escribí llamada arduino_ci .

No ofrece emulación. Expresarías tus pruebas en código. Por ejemplo, aquí hay una prueba extraída de la documentación de referencia que valida los datos escritos en un puerto:

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]);
  }
}

En la práctica, probablemente no llamaría a las digitalWritefunciones directamente: llamaría a una función en su biblioteca, luego verificaría que el "estado mundial" (representado aquí por la GODMODEconstrucción) coincida con lo que esperaba que hiciera su biblioteca.


0

Sí, puedes, y con bastante facilidad. Hay una maravillosa simulación en línea (completamente gratis) llamada TinkerCAD . Tiene una excelente simulación de placa de pruebas, con partes como transistores, LED, circuitos integrados y Arduino. Puede programar el Arduino y ejecutarlo todo en una simulación en vivo que incluye entradas interactivas (botones, interruptores DIP, etc.).


[Editar: el siguiente texto se refiere a la funcionalidad que se ha movido a Circuits.io , concretamente Eagle PCB ]

Eso no es todo. ¡También incluye esquemas de una pestaña separada para su circuito, y otra pestaña para el diseño de PCB de su circuito de placa! O bien, puede hacer sus esquemas desde cero y hacer su PCB desde allí.

Puede hacer sus diseños de circuitos y puede comprarlos. Puedes hacer todo esto en circuit.io, y no te arriesgas a arruinar tu Arduino real. También tiene indicadores de advertencia en la simulación (por ejemplo, si no usó suficiente resistencia en un LED o un IC).