Как в Arduino да се създадат програми за Windows

Как в Arduino да се създадат програми за Windows

Веднъж ми дойде наум налудничава идея да събера 500 лазерни указателя на едно място.Прекарвах много време и го направих. Получи се зрелищно и безполезно, но ми хареса. Преди шест месеца ми дойде друга налудничава идея. Този път не толкова зрелищна, но много по-полезна. Също така изразходвах много време за нея. В тази статия представям бета версията на моята втора налудничава идея.

Проектът нарекох Nanonyam (Наноням) и дори измислих логото му (рисувах цели 5 минути).

Как в Arduino да се създадат програми за Windows

За тези, които мислят в термини Arduino, може да се каже, че Nanonyam е виртуален ардуино щит за управление на Windows.

С други думи, Nanonyam е виртуална машина, в която като байт код се използва фърмуер за микроконтролер AVR (препоръчва се ATMEGA2560). Вътре в тази виртуална машина има симулатор на ядро AVR, но вместо периферни устройства, разположени по адреси SRAM от 0x0060 до 0x01FF, се намира специален интерфейс към виртуалните функции (включително функциите на Windows API). И тук е много важно веднага да се разбере: кодът за Nanonyam не трябва да има никакви обаждания към посочения диапазон памет, за да не се активира случайно, например, функция за изтриване на файлове или форматиране на диска. Останалият диапазон памет SRAM от 0x0200 до 0xFFFF (това е повече от в реалния микроконтролер) е достъпен за потребителя за всякакви цели. Веднага отбелязвам, че има специална защита срещу случайно стартиране на фърмуера на реалния микроконтролер (или фърмуер от друга архитектура): преди да активирате „опасните“ функции, е нужно да се извика специална хитра виртуална функция. Има и някои други елементи на защита.

За да създавате програми за Nanonyam, трябва да използвате специални библиотеки, в които са реализирани всички налични засега виртуални функции. Изтеглете виртуалната машина Nanonyam и библиотеките за нея може тук. А ето, че страница с описание на виртуалните функции. И да, моят сайт е много примитивен и не е адаптиран за мобилни устройства.

Програмата Nanonyam е безплатна за домашна и търговска употреба. Програмата Nanonyam се предоставя на условията „както е“. Изходният код не се предоставя.

В момента програмата е в етап на тестване. Реализирани са около 200 виртуални функции, които позволяват създаването на прости програми за Windows.
Очевидно е, че в такава виртуална машина не е възможно да се създадат неща с по-голяма сложност, тъй като паметта за кода е само 256 кБ. Данните могат да се съхраняват в отделни файлове, а буферът за графичната част е реализиран външно. Всички функции са опростени и адаптирани за 8-битна архитектура.

Какво може да се направи в Nanonyam? Измислил съм няколко задачи.

Отработка на програмни блокове

Веднъж ми се наложи да разработвам сложно меню за графичен дисплей 128×64 точки. Не исках постоянно да зареждам фърмуера в истинския микроконтролер, за да видя как изглеждат пикселите. Така се роди идеята за Nanonyam. На изображението по-долу е показано изображение от реален OLED дисплей на един от пунктовете на това меню. Сега мога да го проработвам без реално устройство.

Как в Arduino да се създадат програми за Windows

Nanonyam (в своята крайна идея) е добро средство за отработка на програмни блокове за микроконтролери, тъй като предлага функции за работа с графика (може да имитира дисплеи и индикатори), с файлове (възможно е създаването на логове, четене на тестови данни), с клавиатура (може да се четат до 10 бутона едновременно), с COM портове (тук има отделна точка).

Създаване на бързи програми

