Simule diseños PIC y Arduino AVR sin la nube
Siempre me han gustado los simuladores. Claro, no hay reemplazo para construir un circuito, pero ciertamente es útil si puede solucionar muchos problemas fáciles antes de comenzar a soldar y fabricar una PCB. He hecho bastantes publicaciones en LTSpice y también me gusta mucho el simulador de Falstad en el navegador. Sin embargo, ambos no le ayudarán mucho si un microcontrolador es una parte importante de su proyecto. Recientemente encontré un proyecto de código abierto llamado Simulide, que tiene algunos problemas, pero hace un trabajo creíble de simulación mixta. Le permite simular circuitos analógicos, LCD, motores paso a paso y servomotores y puede incluir procesadores PIC o AVR programables (incluido Arduino) en su simulación.
El software está disponible para Windows o Linux y la emulación AVR / Arduino está incorporada. Para el PIC en Linux, necesita un simulador de software externo que pueda instalar fácilmente. Se proporciona con la versión de Windows. Puede ver uno de varios videos disponibles en una edición anterior de la herramienta a continuación. También hay una ventana que puede compilar tu código Arduino e incluso depurarlo, aunque eso casi siempre me falla después de unos minutos de trabajo. Sin embargo, como puede ver en la imagen de arriba, es capaz de lanzar código Arduino serio siempre que no depure.
Parece y suena emocionante, ¿verdad? Lo es, pero asegúrese de guardar con frecuencia. En Linux, parece fallar con bastante frecuencia incluso si no depura. También adolece de otros problemas menores, como olvidar cómo mover componentes. Guardar, cerrar el programa y volver a abrirlo parece arreglar eso. Además, asumimos que, según se informa, aplastarán los errores. Uno de mis bloques principales se resolvió eliminando el IDE de Arduino predeterminado (antiguo) y asegurándome de que el más reciente estuviera en camino. Pero el accidente fue común y pareció más o menos accidental. Parecía que la mayoría de las veces tenía fallas en Linux con bloqueos ocasionales, pero en Windows se congelaba, pero no fallaba por completo.
Operación básica
La operación básica es casi lo que cabría esperar. La ventana se divide a grandes rasgos en tres ventanas. El panel de la izquierda muestra por defecto una paleta de componentes. También puede utilizar la pestaña vertical de la izquierda para seleccionar una memoria, un inspector de propiedades o un explorador de archivos.
El vidrio central es donde puede dibujar su circuito y parece una hoja amarilla de papel con una cuadrícula. En la parte superior hay botones de archivo que hacen cosas como guardar y cargar archivos.
Verá una fila similar de botones encima de la ventana del extremo derecho. Este es un editor de código y una ventana de depuración que puede interactuar con el IDE de Arduino. Parece que también puede interactuar con GCBasic para el PIC, aunque no lo he probado.
Arrastra componentes de izquierda a circuito. El cableado no es una operación clara. Deje que el mouse flote sobre la conexión hasta que el cursor haga una cruz. Haga clic y luego arrastre hasta el punto de conexión y vuelva a hacer clic. A veces, el programa se olvida de crear el cursor en cruz y luego tuve que guardar y reiniciar.
La mayoría de los componentes son como usted cree. Hay algo de diversión, incluido un teclado, una matriz de LED, pantallas LCD de texto y gráficos, e incluso motores de paso y servomotores. También encontrará varias funciones lógicas, circuitos integrados de la serie 7400, y hay herramientas de comentarios como texto y cuadros en la parte inferior. Puede hacer clic con el botón derecho en una categoría y ocultar los elementos que nunca desea ver.
Arriba, puede agregar un voltímetro, amperímetro u osciloscopio a su circuito. El osciloscopio no es tan útil porque es pequeño. Lo que realmente desea hacer es utilizar una encuesta. Esto solo muestra el voltaje en algún momento, pero puede hacer clic derecho sobre él y agregar la sonda al trazador que aparece en la parte inferior de la pantalla. Esta es una opción de alcance mucho más útil.
Hay algunas rarezas con los artículos. La fuente de voltaje tiene un botón pulsador que se apaga por defecto. Tienes que acordarte de encenderlo o las cosas no saldrán bien. Los potenciómetros fueron particularmente frustrantes. Los videos de versiones anteriores muestran una bonita cabeza de potenciómetro y eso también aparece en mi computadora portátil con Windows. En Linux, el potenciómetro (y los controladores del osciloscopio) parecen un pequeño joystick y es muy difícil establecer un valor. Es más fácil hacer clic derecho y seleccionar propiedades y ajustar el valor allí. Solo tenga en cuenta que el valor no cambiará hasta que deje el campo.
Características del microcontrolador
Si eso es todo, preferiría usar algunos de los pocos simuladores de los que hablamos antes. Pero el gran atractivo aquí es poder colocar un microcontrolador en su circuito. El sistema proporciona CPU PIC y AVR compatibles con el código del simulador que utiliza. También hay cuatro variantes de Arduinos: Uno, Nano, Duemilanove y Leonardo.
Puede usar el IDE de Arduino incorporado; solo asegúrese de tener el software Arduino real en su camino y es una versión nueva. Además, a diferencia del IDE real, parece que necesita guardar su archivo antes de que la descarga o la depuración noten los cambios. En otras palabras, si realiza un cambio y descarga, compilará el código antes del cambio si no guardó el archivo primero. No es necesario utilizar el IDE integrado. Puede simplemente hacer clic derecho en el procesador y cargar un archivo hexadecimal. Los IDE de Arduino recientes tienen la capacidad de exportar un archivo hexadecimal, y eso funciona a la perfección.
Una vez que tenga una CPU en su proyecto, puede hacer clic con el botón derecho y abrir un puerto de monitor en serie que muestra una salida en serie virtual en la parte inferior de la pantalla y le permite ingresar.
El modo de depuración es simple pero funciona hasta que falla. Incluso sin depurar, hay una opción a la izquierda de la pantalla para ver las ubicaciones de la memoria y los registros dentro de la CPU.
En general, la simulación de Arduino pareció funcionar bastante bien. La conexión a los pines Uno fue un poco difícil en ciertas escalas y accidentalmente me conecté al pin equivocado en más de una ocasión. Una cosa que encontré extraña es que no necesitas conectar el voltaje al Arduino. Está encendido incluso si no lo conecta.
Aparte del accidente, la otra cosa que tuve fue la velocidad de simulación, que fue un poco lenta. Hay un medidor en la parte superior de la pantalla que muestra qué tan lenta es la simulación en comparación con el tiempo real y la mía fue muy baja (alrededor del 10%) la mayor parte del tiempo. Es un tema útil que deja en claro que depende de si tienes algunos elementos del circuito y formas de mejorar la duración, pero no fue tan malo que me molesté en explorarlo.
Lo primero que pensé fue que sería difícil lidiar con un circuito con varias CPU, ya que los monitores de depuración y serie están todos dispuestos para una CPU. Sin embargo, como muestra el video a continuación, puede ejecutar varios ejemplos del programa y conectarlos a través de una conexión de puerta de enlace en serie. El único problema sería si tuviera un circuito donde ambas CPU interactuarían con circuitos de interconexión (por ejemplo, un amplificador operativo que suma dos señales, una de cada CPU).
Ejemplo simple
Como experimento, creé un circuito simple que usa Uno. Genera dos señales PWM, las integra con un circuito RC y luego impulsa una carga o impulsa una carga a través de un transmisor bipolar. Pot le permite establecer los porcentajes de PWM que se complementan entre sí (es decir, cuando uno es el 10%, el otro es el 90%). Aquí está el circuito:
Junto con el código muy simple:
int v; const int potpin=0; const int led0=5; const int led1=6; void setup() { Serial.begin(9600); Serial.println("Here we go!"); } void loop() { int v=analogRead(potpin)/4; Serial.println(v); analogWrite(led0,v); analogWrite(led1,255-v); delay(250); }
Tenga en cuenta que si la salida PWM que impulsa el transistor cae por debajo de 0,7 V más o menos, el transistor se apagará. Deliberadamente no proyecté alrededor de eso porque quería ver cómo reaccionaría el simulador. Modela correctamente este comportamiento.
Esto realmente no significa que quisiera algo que funcionara en la simulación del circuito analógico como el Arduino. Puede descargar todos los archivos de GitHub, incluido el archivo hexadecimal, si desea omitir el paso de compilación.
Si usa el IDE integrado en el lado derecho de la pantalla, entonces las cosas son muy simples. Estás descargando tu código. Si está creando su propio archivo de maldición, simplemente haga clic derecho en Arduino y encontrará una opción para cargar un archivo de maldición. Parece recordar el archivo hexadecimal, por lo que si vuelve a ejecutar una simulación más tarde, no tiene que repetir ese paso a menos que haya movido el archivo hexadecimal.
Sin embargo, el IDE no recuerda la configuración del trazador, los interruptores de voltaje o el terminal en serie. En especial, querrá asegurarse de que el interruptor de 5 V sobre el transistor esté encendido o que esa parte del circuito no funcione correctamente. Puede hacer clic con el botón derecho en Arduino para abrir el monitor en serie y hacer clic con el botón derecho en las sondas para volver al panel de trazado.
El interruptor rojo en la parte superior de la ventana iniciará su simulación. Las capturas de pantalla de arriba muestran fotos en primer plano del panel de trazado y el monitor en serie.
Lecciones aprendidas
Esta podría ser una gran herramienta si no fallara de esa manera. Honestamente, eso podría estar relacionado con mi computadora, pero no creo que responda completamente a todos. Sin embargo, el software aún se está desarrollando bastante temprano, por lo que tal vez mejore. También hay muchos problemas apropiados y finales. Por ejemplo, en mi pantalla grande, muchas de las fuentes eran demasiado grandes para sus contenedores, lo cual no es tan inusual.
La interfaz de usuario parecía un poco desordenada, especialmente cuando tenía que manipular potenciómetros e interruptores. Recuerde también que no puede hacer clic con el botón derecho en los controles, sino que debe hacer clic en el componente a continuación. En otras palabras, la olla parece un asa en la parte superior de una resistencia. Los clics con el botón derecho deben ir a la resistencia, no al mango. También retrasé un poco que no se pueden insertar sufijos multiplicativos directamente en los valores de los componentes. Es decir, no puede insertar una resistencia como 1K. Puede ingresar 1000 o puede ingresar 1 y luego cambiar las unidades en un campo separado a Kohms. Pero eso no es gran cosa. Puedes acostumbrarte a todo si deja de fallar.
Realmente quería que funcionara la función de depuración. Si bien puede depurar directamente con simuavr u otras herramientas, no puede simular fácilmente todos sus dispositivos de E / S como puede hacerlo con esta herramienta. Espero que esto se vuelva más robusto. Bajo Linux se ejecutaría un poco y fallaría. En Windows, nunca lo ejecuté.
Sin embargo, como siempre digo, la simulación es genial, pero el mundo real a menudo causa sorpresas que no aparecen en la simulación. Sin embargo, la simulación puede ayudarlo a explicar muchos problemas antes de que necesite calentar el laúd o quitar la tabla. Simuide tiene el potencial de ser una gran herramienta para simular el tipo de proyectos que más vemos en La-Tecnologia.
Si desea explorar otras opciones de simulación, hemos hablado mucho sobre LTSpice, incluida nuestra serie Circuit VR. También está el excelente simulador de navegador Falstad.
Moryc dice:
Proteus VSM ha estado ofreciendo simulación PIC / AVR / ARM desde al menos 2012. Y simulación SPIC analógica / digital. No es gratis, pero las cosas buenas rara vez son ...
Vadear dice:
Estoy de acuerdo, pero esos precios están fuera de rango para la mayoría de los aficionados. $ 250 para el soporte de AVR es bastante aceptable para un usuario empresarial, pero seguirá siendo demasiado alto para la mayoría de los bromistas. Los otros núcleos también son mucho más caros. Se ve muy bien y he escuchado a otras personas decir que es increíble, pero es más una herramienta para uso semiprofesional.
Moryc dice:
Sería bueno para los negocios si lo hicieran gratis para los aficionados. Eso es lo que haría: hacer que dependan de mi equipo y exprimirles el dinero cuando quieran vender su proyecto. Microsoft hizo esto con Windows y Office, permitir que todos usen los mismos veinte códigos de licencia en todo el mundo ...
q2dg dice:
Con suerte, hay muchas personas que administran programas de una manera muy diferente a la de Microsoft.
q2dg dice:
"No es gratis, pero las cosas buenas rara vez son ...". Dios mío, no sabes qué es el software libre, ¿verdad?
Puneeth dice:
También hay algunos simuladores gratuitos de Arduino. ¿Has probado el simulador de wokwi Arduino? Mantiene bibliotecas de terceros, ejecuta un navegador,
Ostraco dice:
“Siempre me han gustado los simuladores. Claro, no hay sustituto para la construcción de un circuito, pero ciertamente es útil si puede solucionar muchos problemas fáciles antes de comenzar a soldar y fabricar PCB. "
Uno de estos días alguien integrará una simulación con el equipo Maxitronix 200 en uno.
Sidra de pera dice:
Sería bueno jugar con estos simuladores si pudieran hacer más que lo básico.
Actuaré aquí.Sería bueno si pudieras usar más de 1 MCU.
También sería realmente genial si tuviera el ESP8266.
A mí me gusta usar más de un procesador en un proyecto porque ahora son muy desagradables. Por qué no.
La mayoría de las veces ni siquiera uso el WiFi en el ESP8266, así que puedo poner el reloj ahí arriba.Al menos hay algunos ahí.
Y odio una demostración completa durante 30 días. O no ahorrar.¡Y quiero todo (GRATIS)!
Estoy bromeando ..: -}Puneeth dice:
Hola de veras ¿Por qué no un simulador de Arduino wokwi completamente gratuito y sin restricciones?
Tiene todas las buenas características pero sin restricciones de dinero o tiempo 🙂Espero les haya gustado esta información
https://wokwi.com
???? ???? dice:
Para su información: SimulIDE_0.2.8-SR1-Sources.tar.gz se compila y se ejecuta en LMDE2 64bit (Linux Mint Debian) con pantalla 4K, después de instalar las dependencias requeridas, los mensajes de error le informarán lo que se está perdiendo, de lo contrario, no tendrá su profundidad y debe utilizar una distracción en la que la imagen funcione bien. Nota: no he probado todas las funciones.
Alcachofa dice:
Buena reseña.
Parece que encontró algunos problemas:
El problema con el tamaño de la fuente y el bote pequeño es extraño, sería bueno conocer su configuración gráfica.
¿Parece que ve componentes que son demasiado pequeños, tal vez pantallas de ppp muy altos?
Intentaré reproducirlo y encontrar una solución.Depurar y simular al mismo tiempo no funciona muy bien no es extraño, el depurador es una función nueva, es útil para casos simples y es una buena práctica errar solo partes del código a la vez para ver si funciona como se esperaba, pero no pudo resolverse de todos modos.
Tengo curiosidad acerca de un bloqueo que no es de depuración, no puedo aliviarlo incluso si lo intento. Si encuentra un caso, infórmelo.
Además: "A veces el programa se olvida de crear el cursor en cruz". No es posible reproducir este número.En cuanto a la velocidad, probablemente eligió el peor de los casos: microcontrolador + bjt en la siguiente configuración. un amplificador operacional como seguidor de voltaje, por ejemplo, sería mucho más rápido, probablemente en tiempo real.
También puede mejorar la velocidad en este caso cambiando algunos ajustes de simulación.La mejor manera de corregir errores es informarlos: https://sourceforge.net/p/simulide/discussion/bugs/
Guardar el estado de una pantalla serial del plotter es una buena idea, lo agregaré a una solicitud de presentación.
De todos modos una revisión muy completa, y muy útil para ver qué problemas encuentran los usuarios.
Saludos.
Al Williams dice:
Mi pantalla es 4K. Tendré que intentar ejecutarlo con Xephyr para ver si se ve mejor. Tendré que intentar documentar dónde están algunos de los fallos cuando tenga unos minutos. Y sí, elegí deliberadamente un caso difícil 😉
Alcachofa dice:
Ya ha documentado algunos problemas en su artículo y fue muy útil.
Gracias a su “caso difícil” encontré un gran problema de depuración y simulación al mismo tiempo. Estoy trabajando en eso ahora. También tengo que lidiar con el problema de la pantalla.Lleva mucho tiempo, solo encuentre algunos fallos, informe y tal vez responda preguntas de los desarrolladores, etc.
Así que estoy muy agradecido cuando alguien intenta hacerlo y entiendo que no muchas personas están dispuestas o tienen el tiempo para hacerlo.
Pero solo de esta manera un proyecto de este tipo puede alcanzar un buen nivel utilizable.
RW dice:
Tendré que mirar ... aunque siempre lucho contra ICE como algún protagonista de William Gibson ... parece que casi nunca trato de hacer una parte del proyecto completamente nueva, siempre algún factor anticuado o de alto octanaje plus para el que no hay modelo. .
Circuito descubierto el otro día, (no el que cierra Eagle), que es más o menos un escaparate para que te compres una herramienta de las piezas, pero no parece demasiado repugnante por todo esto.
Clovis Fritzen dice:
Personalmente, no usaré ningún simulador para siquiera pensar antes de que sea lo suficientemente estable; No soy la primera persona que aceptará fallas del programa de la nada.
???? ???? dice:
Apuesto a que espera que aparezca Windows 3000 en ese momento. ????
Evandro dice:
Creo que la mejor aprobación para programar el Arduino es usar un puerto serie virtual. No sé si es posible que el simulador cree su propio puerto COM para la conexión IDE de Arduino, pero si no, usar COM0COM puede resolverlo. SimulIDE ya tiene una forma de abrir un puerto COM, pero no he probado si es posible conectarme a un puente COM virtual, cargar el firmware del cargador de arranque en Arduino y usar un IDE de Arduino para programar y abrir un monitor serial (el SimulIDE El monitor serial tiene pocas opciones y carece de configuración para enviar CR y LF). La ventaja de un IDE integrado es la depuración, pero con tantos errores, puede que no valga la pena el esfuerzo.
Utilizo un programa llamado "PICSimLab", que es muy simple. Tiene algunas placas de desarrollo PIC y Arduino UNO. Solo hay unos pocos periféricos y no puede ensamblar el circuito como SimulIDE. La principal ventaja, en mi opinión, es la posibilidad de programar el Arduino con Arduino IDE y el puerto virtual COM0COM.
Sigo siguiendo de cerca el desarrollo de ambos programas, son excelentes opciones gratuitas y están evolucionando rápidamente.