Comment créer des programmes pour Windows avec Arduino

Comment créer des programmes pour Windows avec Arduino

Un jour, une idée folle m'est venue à l'esprit de rassembler 500 pointeurs laser au même endroit.J'ai passé beaucoup de temps à le faire. C'était spectaculaire et inutile, mais ça m'a plu. Il y a six mois, une autre idée farfelue m'est venue. Cette fois, ce n'était pas aussi spectaculaire, mais beaucoup plus utile. J'y ai également consacré beaucoup de temps. Dans cet article, je présente la version bêta de ma deuxième idée farfelue.

J'ai nommé le projet Nanonyam (Наноням) et j'ai même créé un logo (j'ai dessiné pendant 5 minutes).

Comment créer des programmes pour Windows avec Arduino

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

En d'autres termes, Nanonyam est une machine virtuelle dans laquelle le code byte est un firmware pour microcontrôleur AVR (ATMEGA2560 recommandé). À l'intérieur de cette machine virtuelle se trouve un simulateur de noyau AVR, mais au lieu des appareils périphériques situés aux adresses SRAM de 0x0060 à 0x01FF, il y a une interface spéciale pour des fonctions virtuelles (y compris les fonctions de l'API Windows). Il est très important de comprendre dès le départ : le code pour Nanonyam ne doit avoir aucun accès à cette plage de mémoire afin de ne pas appeler accidentellement, par exemple, une fonction de suppression de fichiers ou de formatage de disque. L'autre plage de mémoire SRAM de 0x0200 à 0xFFFF (ce qui est plus que dans un véritable microcontrôleur) est accessible à l'utilisateur pour tous les usages. Je précise qu'il existe une protection spéciale contre l'exécution accidentelle du firmware d'un véritable microcontrôleur (ou d'un firmware d'une autre architecture) : avant d'activer des fonctionnalités “dangereuses”, il faut appeler une fonction virtuelle spéciale. Il y a aussi d'autres éléments de protection.

Pour créer des programmes pour Nanonyam, il faut utiliser des bibliothèques spéciales, dans lesquelles toutes les fonctions virtuelles disponibles à ce jour sont mises en œuvre. Téléchargez la machine virtuelle Nanonyam et ses bibliothèques est possible ici. Cependant, page de description des fonctions virtuelles. Et oui, mon site est très primitif et n'est pas adapté aux appareils mobiles.

Le programme Nanonyam est gratuit pour un usage domestique et commercial. Le programme Nanonyam est fourni dans les conditions « tel quel ». Le code source n'est pas fourni.

Actuellement, le programme est en phase de test. Environ 200 fonctions virtuelles ont été mises en place, permettant de créer des programmes simples pour Windows.
Il est évident qu'il est impossible de créer quelque chose de complexe dans une telle machine virtuelle, 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, et le buffer pour la partie graphique est géré extérieurement. Toutes les fonctions sont simplifiées et adaptées à l'architecture 8 bits.

Que peut-on faire dans Nanonyam ? J'ai pensé à quelques tâches.

Exercice des blocs logiciels

Un jour, j'ai dû développer un menu complexe pour un écran graphique de 128×64 pixels. Je n'avais vraiment pas envie de télécharger constamment le firmware dans un microcontrôleur réel pour voir comment s'affichent les pixels. C'est ainsi qu'est née l'idée de Nanonyam. Dans l'image ci-dessous, vous pouvez voir l'affichage d'un véritable écran OLED de l'un des éléments de ce menu. Je peux désormais le développer sans appareil réel.

Comment créer des programmes pour Windows avec Arduino

Nanonyam (dans son concept final) est un bon outil pour travailler sur des blocs logiciels pour microcontrôleurs, car il offre des fonctions pour travailler avec des graphiques (permettant d'imiter des écrans et des indicateurs), avec des fichiers (pour créer des journaux, lire des données test), avec un clavier (capable de lire jusqu'à 10 boutons simultanément), et avec des ports COM (cela fait l'objet d'un point séparé).

Création de programmes rapides

Par exemple, vous devez rapidement traiter 100500 fichiers texte. Chaque fichier doit être ouvert, légèrement modifié selon un algorithme simple, puis enregistré et fermé. Si vous êtes un maître en Python, alors je vous félicite, vous avez tout ce qu'il vous faut. Mais si vous êtes un ardent utilisateur d'Arduino (et il y en a beaucoup), alors Nanonyam vous aidera à résoudre ce problème. C'est précisément mon deuxième objectif avec Nanonyam : ajouter de nombreuses fonctions utiles telles que le traitement de texte, la création de captures d'écran ou l'imitation de frappes dans le système (tout cela, d'ailleurs, est déjà disponible), ainsi que de nombreuses autres fonctions pour résoudre des tâches routinières.

Test des matériels via le port COM

Nanonyam peut agir comme un terminal fonctionnant selon votre algorithme. Vous pouvez dessiner un petit menu pour contrôler l'appareil et afficher les données reçues du port. Il est possible de sauvegarder et de lire des données à partir de fichiers pour analyse. Un outil pratique pour le débogage simple et l'étalonnage de matériel, ainsi que pour créer des panneaux de contrôle virtuels simples. Ce projet peut être très utile pour les étudiants et les jeunes chercheurs.

Apprentissage de la programmation

Comme dans tout le projet Arduino, l'utilité principale de Nanonyam réside dans la simplicité de ses fonctions, de son interface et de son chargeur. Ce projet doit donc intéresser les nouveaux programmateurs et ceux qui sont à l'aise avec le niveau d'Arduino. D'ailleurs, je n'ai pas encore étudié Arduino en détail, car j'ai toujours utilisé WinAVR ou AVR Studio, en commençant par l'assembleur. Par conséquent, l'exemple de programme ci-dessous sera légèrement incorrect, mais tout à fait fonctionnel.

Hello, Habr!

Il est temps de se familiariser avec certaines fonctions de Nanonyam et d'écrire un programme simple. Nous allons écrire dans Arduino, mais pas comme d'habitude, plutôt comme je sais le faire maintenant (j'ai déjà dit que je n'étais pas encore très à l'aise avec cet environnement). Pour commencer, créons un nouveau sketch et choisissons la carte Mega2560.

Comment créer des programmes pour Windows avec Arduino

Nous sauvegardons le sketch dans un fichier et copions à côté la bibliothèque Nanonyam. Il aurait été correct d'inclure les en-têtes des bibliothèques, mais je ne sais pas comment compiler des fichiers séparés dans Arduino, donc pour l'instant, incluons simplement 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 approprié de faire un module spécial « Nanonyam for Arduino », qui pourrait être installé directement depuis Arduino. Dès que j'aurai compris cela, je le ferai, mais pour l'instant, je montre simplement le principe de fonctionnement avec la machine virtuelle. Écrivons ce 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);//Задержка и разгрузка процессора
}

Le sketch avec ce programme peut être téléchargé ici. Une description détaillée des fonctions est disponible sur le site. J'espère que les commentaires dans ce code sont suffisants pour comprendre le principe. Ici, la fonction sys_Nanonyam() joue le rôle de « mot de passe » pour la machine virtuelle, qui supprime les restrictions sur les fonctions virtuelles. Sans cette fonction, le programme se fermera après 3 secondes de fonctionnement.

Appuyez sur le bouton « Vérifier », et il ne devrait pas y avoir d'erreurs.

Comment créer des programmes pour Windows avec Arduino

Maintenant, nous devons obtenir le fichier binaire (le firmware). Sélectionnez le menu «Sketch>>Exporter le fichier binaire (CTRL+ALT+S)«.

Comment créer des programmes pour Windows avec Arduino

Cela copiera deux fichiers HEX dans le dossier du sketch. Nous ne prenons que le fichier sans le préfixe «with_bootloader.mega».

Il existe plusieurs manières d'indiquer le fichier HEX à la machine virtuelle Nanonyam, toutes sont décrites sur cette page. Je vous propose de créer à côté du fichier Nanonyam.exe fichier Nanonyam.path, où nous indiquerons le chemin complet vers notre fichier HEX. Ensuite, vous pourrez lancer Nanonyam.exe. Une fenêtre apparaîtra avec notre inscription.

Comment créer des programmes pour Windows avec Arduino

De même, il est possible de créer des programmes dans d'autres environnements, par exemple, dans AVR Studio ou WinAVR.

Nous allons donc terminer ici notre introduction à Nanonyam. L'idée principale devrait être claire. Il y a encore des exemples sur le site. Si suffisamment de personnes souhaitent utiliser ce projet, je ferai plus d'exemples et continuerai à « remplir » les bibliothèques de fonctions virtuelles. Des idées concrètes pour le développement du projet et des rapports sur les dysfonctionnements, bogues et erreurs sont les bienvenues. Il est préférable de les envoyer via les contacts indiqués sur le site. Les discussions sont encouragées dans les commentaires.

Merci à tous pour votre attention et bonne programmation !

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster