Kako kreirati programe za Windows u Arduinu

Kako kreirati programe za Windows u Arduinu

Jednog dana mi je pala na pamet luda ideja da miksam 500 laserskih pokazivača na jednom mjestu. Proveo sam dosta vremena i uradio to. Ispalo je spektakularno i beskorisno, ali mi se svidjelo. Prije šest mjeseci došao sam na još jednu ludu ideju. Ovoga puta nije nimalo spektakularno, ali mnogo korisnije. Takođe sam potrošio dosta vremena na to. I u ovom članku predstavljam beta verziju moje druge lude ideje.

Projekat sam nazvao Nanonyam (Nanonyam) i čak sam smislio logo za njega (trebalo mi je čitavih 5 minuta da nacrtam).

Kako kreirati programe za Windows u Arduinu

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

Drugim riječima, Nanonyam je virtuelna mašina koja koristi firmver za AVR mikrokontroler (preporučuje se ATMEGA2560) kao bajt kod. Unutar ove virtuelne mašine nalazi se simulator AVR kernela, ali umesto periferije, koja se nalazi na SRAM adresama od 0x0060 do 0x01FF, postoji poseban interfejs za virtuelne funkcije (uključujući Windows API funkcije). I ovdje je vrlo važno odmah razumjeti: kod za Nanonyam ne bi trebao imati nikakav pristup navedenom rasponu memorije, kako ne bi slučajno pozvao, na primjer, funkciju brisanja datoteka ili formatiranja diska. Preostali raspon SRAM memorije od 0x0200 do 0xFFFF (ovo je veće nego u pravom mikrokontroleru) dostupan je korisniku za bilo koju svrhu. Odmah moram napomenuti 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. Tu su i neki drugi sigurnosni elementi.

Da biste kreirali programe za Nanonyam, morate koristiti posebne biblioteke koje implementiraju sve trenutno dostupne virtualne funkcije. Preuzmite Nanonyam virtuelnu mašinu i njene biblioteke Možete onda. I ovde stranica sa opisom virtualne funkcije. I da, moja stranica je vrlo primitivna i nije prilagođena za mobilne uređaje.

Nanonyam je besplatan za kućnu i komercijalnu upotrebu. Nanonyam program se pruža na principu „kao što jeste“. Izvorni kod nije naveden.

Trenutno je program u fazi testiranja. Implementirano je oko 200 virtualnih funkcija koje vam omogućavaju kreiranje jednostavnih programa za Windows.
Očigledno, neće biti moguće napraviti ništa složeno u takvoj virtuelnoj mašini, jer postoji samo 256 kB memorije za kod. Podaci se mogu pohraniti u zasebne datoteke, bafer za grafički dio je implementiran eksterno. Sve funkcije su pojednostavljene i prilagođene za 8-bitnu arhitekturu.

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

Testiranje programskih blokova

Jednom sam morao da razvijem složen meni za grafički ekran od 128x64 piksela. Zaista nisam želio stalno učitavati firmver u pravi mikrokontroler da vidim kako pikseli izgledaju. Tako se rodila ideja o Nanonyamu. Slika ispod je slika sa pravog OLED ekrana jedne od stavki u istom meniju. Sada mogu raditi kroz to bez stvarnog uređaja.

Kako kreirati programe za Windows u Arduinu

Nanonyam (u svom konačnom dizajnu) je dobar alat za izradu programskih blokova za mikrokontrolere, jer ima funkcije za rad sa grafikom (možete simulirati displeje i indikatore), sa fajlovima (možete praviti logove, čitati testne podatke), sa tastaturu (možete čitati do 10 tastera istovremeno), sa COM portovima (ovde postoji posebna stavka).

Kreiranje brzih programa

Na primjer, trebate brzo obraditi 100500 tekstualnih datoteka. Svaki treba otvoriti, malo promijeniti po nekom jednostavnom algoritmu, sačuvati i zatvoriti. Ako ste majstor Pythona, čestitam, imate sve. Ali ako ste okorjeli Arduino tip (a ima ih mnogo), onda će vam Nanonyam pomoći da riješite ovaj problem. To je upravo moj drugi cilj u Nanonyamu: dodati mnoge korisne funkcije kao što su obrada teksta, kreiranje snimaka ekrana ili simulacija pritiska na tipke u sustavu (sve to, inače, već postoje), kao i mnoge druge funkcije za rješavanje rutina zadataka.

