Verwalten von Arduino über das Internet mit einem PC - Anfängererfahrung

Hallo alle zusammen. In diesem Artikel werde ich darüber sprechen, wie ich es geschafft habe, die Arduino-Steuerung über das Internet mithilfe eines mit dem Internet verbundenen PCs zu implementieren. Im Allgemeinen kann dieses Verfahren für jeden Mikrocontroller verwendet werden, beispielsweise für PIC. Die Methode ist ziemlich eiche, es gibt viel zu modernisieren und es gibt viel fortgeschrittenere Schemata, aber im einfachsten Fall ist dies genug.

Anstatt mitzumachen


Ich möchte gleich sagen, dass ich in diesem Artikel nicht sehr tief auf die Feinheiten der Programmierung eingehen werde. Es wird davon ausgegangen, dass der Leser zumindest über minimale Grundlagen verfügt. Ich werde Ihnen allgemein sagen, wie Ressourcen verwendet wurden und über interessante Punkte.

Voraussetzungen für die Erstellung dieser Methode, die ich bei der Erstellung meines Elektroautos hatte: Zhmyak hier! Ich muss sofort sagen, dass es mehr und mehr aus sportlichem Interesse als für ernsthafte praktische Arbeit geschaffen wurde, aber es funktioniert trotzdem und kann für jemanden nützlich sein.

Worauf baut das gesamte System auf und wie ist es in der Hardware implementiert?


Das Arbeitsschema ist wie folgt: Vom Server lesen wir die Datei, in der die Daten gespeichert sind, mit dem Programm, das auf dem PC / Laptop ausgeführt wird. Dieses Programm sendet über USB Daten an die Steuerung. Die Steuerung empfängt Daten und führt Aktionen für sie aus. Das Schema mit dem Server ist insofern attraktiv, als Sie das Schema ohne Anwendung steuern können, indem Sie die Site einfach von jedem Smartphone / Tablet / PC / Laptop auf der ganzen Welt aus besuchen, wo es Internetzugang gibt.

PS. Informationen zur Serverseite finden Sie weiter unten.

In diesem Artikel werde ich das Arduino MEGA 2560 (das chinesische Gegenstück) steuern, aber hinter den Kulissen funktionierte die Schaltung reibungslos mit dem PIC16F877A. Das einzige, was ich verwenden musste, war der USB-TTL-Adapter:



Es ist klar, dass sich das PIC-Programm aufgrund anderer Unterschiede geringfügig vom Arduino-Programm unterscheidet Arten von MK, aber das Prinzip ist das gleiche:

Wir empfangen Daten über den COM-Port, vergleichen sie mit der internen Befehlstabelle und führen die entsprechende Aktion aus.

Das Schema schien mir anfangs sehr einfach zu sein, aber es gab ein ABER - es gab kein Programm, das die Datei im Internet lesen und Daten an den COM-Port senden würde. Dementsprechend musste ich ein solches Programm schreiben.

Das Programm wurde auf VB6 geschrieben. Zum Lesen der Datei vom Server wird die VB6-Komponente verwendet: Microsoft Internet Transfer Control 6.0. Mit seiner Hilfe wird eine Textdatei auf dem Server einfach in eine Zeichenfolgenvariable eingelesen. Nach dem Lesen dieser Zeile wird sie mit der VB6-Komponente Microsoft Comm Control 6.0 an den COM-Port gesendet. Der gesamte Vorgang des Lesens einer Datei und des Sendens einer Zeile wird mithilfe eines Timers in einer Schleife gelesen. Das Timer-Intervall kann in der Programmkonfiguration oder direkt während des Betriebs geändert werden. Außerdem können Sie die Betriebsart des Ports, seine Nummer, die Funktionsweise der Internetverbindung und einen Link zur lesbaren Datei auswählen.

Ich möchte eine Bemerkung machen, dass das Programm bei großen Dateien und kleinen Lücken einfriert, aber weiterhin funktioniert. Die Puffergröße meines Programms beträgt 512 Bytes. Da mein MK weniger Puffer hat, reicht dies aus.

Ein wichtiger Punkt. Ein Programm in MK kann keine Daten analysieren, sondern nur lesen, welches Zeichen über die serielle Schnittstelle an den Eingang übertragen wurde. Ohne Fehler konnte ich das lateinische Alphabet akzeptieren (26 Zeichen AZ und 10 Ziffern 0-9). Insgesamt 36 Teams können alle Daten übertragen, wenn der Algorithmus fertiggestellt und die Datenanalyse in den MK eingeführt wurde. Es besteht auch die Möglichkeit, Software für den bidirektionalen Datenaustausch zu „dotieren“.

Serverauswahl und Serverseite


Auf der Serverseite hätte jeder Server mit PHP-Unterstützung , selbst wenn er auf einem PC ausgeführt wird, nur eine statische IP, aber ich persönlich verwende einen gemieteten Jino. Der Serverteil in meinem Beispiel besteht aus zwei Dateien: HTML-Seiten mit einem Formular mit EIN / AUS-Schaltflächen für eine LED und einem PHP-Skript, das den Inhalt einer TXT-Datei ändert, aus der ein auf einem PC ausgeführtes Programm Daten liest.

Software


HTML Quelltext Form mit 2 Tasten, Ein / Aus-LED auf der Platine:

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

PHP-Code, hier schreiben wir den Befehl A in die Datei, wenn die LED leuchten soll, und B, wenn sie erlöschen soll:

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

Nun der eigentliche Code für 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  
}}

Das Programm selbst zum Lesen von Informationen auf dem Server mit Weiterleitung an den COM-Port und dessen Quellcode befindet sich im Archiv unter folgendem Link: Yandex-Disk Das Programm ist in mehrere Versionen des Codes kompiliert, es kann einige Unterschiede im Betrieb geben, sollte es aber nicht sein. Beim ersten Start der EXE-Datei werden eine Hilfedatei und eine Konfigurationsdatei generiert. Daten aus dieser Datei werden beim Start des Programms gelesen, sofern vorhanden. Wenn die Datei nicht vorhanden ist (z. B. beim ersten Start des Programms), wird die Konfigurationsdatei mit Standardwerten erstellt.

Arbeitsergebnisse



Anstelle einer Schlussfolgerung


In diesem Beispiel habe ich einen einfachen "Eichen" -Algorithmus implementiert, der funktioniert. Es gibt natürlich Möglichkeiten, sich weiterzuentwickeln, aber dennoch können bereits 36 Teams in dieser Form geschickt werden. Wenn Sie das Parsen eingehender Daten im Mikrocontroller implementieren, können Sie beliebige Daten übertragen. Für meine Aufgaben werden 36 Teams mit dem Kopf ausreichen, und außerdem ist dies die Erfahrung eines Anfängers :)

All Articles