Cómo crear programas para Windows en Arduino

Cómo crear programas para Windows en Arduino

Un día tuve la loca idea de traer 500 punteros láser en un solo lugar. Pasé mucho tiempo y lo hice. Resultó espectacular e inútil, pero me gustó. Hace seis meses tuve otra idea loca. Esta vez, nada espectacular, pero sí mucho más útil. También le dediqué mucho tiempo. Y en este artículo presento una versión beta de mi segunda idea loca.

Llamé al proyecto Nanonyam (Nanonyam) e incluso se me ocurrió un logotipo (dibujé durante 5 minutos).

Cómo crear programas para Windows en Arduino

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

En otras palabras, Nanonyam es una máquina virtual que utiliza el firmware del microcontrolador AVR (se recomienda ATMEGA2560) como código de bytes. Dentro de esta máquina virtual hay un simulador de núcleo AVR, pero en lugar de dispositivos periféricos, que están ubicados en direcciones SRAM de 0x0060 a 0x01FF, hay una interfaz especial para funciones virtuales (incluidas las funciones API de Windows). Y aquí es muy importante comprender de inmediato: el código de Nanonyam no debe tener acceso al rango de memoria especificado, para no llamar accidentalmente, por ejemplo, a la función de eliminar archivos o formatear un 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. Observo de inmediato que existe una protección especial contra el lanzamiento accidental del firmware de un microcontrolador real (o firmware de otra arquitectura): antes de activar funciones "peligrosas", debe llamar a una función virtual especial y complicada. Hay algunas otras características de seguridad también.

Para crear programas para Nanonyam, debe usar bibliotecas especiales que implementen todas las funciones virtuales disponibles actualmente. Descargue la máquina virtual Nanonyam y las bibliotecas para ello A continuación, puede. Pero el página de descripción de la función virtual. Y sí, mi sitio es muy primitivo y no está adaptado para dispositivos móviles.

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

El programa se encuentra actualmente en la fase de prueba. Implementó alrededor de 200 funciones virtuales que le permiten crear programas simples para Windows.
Obviamente, crear algo complicado en una máquina virtual de este tipo no funcionará, 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 implementa externamente. Todas las funciones están simplificadas y adaptadas para la arquitectura de 8 bits.

¿Qué puedes hacer en Nanonyam? Se me ocurrieron algunos problemas.

Desarrollo de bloques de programa.

Una vez necesité diseñar un menú complejo para una pantalla gráfica de 128x64 puntos. Realmente no quería cargar constantemente el firmware en un microcontrolador real para ver cómo se ven los píxeles. Y así nació la idea de Nanonyam. La siguiente figura muestra una imagen de una pantalla OLED real de uno de los elementos del mismo menú. Ahora puedo resolverlo sin un dispositivo real.

Cómo crear programas para Windows en Arduino

Nanonyam (en su idea final) es una buena herramienta para trabajar bloques de programa para microcontroladores, ya que hay funciones para trabajar con gráficos (puede simular pantallas e indicadores), con archivos (puede hacer registros, leer datos de prueba), con un teclado (puede leer hasta 10 botones al mismo tiempo), con puertos COM (aquí hay un elemento separado).

Creación de programas rápidos

Por ejemplo, necesita procesar rápidamente 100500 archivos de texto. Cada uno debe abrirse, modificarse ligeramente de acuerdo con un algoritmo simple, guardarse y cerrarse. Si eres un maestro de Python, entonces te felicito, lo tienes todo. Pero si eres un arduino endurecido (y hay muchos de ellos), Nanonyam te ayudará a resolver este problema. Este es mi segundo objetivo en Nanonyam: agregar muchas funciones útiles como el procesamiento de texto, tomar capturas de pantalla o simular pulsaciones de teclas en el sistema (todas las cuales, por cierto, ya están ahí), así como muchas otras funciones para resolver tareas rutinarias. .

Prueba de hardware a través del puerto COM

Nanonyam puede actuar como un terminal que funciona de acuerdo con su algoritmo. Puede dibujar un pequeño menú para controlar el dispositivo y mostrar los datos recibidos del puerto. Puede guardar y leer datos de archivos para su análisis. Una herramienta útil para la depuración y calibración sencillas del hardware, así como para la creación de paneles de control de instrumentos virtuales sencillos. Para estudiantes y jóvenes científicos, este proyecto puede ser muy útil.

Formación en programación

Sin embargo, como ocurre con todo el proyecto Arduino, la principal utilidad de Nanonyam radica en la simplificación de funciones, interfaz y gestor de arranque. Por lo tanto, este proyecto debe ser de interés para los programadores novatos y aquellos que están satisfechos con el nivel de arduino. Por cierto, yo mismo todavía no he estudiado arduino en detalle, porque siempre usé WinAVR o AVR Studio, pero comencé con ensamblador. Por lo tanto, el programa de ejemplo a continuación será un poco incorrecto, pero funcionará bastante bien.

¡Hola Habr!

Es hora de familiarizarse con algunas características de Nanonyam y escribir un programa simple. Escribiremos en Arduino, pero no de la manera habitual, sino de la forma en que puedo ahora (ya dije que aún no he descifrado muy bien este entorno). Primero, cree un nuevo boceto y seleccione la placa Mega2560.

Cómo crear programas para Windows en Arduino

Guarde el boceto en un archivo y cópielo a continuación. biblioteca nanonyam. Sería correcto incluir los encabezados de las bibliotecas, pero no sé cómo escribir compilaciones de archivos individuales en Arduino, así que por ahora solo incluiremos las bibliotecas directamente (y 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 más correcto hacer un módulo especial "Nanonyam para Arduino", que se puede instalar directamente desde Arduino. Tan pronto como lo descubra, lo haré, pero por ahora solo estoy mostrando la esencia de trabajar con una 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);//Задержка и разгрузка процессора
}

Dibujar con este programa se puede descargar aquí. Descripción detallada de las funciones buscar en el sitio. Espero que los comentarios en este código sean suficientes para comprenderlo. Aquí función sys_Nanonyam() desempeña el papel de una "contraseña" para la máquina virtual, lo que elimina las restricciones en las funciones virtuales. Sin esta función, el programa se cerrará después de 3 segundos de funcionamiento.

Presionamos el botón "Comprobar" y no debería haber ningún error.

Cómo crear programas para Windows en Arduino

Ahora necesita obtener un archivo binario (firmware). Seleccione el menú "Sketch>>Exportar archivo binario (CTRL+ALT+S)«.

Cómo crear programas para Windows en Arduino

Esto copiará dos archivos HEX a la carpeta de bocetos. Tomamos solo el archivo sin el prefijo "with_bootloader.mega".

Hay varias formas de especificar un archivo HEX a la máquina virtual Nanonyam, todas ellas se describen en esta página. Sugiero crear al lado del archivo. Nanonyam.exe файл camino, en el que registrar la ruta completa a nuestro archivo HEX. Después de lo cual puedes correr Nanonyam.exe. Obtenemos una ventana con nuestra inscripción.

Cómo crear programas para Windows en Arduino

Del mismo modo, puede crear programas en otros entornos, como AVR Studio o WinAVR.

Aquí es donde terminamos nuestra relación con Nanonyam. La idea principal debe ser clara. Hay más ejemplos en el sitio web.. Si hay suficientes personas dispuestas a usar 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 mal funcionamiento, bugs y bugs. Es recomendable dirigirlos a contactos, indicado en el sitio. Y la discusión es bienvenida en los comentarios.

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

Fuente: habr.com

Añadir un comentario