Cum se creează programe pentru Windows în Arduino

Cum se creează programe pentru Windows în Arduino

Într-o zi mi-a venit ideea nebună să aduc 500 de indicatori laser într-un singur loc. Am petrecut mult timp și am făcut-o. A ieșit spectaculos și inutil, dar mi-a plăcut. Acum șase luni am avut o altă idee nebunească. De data aceasta, deloc spectaculos, dar mult mai folositor. De asemenea, am petrecut mult timp pe el. Și în acest articol, vă prezint o versiune beta a a doua mea idee nebună.

Am numit proiectul Nanonyam (Nanonyam) și chiar am venit cu un logo pentru el (am desenat timp de 5 minute).

Cum se creează programe pentru Windows în Arduino

Pentru cei care gândesc în termeni de Arduino, putem spune că Nanonyam este un scut Arduino virtual pentru controlul Windows.

Cu alte cuvinte, Nanonyam este o mașină virtuală care folosește firmware-ul pentru microcontrolerul AVR (este recomandat ATMEGA2560) ca bytecode. În interiorul acestei mașini virtuale se află un simulator de bază AVR, dar în loc de dispozitive periferice, care sunt situate la adrese SRAM de la 0x0060 la 0x01FF, există o interfață specială pentru funcțiile virtuale (inclusiv funcțiile API Windows). Și aici este foarte important să înțelegeți imediat: codul pentru Nanonyam nu ar trebui să aibă acces la intervalul de memorie specificat, pentru a nu apela accidental, de exemplu, funcția de ștergere a fișierelor sau de formatare a unui disc. Restul intervalului de memorie SRAM de la 0x0200 la 0xFFFF (aceasta este mai mult decât într-un microcontroler real) este disponibil pentru utilizator pentru orice scop. Observ imediat că există o protecție specială împotriva lansării accidentale a firmware-ului unui microcontroler real (sau firmware-ului dintr-o altă arhitectură): înainte de a activa funcții „periculoase”, trebuie să apelați o funcție virtuală complicată specială. Există și alte caracteristici de securitate.

Pentru a crea programe pentru Nanonyam, trebuie să utilizați biblioteci speciale care implementează toate funcțiile virtuale disponibile în prezent. Descărcați mașina virtuală Nanonyam și bibliotecile pentru aceasta Puteți apoi. Dar pagina de descriere a funcției virtuale. Și da, site-ul meu este foarte primitiv și nu este adaptat pentru dispozitive mobile.

Nanonyam este gratuit pentru uz casnic și comercial. Programul Nanonyam este furnizat „ca atare”. Codul sursă nu este furnizat.

Programul se află în prezent în faza de testare. Au implementat aproximativ 200 de funcții virtuale care vă permit să creați programe simple pentru Windows.
Evident, crearea a ceva complicat într-o astfel de mașină virtuală nu va funcționa, deoarece memoria pentru cod este de doar 256 kB. Datele pot fi stocate în fișiere separate, tamponul pentru partea grafică este implementat extern. Toate funcțiile sunt simplificate și adaptate pentru arhitectura pe 8 biți.

Ce poți face în Nanonyam? Am venit cu câteva probleme.

Dezvoltarea blocurilor de programe

Odată am avut nevoie să creez un meniu complex pentru un afișaj grafic de 128x64 puncte. Chiar nu am vrut să încarc constant firmware-ul într-un microcontroler real pentru a vedea cum arată pixelii. Și așa s-a născut ideea de Nanonyam. Figura de mai jos arată o imagine de pe un afișaj OLED real a unuia dintre elementele din același meniu. Acum pot lucra prin el fără un dispozitiv real.

Cum se creează programe pentru Windows în Arduino

Nanonyam (în ideea sa finală) este un instrument bun pentru elaborarea blocurilor de programe pentru microcontrolere, deoarece există funcții pentru lucrul cu grafică (puteți simula afișaje și indicatoare), cu fișiere (puteți face jurnale, citiți datele de testare), cu o tastatură (puteți citi până la 10 butoane în același timp), cu porturi COM (aici este un articol separat).

Crearea de programe rapide

De exemplu, trebuie să procesați rapid 100500 de fișiere text. Fiecare trebuie să fie deschis, ușor modificat conform unui algoritm simplu, salvat și închis. Dacă ești un maestru Python, atunci te felicit, ai totul. Dar dacă sunteți un arduino întărit (și există mulți dintre ei), atunci Nanonyam vă va ajuta să rezolvați această problemă. Acesta este cel de-al doilea obiectiv al meu în Nanonyam: să adaug multe funcții utile, cum ar fi procesarea textului, realizarea de capturi de ecran sau simularea apăsărilor de taste în sistem (toate acestea, apropo, sunt deja acolo), precum și multe alte funcții pentru rezolvarea sarcinilor de rutină .

Testarea hardware-ului prin portul COM

Nanonyam poate acționa ca un terminal care funcționează conform algoritmului tău. Puteți desena un mic meniu pentru a controla dispozitivul și pentru a afișa datele primite de la port. Puteți salva și citi datele din fișiere pentru analiză. Un instrument la îndemână pentru depanarea simplă și calibrarea hardware-ului, precum și pentru crearea unor panouri virtuale simple de control al instrumentelor. Pentru studenți și tineri oameni de știință, acest proiect poate fi foarte util.

Instruire de programare

Cu toate acestea, ca și în cazul întregului proiect Arduino, principala utilitate a lui Nanonyam constă în simplificarea funcțiilor, a interfeței și a bootloader-ului. Prin urmare, acest proiect ar trebui să fie de interes pentru programatorii începători și pentru cei care sunt mulțumiți de nivelul arduino. Apropo, eu însumi încă nu am studiat arduino în detaliu, pentru că am folosit întotdeauna WinAVR sau AVR Studio, dar am început cu assembler. Prin urmare, exemplul de program de mai jos va fi puțin greșit, dar destul de funcțional.

Salut Habr!

Este timpul să vă familiarizați cu unele caracteristici Nanonyam și să scrieți un program simplu. Vom scrie în Arduino, dar nu în modul obișnuit, ci în modul în care pot acum (am spus deja că încă nu mi-am dat seama prea bine de acest mediu). Mai întâi, creați o nouă schiță și selectați placa Mega2560.

Cum se creează programe pentru Windows în Arduino

Salvați schița într-un fișier și apoi copiați-o Biblioteca Nanonyam. Ar fi corect să includă anteturile bibliotecii, dar nu știu cum să scriu compilarea fișierelor individuale în Arduino, așa că, deocamdată, includeți bibliotecile direct (și toate odată):

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

Ar fi și mai corect să faci un modul special „Nanonyam pentru Arduino”, care poate fi instalat direct din Arduino. De îndată ce îmi dau seama, o voi face, dar deocamdată arăt doar esența lucrului cu o mașină virtuală. Scriem următorul cod:

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

Schițați cu acest program poate fi descărcat aici. Descrierea detaliată a funcțiilor cauta pe site. Sper că comentariile din acest cod sunt suficiente pentru a înțelege esența. Aici funcția sys_Nanonyam() joacă rolul unei „parole” pentru mașina virtuală, care elimină restricțiile asupra funcțiilor virtuale. Fără această funcție, programul se va închide după 3 secunde de funcționare.

Apăsăm butonul „Verifică” și nu ar trebui să existe erori.

Cum se creează programe pentru Windows în Arduino

Acum trebuie să obțineți un fișier binar (firmware). Selectați meniul "Schiță>>Exportați fișier binar (CTRL+ALT+S)“.

Cum se creează programe pentru Windows în Arduino

Aceasta va copia două fișiere HEX în folderul schiță. Luăm doar fișierul fără prefixul „with_bootloader.mega”.

Există mai multe moduri de a specifica un fișier HEX pe mașina virtuală Nanonyam, toate sunt descrise pe această pagină. Vă sugerez să creați lângă fișier Nanonyam.exe fișier cale, în care să înregistrăm calea completă către fișierul nostru HEX. După care poți alerga Nanonyam.exe. Primim o fereastră cu inscripția noastră.

Cum se creează programe pentru Windows în Arduino

În mod similar, puteți crea programe în alte medii, cum ar fi AVR Studio sau WinAVR.

Aici terminăm cunoștințele noastre cu Nanonyam. Ideea principală ar trebui să fie clară. Mai multe exemple sunt pe site.. Dacă sunt destui oameni dispuși să folosească acest proiect, atunci voi face mai multe exemple și voi continua să „umplem” bibliotecile de funcții virtuale. Sunt acceptate idei concrete pentru dezvoltarea proiectului și rapoarte de defecțiuni, bug-uri și bug-uri. Este recomandabil să îi direcționați către contacte, indicat pe site. Și discuția este binevenită în comentarii.

Vă mulțumim tuturor pentru atenție și programare bună!

Sursa: www.habr.com

Adauga un comentariu