Como criar programas para Windows no Arduino

Como criar programas para Windows no Arduino

Um dia, tive uma ideia maluca de reunir 500 ponteiros laser em um só lugar. Passei muito tempo fazendo isso. O resultado foi espetacular e inútil, mas eu gostei. Seis meses atrás, tive outra ideia maluca. Desta vez, não tão espetacular, mas muito mais útil. Também gastei muito tempo com isso. E neste artigo, apresento a versão beta da minha segunda ideia maluca.

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

Como criar programas para Windows no Arduino

Para aqueles que pensam em termos de Arduino, pode-se dizer que o Nanonyam é um escudo virtual Arduino para controlar o Windows.

Em outras palavras, o Nanonyam é uma máquina virtual que utiliza firmware para microcontroladores AVR como código de byte (recomendamos o ATMEGA2560). Dentro dessa máquina virtual, há um simulador do núcleo AVR, mas ao invés de dispositivos periféricos, que estão localizados nos endereços SRAM de 0x0060 a 0x01FF, há uma interface especial para funções virtuais (incluindo funções da API do Windows). É muito importante entender desde o início: o código para o Nanonyam não deve ter qualquer acesso ao intervalo de memória especificado, para não acidentalmente chamar, por exemplo, a função de exclusão de arquivos ou formatação de disco. O restante do intervalo de memória SRAM de 0x0200 a 0xFFFF (isso é mais do que em um microcontrolador real) está disponível para o usuário para quaisquer fins. Vale ressaltar que há uma proteção especial contra a ativação acidental do firmware de um microcontrolador real (ou firmware de outra arquitetura): antes de ativar as funções “perigosas”, é necessário chamar uma função virtual especial. Existem também outros elementos de proteção.

Para criar programas para o Nanonyam, é necessário usar bibliotecas especiais, que implementam todas as funções virtuais disponíveis até agora. Baixar a máquina virtual Nanonyam e as bibliotecas para ela aqui. E aqui página de descrição das funções virtuais. E sim, meu site é muito primitivo e não adaptado para dispositivos móveis.

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

Atualmente, o programa está em fase de testes. Cerca de 200 funções virtuais foram implementadas, permitindo a criação de programas simples para Windows.
É evidente que criar algo complexo em tal máquina virtual não será possível, pois a memória para o código é de apenas 256 kB. Os dados podem ser armazenados em arquivos separados, e o buffer para a parte gráfica é implementado externamente. Todas as funções são simplificadas e adaptadas para a arquitetura de 8 bits.

O que pode ser feito no Nanonyam? Eu elaborei algumas tarefas.

Prática de blocos de programação

Certa vez, precisei desenvolver um menu complexo para um display gráfico de 128×64 pixels. Não queria ficar carregando o firmware no microcontrolador real para ver como os pixels apareciam. Assim nasceu a ideia do Nanonyam. Na imagem abaixo, está a representação de um dos itens desse menu em um OLED real. Agora posso trabalhar nisso sem precisar do dispositivo real.

Como criar programas para Windows no Arduino

O Nanonyam (em sua concepção final) é uma boa ferramenta para praticar blocos de programação para microcontroladores, pois possui funções para trabalhar com gráficos (é possível simular displays e indicadores), com arquivos (é possível criar logs, ler dados de teste), com teclado (é possível ler até 10 botões ao mesmo tempo), e com portas COM (aqui há um ponto separado).

Criação de programas rápidos

Por exemplo, você precisa rapidamente processar 100500 arquivos de texto. Cada um precisa ser aberto, um pouco modificado por algum algoritmo simples, salvo e fechado. Se você é um mestre do Python, parabéns, você já tem tudo. Mas se você é um ardoroso entusiasta do Arduino (e há muitos assim), o Nanonyam irá ajudá-lo a resolver essa tarefa. Este é o meu segundo objetivo com o Nanonyam: adicionar várias funções úteis, como processamento de texto, criação de capturas de tela ou simulação de pressionamento de teclas no sistema (tudo isso já existe), além de muitas outras funções para resolver tarefas rotineiras.

Testes de hardware via porta COM

O Nanonyam pode atuar como um terminal que funciona de acordo com seu algoritmo. É possível 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 conveniente para depuração e calibração simples de hardware, assim como para criar painéis de controle virtuais simples. Para estudantes e jovens cientistas, esse projeto pode ser muito útil.

Aprendizado de programação

No entanto, assim como em todo o projeto Arduino, a principal utilidade do Nanonyam reside na simplicidade das suas funções, interface e carregador. Portanto, este projeto deve ser interessante para programadores iniciantes e para aqueles que se contentam com o nível do Arduino. A propósito, eu mesmo ainda não estudei o Arduino detalhadamente, pois sempre usei WinAVR ou AVR Studio, e comecei com assembly. Portanto, o exemplo de programa abaixo pode estar um pouco incorreto, mas é perfeitamente funcional.

Olá, Habr!

É hora de conhecer algumas funções do Nanonyam e escrever um programa simples. Vamos codificar no Arduino, mas não da maneira usual, e sim da forma como sei fazer agora (eu já disse que ainda não entendi muito bem esse ambiente). Para começar, criamos um novo esboço e escolhemos a placa Mega2560.

Como criar programas para Windows no Arduino

Salvamos o esboço em um arquivo e copiamos ao lado a biblioteca Nanonyam. Seria correto incluir os cabeçalhos das bibliotecas, mas eu não sei como compilar arquivos individuais no Arduino, então por enquanto vamos simplesmente 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 criar um módulo especial “Nanonyam para Arduino”, que pode ser instalado diretamente do Arduino. Assim que eu entender isso, farei, mas por enquanto estou apenas mostrando a essência do trabalho com a máquina virtual. Vamos escrever este 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);//Задержка и разгрузка процессора
}

O esboço com este programa pode ser baixado aqui. A descrição detalhada das funções você pode encontrar no site. Espero que os comentários neste código sejam suficientes para compreender a essência. Aqui a função sys_Nanonyam() atua como uma "senha" para a máquina virtual, que remove as restrições sobre as funções virtuais. Sem essa função, o programa será encerrado após 3 segundos de operação.

Clicamos no botão “Verificar” e não deve haver erros.

Como criar programas para Windows no Arduino

Agora precisamos obter o arquivo binário (firmware). Selecionamos o menu “Sketch>>Exportar arquivo binário (CTRL+ALT+S)«.

Como criar programas para Windows no Arduino

Dessa forma, dois arquivos HEX serão copiados para a pasta do esboço. Nós pegamos apenas o arquivo sem o prefixo «with_bootloader.mega».

Existem várias maneiras de especificar o arquivo HEX para a máquina virtual Nanonyam, todas descritas nesta página. Eu sugiro criar um arquivo chamado Nanonyam.exe arquivo Nanonyam.path, onde escreveremos o caminho completo para nosso arquivo HEX. Após isso, podemos executar Nanonyam.exe. Recebemos uma janela com a nossa mensagem.

Como criar programas para Windows no Arduino

Da mesma forma, é possível criar programas em outros ambientes, como AVR Studio ou WinAVR.

Vamos encerrar por enquanto nosso conhecimento sobre Nanonyam. A ideia principal deve estar clara. Mais exemplos estão disponíveis no site. Se houver interesse suficiente em utilizar este projeto, farei mais exemplos e continuarei a "preencher" as bibliotecas de funções virtuais. Sugestões específicas para o desenvolvimento do projeto e relatórios sobre falhas, bugs e erros são bem-vindas. É preferível enviá-las pelos contatos fornecidos no site. Discussões são bem-vindas nos comentários.

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

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster