Comment créer des programmes pour Windows dans Arduino

Comment créer des programmes pour Windows dans Arduino

Un jour j'ai eu l'idée folle d'apporter 500 pointeurs laser en un seul endroit. J'ai passé beaucoup de temps et je l'ai fait. Cela s'est avéré spectaculaire et inutile, mais j'ai bien aimé. Il y a six mois, j'ai eu une autre idée folle. Cette fois, pas du tout spectaculaire, mais bien plus utile. J'y ai aussi passé beaucoup de temps. Et dans cet article, je vous présente une version bêta de ma deuxième idée folle.

J'ai appelé le projet Nanonyam (Nanonyam) et j'ai même créé un logo (j'ai dessiné pendant 5 minutes).

Comment créer des programmes pour Windows dans Arduino

Pour ceux qui pensent en termes d'Arduino, on peut dire que Nanonyam est un bouclier virtuel Arduino pour contrôler Windows.

En d'autres termes, Nanonyam est une machine virtuelle qui utilise le micrologiciel du microcontrôleur AVR (ATMEGA2560 est recommandé) comme bytecode. À l'intérieur de cette machine virtuelle se trouve un simulateur de base AVR, mais au lieu de périphériques, qui sont situés aux adresses SRAM de 0x0060 à 0x01FF, il existe une interface spéciale pour les fonctions virtuelles (y compris les fonctions API Windows). Et ici, il est très important de comprendre tout de suite: le code de Nanonyam ne doit avoir aucun accès à la plage de mémoire spécifiée, afin de ne pas appeler accidentellement, par exemple, la fonction de suppression de fichiers ou de formatage d'un disque. Le reste de la plage de mémoire SRAM de 0x0200 à 0xFFFF (c'est plus que dans un vrai microcontrôleur) est disponible pour l'utilisateur à toutes fins. Je note tout de suite qu'il existe une protection spéciale contre le lancement accidentel du firmware d'un vrai microcontrôleur (ou d'un firmware d'une autre architecture) : avant d'activer des fonctions "dangereuses", il faut appeler une fonction virtuelle délicate spéciale. Il existe également d'autres fonctionnalités de sécurité.

Pour créer des programmes pour Nanonyam, vous devez utiliser des bibliothèques spéciales qui implémentent toutes les fonctions virtuelles actuellement disponibles. Téléchargez la machine virtuelle Nanonyam et ses bibliothèques Vous pouvez ensuite. Mais l' page de description de la fonction virtuelle. Et oui, mon site est très primitif et pas adapté aux appareils mobiles.

Nanonyam est gratuit pour un usage domestique et commercial. Le programme Nanonyam est fourni "tel quel". Le code source n'est pas fourni.

Le programme est actuellement en phase de test. Implémentation d'environ 200 fonctions virtuelles qui vous permettent de créer des programmes simples pour Windows.
Évidemment, créer quelque chose de compliqué dans une telle machine virtuelle ne fonctionnera pas, car la mémoire pour le code n'est que de 256 Ko. Les données peuvent être stockées dans des fichiers séparés, le tampon de la partie graphique est implémenté en externe. Toutes les fonctions sont simplifiées et adaptées à l'architecture 8 bits.

Que pouvez-vous faire à Nanonyam ? J'ai rencontré quelques problèmes.

Développement de blocs de programme

Une fois, j'ai eu besoin de concevoir un menu complexe pour un affichage graphique de 128x64 points. Je ne voulais vraiment pas charger constamment le firmware dans un vrai microcontrôleur pour voir à quoi ressemblent les pixels. Et c'est ainsi que l'idée de Nanonyam est née. La figure ci-dessous montre une image d'un véritable écran OLED de l'un des éléments du même menu. Maintenant, je peux travailler dessus sans véritable appareil.

Comment créer des programmes pour Windows dans Arduino

Nanonyam (dans son idée finale) est un bon outil pour élaborer des blocs de programme pour les microcontrôleurs, car il existe des fonctions pour travailler avec des graphiques (vous pouvez simuler des affichages et des indicateurs), avec des fichiers (vous pouvez créer des journaux, lire des données de test), avec un clavier (vous pouvez lire jusqu'à 10 boutons en même temps), avec des ports COM (voici un élément séparé).

Création de programmes rapides

Par exemple, vous devez traiter rapidement 100500 XNUMX fichiers texte. Chacun doit être ouvert, légèrement modifié selon un algorithme simple, enregistré et fermé. Si vous êtes un maître Python, alors je vous félicite, vous avez tout. Mais si vous êtes un arduino endurci (et il y en a beaucoup), alors Nanonyam vous aidera à résoudre ce problème. C'est mon deuxième objectif dans Nanonyam : ajouter de nombreuses fonctions utiles telles que le traitement de texte, la prise de captures d'écran ou la simulation de frappes au clavier dans le système (qui, soit dit en passant, sont déjà là), ainsi que de nombreuses autres fonctions pour résoudre des tâches de routine .

Test du matériel via le port COM

Nanonyam peut agir comme un terminal qui fonctionne selon votre algorithme. Vous pouvez dessiner un petit menu pour contrôler l'appareil et afficher les données reçues du port. Vous pouvez enregistrer et lire des données à partir de fichiers pour analyse. Un outil pratique pour le débogage et l'étalonnage simples du matériel, ainsi que pour la création de panneaux de commande d'instruments virtuels simples. Pour les étudiants et les jeunes scientifiques, ce projet peut être très utile.

Formation à la programmation

Cependant, comme pour l'ensemble du projet Arduino, l'utilité principale de Nanonyam réside dans la simplification des fonctions, de l'interface et du bootloader. Par conséquent, ce projet devrait intéresser les programmeurs novices et ceux qui sont satisfaits du niveau d'arduino. Soit dit en passant, je n'ai toujours pas étudié arduino en détail, car j'ai toujours utilisé WinAVR ou AVR Studio, mais j'ai commencé avec l'assembleur. Par conséquent, l'exemple de programme ci-dessous sera un peu faux, mais tout à fait fonctionnel.

Bonjour Habr!

Il est temps de se familiariser avec certaines fonctionnalités de Nanonyam et d'écrire un programme simple. Nous allons écrire dans Arduino, mais pas de la manière habituelle, mais de la manière dont je peux maintenant (j'ai déjà dit que je n'avais pas encore très bien compris cet environnement). Tout d'abord, créez un nouveau croquis et sélectionnez la carte Mega2560.

Comment créer des programmes pour Windows dans Arduino

Enregistrez l'esquisse dans un fichier et copiez ensuite Bibliothèque de Nanonyam. Il serait correct d'inclure les en-têtes des bibliothèques, mais je ne sais pas comment écrire une compilation de fichiers individuels dans Arduino, donc pour l'instant nous allons simplement inclure les bibliothèques directement (et toutes à la fois) :

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

Il serait encore plus correct de faire un module spécial "Nanonyam pour Arduino", qui peut être installé directement depuis Arduino. Dès que j'aurai compris, je le ferai, mais pour l'instant je ne fais que montrer l'essence du travail avec une machine virtuelle. Nous écrivons le code suivant :

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

Dessinez avec ce programme peut être téléchargé ici. Description détaillée des fonctions chercher sur le site. J'espère que les commentaires dans ce code sont suffisants pour en comprendre l'essentiel. Fonction ici sys_Nanonymam() joue le rôle d'un "mot de passe" pour la machine virtuelle, ce qui supprime les restrictions sur les fonctions virtuelles. Sans cette fonction, le programme se fermera après 3 secondes de fonctionnement.

Nous appuyons sur le bouton "Vérifier" et il ne devrait pas y avoir d'erreurs.

Comment créer des programmes pour Windows dans Arduino

Vous devez maintenant obtenir un fichier binaire (firmware). Sélectionnez le menu "Esquisse>>Exporter le fichier binaire (CTRL+ALT+S)«.

Comment créer des programmes pour Windows dans Arduino

Cela copiera deux fichiers HEX dans le dossier d'esquisse. Nous ne prenons que le fichier sans le préfixe "with_bootloader.mega".

Il existe plusieurs façons de spécifier un fichier HEX à la machine virtuelle Nanonyam, toutes sont décrites sur cette page. Je suggère de créer à côté du fichier Nanonyam.exe файл chemin, dans lequel enregistrer le chemin complet vers notre fichier HEX. Après quoi vous pouvez courir Nanonyam.exe. Nous obtenons une fenêtre avec notre inscription.

Comment créer des programmes pour Windows dans Arduino

De même, vous pouvez créer des programmes dans d'autres environnements, tels que AVR Studio ou WinAVR.

C'est là que nous terminons notre connaissance de Nanonyam. L'idée principale doit être claire. D'autres exemples sont sur le site.. S'il y a suffisamment de personnes prêtes à utiliser ce projet, je ferai plus d'exemples et continuerai à "remplir" les bibliothèques de fonctions virtuelles. Les idées concrètes pour le développement du projet et les rapports de dysfonctionnements, bugs et bugs sont acceptés. Il est conseillé de les diriger vers des contacts, indiqué sur le site. Et la discussion est la bienvenue dans les commentaires.

Merci à tous pour votre attention et bonne programmation !

Source: habr.com

Ajouter un commentaire