Como crear programas para Windows en Arduino

Como crear programas para Windows en Arduino

Un día tiven a tola idea de traer 500 punteiros láser nun só lugar. Pasei moito tempo e fíxeno. Resultou espectacular e inútil, pero gustoume. Hai seis meses tiven outra idea tola. Esta vez, nada espectacular, pero moito máis útil. Tamén lle pasei moito tempo. E neste artigo, presento unha versión beta da miña segunda idea tola.

Chamei ao proxecto Nanonyam (Nanonyam) e ata se me ocorreu un logotipo para el (debuxen durante 5 minutos).

Como crear programas para Windows en Arduino

Para aqueles que pensan en termos de Arduino, podemos dicir que Nanonyam é un escudo Arduino virtual para controlar Windows.

Noutras palabras, Nanonyam é unha máquina virtual que usa firmware para o microcontrolador AVR (recoméndase ATMEGA2560) como bytecode. Dentro desta máquina virtual hai un simulador de núcleo AVR, pero en lugar de periféricos, que están situados en enderezos SRAM de 0x0060 a 0x01FF, hai unha interface especial para funcións virtuais (incluídas as funcións da API de Windows). E aquí é moi importante entender de inmediato: o código para Nanonyam non debería ter acceso ao rango de memoria especificado, para non chamar accidentalmente, por exemplo, á función de eliminar ficheiros ou formatear un disco. O resto da gama de memoria SRAM de 0x0200 a 0xFFFF (isto é máis que nun microcontrolador real) está dispoñible para o usuario para calquera propósito. Observo de inmediato que existe unha protección especial contra o lanzamento accidental do firmware dun microcontrolador real (ou firmware doutra arquitectura): antes de activar funcións "perigosas", cómpre chamar a unha función virtual complicada especial. Tamén hai outras funcións de seguridade.

Para crear programas para Nanonyam, cómpre utilizar bibliotecas especiais que implementen todas as funcións virtuais dispoñibles actualmente. Descarga a máquina virtual Nanonyam e as bibliotecas para ela pode estar aquí. Pero o páxina de descrición da función virtual. E si, o meu sitio é moi primitivo e non está adaptado para dispositivos móbiles.

Nanonyam é gratuíto para uso doméstico e comercial. O programa Nanonyam ofrécese "tal como está". Non se proporciona o código fonte.

O programa está actualmente en fase de proba. Implementáronse unhas 200 funcións virtuais que permiten crear programas sinxelos para Windows.
Obviamente, crear algo complicado nunha máquina virtual deste tipo non funcionará, xa que a memoria para o código é de só 256 kB. Os datos pódense almacenar en ficheiros separados, o búfer para a parte gráfica implícase externamente. Todas as funcións son simplificadas e adaptadas para a arquitectura de 8 bits.

Que podes facer en Nanonyam? Ocorréronme algúns problemas.

Desenvolvemento de bloques de programas

Unha vez necesitaba deseñar un menú complexo para unha pantalla gráfica de 128 x 64 puntos. Realmente non quería cargar constantemente o firmware nun microcontrolador real para ver como se ven os píxeles. E así naceu a idea de Nanonyam. A seguinte figura mostra unha imaxe dunha pantalla OLED real dun dos elementos do mesmo menú. Agora podo traballar con el sen un dispositivo real.

Como crear programas para Windows en Arduino

Nanonyam (na súa idea final) é unha boa ferramenta para elaborar bloques de programas para microcontroladores, xa que hai funcións para traballar con gráficos (podes simular pantallas e indicadores), con ficheiros (podes facer rexistros, ler datos de proba), con un teclado (podes ler ata 10 botóns ao mesmo tempo), con portos COM (aquí hai un elemento separado).

Creación de programas rápidos

Por exemplo, cómpre procesar rapidamente 100500 ficheiros de texto. Hai que abrir cada un, modificar lixeiramente segundo algún algoritmo sinxelo, gardar e pechar. Se es un mestre de Python, entón felicito, tes de todo. Pero se es un arduino endurecido (e hai moitos deles), entón Nanonyam axudarache a resolver este problema. Este é o meu segundo obxectivo en Nanonyam: engadir moitas funcións útiles como o procesamento de texto, a toma de capturas de pantalla ou a simulación de pulsacións de teclas no sistema (todas as cales, por certo, xa están aí), así como moitas outras funcións para resolver tarefas rutineiras. .

Probando hardware a través do porto COM

Nanonyam pode actuar como un terminal que funciona segundo o teu algoritmo. Podes debuxar un pequeno menú para controlar o dispositivo e mostrar os datos recibidos do porto. Pode gardar e ler os datos dos ficheiros para a súa análise. Unha ferramenta útil para a depuración e calibración sinxelas de hardware, así como para crear paneis de control de instrumentos virtuais sinxelos. Para estudantes e científicos novos, este proxecto pode ser moi útil.

Formación en programación

Non obstante, como ocorre con todo o proxecto Arduino, a principal utilidade de Nanonyam reside na simplificación de funcións, interface e cargador de arranque. Polo tanto, este proxecto debería ser de interese para os programadores novatos e aqueles que estean satisfeitos co nivel de arduino. Por certo, eu mesmo aínda non estudei arduino en detalle, porque sempre usei WinAVR ou AVR Studio, pero comecei por ensamblador. Polo tanto, o programa de exemplo a continuación será un pouco incorrecto, pero funcionará bastante.

Ola Habr!

É hora de familiarizarse con algunhas funcións de Nanonyam e escribir un programa sinxelo. Escribiremos en Arduino, pero non do xeito habitual, senón do que podo agora (xa dixen que aínda non descubrín moi ben este ambiente). Primeiro, crea un novo esbozo e selecciona o taboleiro Mega2560.

Como crear programas para Windows en Arduino

Garda o bosquexo nun ficheiro e copia a continuación Biblioteca Nanonyam. Sería correcto incluír as cabeceiras das bibliotecas, pero non sei como escribir a compilación de ficheiros individuais en Arduino, polo que polo momento só incluiremos as bibliotecas directamente (e todas á 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índa máis correcto facer un módulo especial "Nanonyam para Arduino", que se pode instalar directamente desde Arduino. En canto o descubra, fareino, pero de momento só estou mostrando a esencia de traballar cunha máquina virtual. Escribimos o seguinte 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);//Задержка и разгрузка процессора
}

Debuxa con este programa pódese descargar aquí. Descrición detallada das funcións buscar no sitio. Espero que os comentarios deste código sexan suficientes para entender o fondo. Aquí función sys_Nanonyam() desempeña o papel de "contrasinal" para a máquina virtual, que elimina as restricións ás funcións virtuais. Sen esta función, o programa pecharase despois de 3 segundos de funcionamento.

Prememos o botón "Comprobar" e non debería haber erros.

Como crear programas para Windows en Arduino

Agora cómpre obter un ficheiro binario (firmware). Seleccione o menú "Esbozo>>Exportar ficheiro binario (CTRL+ALT+S)«.

Como crear programas para Windows en Arduino

Isto copiará dous ficheiros HEX no cartafol de esbozo. Tomamos só o ficheiro sen o prefixo "with_bootloader.mega".

Hai varias formas de especificar un ficheiro HEX para a máquina virtual Nanonyam, todas elas descritas nesta páxina. Suxiro crear xunto ao ficheiro Nanonyam.exe файл camiño, no que rexistrar a ruta completa ao noso ficheiro HEX. Despois do cal podes correr Nanonyam.exe. Temos unha fiestra coa nosa inscrición.

Como crear programas para Windows en Arduino

Do mesmo xeito, pode crear programas noutros ambientes, como AVR Studio ou WinAVR.

Aquí é onde rematamos o noso coñecemento con Nanonyam. A idea principal debe ser clara. Máis exemplos están na páxina web.. Se hai suficientes persoas dispostas a utilizar este proxecto, farei máis exemplos e seguirei "enchendo" as bibliotecas de funcións virtuais. Admítense ideas concretas para o desenvolvemento do proxecto e informes de avarías, erros e erros. É recomendable dirixilos a contactos, indicado na páxina web. E a discusión é benvida nos comentarios.

Grazas a todos pola vosa atención e boa programación!

Fonte: www.habr.com

Engadir un comentario