Cómo crear programas en Arduino para Windows

Cómo crear programas en Arduino para Windows

Una vez se me ocurrió una idea absurda de juntar 500 punteros láser en un solo lugar. Pasé mucho tiempo y lo hice. Resultó vistoso y inútil, pero me gustó. Hace seis meses se me ocurrió otra idea absurda. Esta vez, no es tan vistosa, pero es mucho más útil. También dediqué mucho tiempo a ello. Y en este artículo presento la versión beta de mi segunda idea absurda.

Llamé al proyecto Nanonyam (Наноням) y hasta le diseñé un logotipo (dibujé durante 5 minutos).

Cómo crear programas en Arduino para Windows

Para aquellos que piensan en términos de Arduino, se puede decir que Nanonyam es un escudo virtual de Arduino para controlar Windows.

En otras palabras, Nanonyam es una máquina virtual que utiliza firmware para el microcontrolador AVR como bytecode (se recomienda ATMEGA2560). Dentro de esta máquina virtual se encuentra un simulador del núcleo AVR, pero en lugar de los dispositivos periféricos que se ubican en las direcciones SRAM de 0x0060 a 0x01FF, hay una interfaz especial para funciones virtuales (incluidas las funciones de la API de Windows). Y aquí es muy importante entender de inmediato: el código para Nanonyam no debe tener accesos a ese rango de memoria, para no activar accidentalmente, por ejemplo, la función de eliminar archivos o formatear el disco. El resto del rango de memoria SRAM de 0x0200 a 0xFFFF (esto es más que en un microcontrolador real) está disponible para el usuario para cualquier propósito. Cabe destacar que existe una protección especial contra la activación accidental del firmware de un microcontrolador real (o firmware de otra arquitectura): antes de activar funciones

Para crear programas para Nanonyam, se deben utilizar bibliotecas especiales, en las que están implementadas todas las funciones virtuales disponibles en este momento. Descarga la máquina virtual Nanonyam y las bibliotecas para ella se puede aquí. Y aquí está la página de descripción de funciones virtuales. Y sí, mi sitio es muy primitivo y no está adaptado para dispositivos móviles.

El programa Nanonyam es gratuito para uso doméstico y comercial. El programa Nanonyam se proporciona bajo condiciones de 'tal cual'. No se proporciona el código fuente.

Actualmente, el programa se encuentra en fase de pruebas. Se han implementado alrededor de 200 funciones virtuales que permiten crear programas sencillos para Windows.
Es evidente que no se podrá crear algo complejo en una máquina virtual así, ya que la memoria para el código es de solo 256 kB. Los datos se pueden almacenar en archivos separados, el búfer para la parte gráfica se realiza externamente. Todas las funciones están simplificadas y adaptadas para una arquitectura de 8 bits.

¿Qué se puede hacer en Nanonyam? He pensado en varias tareas.

Prueba de bloques de software

Una vez necesitaba desarrollar un menú complejo para una pantalla gráfica de 128×64 puntos. No quería estar cargando constantemente el firmware en el microcontrolador real para ver cómo se veían los píxeles. Así nació la idea de Nanonyam. En la imagen a continuación se muestra una captura de la pantalla OLED real de uno de los elementos de ese menú. Ahora puedo desarrollarlo sin un dispositivo real.

Cómo crear programas en Arduino para Windows

Nanonyam (en su concepción final) es una buena herramienta para probar bloques de software para microcontroladores, ya que hay funciones para trabajar con gráficos (se pueden simular pantallas e indicadores), con archivos (se pueden hacer logs, leer datos de prueba), con el teclado (se pueden leer hasta 10 botones simultáneamente), con puertos COM (este es un punto aparte).

Creación de programas rápidos

Por ejemplo, necesitas procesar rápidamente 100500 archivos de texto. Cada uno debe abrirse, cambiarse un poco según algún algoritmo sencillo, guardarse y cerrarse. Si eres un maestro de Python, te felicito, tú lo tienes todo. Pero si eres un ardiente aficionado de Arduino (y hay muchos así), Nanonyam te ayudará a resolver esta tarea. Esta es mi segunda meta en Nanonyam: añadir muchas funciones útiles como procesamiento de texto, toma de capturas de pantalla o simulación de pulsaciones de teclas en el sistema (todo esto, por cierto, ya existe), así como muchas otras funciones para resolver tareas rutinarias.

Prueba de hardware a través del puerto COM

