Programma's maken voor Windows in Arduino

Programma's maken voor Windows in Arduino

Op een dag had ik het gekke idee om mee te nemen 500 laserpointers op één plek. Ik heb er veel tijd aan besteed en het is gelukt. Het bleek spectaculair en nutteloos, maar ik vond het leuk. Zes maanden geleden had ik weer een gek idee. Deze keer helemaal niet spectaculair, maar veel nuttiger. Ik heb er ook veel tijd aan besteed. En in dit artikel presenteer ik een bètaversie van mijn tweede gekke idee.

Ik noemde het project Nanonyam (Nanonyam) en bedacht er zelfs een logo voor (ik tekende 5 minuten).

Programma's maken voor Windows in Arduino

Voor degenen die in termen van Arduino denken, kunnen we zeggen dat Nannyam een ​​virtueel Arduino-schild is voor het besturen van Windows.

Met andere woorden, Nannyam is een virtuele machine die de firmware voor de AVR-microcontroller (ATMEGA2560 wordt aanbevolen) als bytecode gebruikt. Binnen deze virtuele machine bevindt zich een AVR-kernsimulator, maar in plaats van randapparatuur, die zich op SRAM-adressen van 0x0060 tot 0x01FF bevindt, is er een speciale interface voor virtuele functies (inclusief Windows API-functies). En hier is het heel belangrijk om meteen te begrijpen: de code voor Nannyam mag geen toegang hebben tot het opgegeven geheugenbereik, om bijvoorbeeld niet per ongeluk de functie van het verwijderen van bestanden of het formatteren van een schijf aan te roepen. De rest van het SRAM-geheugenbereik van 0x0200 tot 0xFFFF (dit is meer dan in een echte microcontroller) is voor elk doel beschikbaar voor de gebruiker. Ik merk meteen op dat er een speciale bescherming is tegen het per ongeluk starten van de firmware van een echte microcontroller (of firmware van een andere architectuur): voordat je "gevaarlijke" functies activeert, moet je een speciale lastige virtuele functie aanroepen. Er zijn ook enkele andere beveiligingsfuncties.

Om programma's voor Nannyam te maken, moet u speciale bibliotheken gebruiken die alle momenteel beschikbare virtuele functies implementeren. Download de Nanonyam virtuele machine en bibliotheken ervoor U kunt dan. Maar de virtuele functiebeschrijvingspagina. En ja, mijn site is erg primitief en niet aangepast voor mobiele apparaten.

Nanonyam is gratis voor thuisgebruik en commercieel gebruik. Het Nanonyam-programma wordt geleverd op een "as is"-basis. Broncode wordt niet verstrekt.

Het programma bevindt zich momenteel in de testfase. Ongeveer 200 virtuele functies geïmplementeerd waarmee u eenvoudige programma's voor Windows kunt maken.
Het is duidelijk dat het maken van iets ingewikkelds in zo'n virtuele machine niet zal werken, aangezien het geheugen voor de code slechts 256 kB is. Gegevens kunnen in aparte bestanden worden opgeslagen, de buffer voor het grafische gedeelte is extern geïmplementeerd. Alle functies zijn vereenvoudigd en aangepast voor 8-bits architectuur.

Wat kun je doen in Nanonyam? Ik kwam met een paar problemen.

Ontwikkeling van programmablokken

Ik moest ooit een complex menu ontwerpen voor een grafische weergave van 128 x 64 punten. Ik wilde echt niet constant de firmware in een echte microcontroller laden om te zien hoe de pixels eruit zien. En zo werd het idee van Nanonyam geboren. De onderstaande afbeelding toont een afbeelding van een echt OLED-scherm van een van de items in hetzelfde menu. Nu kan ik er doorheen werken zonder een echt apparaat.

Programma's maken voor Windows in Arduino

Nanonyam (in zijn uiteindelijke idee) is een goed hulpmiddel voor het uitwerken van programmablokken voor microcontrollers, aangezien er functies zijn voor het werken met afbeeldingen (u kunt displays en indicatoren simuleren), met bestanden (u kunt logs maken, testgegevens lezen), met een toetsenbord (u kunt tot 10 knoppen tegelijkertijd lezen), met COM-poorten (hier is een apart item).

Snelle programma's maken

U moet bijvoorbeeld snel 100500 tekstbestanden verwerken. Elk moet worden geopend, enigszins aangepast volgens een eenvoudig algoritme, opgeslagen en gesloten. Als je een Python-meester bent, dan feliciteer ik je, je hebt alles. Maar als je een doorgewinterde arduino bent (en dat zijn er veel), dan zal Nannyam je helpen dit probleem op te lossen. Dit is mijn tweede doel in Nannyam: veel handige functies toevoegen, zoals tekstverwerking, het maken van schermafbeeldingen of het simuleren van toetsaanslagen in het systeem (die er trouwens allemaal al zijn), evenals vele andere functies voor het oplossen van routinetaken .

Hardware testen via COM-poort

Nanonyam kan fungeren als een terminal die werkt volgens jouw algoritme. U kunt een klein menu tekenen om het apparaat te bedienen en de ontvangen gegevens van de poort weer te geven. U kunt gegevens uit bestanden opslaan en lezen voor analyse. Een handig hulpmiddel voor eenvoudig debuggen en kalibreren van hardware, maar ook voor het maken van eenvoudige virtuele instrumentbedieningspanelen. Voor studenten en jonge wetenschappers kan dit project erg nuttig zijn.

Programmeer opleiding

Net als bij het hele Arduino-project ligt het belangrijkste nut van Nannyam echter in de vereenvoudiging van functies, interface en bootloader. Daarom zou dit project interessant moeten zijn voor beginnende programmeurs en degenen die tevreden zijn met het niveau van Arduino. Overigens heb ik zelf arduino nog niet tot in detail bestudeerd, omdat ik altijd WinAVR of AVR Studio gebruikte, maar ben begonnen met assembler. Daarom zal het onderstaande voorbeeldprogramma een beetje verkeerd zijn, maar behoorlijk werken.

Hallo Habr!

Het is tijd om vertrouwd te raken met enkele functies van Nanonyam en een eenvoudig programma te schrijven. We gaan in Arduino schrijven, maar niet op de gebruikelijke manier, maar zoals ik dat nu kan (ik heb al gezegd dat ik deze omgeving nog niet zo goed onder de knie heb). Maak eerst een nieuwe schets en selecteer het Mega2560-bord.

Programma's maken voor Windows in Arduino

Sla de schets op in een bestand en kopieer vervolgens Nanonyam-bibliotheek. Het zou correct zijn om de headers van de bibliotheken op te nemen, maar ik weet niet hoe ik een compilatie van individuele bestanden in Arduino moet schrijven, dus voor nu zullen we de bibliotheken gewoon rechtstreeks (en allemaal tegelijk) opnemen:

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

Het zou nog juister zijn om een ​​speciale module "Nanonyam voor Arduino" te maken, die rechtstreeks vanuit Arduino kan worden geïnstalleerd. Zodra ik het doorheb, doe ik het, maar voor nu laat ik alleen de essentie zien van het werken met een virtuele machine. We schrijven de volgende code:

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

Schets met dit programma kan hier worden gedownload. Gedetailleerde beschrijving van functies zoek op de site. Ik hoop dat de opmerkingen in deze code voldoende zijn om de kern ervan te begrijpen. Hier functie sys_Nanonyam() speelt de rol van een "wachtwoord" voor de virtuele machine, dat beperkingen op virtuele functies opheft. Zonder deze functie zal het programma na 3 seconden worden afgesloten.

We drukken op de knop "Controleren" en er mogen geen fouten zijn.

Programma's maken voor Windows in Arduino

Nu heb je een binair bestand (firmware) nodig. Kies de menukaart "Schets>>Binair bestand exporteren (CTRL+ALT+S)".

Programma's maken voor Windows in Arduino

Hiermee worden twee HEX-bestanden naar de schetsmap gekopieerd. We nemen alleen het bestand zonder het voorvoegsel "with_bootloader.mega".

Er zijn verschillende manieren om een ​​HEX-bestand naar de Nanonyam virtuele machine te specificeren, ze worden allemaal beschreven op deze pagina. Ik stel voor om naast het bestand te creëren Nanonyam.exe файл pad, waarin u het volledige pad naar ons HEX-bestand kunt registreren. Waarna je kunt rennen Nanonyam.exe. We krijgen een raam met onze inscriptie.

Programma's maken voor Windows in Arduino

Evenzo kunt u programma's maken in andere omgevingen, zoals AVR Studio of WinAVR.

Hier beëindigen we onze kennismaking met Nannyam. De hoofdgedachte moet duidelijk zijn. Meer voorbeelden staan ​​op de website.. Als er genoeg mensen zijn die dit project willen gebruiken, dan zal ik meer voorbeelden maken en doorgaan met het "vullen" van de virtuele functiebibliotheken. Concrete ideeën voor de ontwikkeling van het project en meldingen van storingen, bugs en bugs worden geaccepteerd. Het is raadzaam om ze door te verwijzen naar contacten, aangegeven op de site. En discussie is welkom in de comments.

Bedankt allemaal voor jullie aandacht en goede programmering!

Bron: www.habr.com

Voeg een reactie