Jak tworzyć programy dla systemu Windows w Arduino

Jak tworzyć programy dla systemu Windows w Arduino

Pewnego dnia wpadłem na szalony pomysł, żeby zabrać ze sobą 500 wskaźników laserowych w jednym miejscu. Spędziłem dużo czasu i zrobiłem to. Okazało się to spektakularne i bezużyteczne, ale podobało mi się. Sześć miesięcy temu wpadłem na kolejny szalony pomysł. Tym razem wcale nie spektakularne, ale o wiele bardziej przydatne. Spędziłem też nad nim dużo czasu. A w tym artykule przedstawiam wersję beta mojego drugiego szalonego pomysłu.

Nazwałem projekt Nanonyam (Nanonyam), a nawet wymyśliłem dla niego logo (rysowałem przez 5 minut).

Jak tworzyć programy dla systemu Windows w Arduino

Dla tych, którzy myślą w kategoriach Arduino, możemy powiedzieć, że Nanonyam to wirtualna tarcza Arduino do sterowania systemem Windows.

Innymi słowy, Nanonyam to maszyna wirtualna, która jako kod bajtowy wykorzystuje oprogramowanie układowe mikrokontrolera AVR (zaleca się ATMEGA2560). Wewnątrz tej maszyny wirtualnej znajduje się symulator rdzenia AVR, ale zamiast peryferiów, które znajdują się pod adresami SRAM od 0x0060 do 0x01FF, znajduje się specjalny interfejs do funkcji wirtualnych (w tym funkcji Windows API). I tutaj bardzo ważne jest, aby od razu zrozumieć: kod dla Nanonyam nie powinien mieć żadnego dostępu do określonego zakresu pamięci, aby przypadkowo nie wywołać np. funkcji usuwania plików lub formatowania dysku. Reszta pamięci SRAM w zakresie od 0x0200 do 0xFFFF (to więcej niż w prawdziwym mikrokontrolerze) jest dostępna dla użytkownika w dowolnym celu. Od razu zauważam, że istnieje specjalna ochrona przed przypadkowym uruchomieniem oprogramowania układowego prawdziwego mikrokontrolera (lub oprogramowania układowego z innej architektury): przed aktywacją „niebezpiecznych” funkcji należy wywołać specjalną podstępną funkcję wirtualną. Istnieją również inne funkcje bezpieczeństwa.

Aby tworzyć programy dla Nanonyam, musisz użyć specjalnych bibliotek, które implementują wszystkie dostępne obecnie funkcje wirtualne. Pobierz maszynę wirtualną Nanonyam i biblioteki dla niej Następnie można. Ale strona opisu funkcji wirtualnej. I tak, moja strona jest bardzo prymitywna i niedostosowana do urządzeń mobilnych.

Nanonyam jest darmowy do użytku domowego i komercyjnego. Program Nanonyam jest dostarczany na zasadzie „taki, jaki jest”. Nie podano kodu źródłowego.

Program jest obecnie w fazie testów. Zaimplementowano około 200 wirtualnych funkcji, które pozwalają na tworzenie prostych programów dla Windows.
Oczywiście stworzenie czegoś skomplikowanego na takiej maszynie wirtualnej nie zadziała, ponieważ pamięć na kod to tylko 256 kB. Dane mogą być przechowywane w osobnych plikach, bufor dla części graficznej jest realizowany zewnętrznie. Wszystkie funkcje są uproszczone i dostosowane do architektury 8-bitowej.

Co można robić w Nanonyam? Wymyśliłem kilka problemów.

Opracowanie bloków programowych

Kiedyś musiałem zaprojektować złożone menu dla wyświetlacza graficznego o rozdzielczości 128x64 punktów. Naprawdę nie chciałem ciągle ładować oprogramowania układowego do prawdziwego mikrokontrolera, aby zobaczyć, jak wyglądają piksele. I tak narodził się pomysł Nanonyam. Poniższy rysunek przedstawia obraz z rzeczywistego wyświetlacza OLED jednego z elementów tego samego menu. Teraz mogę to zrobić bez prawdziwego urządzenia.

Jak tworzyć programy dla systemu Windows w Arduino

Nanonyam (w swoim ostatecznym pomyśle) jest dobrym narzędziem do opracowywania bloków programowych dla mikrokontrolerów, ponieważ istnieją funkcje do pracy z grafiką (można symulować wyświetlacze i wskaźniki), z plikami (można tworzyć logi, odczytywać dane testowe), z klawiatura (można czytać do 10 przycisków jednocześnie), z portami COM (tu osobna pozycja).

Tworzenie szybkich programów

