Kako u Arduinu stvarati programe za Windows

Kako u Arduinu stvarati programe za Windows

Jednom sam dobio ludu ideju da skupim 500 laser pokazivača na jedno mjesto. Potrošio sam puno vremena i to sam napravio. Bilo je spektakularno i beskorisno, ali mi se svidjelo. Prije pola godine došla je još jedna luda ideja. Ovaj put nije bila spektakularna, ali je puno korisnija. Također sam potrošio puno vremena na nju. U ovom članku predstavljam beta verziju svoje druge lude ideje.

Projekat sam nazvao Nanonyam i čak sam mu smislio logo (crtao sam cijelih 5 minuta).

Kako u Arduinu stvarati programe za Windows

Za one koji razmišljaju u terminima Arduina, može se reći da je Nanonyam virtualna Arduino shield za upravljanje Windowsom.

Drugim riječima, Nanonyam je virtualna mašina koja koristi firmware za mikrokontrolere AVR (preporučuje se ATMEGA2560) kao bajt kod. Unutra ove virtualne mašine nalazi se simulator AVR jezgre, ali umjesto perifernih uređaja koji se nalaze na adresama SRAM od 0x0060 do 0x01FF, postoji poseban sučelje za virtualne funkcije (uključujući Windows API funkcije). Ovdje je važno odmah shvatiti: kod za Nanonyam ne smije imati nikakve pozive na navedeni raspon memorije, kako ne bi slučajno pokrenuo, na primjer, funkciju brisanja datoteka ili formatiranja diska. Ostali raspon memorije SRAM od 0x0200 do 0xFFFF (to je više nego u stvarnom mikrokontroleru) dostupan je korisniku za bilo koju svrhu. Odmah napominjem da postoji posebna zaštita od slučajnog pokretanja firmwarea stvarnog mikrokontrolera (ili firmwarea iz druge arhitekture): prije aktiviranja "opasnih" funkcija, potrebno je pozvati posebnu pametnu virtualnu funkciju. Ima i drugih elemenata zaštite.

Kako biste stvarali programe za Nanonyam, trebate koristiti posebne biblioteke u kojima su implementirane sve dostupne virtualne funkcije do sada. Preuzmite virtualnu mašinu Nanonyam i biblioteke za nju možete ovdje. A ovdje stranica opisa virtualnih funkcija. I da, moja web stranica je vrlo primitivna i nije prilagođena za mobilne uređaje.

Program Nanonyam je besplatan za kućnu i komercijalnu upotrebu. Program Nanonyam se pruža pod uvjetima "kakav jest". Izvorni kod nije dostupan.

Trenutno je program u fazi testiranja. Realizirano je oko 200 virtualnih funkcija koje omogućuju stvaranje jednostavnih programa za Windows.
Očito je da u takvoj virtualnoj mašini neće biti moguće stvoriti nešto složeno, jer je memorija za kod svega 256 kB. Podaci se mogu pohranjivati u zasebnim datotekama, a međuspremnik za grafički dio je vanjski. Sve funkcije su pojednostavljene i prilagođene za 8-bitnu arhitekturu.

Što se može učiniti u Nanonyam? Smislio sam nekoliko zadataka.

Obrada programskih blokova

Jednom sam trebao razviti složeni izbornik za grafički ekran 128×64 točke. Nimalo mi se nije sviđalo stalno učitavati firmware u pravi mikrokontroler da bih vidio kako izgledaju pikseli. Tako je nastala ideja za Nanonyam. Na slici ispod je prikaz s pravog OLED ekrana jednog od stavki tog izbornika. Sada ga mogu obrađivati bez stvarnog uređaja.

Kako u Arduinu stvarati programe za Windows

Nanonyam (u svojoj konačnoj zamisli) je dobar alat za obradu programskih blokova za mikrokontrolere, jer postoje funkcije za rad s grafikom (možete imitirati ekrane i indikatore), s datotekama (možete praviti logove, čitati testne podatke), s tipkovnicom (možete očitati do 10 tipki istovremeno), s COM portovima (ovdje je poseban odjeljak).

Stvaranje brzih programa

Na primjer, trebate brzo obraditi 100500 tekstualnih datoteka. Svaku treba otvoriti, malo izmijeniti prema nekakvom jednostavnom algoritmu, spremiti i zatvoriti. Ako ste majstor Python-a, čestitam, imate sve. No, ako ste strastveni Arduino korisnik (a takvih ima mnogo), Nanonyam će vam pomoći u rješavanju ovog zadatka. Upravo to je moj drugi cilj u Nanonyam: dodati mnoštvo korisnih funkcija poput obrade teksta, stvaranja snimaka ekrana ili imitacije pritiska tipki u sustavu (to sve, usput, već postoji), kao i mnoštvo drugih funkcija za rješavanje rutinskih zadataka.

Testiranje hardvera putem COM porta

Nanonyam može funkcionirati kao terminal koji radi prema vašem algoritmu. Možete izraditi mali izbornik za upravljanje uređajem i prikazivati podatke dobivene iz porta. Moguće je pohranjivati i čitati podatke iz datoteka za analizu. To je zgodan alat za jednostavno otklanjanje pogrešaka i kalibraciju hardvera, kao i za stvaranje jednostavnih virtualnih kontrolnih ploča uređaja. Ovaj projekt može biti vrlo koristan za studente i mlade znanstvenike.

Učenje programiranja

Međutim, kao i u cijelom projektu Arduino, glavna korist od Nanonyama leži u jednostavnosti funkcija, sučelja i bootloadera. Stoga bi ovaj projekt trebao biti zanimljiv početnicima programerima i onima kojima je razina Arduina dovoljna. Usput, još uvijek nisam detaljno proučio Arduino, jer sam uvijek koristio WinAVR ili AVR Studio, a počeo sam s asemblerom. Stoga će primjer programa u nastavku biti malo netočan, ali sasvim funkcionalan.

Pozdrav, Habr!

Došlo je vrijeme da se upoznamo s nekim funkcijama Nanonyama i napišemo jednostavan program. Pisat ćemo u Arduinu, ali ne na uobičajen način, već onako kako ja trenutno znam (već sam rekao da još uvijek nisam baš dobro savladao ovo okruženje). Za početak, kreiramo novu skicu i biramo ploču Mega2560.

Kako u Arduinu stvarati programe za Windows

Snimamo skicu u datoteku i kopiramo blizu biblioteku Nanonyam. Ispravno bi bilo uključiti zaglavlja biblioteka, ali ne znam kako u Arduinu napisati kompilaciju odvojenih datoteka, pa ćemo za sada jednostavno uključiti biblioteke izravno (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"

Još ispravnije bi bilo napraviti poseban modul “Nanonyam za Arduino”, koji se može instalirati izravno iz Arduina. Kada to shvatim, napravit ću, a za sada pokazujem bit rada s virtualnom mašinom. Pišemo takav 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);//Задержка и разгрузка процессора
}

Skica s ovim programom može se preuzeti ovdje. Detaljan opis funkcija potražite na web stranicama. Nadam se da je komentara u ovom kodu dovoljno da se shvati suština. Ovdje funkcija sys_Nanonyam() igra ulogu 'lozinke' za virtualnu mašinu koja uklanja ograničenja na virtualne funkcije. Bez ove funkcije program će se zatvoriti nakon 3 sekunde rada.

Pritiskamo gumb 'Provjeri' i ne bi smjelo biti grešaka.

Kako u Arduinu stvarati programe za Windows

Sada trebamo dobiti binarnu datoteku (firmware). Biramo izbornik 'Skica>>Izvoz binarne datoteke (CTRL+ALT+S)«.

Kako u Arduinu stvarati programe za Windows

Pri tome će u mapu sa skicom biti kopirane dvije HEX datoteke. Uzimamo samo datoteku bez prefiksa „with_bootloader.mega“.

Postoji nekoliko načina za određivanje HEX-datoteke virtualnoj mašini Nanonyam, svi su opisani na ovoj stranici.. Predlažem da pored datoteke Nanonyam.exe datoteka Nanonyam.path, napišete puni put do naše HEX-datoteke. Nakon toga, možemo pokrenuti Nanonyam.exe. Dobivamo prozor s našim natpisom.

Kako u Arduinu stvarati programe za Windows

Na sličan način možemo stvarati programe u drugim okruženjima, poput AVR Studija ili WinAVR-a.

Ovdje ćemo završiti upoznavanje s Nanonyam-om. Osnovna ideja bi trebala biti jasna. Još primjera ima na stranici. Ako bude dovoljno zainteresiranih za korištenje ovog projekta, izradit ću više primjera i nastaviti "puniti" biblioteke virtualnih funkcija. Prihvaćaju se konkretne ideje za razvoj projekta i izvještaji o kvarovima, greškama i propustima. Poželjno ih je slati na kontakte navedene na stranici. Rasprava je dobrodošla u komentarima.

Hvala svima na pažnji i uspješnom programiranju!

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster