Como criar programas para Windows no Arduino

Como criar programas para Windows no Arduino

Um dia tive a ideia maluca de trazer 500 ponteiros laser em um só lugar. Eu gastei muito tempo e fiz isso. Ficou espetacular e inútil, mas gostei. Seis meses atrás, tive outra ideia maluca. Desta vez, nada espetacular, mas muito mais útil. Eu também passei muito tempo nisso. E neste artigo, apresento uma versão beta da minha segunda ideia maluca.

Chamei o projeto de Nanonyam (Nanonyam) e até criei um logotipo para ele (desenhei por 5 minutos).

Como criar programas para Windows no Arduino

Para quem pensa em termos de Arduino, podemos dizer que o Nanonyam é um shield virtual do Arduino para controlar o Windows.

Em outras palavras, Nanonyam é uma máquina virtual que usa firmware para o microcontrolador AVR (recomenda-se ATMEGA2560) como bytecode. Dentro desta máquina virtual está um simulador de núcleo AVR, mas em vez de periféricos, que estão localizados nos endereços SRAM de 0x0060 a 0x01FF, existe uma interface especial para funções virtuais (incluindo funções API do Windows). E aqui é muito importante entender desde já: o código do Nanonyam não deve ter acesso ao intervalo de memória especificado, para não chamar acidentalmente, por exemplo, a função de deletar arquivos ou formatar um disco. O restante da faixa de memória SRAM de 0x0200 a 0xFFFF (isso é mais do que em um microcontrolador real) está disponível para o usuário para qualquer finalidade. Observo desde já que existe uma proteção especial contra o lançamento acidental do firmware de um microcontrolador real (ou firmware de outra arquitetura): antes de ativar funções "perigosas", é necessário chamar uma função virtual complicada especial. Existem alguns outros recursos de segurança também.

Para criar programas para Nanonyam, você precisa usar bibliotecas especiais que implementam todas as funções virtuais disponíveis no momento. Baixe a máquina virtual Nanonyam e as bibliotecas para ela Você pode, então,. Mas o página de descrição da função virtual. E sim, meu site é muito primitivo e não adaptado para dispositivos móveis.

Nanonyam é gratuito para uso doméstico e comercial. O programa Nanonyam é fornecido "como está". O código-fonte não é fornecido.

O programa está atualmente em fase de testes. Implementou cerca de 200 funções virtuais que permitem criar programas simples para Windows.
Obviamente, criar algo complicado em uma máquina virtual dessas não funcionará, pois a memória para o código é de apenas 256 kB. Os dados podem ser armazenados em arquivos separados, o buffer para a parte gráfica é implementado externamente. Todas as funções são simplificadas e adaptadas para arquitetura de 8 bits.

O que você pode fazer em Nanonyam? Eu vim com alguns problemas.

Desenvolvimento de blocos de programa

Certa vez, precisei projetar um menu complexo para um display gráfico de 128 x 64 pontos. Eu realmente não queria carregar constantemente o firmware em um microcontrolador real para ver a aparência dos pixels. E assim nasceu a ideia de Nanonyam. A figura abaixo mostra uma imagem de um display OLED real de um dos itens do mesmo menu. Agora posso trabalhar com isso sem um dispositivo real.

Como criar programas para Windows no Arduino

O Nanonyam (em sua ideia final) é uma boa ferramenta para elaborar blocos de programas para microcontroladores, pois existem funções para trabalhar com gráficos (você pode simular displays e indicadores), com arquivos (você pode fazer logs, ler dados de teste), com um teclado (você pode ler até 10 botões ao mesmo tempo), com portas COM (aqui está um item separado).

Criando Programas Rápidos

Por exemplo, você precisa processar rapidamente 100500 arquivos de texto. Cada um precisa ser aberto, ligeiramente modificado de acordo com algum algoritmo simples, salvo e fechado. Se você é um mestre em Python, eu o parabenizo, você tem tudo. Mas se você é um arduino endurecido (e há muitos deles), o Nanonyam o ajudará a resolver esse problema. Este é meu segundo objetivo no Nanonyam: adicionar muitas funções úteis, como processamento de texto, captura de tela ou simulação de teclas digitadas no sistema (todas, aliás, já estão lá), além de muitas outras funções para resolver tarefas rotineiras .

Testando hardware via porta COM

O Nanonyam pode atuar como um terminal que funciona de acordo com o seu algoritmo. Você pode desenhar um pequeno menu para controlar o dispositivo e exibir os dados recebidos da porta. Você pode salvar e ler dados de arquivos para análise. Uma ferramenta útil para depuração e calibração simples de hardware, bem como para a criação de painéis de controle de instrumentos virtuais simples. Para estudantes e jovens cientistas, este projeto pode ser muito útil.

Treinamento de programação

No entanto, como em todo o projeto Arduino, a principal utilidade do Nanonyam reside na simplificação de funções, interface e bootloader. Portanto, este projeto deve interessar aos programadores iniciantes e aos que estão satisfeitos com o nível de arduino. Aliás, eu mesmo ainda não estudei o arduino a fundo, pois sempre usei o WinAVR ou o AVR Studio, mas comecei com o assembler. Portanto, o programa de exemplo abaixo ficará um pouco errado, mas bastante funcional.

Olá Habr!

É hora de se familiarizar com alguns recursos do Nanonyam e escrever um programa simples. Vamos escrever em Arduino, mas não da forma usual, mas da forma que consigo agora (já disse que ainda não entendi muito bem esse ambiente). Primeiro, crie um novo esboço e selecione a placa Mega2560.

Como criar programas para Windows no Arduino

Salve o esboço em um arquivo e copie a seguir biblioteca Nanonyam. Seria correto incluir os cabeçalhos das bibliotecas, mas não sei como escrever a compilação de arquivos individuais no Arduino, então por enquanto vamos apenas incluir as bibliotecas diretamente (e todas de uma 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"

Seria ainda mais correto fazer um módulo especial “Nanonyam for Arduino”, que pode ser instalado diretamente do Arduino. Assim que descobrir, farei, mas por enquanto estou apenas mostrando a essência de trabalhar com uma máquina virtual. Escrevemos 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);//Задержка и разгрузка процессора
}

Esboce com este programa pode ser baixado aqui. Descrição detalhada das funções procure no site. Espero que os comentários neste código sejam suficientes para entender a essência dele. aqui função sys_Nanonyam() desempenha o papel de uma "senha" para a máquina virtual, que remove as restrições das funções virtuais. Sem esta função, o programa fechará após 3 segundos de operação.

Pressionamos o botão "Verificar" e não deve haver erros.

Como criar programas para Windows no Arduino

Agora você precisa obter um arquivo binário (firmware). Selecione o menu "Esboço>>Exportar arquivo binário (CTRL+ALT+S)".

Como criar programas para Windows no Arduino

Isso copiará dois arquivos HEX para a pasta de esboço. Pegamos apenas o arquivo sem o prefixo "with_bootloader.mega".

Existem várias maneiras de especificar um arquivo HEX para a máquina virtual Nanonyam, todas elas são descritas nesta página. Sugiro criar ao lado do arquivo Nanonyam.exe arquivo caminho, no qual registrar o caminho completo para nosso arquivo HEX. Após o qual você pode correr Nanonyam.exe. Temos uma janela com nossa inscrição.

Como criar programas para Windows no Arduino

Da mesma forma, você pode criar programas em outros ambientes, como AVR Studio ou WinAVR.

É aqui que terminamos nosso conhecimento de Nanonyam. A ideia principal deve ser clara. Mais exemplos estão no site.. Se houver pessoas suficientes dispostas a usar este projeto, farei mais exemplos e continuarei a "preencher" as bibliotecas de funções virtuais. Aceitam-se ideias concretas para o desenvolvimento do projeto e relatórios de avarias, bugs e bugs. É aconselhável encaminhá-los para contatos, indicado no site. E a discussão é bem-vinda nos comentários.

Obrigado a todos pela atenção e boa programação!

Fonte: habr.com

Adicionar um comentário