Kako kreirati programe za Windows u Arduinu

Kako kreirati programe za Windows u Arduinu

Jednog dana sinula mi je luda ideja donijeti 500 laserskih pokazivača na jednom mjestu. Potrošio sam dosta vremena i uspio. Ispalo je spektakularno i beskorisno, ali svidjelo mi se. Prije šest mjeseci imala sam još jednu ludu ideju. Ovaj put nimalo spektakularno, ali puno korisnije. Na to sam također potrošio dosta vremena. A u ovom članku predstavljam beta verziju svoje druge lude ideje.

Projekt sam nazvao Nanonyam (Nanonjam) i čak mu smislio logo (crtao sam 5 minuta).

Kako kreirati programe za Windows u Arduinu

Za one koji razmišljaju o Arduinu, možemo reći da je Nanonyam virtualni Arduino štit za kontrolu Windowsa.

Drugim riječima, Nanonyam je virtualni stroj koji koristi firmware za AVR mikrokontroler (preporučuje se ATMEGA2560) kao bajt kod. Unutar ovog virtualnog stroja nalazi se simulator AVR jezgre, no umjesto perifernih uređaja, koji se nalaze na SRAM adresama od 0x0060 do 0x01FF, postoji posebno sučelje za virtualne funkcije (uključujući Windows API funkcije). I ovdje je vrlo važno odmah razumjeti: kod za Nanonyam ne bi trebao imati pristup navedenom rasponu memorije, kako ne bi slučajno pozvao, na primjer, funkciju brisanja datoteka ili formatiranja diska. Ostatak raspona SRAM memorije od 0x0200 do 0xFFFF (ovo je više nego u pravom mikrokontroleru) dostupan je korisniku za bilo koju svrhu. Odmah napominjem da postoji posebna zaštita od slučajnog pokretanja firmvera pravog mikrokontrolera (ili firmvera iz druge arhitekture): prije aktiviranja "opasnih" funkcija morate pozvati posebnu lukavu virtualnu funkciju. Postoje i neke druge sigurnosne značajke.

Za izradu programa za Nanonyam morate koristiti posebne biblioteke koje implementiraju sve trenutno dostupne virtualne funkcije. Preuzmite Nanonyam virtualni stroj i biblioteke za njega Zatim možete. Ali stranica s opisom virtualne funkcije. I da, moja stranica je vrlo primitivna i nije prilagođena mobilnim uređajima.

Nanonyam je besplatan za kućnu i komercijalnu upotrebu. Program Nanonyam dostupan je "kakav jest". Izvorni kod nije naveden.

Program je trenutno u fazi testiranja. Implementirano oko 200 virtualnih funkcija koje vam omogućuju stvaranje jednostavnih programa za Windows.
Očito, stvaranje nečeg kompliciranog u takvom virtualnom stroju neće raditi, budući da je memorija za kod samo 256 kB. Podaci se mogu pohraniti u zasebne datoteke, međuspremnik za grafički dio implementiran je eksterno. Sve funkcije su pojednostavljene i prilagođene 8-bitnoj arhitekturi.

Što možete raditi u Nanonyamu? Naišao sam na nekoliko problema.

Izrada programskih blokova

Jednom sam trebao dizajnirati složeni izbornik za grafički zaslon od 128x64 točaka. Stvarno nisam želio stalno učitavati firmware u pravi mikrokontroler da vidim kako pikseli izgledaju. I tako se rodila ideja o Nanonyamu. Slika ispod prikazuje sliku sa stvarnog OLED zaslona jedne od stavki na istom izborniku. Sada mogu raditi kroz to bez pravog uređaja.

Kako kreirati programe za Windows u Arduinu

Nanonyam (u svojoj konačnoj ideji) je dobar alat za razradu programskih blokova za mikrokontrolere, jer postoje funkcije za rad s grafikom (možete simulirati zaslone i indikatore), s datotekama (možete praviti zapisnike, čitati testne podatke), s tipkovnica (možete čitati do 10 gumba u isto vrijeme), s COM portovima (ovdje je zasebna stavka).

Izrada brzih programa

Na primjer, trebate brzo obraditi 100500 tekstualnih datoteka. Svaku je potrebno otvoriti, malo modificirati po nekom jednostavnom algoritmu, spremiti i zatvoriti. Ako ste majstor Pythona, onda vam čestitam, imate sve. Ali ako ste okorjeli arduino (a ima ih mnogo), onda će vam Nanonyam pomoći u rješavanju ovog problema. Ovo je moj drugi cilj u Nanonyamu: dodati mnoge korisne funkcije kao što su obrada teksta, snimanje zaslona ili simulacija pritisaka na tipke u sustavu (sve to, usput rečeno, već postoji), kao i mnoge druge funkcije za rješavanje rutinskih zadataka .

Testiranje hardvera preko COM porta

Nanonyam može djelovati kao terminal koji radi prema vašem algoritmu. Možete nacrtati mali izbornik za upravljanje uređajem i prikaz podataka primljenih iz priključka. Možete spremati i čitati podatke iz datoteka za analizu. Zgodan alat za jednostavno otklanjanje pogrešaka i kalibraciju hardvera, kao i za stvaranje jednostavnih virtualnih kontrolnih ploča s instrumentima. Za studente i mlade znanstvenike ovaj projekt može biti vrlo koristan.

Trening programiranja

Međutim, kao i kod cijelog Arduino projekta, glavna korisnost Nanonyama leži u pojednostavljenju funkcija, sučelja i bootloadera. Stoga bi ovaj projekt trebao biti zanimljiv programerima početnicima i onima koji su zadovoljni razinom arduina. Usput, još uvijek nisam detaljno proučavao arduino, jer sam uvijek koristio WinAVR ili AVR Studio, ali sam počeo s asemblerom. Stoga će primjer programa u nastavku biti malo pogrešan, ali prilično radi.

Pozdrav Habr!

Vrijeme je da se upoznate s nekim značajkama Nanonyama i napišete jednostavan program. Pisaćemo u Arduinu, ali ne na uobičajeni način, već na način na koji ja sada mogu (već sam rekao da nisam još dobro shvatio ovo okruženje). Prvo napravite novu skicu i odaberite Mega2560 ploču.

Kako kreirati programe za Windows u Arduinu

Spremite skicu u datoteku i zatim kopirajte Nanonyam knjižnica. Bilo bi ispravno uključiti zaglavlja biblioteka, ali ne znam kako napisati kompilaciju pojedinačnih datoteka u Arduinu, tako da ćemo za sada samo izravno uključiti biblioteke (i sve odjednom):

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

Bilo bi još ispravnije napraviti poseban modul "Nanonyam za Arduino", koji se može instalirati izravno iz Arduina. Čim skužim, napravit ću to, ali za sada samo pokazujem bit rada s virtualnim strojem. Napišemo sljedeći kod:

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

Skicirajte ovim programom možete preuzeti ovdje. Detaljan opis funkcija pretražite na stranici. Nadam se da su komentari u ovom kodu dovoljni da shvatite bit. Ovdje funkcija sys_Nanonyam() igra ulogu "lozinke" za virtualni stroj, čime se uklanjaju ograničenja virtualnih funkcija. Bez ove funkcije, program će se zatvoriti nakon 3 sekunde rada.

Pritisnemo gumb "Provjeri" i ne bi trebalo biti nikakvih pogrešaka.

Kako kreirati programe za Windows u Arduinu

Sada trebate nabaviti binarnu datoteku (firmware). Odaberite izbornik "Skica>>Izvoz binarne datoteke (CTRL+ALT+S)”.

Kako kreirati programe za Windows u Arduinu

Ovo će kopirati dvije HEX datoteke u mapu skica. Uzimamo samo datoteku bez prefiksa "with_bootloader.mega".

Postoji nekoliko načina za određivanje HEX datoteke Nanonyam virtualnom stroju, svi su opisani na ovoj stranici. Predlažem da stvorite pored datoteke Nanonyam.exe datoteku staza, u kojem se registrira puna staza do naše HEX datoteke. Nakon čega možete trčati Nanonyam.exe. Dobivamo prozor s našim natpisom.

Kako kreirati programe za Windows u Arduinu

Slično, možete kreirati programe u drugim okruženjima, kao što su AVR Studio ili WinAVR.

Ovdje završavamo naše upoznavanje s Nanonyamom. Glavna ideja treba biti jasna. Više primjera nalazi se na web stranici.. Ako bude dovoljno ljudi voljnih koristiti ovaj projekt, napravit ću još primjera i nastaviti "puniti" knjižnice virtualnih funkcija. Prihvaćaju se konkretne ideje za razvoj projekta i prijave kvarova, bugova i grešaka. Preporučljivo ih je uputiti na kontakte, navedeno na web stranici. A rasprava je dobrodošla u komentarima.

Hvala svima na pažnji i dobrom programiranju!

Izvor: www.habr.com

Dodajte komentar