Na przykład musisz szybko przetworzyć 100500 plików tekstowych. Każdy trzeba otworzyć, nieco zmodyfikować według jakiegoś prostego algorytmu, zapisać i zamknąć. Jeśli jesteś mistrzem Pythona, gratuluję ci, masz wszystko. Ale jeśli jesteś zahartowanym arduino (a jest ich wielu), to Nanonyam pomoże ci w rozwiązaniu tego problemu. To jest mój drugi cel w Nanonyam: dodać wiele przydatnych funkcji, takich jak przetwarzanie tekstu, robienie zrzutów ekranu lub symulowanie naciśnięć klawiszy w systemie (które, nawiasem mówiąc, już tam są), a także wiele innych funkcji do rozwiązywania rutynowych zadań .

Testowanie sprzętu przez port COM

Nanonyam może działać jako terminal, który działa zgodnie z Twoim algorytmem. Możesz narysować małe menu do sterowania urządzeniem i wyświetlania danych otrzymanych z portu. Możesz zapisywać i odczytywać dane z plików do analizy. Poręczne narzędzie do prostego debugowania i kalibracji sprzętu, a także do tworzenia prostych wirtualnych paneli kontrolnych przyrządów. Dla studentów i młodych naukowców ten projekt może być bardzo przydatny.

Szkolenie z programowania

Jednak, podobnie jak w przypadku całego projektu Arduino, główna użyteczność Nanonyam polega na uproszczeniu funkcji, interfejsu i bootloadera. Dlatego tym projektem powinni zainteresować się początkujący programiści oraz ci, którzy są zadowoleni z poziomu arduino. Nawiasem mówiąc, sam nadal nie studiowałem szczegółowo arduino, ponieważ zawsze korzystałem z WinAVR lub AVR Studio, ale zaczynałem od asemblera. Dlatego poniższy przykładowy program będzie trochę błędny, ale całkiem działający.

Witaj Habra!

Czas zapoznać się z niektórymi funkcjami Nanonyam i napisać prosty program. Będziemy pisać w Arduino, ale nie w zwykły sposób, ale w sposób, w jaki teraz mogę (już powiedziałem, że nie rozgryzłem jeszcze dobrze tego środowiska). Najpierw utwórz nowy szkic i wybierz płytkę Mega2560.

Jak tworzyć programy dla systemu Windows w Arduino

Zapisz szkic do pliku i skopiuj dalej Biblioteka Nanonyam. Poprawnie byłoby dołączyć nagłówki bibliotek, ale nie wiem jak napisać kompilację poszczególnych plików w Arduino, więc na razie po prostu dołączymy biblioteki bezpośrednio (i wszystkie 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"

Jeszcze bardziej poprawne byłoby stworzenie specjalnego modułu „Nanonyam dla Arduino”, który można zainstalować bezpośrednio z Arduino. Jak tylko ogarnę to zrobię, ale na razie pokazuję tylko esencję pracy z maszyną wirtualną. Piszemy następujący 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);//Задержка и разгрузка процессора
}

Szkicuj tym programem można pobrać tutaj. Szczegółowy opis funkcji szukaj na stronie. Mam nadzieję, że komentarze w tym kodzie wystarczą, aby zrozumieć jego istotę. Tutaj funkcja sys_Nanonyam() pełni rolę „hasła” dla maszyny wirtualnej, co znosi ograniczenia dotyczące funkcji wirtualnych. Bez tej funkcji program zamknie się po 3 sekundach działania.

Wciskamy przycisk „Sprawdź” i nie powinno być żadnych błędów.

Jak tworzyć programy dla systemu Windows w Arduino

Teraz musisz pobrać plik binarny (oprogramowanie układowe). Wybierz menu "Szkic>>Eksportuj plik binarny (CTRL+ALT+S)".

Jak tworzyć programy dla systemu Windows w Arduino

Spowoduje to skopiowanie dwóch plików HEX do folderu szkicu. Bierzemy tylko plik bez prefiksu „with_bootloader.mega”.

Istnieje kilka sposobów podania pliku HEX do maszyny wirtualnej Nanonyam, wszystkie są opisane na tej stronie. Proponuję utworzyć obok pliku Nanonyam.exe файл ścieżka, w którym rejestrujemy pełną ścieżkę do naszego pliku HEX. Po czym możesz biegać Nanonyam.exe. Otrzymujemy okienko z naszym napisem.

Jak tworzyć programy dla systemu Windows w Arduino

Podobnie możesz tworzyć programy w innych środowiskach, takich jak AVR Studio lub WinAVR.

Na tym kończymy naszą znajomość z Nanonyam. Główna idea powinna być jasna. Więcej przykładów znajduje się na stronie internetowej.. Jeśli znajdzie się wystarczająca liczba osób chętnych do korzystania z tego projektu, to zrobię więcej przykładów i będę dalej „zapełniał” biblioteki funkcji wirtualnych. Konkretne pomysły na rozwój projektu i zgłoszenia awarii, błędów i błędów są akceptowane. Wskazane jest skierowanie ich do kontaktów, wskazane na stronie. A dyskusja jest mile widziana w komentarzach.

Dziękuję wszystkim za uwagę i dobry program!

Źródło: www.habr.com

Dodaj komentarz