Ako vytvárať programy pre Windows v Arduine

Ako vytvárať programy pre Windows v Arduine

Jedného dňa ma napadla bláznivá myšlienka zhromaždiť 500 laserových ukazovateľov na jednom mieste.Strávil som veľa času a urobil som to. Vyzeralo to pôsobivo a bolo to zbytočné, ale páčilo sa mi to. Pred šiestimi mesiacmi ma napadla ďalšia bláznivá myšlienka. Tentoraz to nebolo vôbec náročné, ale oveľa užitočnejšie. Tiež som na tom strávil veľa času. V tomto článku predstavujem beta verziu svojej druhej bláznivej myšlienky.

Projekt som nazval Nanonyam a dokonca som mu navrhol logo (kreslil som celých 5 minút).

Ako vytvárať programy pre Windows v Arduine

Pre tých, ktorí uvažujú v termínoch Arduino, by sa dalo povedať, že Nanonyam je virtuálny Arduino shield na ovládanie Windows.

Inými slovami, Nanonyam je virtuálny stroj, v ktorom sa ako bajtkód používa firmware pre mikrokontrolér AVR (odporúča sa ATMEGA2560). Vnútri tohto virtuálneho stroja sa nachádza simulátor jadra AVR, ale namiesto periférnych zariadení, ktoré sa nachádzajú na adresách SRAM od 0x0060 do 0x01FF, je tu špeciálne rozhranie k virtuálnym funkciám (vrátane funkcií Windows API). A tu je veľmi dôležité hneď si uvedomiť: kód pre Nanonyam by nemal mať žiadne prístupy k uvedenému rozsahu pamäte, aby náhodou nevykonal napríklad funkciu vymazania súborov alebo naformátovania disku. Zvyšok rozsahu pamäte SRAM od 0x0200 do 0xFFFF (to je viac než v reálnom mikrokontroléri) je používateľovi k dispozícii na akékoľvek účely. Okamžite poznamenám, že existuje špeciálna ochrana pred náhodným spustením firmvéru reálneho mikrokontroléra (alebo firmvéru z inej architektúry): pred aktivovaním „nebezpečných“ funkcií je potrebné zavolať špeciálnu zákernú virtuálnu funkciu. Existujú aj ďalšie ochranné prvky.

Aby ste mohli vytvárať programy pre Nanonyam, musíte použiť špeciálne knižnice, ktoré implementujú všetky dostupné virtuálne funkcie k dnešnému dňu. Stiahnite si virtuálny stroj Nanonyam a knižnice k nemu, môžeš tu. A teraz stránka popisujúca virtuálne funkcie.. A áno, moja stránka je veľmi primitívna a nie je prispôsobená pre mobilné zariadenia.

Program Nanonyam je bezplatný na domáce a komerčné použitie. Program Nanonyam je poskytovaný na základe podmienok „tak ako je“. Zdrojový kód nie je poskytovaný.

V súčasnosti je program v testovacej fáze. Bolo implementovaných približne 200 virtuálnych funkcií, ktoré umožňujú vytvárať jednoduché programy pre Windows.
Je zrejmé, že vytvárať niečo zložité v takej virtuálnej stroji nebude možné, keďže pamäť pre kód je len 256 kB. Dáta je možné ukladať do samostatných súborov, buffer pre grafickú časť je realizovaný externým spôsobom. Všetky funkcie sú zjednodušené a prispôsobené pre 8-bitovú architektúru.

Čo sa dá urobiť v Nanonyam? Pripravili sme niekoľko úloh.

Prepracovanie programových blokov

Raz som potreboval vyvinúť zložitú ponuku pre grafický displej 128×64 bodov. Veľmi sa mi nechcelo neustále nahrávať firmvér do reálneho mikrocontrolleru, aby som videl, ako vyzerajú pixely. Tak prišla myšlienka Nanonyam. Na obrázku nižšie je znázornený obrázok z reálneho OLED displeja jedného z bodov tejto ponuky. Teraz ho môžem spracovať bez reálneho zariadenia.

Ako vytvárať programy pre Windows v Arduine

Nanonyam (v jeho konečnom zámere) je dobrý nástroj na prepracovanie programových blokov pre mikrocontroller, pretože má funkcie práce s grafikou (je možné simulovať displeje a indikátory), so súbormi (je možné robiť logy, čítať testovacie dáta), s klávesnicou (je možné čítať až 10 tlačidiel súčasne), s COM portami (toto je samostatná položka).

Vytváranie rýchlych programov

