Come creare programmi per Windows in Arduino

Come creare programmi per Windows in Arduino

Un giorno ho avuto la folle idea di portare 500 puntatori laser in un unico posto. Ho passato molto tempo e l'ho fatto. Si è rivelato spettacolare e inutile, ma mi è piaciuto. Sei mesi fa ho avuto un'altra folle idea. Questa volta, per niente spettacolare, ma molto più utile. Ci ho anche dedicato molto tempo. E in questo articolo, presento una versione beta della mia seconda folle idea.

Ho chiamato il progetto Nanonyam (Nanonyam) e ne ho persino ideato un logo (ho disegnato per 5 minuti).

Come creare programmi per Windows in Arduino

Per chi ragiona in termini di Arduino, possiamo dire che Nanonyam è uno shield Arduino virtuale per il controllo di Windows.

In altre parole, Nanonyam è una macchina virtuale che utilizza il firmware per il microcontrollore AVR (si consiglia ATMEGA2560) come bytecode. All'interno di questa macchina virtuale c'è un simulatore di base AVR, ma al posto delle periferiche, che si trovano agli indirizzi SRAM da 0x0060 a 0x01FF, c'è un'interfaccia speciale per le funzioni virtuali (comprese le funzioni API di Windows). E qui è molto importante capire subito: il codice per Nanonyam non dovrebbe avere alcun accesso all'intervallo di memoria specificato, per non richiamare accidentalmente, ad esempio, la funzione di eliminazione di file o formattazione di un disco. Il resto dell'intervallo di memoria SRAM da 0x0200 a 0xFFFF (questo è più che in un vero microcontrollore) è disponibile per l'utente per qualsiasi scopo. Noto subito che esiste una protezione speciale contro l'avvio accidentale del firmware di un vero microcontrollore (o firmware di un'altra architettura): prima di attivare funzioni "pericolose", è necessario chiamare un'apposita funzione virtuale complicata. Ci sono anche altre funzionalità di sicurezza.

Per creare programmi per Nanonyam, è necessario utilizzare librerie speciali che implementano tutte le funzioni virtuali attualmente disponibili. Scarica la macchina virtuale Nanonyam e le relative librerie È quindi possibile. Ma l' pagina di descrizione della funzione virtuale. E sì, il mio sito è molto primitivo e non adatto ai dispositivi mobili.

Nanonyam è gratuito per uso domestico e commerciale. Il programma Nanonyam viene fornito "così com'è". Il codice sorgente non è fornito.

Il programma è attualmente in fase di test. Implementate circa 200 funzioni virtuali che permettono di creare semplici programmi per Windows.
Ovviamente, creare qualcosa di complicato in una macchina virtuale del genere non funzionerà, poiché la memoria per il codice è di soli 256 kB. I dati possono essere memorizzati in file separati, il buffer per la parte grafica è implementato esternamente. Tutte le funzioni sono semplificate e adattate per l'architettura a 8 bit.

Cosa puoi fare a Nanonyam? Ho riscontrato alcuni problemi.

Sviluppo di blocchi di programma

Una volta avevo bisogno di progettare un menu complesso per un display grafico da 128x64 punti. Non volevo davvero caricare costantemente il firmware in un vero microcontrollore per vedere come appaiono i pixel. E così è nata l'idea di Nanonyam. La figura seguente mostra un'immagine da un display OLED reale di una delle voci dello stesso menu. Ora posso lavorarci senza un vero dispositivo.

Come creare programmi per Windows in Arduino

Nanonyam (nella sua idea finale) è un buon strumento per elaborare blocchi di programma per microcontrollori, poiché ci sono funzioni per lavorare con la grafica (puoi simulare display e indicatori), con file (puoi creare registri, leggere dati di test), con una tastiera (puoi leggere fino a 10 pulsanti contemporaneamente), con porte COM (qui c'è un elemento separato).

Creazione di programmi rapidi

Ad esempio, è necessario elaborare rapidamente 100500 file di testo. Ognuno deve essere aperto, leggermente modificato secondo un semplice algoritmo, salvato e chiuso. Se sei un maestro di Python, allora mi congratulo con te, hai tutto. Ma se sei un arduino incallito (e ce ne sono molti), Nanonyam ti aiuterà a risolvere questo problema. Questo è il mio secondo obiettivo in Nanonyam: aggiungere molte funzioni utili come l'elaborazione del testo, l'acquisizione di schermate o la simulazione di sequenze di tasti nel sistema (che, tra l'altro, sono già presenti), così come molte altre funzioni per risolvere compiti di routine .

Test hardware tramite porta COM

Nanonyam può fungere da terminale che funziona secondo il tuo algoritmo. È possibile disegnare un piccolo menu per controllare il dispositivo e visualizzare i dati ricevuti dalla porta. È possibile salvare e leggere i dati dai file per l'analisi. Uno strumento utile per il semplice debugging e la calibrazione dell'hardware, nonché per la creazione di semplici pannelli di controllo di strumenti virtuali. Per studenti e giovani scienziati, questo progetto può essere molto utile.

Formazione alla programmazione

Tuttavia, come per l'intero progetto Arduino, l'utilità principale di Nanonyam risiede nella semplificazione delle funzioni, dell'interfaccia e del bootloader. Pertanto, questo progetto dovrebbe interessare i programmatori alle prime armi e coloro che sono soddisfatti del livello di arduino. A proposito, io stesso non ho ancora studiato arduino in dettaglio, perché ho sempre usato WinAVR o AVR Studio, ma ho iniziato con l'assembler. Pertanto, il programma di esempio qui sotto sarà un po' sbagliato, ma abbastanza funzionante.

Ciao Habr!

È ora di familiarizzare con alcune funzionalità di Nanonyam e scrivere un semplice programma. Scriveremo in Arduino, ma non nel solito modo, ma nel modo in cui posso ora (ho già detto che non ho ancora capito molto bene questo ambiente). Innanzitutto, crea un nuovo schizzo e seleziona la scheda Mega2560.

Come creare programmi per Windows in Arduino

Salva lo schizzo in un file e copialo successivamente Libreria Nanonyam. Sarebbe corretto includere le intestazioni delle librerie, ma non so come scrivere la compilazione dei singoli file in Arduino, quindi per ora includeremo solo le librerie direttamente (e tutte in una volta):

#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"

Sarebbe ancora più corretto realizzare un modulo speciale "Nanonyam for Arduino", installabile direttamente da Arduino. Non appena lo capirò, lo farò, ma per ora sto solo mostrando l'essenza del lavoro con una macchina virtuale. Scriviamo il seguente codice:

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

Disegna con questo programma può essere scaricato qui. Descrizione dettagliata delle funzioni cerca nel sito. Spero che i commenti in questo codice siano sufficienti per capirne l'essenza. Qui funzione sys_Nanonyam() svolge il ruolo di una "password" per la macchina virtuale, che rimuove le restrizioni sulle funzioni virtuali. Senza questa funzione, il programma si chiuderà dopo 3 secondi di funzionamento.

Premiamo il pulsante "Verifica" e non dovrebbero esserci errori.

Come creare programmi per Windows in Arduino

Ora devi ottenere un file binario (firmware). Seleziona il menù "Schizzo>>Esporta file binario (CTRL+ALT+S)«.

Come creare programmi per Windows in Arduino

Questo copierà due file HEX nella cartella dello schizzo. Prendiamo solo il file senza il prefisso "with_bootloader.mega".

Esistono diversi modi per specificare un file HEX nella macchina virtuale Nanonyam, tutti descritti in questa pagina. Suggerisco di creare accanto al file Nanonyam.exe файл sentiero, in cui registrare il percorso completo del nostro file HEX. Dopo di che puoi correre Nanonyam.exe. Otteniamo una finestra con la nostra iscrizione.

Come creare programmi per Windows in Arduino

Allo stesso modo, puoi creare programmi in altri ambienti, come AVR Studio o WinAVR.

È qui che finiamo la nostra conoscenza con Nanonyam. L'idea principale dovrebbe essere chiara. Altri esempi sono sul sito web.. Se ci sono abbastanza persone disposte a utilizzare questo progetto, allora farò altri esempi e continuerò a "riempire" le librerie di funzioni virtuali. Si accettano idee concrete per lo sviluppo del progetto e segnalazioni di malfunzionamenti, bug e bug. Si consiglia di indirizzarli ai contatti, indicato sul sito web. E la discussione è benvenuta nei commenti.

Grazie a tutti per l'attenzione e buona programmazione!

Fonte: habr.com

Aggiungi un commento