Testiranje hardvera preko COM porta

Nanonyam može djelovati kao terminal koji radi prema vašem algoritmu. Možete nacrtati mali meni za kontrolu uređaja i prikaz podataka primljenih sa porta. Možete sačuvati i čitati podatke iz datoteka za analizu. Pogodan alat za jednostavno otklanjanje grešaka i kalibraciju hardvera, kao i za kreiranje jednostavnih virtuelnih kontrolnih panela instrumenata. Ovaj projekat može biti veoma koristan za studente i mlade naučnike.

Obuka programiranja

Međutim, kao i kod cijelog Arduino projekta, glavna korisnost Nanonyama leži u jednostavnosti njegovih funkcija, interfejsa i pokretača. Stoga bi ovaj projekat trebao biti od interesa za nove programere i one koji su zadovoljni Arduino nivoom. Inače, ja još uvijek nisam detaljno proučavao Arduino, pošto sam uvijek koristio WinAVR ili AVR Studio, a počinjao sa asemblerom. Stoga će primjer programa u nastavku biti malo netačan, ali prilično funkcionalan.

Zdravo, Habr!

Vrijeme je da se upoznate s nekim od Nanonyam-ovih funkcija i napišete jednostavan program. Pisaćemo u Arduinu, ali ne na tradicionalan način, već na način na koji sada mogu (već sam rekao da još nisam dobro razumeo ovo okruženje). Prvo kreirajte novu skicu i odaberite Mega2560 ploču.

Kako kreirati programe za Windows u Arduinu

Spremite skicu u datoteku i kopirajte je pored nje Nanonyam biblioteka. Bilo bi ispravno uključiti zaglavlja biblioteke, ali ne znam kako da kompajliram pojedinačne datoteke u Arduinu, tako da ćemo za sada uključiti biblioteke direktno (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"

Još bolje bi bilo napraviti poseban modul “Nanonyam for Arduino”, koji se može instalirati direktno sa Arduina. Čim ovo shvatim, uradiću to, ali za sada samo pokazujem suštinu rada sa virtuelnom mašinom. Piš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 web stranici. Nadam se da su komentari u ovom kodu dovoljni da shvate poentu. Evo funkcije sys_Nanonyam() igra ulogu "lozinke" za virtuelnu mašinu, koja uklanja ograničenja virtuelnih funkcija. Bez ove funkcije, program će se zatvoriti nakon 3 sekunde rada.

Kliknite na dugme „Proveri“ i ne bi trebalo biti grešaka.

Kako kreirati programe za Windows u Arduinu

Sada morate dobiti binarnu datoteku (firmware). Odaberite meni "Skica>>Izvezi binarni fajl (CTRL+ALT+S)".

Kako kreirati programe za Windows u Arduinu

U tom slučaju, dvije HEX datoteke će biti kopirane u mapu sa skicom. Uzimamo samo fajl bez prefiksa “with_bootloader.mega”.

Postoji nekoliko načina za usmjeravanje HEX datoteke na virtuelnu mašinu Nanonyam, svi su opisani na ovoj stranici. Predlažem kreiranje pored datoteke Nanonyam.exe fajl Nanonyam.path, u koji upisuje punu putanju do naše HEX datoteke. Nakon toga možete trčati Nanonyam.exe. Dobijamo prozor sa našim natpisom.

Kako kreirati programe za Windows u Arduinu

Slično, možete kreirati programe u drugim okruženjima, na primjer, u AVR Studio ili WinAVR.

Ovdje ćemo završiti naše upoznavanje s Nanonyamom. Glavna ideja treba da bude jasna. Na web stranici ima više primjera. Ako ima dovoljno ljudi koji su voljni da koriste ovaj projekat, napraviću još primera i nastaviti da „napunjujem” biblioteke virtuelnih funkcija. Prihvataju se konkretne ideje za razvoj projekta i izvještaji o kvarovima, greškama i greškama. Preporučljivo je da ih uputite na kontakte, naznačeno na web stranici. I diskusija je dobrodošla u komentarima.

Hvala svima na pažnji i srećnom programu!

izvor: www.habr.com

Dodajte komentar