Napríklad, potrebujete rýchlo spracovať 100500 textových súborov. Každý je potrebné otvoriť, mierne upraviť podľa nejakého jednoduchého algoritmu, uložiť a zatvoriť. Ak ste majster Python, tak vás blahoželám, všetko máte. Ale ak ste zažratý Arduino nadšenec (a takých nie je málo), potom vám Nanonyam pomôže pri riešení tejto úlohy. Toto je moja druhá úloha v Nanonyam: pridať množstvo užitočných funkcií, ako je spracovanie textu, vytváranie screenshotov alebo simulácia stlačenia klávesov v systéme (toto všetko už existuje), ako aj množstvo ďalších funkcií pre riešenie rutinných úloh.

Testovanie zariadení cez COM port

Nanonyam môže slúžiť ako terminál, ktorý pracuje podľa vášho algoritmu. Môžete nakresliť malé menu na ovládanie zariadenia a zobrazovať dáta získané z portu. Je možné ukladať a čítať dáta z súborov na analýzu. Umožňuje to pohodlné nástroje na jednoduché ladenie a kalibráciu hardvéru, ako aj na vytváranie jednoduchých virtuálnych ovládacích panelov pre prístroj. Pre študentov a mladých vedcov môže byť tento projekt veľmi užitočný.

Výučba programovania

Napriek tomu, ako vo všetkom projekte Arduino, hlavnou výhodou Nanonyam je jednoduchosť funkcií, rozhrania a bootloadera. Preto by tento projekt mal byť zaujímavý pre nových programátorov a tých, ktorých uspokojuje úroveň Arduina. Mimochodom, sám som zatiaľ podrobne nepreštudoval Arduina, pretože som vždy používal WinAVR alebo AVR Studio a začínal som s Assemblerom. Preto bude nižšie uvedený príklad programu mierne nepresný, ale plne funkčný.

Ahoj, Habr!

Prišiel čas oboznámiť sa s niektorými funkciami Nanonyam a napísať jednoduchý program. Budeme programovať v Arduine, ale nie tak, ako je obvyklé, ale tak, ako viem (už som spomínal, že sa s touto prostredím zatiaľ veľmi dobre neorientujem). Najprv vytvoríme nový sketč a vyberieme dosku Mega2560.

Ako vytvárať programy pre Windows v Arduine

Uložíme sketč do súboru a vedľa skopírujeme knižnicu Nanonyam. Správne by bolo zahrnúť hlavičky knižníc, ale neviem, ako v Arduine zadať kompiláciu jednotlivých súborov, preto zatiaľ jednoducho zahrnieme knižnice priamo (a všetky naraz):

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

Ešte lepšie by bolo vytvoriť špeciálny modul "Nanonyam pre Arduino", ktorý by sa dal nainštalovať priamo z Arduina. Akonáhle pochopím, ako na to, urobím to, ale zatiaľ ukazujem podstatu práce s virtuálnym strojom. Napíšeme takýto kód:

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

Sketč s týmto programom si môžete stiahnuť tu. Podrobný popis funkcií hľadajte na stránke. Dúfam, že komentárov v tomto kóde je dosť na pochopenie podstaty. Tu funkcia sys_Nanonyam() hrá úlohu "hesla" pre virtuálny stroj, ktorý odstraňuje obmedzenia na virtuálne funkcie. Bez tejto funkcie sa program uzavrie po 3 sekundách prevádzky.

Stlačte tlačidlo "Skontrolovať" a nemali by byť žiadne chyby.

Ako vytvárať programy pre Windows v Arduine

Teraz treba získať binárny súbor (firmvér). Vyberáme menu "Sketč>>Export binárneho súboru (CTRL+ALT+S)«.

Ako vytvárať programy pre Windows v Arduine

Pri tom sa do priečinka so sketčom skopírujú dva HEX-súbory. Berieme iba súbor bez predpony „with_bootloader.mega“.

Existuje niekoľko spôsobov, ako zadať HEX súbor virtuálnemu stroju Nanonyam, všetky sú popísané na tejto stránke.. Navrhujem vytvoriť vedľa súboru Nanonyam.exe súbor Nanonyam.path, kde sa zapíše úplná cesta k nášmu HEX súboru. Po tom môžeme spustiť Nanonyam.exe. Zobrazí sa okno s naším nápisom.

Ako vytvárať programy pre Windows v Arduine

Rovnako je možné vytvárať programy v iných prostrediach, napríklad v AVR Studio alebo WinAVR.

Týmto pre tento moment ukončíme oboznámenie s Nanonyam. Hlavná myšlienka by mala byť jasná. Ďalšie príklady sú na stránke. Ak bude dostatok záujemcov o tento projekt, pripravím viac príkladov a budem „napĺňať“ knižnice virtuálnych funkcií. Konkrétne nápady na rozvoj projektu a správy o chybách, bugoch a preklepoch sú vítané. Ideálne ich posielať prostredníctvom kontaktov, uvedených na stránke. Diskusie sú vítané v komentároch.

Všetkým ďakujem za pozornosť a prajem úspešné programovanie!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster