Sehr oft haben Anfänger und nicht nur Entwickler Fragen. Wie steuere ich mit Arduino von einem Computer aus? Und wenn der Computer kein Raspberry Pi ist, sondern ein normaler Heimcomputer? Und wenn Sie nicht mit ESP8266 leiden und über das Webinterface verwalten möchten? Ist es wirklich notwendig, die Arduino IDE jedes Mal zu öffnen und Befehle über den
Port Monitor zu senden? Ich werde darüber sprechen, wie ich meine eigene GUI-Anwendung zur Steuerung von Arduino erstelle.
Ausrüstung
Ich habe kürzlich ein sehr interessantes Board bekommen:
Arduino SS Micro . Dieses Board, das dem Digispark Attiny 85 ähnelt, ist dennoch eine chinesische Version des Arduino Micro mit USB-Ausgang.

Ich werde nicht im Detail darüber sprechen, da ein YouTube-Nutzer mit dem Spitznamen
iomoio dies bereits getan hat und seine Rezension
hier zu finden
ist .
Es scheint mir, dass dies ein ziemlich cooles und praktisches Gerät für kleine Heimprojekte ist, da die Drähte eine Super-Eigenschaft haben: Verlieren Sie sich im ungünstigsten Moment.
Als Steuerungscomputer wurde ein MacBook Pro mit dem Betriebssystem macOS Mojave verwendet. Schließen Sie den Artikel jedoch nicht, wenn Sie Windows oder Linux verwenden. Alles, was im Artikel beschrieben wird, funktioniert ohne Änderungen unter jedem Betriebssystem.
Skizze für Arduino
Als Beispiel wird eine Skizze verwendet, die die LED auf Befehl der seriellen Schnittstelle ein- und ausschaltet.
WARNUNGDie LED im Arduino SS Micro hängt am SS-Anschluss und erlischt daher automatisch. Trotzdem ist das Standard-
Blink- Beispiel eine blinkende LED.
char inChar; #define LED_PIN SS void setup() { pinMode(LED_PIN, OUTPUT);
Wenn Sie ein anderes Arduino verwenden, vergessen Sie nicht, den Pin der LED zu wechseln.
Computercode
Einer der Vorteile von Python neben seiner plattformübergreifenden Nutzung ist das Vorhandensein einer großen Anzahl von Bibliotheken. Wir werden brauchen:
- PySerial - Bibliothek für die Arbeit mit serieller Schnittstelle
- PyQT5 - Bibliothek zum Erstellen einer grafischen Oberfläche
Installation
Verwenden Sie zur Installation den integrierten Paketmanager - pip.
pip install pyserial pyqt5
Zum bequemen Erstellen einer GUI kann QTDesigner installiert werden.
Schnittstelle
Da dieses Programm eher die Funktionen demonstrieren soll, kann der Benutzer den Port aus den vorgeschlagenen auswählen sowie die Geschwindigkeit, mit der die Kommunikation stattfinden wird.

Quellcode
Alle Arbeiten mit dem Gerät sind der PySerial-Bibliothek zu verdanken. Aber es gibt ein paar Nuancen. Woher wissen Sie beispielsweise, an welchen Port das Gerät angeschlossen ist?
Auf der gesamten bekannten
Stackoverflow- Site schlug ein Benutzer mit dem Spitznamen
Thomas eine vorgefertigte Lösung vor, die ich verwendete.
def serial_ports(): """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
Außerdem müssen Sie eine Liste der verfügbaren Geschwindigkeiten führen:
speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200']
Lassen Sie uns nun das
Design (erstellt in QtDesigner und konvertiert mit dem Dienstprogramm pyuic5 in eine .py-Datei),
Funktionen zum Scannen von Ports und den
Hauptprogrammcode zusammenstellen .
Die Hauptklasse, die die gesamte Programmlogik enthält
class LedApp(QtWidgets.QMainWindow, design.Ui_Form): def __init__(self): super().__init__() self.setupUi(self) self.Port.addItems(serial_ports()) self.Speed.addItems(speeds) self.realport = None self.ConnectButton.clicked.connect(self.connect) self.EnableBtn.clicked.connect(self.send) def connect(self): try: self.realport = serial.Serial(self.Port.currentText(),int(self.Speed.currentText())) self.ConnectButton.setStyleSheet("background-color: green") self.ConnectButton.setText('') except Exception as e: print(e) def send(self): if self.realport: self.realport.write(b'b')
Die Variablen
self.Port und
self.Speed sind Dropdown-Listen mit den Werten der verfügbaren Ports und Geschwindigkeiten.
Wenn Sie auf die Schaltfläche
self.ConnectButton klicken, wird die
Verbindungsfunktion aufgerufen, bei der versucht wird, mit einer bestimmten Geschwindigkeit eine Verbindung zu einem bestimmten Port
herzustellen . Wenn die Verbindung erfolgreich hergestellt wurde, wird die Schaltfläche grün und die Beschriftung ändert sich.

Die
Sendefunktion sendet eine Byte-Zeichenfolge an unseren Port und zwingt uns, den Blinkmodus einzuschalten.
So können Sie verschiedene an USB angeschlossene Geräte steuern.
Dieser Artikel ist einführend und übersichtlich. Vollständigere Informationen finden Sie beispielsweise hier:
Der vollständige Quellcode sowohl für die Skizze für Arduino als auch für das Programm wird auf
GitHub gehostet .