Nanonyam puede funcionar como un terminal que opera según tu algoritmo. Puedes dibujar un pequeño menú para gestionar el dispositivo y mostrar datos recibidos del puerto. También es posible guardar y leer datos de archivos para su análisis. Es una herramienta práctica para la depuración y calibración sencilla de hardware, así como para crear paneles de control virtuales simples. Este proyecto puede ser muy útil para estudiantes y jóvenes investigadores.

Aprendizaje de programación

Sin embargo, al igual que en todo el proyecto Arduino, la utilidad principal de Nanonyam radica en la simplicidad de las funciones, la interfaz y el bootloader. Por lo tanto, este proyecto debe ser interesante para programadores novatos y aquellos que estén contentos con el nivel de Arduino. Por cierto, yo mismo no he estudiado Arduino en detalle hasta ahora, ya que siempre he utilizado WinAVR o AVR Studio, comenzando con ensamblador. Por lo tanto, el ejemplo de programa a continuación será un tanto incorrecto, pero aún así funcional.

¡Hola, Habr!

Es hora de conocer algunas funciones de Nanonyam y escribir un programa simple. Vamos a programar en Arduino, pero no de la forma habitual, sino como sé hacerlo ahora (ya mencioné que todavía no he dominado bien este entorno). Primero, creamos un nuevo sketch y seleccionamos la placa Mega2560.

Cómo crear programas en Arduino para Windows

Guardamos el sketch en un archivo y copiamos junto a él la biblioteca Nanonyam. Lo correcto sería incluir las cabeceras de las bibliotecas, pero no sé cómo compilar archivos individuales en Arduino, así que por ahora incluiré las bibliotecas directamente (todas a la vez):

#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"

Sería aún mejor crear un módulo especial “Nanonyam para Arduino” que se pueda instalar directamente desde Arduino. Tan pronto como me familiarice con esto, lo haré, pero por ahora solo muestro la esencia del trabajo con la máquina virtual. Escribimos el siguiente código:

//Сразу после запуска рисуем текст в окне
void setup() {
  sys_Nanonyam();//Подтверждаем код виртуальной машины
  g_SetScreenSize(400,200);//Задаём размер дисплея 400х200 точек
  sys_WindowSetText("Example");//Заголовок окна
  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//Задаём шрифт Windows в ячейке шрифтов 0
  g_SetExternalFont(0);//Выбираем ячейку шрифтов 0 для рисования текста
  g_SetBackRGB(0,0,255);//Цвет фона синий
  g_SetTextRGB(255,255,0);//Цвет текста жёлтый
  g_ClearAll();//Очищаем экран (заливка цветом фона)
  g_DrawTextCenterX(0,400,70,"Hello, Habr!");//Рисуем надпись
  g_Update();//Выводим графический буфер на экран
}

//Просто ждём закрытия программы
void loop() {
  sys_Delay(100);//Задержка и разгрузка процессора
}

El sketch con este programa puedes descargar aquí. La descripción detallada de las funciones la puedes encontrar en el sitio web. Espero que haya suficientes comentarios en este código para entender la esencia. Aquí la función sys_Nanonyam() actúa como una “contraseña” para la máquina virtual, que elimina las limitaciones en las funciones virtuales. Sin esta función, el programa se cerrará después de 3 segundos de funcionamiento.

Hacemos clic en el botón “Verificar” y no debería haber errores.

Cómo crear programas en Arduino para Windows

Ahora necesitamos obtener el archivo binario (firmware). Elegimos el menú “Sketch>>Exportar archivo binario (CTRL+ALT+S)«.

Cómo crear programas en Arduino para Windows

De este modo, se copiarán dos archivos HEX en la carpeta del sketch. Solo tomamos el archivo sin el prefijo «with_bootloader.mega».

Hay varias maneras de indicar el archivo HEX a la máquina virtual Nanonyam, todas están descritas en esta página. Sugiero crear junto al archivo Nanonyam.exe archivo Nanonyam.path, donde se escribe la ruta completa a nuestro archivo HEX. Después de eso se puede ejecutar Nanonyam.exe. Aparece una ventana con nuestro mensaje.

Cómo crear programas en Arduino para Windows

De manera similar, se pueden crear programas en otros entornos, como AVR Studio o WinAVR.

Por ahora, terminaremos la introducción a Nanonyam. La idea principal debe estar clara. Hay más ejemplos en el sitio. Si hay suficientes interesados en utilizar este proyecto, haré más ejemplos y continuaré «llenando» las bibliotecas de funciones virtuales. Se aceptan ideas concretas para el desarrollo del proyecto y reportes de fallos, errores y deslices. Preferiblemente, envíenlos a los contactos indicados en el sitio. Las discusiones son bienvenidas en los comentarios.

¡Gracias a todos por su atención y que tengan una buena programación!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster