Gérer Arduino sur Internet avec un PC - Expérience débutant

Bonjour à tous. Dans cet article, je vais vous expliquer comment j'ai réussi à implémenter le contrôle Arduino sur Internet à l'aide d'un PC connecté à Internet. En général, cette méthode peut être utilisée pour n'importe quel microcontrôleur, par exemple PIC. La méthode est assez jolie, il y a beaucoup à moderniser et il y a beaucoup de schémas plus avancés, mais dans le cas le plus simple, cela suffit.

Au lieu de rejoindre


Je voudrais dire tout de suite que dans cet article je n'entrerai pas très profondément dans les subtilités de la programmation, on suppose que le lecteur a au moins des bases minimales. Je vais vous dire en général comment les ressources ont été utilisées et sur les points intéressants.

Prérequis pour la création de cette méthode que j'avais lors de la création de ma voiture électrique: Zhmyak ici! Je dois dire tout de suite qu'elle a été créée de plus en plus par intérêt sportif que pour un travail pratique sérieux, mais néanmoins elle fonctionne et peut être utile à quelqu'un.

Sur quoi repose l'ensemble du système et comment est-il implémenté dans le matériel


Le schéma de fonctionnement est le suivant: à partir du serveur, nous lisons le fichier dans lequel les données sont stockées à l'aide du programme exécuté sur le PC / ordinateur portable. Ce programme via USB envoie des données au contrôleur. Le contrôleur reçoit des données et effectue des actions sur celles-ci. Le schéma avec le serveur est attrayant en ce que vous pouvez contrôler le schéma sans application, simplement en visitant le site depuis n'importe quel smartphone / tablette / pc / ordinateur portable n'importe où dans le monde où il y a accès à Internet.

PS. Le côté serveur est décrit ci-dessous.

Dans cet article, je vais contrôler l'Arduino MEGA 2560 (l'homologue chinois), mais dans les coulisses, le circuit a bien fonctionné avec le PIC16F877A, la seule chose que j'ai dû utiliser était l'adaptateur USB-TTL:



il est clair que le programme PIC est légèrement différent du programme Arduino, en raison de différences types de MK, mais le principe est le même:

Nous recevons des données via le port COM, les comparons avec le tableau de commandes interne et effectuons l'action correspondante.

Le schéma m'a semblé très simple au départ, mais il y en avait un MAIS - il n'y avait pas de programme qui lirait le fichier sur Internet et enverrait des données au port COM. En conséquence, j'ai dû écrire un tel programme.

Le programme a été écrit sur VB6. Pour lire le fichier à partir du serveur, le composant VB6 est utilisé: Microsoft Internet Transfer Control 6.0. Avec son aide, un fichier texte sur le serveur est simplement lu dans une variable de chaîne. Après avoir lu cette ligne, elle est envoyée au port COM à l'aide du composant VB6: Microsoft Comm Control 6.0. L'ensemble du processus de lecture d'un fichier et d'envoi d'une ligne est lu en boucle à l'aide d'une minuterie. L'intervalle de la minuterie peut être modifié dans la configuration du programme ou directement pendant le fonctionnement. De plus, vous pouvez sélectionner le mode de fonctionnement du port, son numéro, le mode de fonctionnement de la connexion Internet et un lien vers le fichier lisible.

Je voudrais faire une remarque qu'avec de grandes tailles de fichiers et de petits espaces, le programme se fige, mais continue de fonctionner. La taille de la mémoire tampon de mon programme est de 512 octets. Étant donné que mon MK a moins de tampon, cela suffit.

Un point important. Un programme en MK ne peut pas analyser les données, il peut lire uniquement quel caractère a été transmis à l'entrée via le port série. Sans erreurs, j'ai réussi à accepter l'alphabet latin (26 caractères AZ et 10 chiffres 0-9). Un total de 36 équipes, si l'algorithme est finalisé et l'analyse des données est introduite dans le MK, toutes les données peuvent être transférées. Il existe également la possibilité d'un logiciel de «dopage» pour l'échange de données bidirectionnel.

Sélection du serveur et côté serveur


Côté serveur, tout serveur prenant en charge PHP , même s'il s'exécute sur un PC personnel, n'aurait qu'une adresse IP statique, mais j'utilise personnellement un Jino loué. La partie serveur de mon exemple se compose de deux fichiers: des pages HTML avec un formulaire avec des boutons ON / OFF pour une LED et un script PHP qui modifie le contenu d'un fichier TXT à partir duquel un programme s'exécutant sur un PC lit des données.

Logiciel


Code HTML Forme avec 2 boutons, LED on / off sur la carte:

<html>
<head>
<title> </title>
</head>  
<body>
<form action="work.php" method="post">
:
<p>
<input type="submit" name="sv" value="On" />
<input type="submit" name="sv" value="Off" />
<p>
</form>    
</body>    
</html>

Code PHP, nous écrivons ici la commande A dans le fichier, si la LED doit être allumée, et B si elle doit s'éteindre:

<?php
$cm = fopen("command.txt", "w");
switch ($_POST['sv']) {
case "On":
fwrite($cm,"a");    
    break;   
case "Off":
fwrite($cm,"b");    
    break;  
}
fclose($cm); 
?>

Maintenant, le code réel pour Arduino:

int val; //      
void setup() {
Serial.begin(9600); //   
pinMode(13, OUTPUT); //   13  
}
void loop() {
// ,   - 
if (Serial.available()) {
val = Serial.read(); //  val   
if (val == 'a') {digitalWrite(13, HIGH);} //  a  
if (val == 'b') {digitalWrite(13, LOW);} //  b  
}}

Le programme lui-même pour lire les informations sur le serveur avec transfert vers le port COM et son code source sont dans l'archive sur le lien: Yandex-Disk Le programme est compilé en plusieurs versions du code, il peut y avoir quelques différences de fonctionnement, mais il ne devrait pas l'être. Au premier démarrage du fichier EXE, un fichier d'aide et un fichier de configuration sont générés. Les données de ce fichier sont lues au démarrage du programme, si elles existent. Si le fichier n'existe pas (par exemple, au premier démarrage du programme), le fichier de configuration est créé avec les valeurs par défaut.

Résultats du travail



Au lieu d'une conclusion


Dans cet exemple, j'ai implémenté un algorithme simple «chêne» qui fonctionne. Il y a bien sûr où se développer davantage, mais néanmoins, 36 équipes peuvent déjà être envoyées sous cette forme. Si vous implémentez l'analyse des données entrantes dans le microcontrôleur, vous pouvez transférer toutes les données. Pour mes tâches 36 équipes suffiront à la tête, et en plus, c'est l'expérience d'un débutant :)

All Articles