Например, трябва ви бързо да обработите 100500 текстови файла. Всеки трябва да се отвори, леко да се промени по някакъв несложен алгоритъм, да се запази и затвори. Ако сте майстор в Python, поздравления, всичко е у вас. Но ако сте заклет ардуинщик (а такива не са малко), Nanonyam ще ви помогне в решаването на тази задача. Именно това е моята втора цел в Nanonyam: да добавя множество полезни функции като обработка на текст, създаване на скрийншоти или имитация на натискания на клавиши в системата (всичко това, между другото, вече съществува), а също така и много други функции за решаване на рутинни задачи.

Тестване на хардулери чрез COM порт

Nanonyam може да действа като терминал, работещ по вашия алгоритъм. Може да се нарисува малко меню за управление на устройството и да се показват данни, получени от порта. Може да се съхраняват и четат данни от файлове за анализ. Удобен инструмент за несложна отладка и калибриране на хардуер, а също така за създаване на прости виртуални панели за управление на устройството. За студенти и млади учени този проект може да бъде много полезен.

Обучение по програмиране

Както и в целия проект Arduino, основната полезност на Nanonyam се състои в простотата на функциите, интерфейса и зареждача. Затова този проект трябва да е интересен за начинаещи програмисти и за тези, които са на ниво Arduino. Между другото, аз все още не съм изучавал Arduino в детайли, тъй като винаги съм използвал WinAVR или AVR Studio и започнах с асемблер. Затова примерът по-долу ще бъде малко неправилен, но напълно работещ.

Здравей, Habr!

Време е да се запознаем с някои функции на Nanonyam и да напишем проста програма. Ще пишем в Arduino, но не както е прието, а така, както в момента умея (казах, че все още не съм много добра в тази среда). Първо създаваме нов скеч и избираме платка Mega2560.

Как в Arduino да се създадат програми за Windows

Съхраняваме скеча във файл и до него копираме библиотеката Nanonyam. Правилно би било да включим заглавията на библиотеките, но не знам как в Arduino да опиша компилирането на отделни файлове, затова за сега просто ще включим библиотеките директно (и всички веднага):

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

Щеше да е още по-правилно да направим специален модул „Nanonyam за Arduino“, който може да се инсталира директно от Arduino. Щом разбера как да го направя, ще го направя, а в момента просто показвам същността на работата с виртуалната машина. Пишем такъв код:

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

Скеч с тази програма може да се изтегли тук. Подробно описание на функциите търсете на сайта. Надявам се, коментарите в този код да са достатъчно, за да се разбере същността. Тук функцията sys_Nanonyam() играе ролята на „парола“ за виртуалната машина, която сваля ограниченията на виртуалните функции. Без тази функция програмата ще се затвори след 3 секунди работа.

Натиснете бутона „Проверка“ и не трябва да има грешки.

Как в Arduino да се създадат програми за Windows

Сега трябва да получим бинарен файл (прошивка). Избираме менюто “Скеч>>Експорт на бинарен файл (CTRL+ALT+S)«.

Как в Arduino да се създадат програми за Windows

При това в папката със скеча ще бъдат копирани два HEX файла. Ние вземаме само файла без приставката «with_bootloader.mega».

Има няколко начина да укажете HEX-файл на виртуалната машина Nanonyam, всички те са описани на тази страница. Предлагам да създадете до файла Nanonyam.exe файл Nanonyam.path, в който да запишете пълния път до нашия HEX-файл. След което можем да стартираме Nanonyam.exe. Получаваме прозорец с нашето съобщение.

Как в Arduino да се създадат програми за Windows

По аналогичен начин може да се създават програми в други среди, например, в AVR Studio или WinAVR.

Тук приключваме запознаването с Nanonyam. Основната идея трябва да бъде ясна. Има и други примери на сайта. Ако има достатъчно желаещи да използват този проект, ще направя още примери и ще продължа да „напълвам“ библиотеките с виртуални функции. Приемат се конкретни идеи за развитие на проекта и отчети за неизправности, бъгове и пропуски. Желателно е да ги изпратите по контактите, посочени на сайта. Обсъждането е добре дошло в коментарите.

Благодаря на всички за вниманието и успешното програмиране!

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster