Come creare programmi per Windows su Arduino

Come creare programmi per Windows su Arduino

Un giorno mi è venuta in mente un'idea strampalata per riunire 500 puntatori laser in un unico posto. Ho speso molto tempo e l'ho realizzata. È stata spettacolare e inutile, ma mi è piaciuta. Sei mesi fa mi è venuta un'altra idea strampalata. Questa volta non è stata affatto spettacolare, ma molto più utile. Anche in questo caso ho dedicato molto tempo. In questo articolo presento la versione beta della mia seconda idea strampalata.

Ho chiamato il progetto Nanonyam e ho persino creato un logo (l'ho disegnato per ben 5 minuti).

Come creare programmi per Windows su Arduino

Per chi pensa in termini di Arduino, si può dire che Nanonyam è uno shield Arduino virtuale per controllare Windows.

In altre parole, Nanonyam è una macchina virtuale in cui il firmware per il microcontrollore AVR viene utilizzato come bytecode (si consiglia ATMEGA2560). All'interno di questa macchina virtuale si trova un simulatore del core AVR, ma invece dei dispositivi periferici che si trovano agli indirizzi SRAM da 0x0060 a 0x01FF, c'è un'interfaccia speciale per le funzioni virtuali (compresi API di Windows). È fondamentale comprendere subito che il codice per Nanonyam non deve fare riferimento a questo intervallo di memoria per non attivare accidentalmente, ad esempio, la funzione di cancellazione di file o di formattazione del disco. L'intervallo rimanente di memoria SRAM da 0x0200 a 0xFFFF (che è più grande rispetto a un microcontrollore reale) è accessibile all'utente per qualsiasi scopo. Vorrei notare fin da subito che esiste una protezione speciale contro l'attivazione accidentale del firmware di un microcontrollore reale (o di un firmware di un'altra architettura): prima di attivare le funzioni 'pericolose', è necessario richiamare una particolare funzione virtuale ingegnosa. Esistono anche altri elementi di protezione.

Per creare programmi per Nanonyam è necessario utilizzare librerie speciali, in cui sono implementate tutte le funzioni virtuali disponibili fino a questo momento. Puoi scaricare la macchina virtuale Nanonyam e le librerie per essa qui. Ecco la pagina di descrizione delle funzioni virtuali. E sì, il mio sito è molto primitivo e non è adattato per dispositivi mobili.

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

Attualmente, il programma è in fase di test. Sono state implementate circa 200 funzioni virtuali che consentono di creare semplici programmi per Windows.
È evidente che è impossibile creare qualcosa di complesso in una macchina virtuale del genere, poiché lo spazio disponibile per il codice è di appena 256 KB. I dati possono essere memorizzati in file separati, e il buffer per la parte grafica è stato implementato esternamente. Tutte le funzioni sono semplificate e adattate per un'architettura a 8 bit.

Cosa si può fare in Nanonyam? Ho pensato a diverse attività.

Sviluppo di blocchi di programma

Un giorno avevo bisogno di sviluppare un menu complesso per un display grafico da 128×64 pixel. Non volevo continuamente caricare il firmware nel microcontrollore reale per vedere come apparivano i pixel. Così è nata l'idea di Nanonyam. Nell'immagine sottostante si vede una schermata reale di un OLED relativa a uno dei punti di quel menu. Adesso posso elaborarlo senza un dispositivo reale.

Come creare programmi per Windows su Arduino

Nanonyam (nella sua concezione finale) è un ottimo strumento per sviluppare blocchi di programma per microcontrollori, poiché offre funzioni per lavorare con la grafica (è possibile simulare display e indicatori), con file (è possibile creare log, leggere dati di test), con una tastiera (è possibile leggere fino a 10 pulsanti contemporaneamente), con porte COM (qui c'è un punto separato).

Creazione di programmi veloci

Ad esempio, hai bisogno di elaborare rapidamente 100500 file di testo. Ognuno va aperto, modificato un po' secondo un algoritmo semplice, salvato e chiuso. Se sei un maestro di Python, ti faccio le congratulazioni, hai tutto ciò che ti serve. Ma se sei un accanito utilizzatore di Arduino (e ce ne sono molti), Nanonyam ti aiuterà a risolvere questo problema. Questa è precisamente la mia seconda finalità in Nanonyam: aggiungere molte funzioni utili come l'elaborazione di testo, la creazione di screenshot o la simulazione della pressione di tasti nel sistema (tutto ciò, tra l'altro, è già disponibile), così come molte altre funzioni per affrontare compiti di routine.

Test di hardware tramite porta COM

Nanonyam può fungere da terminale che opera secondo il tuo algoritmo. Si può disegnare un piccolo menu per gestire il dispositivo e visualizzare i dati ricevuti dalla porta. È possibile salvare e leggere i dati dai file per l'analisi. Uno strumento utile per un semplice debug e calibrazione dell'hardware, nonché per creare semplici pannelli di controllo virtuali per il dispositivo. Questo progetto può essere molto utile per studenti e giovani ricercatori.

Insegnamento della programmazione

Tuttavia, come per tutto il progetto Arduino, la principale utilità di Nanonyam risiede nella semplicità delle funzioni, dell'interfaccia e del caricamento. Pertanto, questo progetto dovrebbe interessare i programmatori principianti e coloro che sono soddisfatti del livello di Arduino. A proposito, io stesso non ho ancora studiato Arduino in dettaglio, poiché ho sempre usato WinAVR o AVR Studio, iniziando dall'assembly. Pertanto, l'esempio di programma qui sotto sarà leggermente errato, ma comunque funzionante.

Ciao, Habr!

È giunto il momento di familiarizzare con alcune funzioni di Nanonyam e scrivere un semplice programma. Scriveremo in Arduino, ma non come di consueto, bensì come so fare al momento (ho già detto che non mi sono ancora orientato molto bene in questo ambiente). Iniziamo creando un nuovo sketch e selezionando la scheda Mega2560.

Come creare programmi per Windows su Arduino

Salviamo lo sketch in un file e copiamo accanto la libreria Nanonyam. Sarebbe corretto includere gli header delle librerie, ma non so come in Arduino specificare la compilazione di file separati, quindi per ora includeremo semplicemente le librerie direttamente (e tutte insieme):

#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 ancor più corretto creare un modulo speciale "Nanonyam per Arduino", che si può installare direttamente da Arduino. Non appena capirò come fare, lo realizzerò, ma per ora mostro solo l'essenza del lavoro con la macchina virtuale. Scriviamo questo 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);//Задержка и разгрузка процессора
}

Lo sketch con questo programma puoi scaricarlo qui. Una descrizione dettagliata delle funzioni cerca sul sito. Spero che ci siano abbastanza commenti in questo codice per comprendere l'essenza. Qui la funzione sys_Nanonyam() funge da "password" per la macchina virtuale, che rimuove le limitazioni sulle funzioni virtuali. Senza questa funzione, il programma si chiuderà dopo 3 secondi di funzionamento.

Premiamo il pulsante "Verifica" e non ci dovrebbero essere errori.

Come creare programmi per Windows su Arduino

Ora è necessario ottenere il file binario (firmware). Selezioniamo il menu "Sketch>>Esporta file binario (CTRL+ALT+S)«.

Come creare programmi per Windows su Arduino

In questo modo, nella cartella con lo sketch verranno copiati due file HEX. Prendiamo solo il file senza il prefisso «with_bootloader.mega».

Ci sono diversi modi per specificare il file HEX alla macchina virtuale Nanonyam, tutti descritti in questa pagina. Propongo di creare accanto al file Nanonyam.exe un file Nanonyam.path, in cui scrivere il percorso completo del nostro file HEX. Dopo di che, è possibile avviare Nanonyam.exe. Otteniamo una finestra con la nostra scritta.

Come creare programmi per Windows su Arduino

Allo stesso modo, è possibile creare programmi in altri ambienti, ad esempio, in AVR Studio o WinAVR.

Per ora concludiamo la nostra introduzione a Nanonyam. L'idea principale dovrebbe essere chiara. Ulteriori esempi sono disponibili sul sito. Se ci saranno abbastanza persone interessate a utilizzare questo progetto, farò più esempi e continuerò a «riempire» le librerie delle funzioni virtuali. Sono accetti suggerimenti concreti per lo sviluppo del progetto e segnalazioni di malfunzionamenti, bug e errori. È preferibile inviarli ai contatti indicati sul sito. La discussione è benvenuta nei commenti.

Grazie a tutti per l'attenzione e buona programmazione!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster