So erstellen Sie Programme für Windows in Arduino

So erstellen Sie Programme für Windows in Arduino

Eines Tages hatte ich die verrückte Idee, etwas mitzubringen 500 Laserpointer an einem Ort. Ich habe viel Zeit investiert und es geschafft. Es erwies sich als spektakulär und nutzlos, aber es gefiel mir. Vor sechs Monaten hatte ich wieder eine verrückte Idee. Diesmal überhaupt nicht spektakulär, aber viel nützlicher. Ich habe auch viel Zeit damit verbracht. Und in diesem Artikel stelle ich eine Beta-Version meiner zweiten verrückten Idee vor.

Ich habe das Projekt Nanonyam (Nanonyam) genannt und mir sogar ein Logo dafür ausgedacht (ich habe 5 Minuten lang gezeichnet).

So erstellen Sie Programme für Windows in Arduino

Für diejenigen, die in Arduino-Konzepten denken, können wir sagen, dass Nanonyam ein virtueller Arduino-Schutzschild zur Steuerung von Windows ist.

Mit anderen Worten: Nanonyam ist eine virtuelle Maschine, die Firmware für den AVR-Mikrocontroller (ATMEGA2560 wird empfohlen) als Bytecode verwendet. In dieser virtuellen Maschine befindet sich ein AVR-Kernsimulator, aber anstelle von Peripheriegeräten, die sich an SRAM-Adressen von 0x0060 bis 0x01FF befinden, gibt es eine spezielle Schnittstelle zu virtuellen Funktionen (einschließlich Windows-API-Funktionen). Und hier ist es ganz wichtig, sofort zu verstehen: Der Code für Nanonyam sollte keinen Zugriff auf den angegebenen Speicherbereich haben, um nicht versehentlich beispielsweise die Funktion zum Löschen von Dateien oder zum Formatieren einer Festplatte aufzurufen. Der restliche SRAM-Speicherbereich von 0x0200 bis 0xFFFF (das ist mehr als bei einem echten Mikrocontroller) steht dem Anwender für beliebige Zwecke zur Verfügung. Ich stelle gleich fest, dass es einen besonderen Schutz gegen versehentliches Starten der Firmware eines echten Mikrocontrollers (oder Firmware einer anderen Architektur) gibt: Bevor Sie „gefährliche“ Funktionen aktivieren, müssen Sie eine besonders knifflige virtuelle Funktion aufrufen. Es gibt auch einige andere Sicherheitsfunktionen.

Um Programme für Nanonyam zu erstellen, müssen Sie spezielle Bibliotheken verwenden, die alle derzeit verfügbaren virtuellen Funktionen implementieren. Laden Sie die virtuelle Nanonyam-Maschine und die Bibliotheken dafür herunter Sie können dann. Aber die Beschreibungsseite der virtuellen Funktion. Und ja, meine Seite ist sehr primitiv und nicht für mobile Geräte geeignet.

Nanonyam ist für den privaten und kommerziellen Gebrauch kostenlos. Das Nanonyam-Programm wird ohne Mängelgewähr bereitgestellt. Der Quellcode wird nicht bereitgestellt.

Das Programm befindet sich derzeit in der Testphase. Etwa 200 virtuelle Funktionen implementiert, mit denen Sie einfache Programme für Windows erstellen können.
Offensichtlich wird es nicht funktionieren, in einer solchen virtuellen Maschine etwas Kompliziertes zu erstellen, da der Speicher für den Code nur 256 kB beträgt. Daten können in separaten Dateien gespeichert werden, der Puffer für den Grafikteil wird extern implementiert. Alle Funktionen sind vereinfacht und für die 8-Bit-Architektur angepasst.

Was kann man in Nanonyam unternehmen? Ich bin auf ein paar Probleme gestoßen.

Entwicklung von Programmblöcken

Ich musste einmal ein komplexes Menü für ein Grafikdisplay mit 128 x 64 Punkten entwerfen. Ich wollte wirklich nicht ständig die Firmware in einen echten Mikrocontroller laden, um zu sehen, wie die Pixel aussehen. Und so wurde die Idee von Nanonyam geboren. Die folgende Abbildung zeigt ein Bild von einem echten OLED-Display eines der Elemente im selben Menü. Jetzt kann ich es ohne echtes Gerät durcharbeiten.

So erstellen Sie Programme für Windows in Arduino

Nanonyam (in seiner endgültigen Idee) ist ein gutes Werkzeug zum Ausarbeiten von Programmblöcken für Mikrocontroller, da es Funktionen zum Arbeiten mit Grafiken (Sie können Anzeigen und Anzeigen simulieren), mit Dateien (Sie können Protokolle erstellen, Testdaten lesen) und mit eine Tastatur (Sie können bis zu 10 Tasten gleichzeitig lesen), mit COM-Anschlüssen (hier ein separater Artikel).

Schnelle Programme erstellen

Beispielsweise müssen Sie 100500 Textdateien schnell verarbeiten. Jedes muss geöffnet, anhand eines einfachen Algorithmus leicht geändert, gespeichert und geschlossen werden. Wenn Sie ein Python-Meister sind, dann gratuliere ich Ihnen, Sie haben alles. Aber wenn Sie ein hartgesottener Arduino sind (und davon gibt es viele), dann hilft Ihnen Nanonyam bei der Lösung dieses Problems. Das ist mein zweites Ziel in Nanonyam: viele nützliche Funktionen wie Textverarbeitung, das Erstellen von Screenshots oder das Simulieren von Tastenanschlägen im System hinzuzufügen (die übrigens alle bereits vorhanden sind) sowie viele weitere Funktionen zum Lösen von Routineaufgaben .

Hardware über COM-Port testen

Nanonyam kann als Terminal fungieren, das nach Ihrem Algorithmus arbeitet. Sie können ein kleines Menü zeichnen, um das Gerät zu steuern und die vom Port empfangenen Daten anzuzeigen. Sie können Daten aus Dateien zur Analyse speichern und auslesen. Ein praktisches Tool zum einfachen Debuggen und Kalibrieren von Hardware sowie zum Erstellen einfacher virtueller Instrumentenbedienfelder. Für Studierende und junge Wissenschaftler kann dieses Projekt sehr nützlich sein.

Programmiertraining

Wie beim gesamten Arduino-Projekt liegt der Hauptnutzen von Nanonyam jedoch in der Vereinfachung von Funktionen, Schnittstelle und Bootloader. Daher dürfte dieses Projekt sowohl für unerfahrene Programmierer als auch für diejenigen interessant sein, die mit dem Niveau von Arduino zufrieden sind. Ich selbst habe mich übrigens noch nicht im Detail mit Arduino beschäftigt, da ich immer WinAVR oder AVR Studio verwendet habe, sondern mit Assembler angefangen habe. Daher wird das folgende Beispielprogramm etwas falsch sein, aber durchaus funktionieren.

Hallo Habr!

Es ist an der Zeit, sich mit einigen Nanonyam-Funktionen vertraut zu machen und ein einfaches Programm zu schreiben. Wir werden in Arduino schreiben, aber nicht auf die übliche Art und Weise, sondern auf die Art und Weise, wie ich es jetzt kann (ich habe bereits gesagt, dass ich diese Umgebung noch nicht so gut verstanden habe). Erstellen Sie zunächst eine neue Skizze und wählen Sie das Mega2560-Board aus.

So erstellen Sie Programme für Windows in Arduino

Speichern Sie die Skizze in einer Datei und kopieren Sie sie anschließend Nanonyam-Bibliothek. Es wäre richtig, die Header der Bibliotheken einzubinden, aber ich weiß nicht, wie man die Kompilierung einzelner Dateien in Arduino schreibt, deshalb werden wir die Bibliotheken zunächst einfach direkt (und alle auf einmal) einbinden:

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

Noch richtiger wäre es, ein spezielles Modul „Nanonyam für Arduino“ zu erstellen, das direkt von Arduino aus installiert werden kann. Sobald ich es herausgefunden habe, werde ich es tun, aber im Moment zeige ich nur die Essenz der Arbeit mit einer virtuellen Maschine. Wir schreiben den folgenden 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);//Задержка и разгрузка процессора
}

Skizzieren Sie mit diesem Programm kann hier heruntergeladen werden. Detaillierte Funktionsbeschreibung Suche auf der Website. Ich hoffe, dass die Kommentare in diesem Code ausreichen, um das Wesentliche zu verstehen. Hier funktioniert sys_Nanonyam() spielt die Rolle eines „Passworts“ für die virtuelle Maschine, das Einschränkungen für virtuelle Funktionen aufhebt. Ohne diese Funktion wird das Programm nach 3 Sekunden Betrieb beendet.

Wir drücken den „Prüfen“-Button und es sollten keine Fehler auftreten.

So erstellen Sie Programme für Windows in Arduino

Jetzt müssen Sie eine Binärdatei (Firmware) besorgen. Wählen Sie das Menü „Skizze>Binärdatei exportieren (STRG+ALT+S)«.

So erstellen Sie Programme für Windows in Arduino

Dadurch werden zwei HEX-Dateien in den Skizzenordner kopiert. Wir nehmen nur die Datei ohne das Präfix „with_bootloader.mega“.

Es gibt mehrere Möglichkeiten, eine HEX-Datei für die virtuelle Nanonyam-Maschine anzugeben. Alle werden beschrieben auf dieser Seite. Ich schlage vor, neben der Datei zu erstellen Nanonyam.exe Datei Weg, in dem Sie den vollständigen Pfad zu unserer HEX-Datei registrieren. Danach können Sie laufen Nanonyam.exe. Wir bekommen ein Fenster mit unserer Aufschrift.

So erstellen Sie Programme für Windows in Arduino

Ebenso können Sie Programme in anderen Umgebungen erstellen, beispielsweise AVR Studio oder WinAVR.

Hier beenden wir unsere Bekanntschaft mit Nanonyam. Die Grundidee sollte klar sein. Weitere Beispiele finden Sie auf der Website.. Wenn es genügend Leute gibt, die dieses Projekt nutzen möchten, werde ich weitere Beispiele erstellen und die virtuellen Funktionsbibliotheken weiter „füllen“. Konkrete Ideen zur Weiterentwicklung des Projekts und Meldungen von Störungen, Bugs und Bugs werden entgegengenommen. Es empfiehlt sich, sie an Ansprechpartner weiterzuleiten, auf der Website angegeben. Und Diskussionen sind in den Kommentaren willkommen.

Vielen Dank an alle für Ihre Aufmerksamkeit und gute Programmierung!

Source: habr.com

Kommentar hinzufügen