Com crear programes per a Windows a Arduino

Com crear programes per a Windows a Arduino

Un dia vaig tenir la bogeria idea de portar 500 punters làser en un sol lloc. Vaig passar molt de temps i ho vaig fer. Va resultar espectacular i inútil, però em va agradar. Fa sis mesos vaig tenir una altra idea boja. Aquesta vegada, gens espectacular, però molt més útil. També hi vaig passar molt de temps. I en aquest article, presento una versió beta de la meva segona idea boja.

Vaig trucar al projecte Nanonyam (Nanonyam) i fins i tot vaig fer-hi un logotip (vaig dibuixar durant 5 minuts).

Com crear programes per a Windows a Arduino

Per a aquells que pensen en termes d'Arduino, podem dir que Nanonyam és un escut Arduino virtual per controlar Windows.

En altres paraules, Nanonyam és una màquina virtual que utilitza firmware per al microcontrolador AVR (es recomana ATMEGA2560) com a bytecode. Dins d'aquesta màquina virtual hi ha un simulador central AVR, però en lloc de perifèrics, que es troben a adreces SRAM de 0x0060 a 0x01FF, hi ha una interfície especial per a funcions virtuals (incloses les funcions de l'API de Windows). I aquí és molt important entendre de seguida: el codi de Nanonyam no hauria de tenir accés a l'interval de memòria especificat, per no trucar accidentalment, per exemple, a la funció d'esborrar fitxers o formatar un disc. La resta del rang de memòria SRAM de 0x0200 a 0xFFFF (això és més que en un microcontrolador real) està disponible per a l'usuari per a qualsevol propòsit. Observo de seguida que hi ha una protecció especial contra el llançament accidental del firmware d'un microcontrolador real (o un firmware d'una altra arquitectura): abans d'activar funcions "perilloses", heu de trucar a una funció virtual especial complicada. També hi ha altres funcions de seguretat.

Per crear programes per a Nanonyam, heu d'utilitzar biblioteques especials que implementin totes les funcions virtuals disponibles actualment. Baixeu la màquina virtual Nanonyam i les biblioteques pot ser aquí. Però el pàgina de descripció de la funció virtual. I sí, el meu lloc és molt primitiu i no està adaptat per a dispositius mòbils.

Nanonyam és gratuït per a ús domèstic i comercial. El programa Nanonyam es proporciona "tal com està". No es proporciona el codi font.

Actualment el programa es troba en fase de proves. S'han implementat unes 200 funcions virtuals que permeten crear programes senzills per a Windows.
Òbviament, crear quelcom complicat en una màquina virtual d'aquest tipus no funcionarà, ja que la memòria del codi només és de 256 kB. Les dades es poden emmagatzemar en fitxers separats, el buffer per a la part gràfica s'implementa externament. Totes les funcions es simplifiquen i s'adapten a l'arquitectura de 8 bits.

Què pots fer a Nanonyam? Em van plantejar uns quants problemes.

Desenvolupament de blocs de programes

Una vegada vaig necessitar dissenyar un menú complex per a una pantalla gràfica de 128 x 64 punts. Realment no volia carregar constantment el microprogramari en un microcontrolador real per veure com es veuen els píxels. I així va néixer la idea de Nanonyam. La figura següent mostra una imatge d'una pantalla OLED real d'un dels elements del mateix menú. Ara puc treballar-hi sense un dispositiu real.

Com crear programes per a Windows a Arduino

Nanonyam (en la seva idea final) és una bona eina per elaborar blocs de programes per a microcontroladors, ja que hi ha funcions per treballar amb gràfics (pots simular pantalles i indicadors), amb fitxers (pots fer registres, llegir dades de prova), amb un teclat (podeu llegir fins a 10 botons alhora), amb ports COM (aquí hi ha un element separat).

Creació de programes ràpids

Per exemple, heu de processar ràpidament 100500 fitxers de text. Cadascun s'ha d'obrir, modificar lleugerament segons un algorisme senzill, guardar i tancar. Si ets un mestre de Python, aleshores et felicito, ho tens tot. Però si sou un arduino endurit (i n'hi ha molts), Nanonyam us ajudarà a resoldre aquest problema. Aquest és el meu segon objectiu a Nanonyam: afegir moltes funcions útils com processar textos, fer captures de pantalla o simular pulsacions de tecles al sistema (totes les quals, per cert, ja hi són), així com moltes altres funcions per resoldre tasques rutinàries. .

Prova de maquinari a través del port COM

Nanonyam pot actuar com un terminal que funciona segons el vostre algorisme. Podeu dibuixar un petit menú per controlar el dispositiu i mostrar les dades rebudes del port. Podeu desar i llegir dades dels fitxers per analitzar-los. Una eina pràctica per a la depuració i el calibratge senzills de maquinari, així com per crear panells de control d'instruments virtuals senzills. Per a estudiants i joves científics, aquest projecte pot ser molt útil.

Formació en programació

Tanmateix, com amb tot el projecte Arduino, la principal utilitat de Nanonyam rau en la simplificació de funcions, interfície i carregador d'arrencada. Per tant, aquest projecte hauria de ser d'interès per als programadors novells i els que estan satisfets amb el nivell d'arduino. Per cert, jo encara no he estudiat arduino en detall, perquè sempre he fet servir WinAVR o AVR Studio, però vaig començar amb assemblador. Per tant, el programa d'exemple següent serà una mica incorrecte, però funcionarà bastant.

Hola Habr!

És hora de familiaritzar-se amb algunes característiques de Nanonyam i escriure un programa senzill. Escriurem en Arduino, però no de la manera habitual, sinó de la manera que puc ara (ja he dit que encara no he descobert molt bé aquest entorn). Primer, creeu un nou esbós i seleccioneu el tauler Mega2560.

Com crear programes per a Windows a Arduino

Deseu l'esbós en un fitxer i copieu-lo a continuació Biblioteca Nanonyam. Seria correcte incloure les capçaleres de les biblioteques, però no sé com escriure una compilació de fitxers individuals a Arduino, així que de moment només inclourem les biblioteques directament (i totes alhora):

#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 encara més correcte fer un mòdul especial "Nanonyam per a Arduino", que es pugui instal·lar directament des d'Arduino. Tan bon punt ho descobri, ho faré, però de moment només estic mostrant l'essència de treballar amb una màquina virtual. Escrivim el següent codi:

//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}

Esbós amb aquest programa es pot descarregar aquí. Descripció detallada de les funcions cerca al lloc. Espero que els comentaris d'aquest codi siguin suficients per entendre'n l'essència. Aquí la funció sys_Nanonyam() fa el paper d'una "contrasenya" per a la màquina virtual, que elimina les restriccions a les funcions virtuals. Sense aquesta funció, el programa es tancarà després de 3 segons de funcionament.

Premem el botó "Comprovar" i no hi hauria d'haver cap error.

Com crear programes per a Windows a Arduino

Ara necessiteu obtenir un fitxer binari (firmware). Seleccioneu el menú "Esbós>>Exporta el fitxer binari (CTRL+ALT+S)".

Com crear programes per a Windows a Arduino

Això copiarà dos fitxers HEX a la carpeta d'esbós. Agafem només el fitxer sense el prefix "with_bootloader.mega".

Hi ha diverses maneres d'especificar un fitxer HEX a la màquina virtual Nanonyam, totes es descriuen en aquesta pàgina. Suggereixo crear al costat del fitxer Nanonyam.exe arxiu Camí, on registrar el camí complet al nostre fitxer HEX. Després del qual pots córrer Nanonyam.exe. Tenim una finestra amb la nostra inscripció.

Com crear programes per a Windows a Arduino

De la mateixa manera, podeu crear programes en altres entorns, com AVR Studio o WinAVR.

Aquí és on acabem el nostre coneixement amb Nanonyam. La idea principal ha de ser clara. Més exemples al web.. Si hi ha prou gent disposada a utilitzar aquest projecte, faré més exemples i continuaré "omplint" les biblioteques de funcions virtuals. S'accepten idees concretes per al desenvolupament del projecte i informes de mal funcionament, errors i errors. És aconsellable dirigir-los als contactes, indicat al lloc. I la discussió és benvinguda als comentaris.

Gràcies a tots per la vostra atenció i bona programació!

Font: www.habr.com

Afegeix comentari