Très souvent, les débutants et non seulement les développeurs ont des questions. Comment contrôler avec Arduino depuis un ordinateur? Et si l'ordinateur n'est pas un Raspberry Pi, mais un ordinateur domestique ordinaire? Et si vous ne voulez pas souffrir avec ESP8266 et gérer via l'interface web? Est-il vraiment nécessaire d'ouvrir l'IDE Arduino à chaque fois et d'envoyer des commandes via le
moniteur de port ? Je vais vous expliquer comment créer ma propre application graphique pour contrôler Arduino.
Équipement
J'ai récemment obtenu une carte très intéressante:
Arduino SS Micro . Cette carte, ressemblant au Digispark Attiny 85, est néanmoins une version chinoise de l'Arduino Micro, avec une sortie USB.

Je ne vais pas en parler en détail, car un utilisateur YouTube avec le surnom
iomoio l' a déjà fait, et sa critique se trouve
ici .
Il me semble que c'est un appareil assez cool et pratique pour les petits projets domestiques, car les fils ont une super propriété: se perdre au moment le plus inopportun.
Un MacBook Pro avec le système d'exploitation macOS Mojave a été utilisé comme ordinateur de contrôle, mais ne fermez pas l'article si vous utilisez Windows ou Linux - tout ce qui est décrit dans l'article fonctionnera sans modification sur aucun système d'exploitation.
Croquis pour Arduino
Par exemple, une esquisse sera utilisée pour allumer et éteindre la LED, sur commande du port série.
AVERTISSEMENTLa LED de l'Arduino SS Micro se bloque sur le port SS et, par conséquent, elle s'éteint automatiquement. Malgré cela, l'exemple standard de
clignotement est une LED clignotante.
char inChar; #define LED_PIN SS void setup() { pinMode(LED_PIN, OUTPUT);
Si vous allez utiliser un autre Arduino - n'oubliez pas de changer la broche de la LED.
Code informatique
Un des avantages de Python, en plus de sa multiplateforme, est la présence d'un grand nombre de bibliothèques. Nous aurons besoin de:
- PySerial - bibliothèque pour travailler avec le port série
- PyQT5 - bibliothèque pour créer une interface graphique
L'installation
Pour installer, utilisez le gestionnaire de packages intégré - pip.
pip install pyserial pyqt5
Pour faciliter la création d'une interface graphique, vous pouvez installer le programme QTDesigner.
Interface
Étant donné que ce programme est destiné à démontrer les capacités, l'utilisateur peut sélectionner le port parmi ceux proposés, ainsi que la vitesse à laquelle la communication se produira.

Code source
Tout le travail avec l'appareil est grâce à la bibliothèque PySerial. Mais il y a quelques nuances. Par exemple, comment savez-vous à quel port l'appareil est connecté?
Sur l'ensemble du site de
stackoverflow bien connu, un utilisateur avec le surnom
Thomas a suggéré une solution prête à l'emploi, que j'ai utilisée.
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'):
De plus, vous devez conserver une liste des vitesses disponibles:
speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200']
Maintenant, rassemblons la
conception (créée dans QtDesigner et convertie à l'aide de l'utilitaire pyuic5 en un fichier .py), les
fonctions de numérisation des ports et le
code du programme principal .
La classe principale contenant toute la logique du programme
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')
Les variables
self.Port et
self.Speed sont des listes déroulantes contenant les valeurs des ports et vitesses disponibles.
Lorsque vous cliquez sur le bouton
self.ConnectButton , la fonction de
connexion est appelée, dans laquelle une tentative est effectuée pour se connecter à un port donné à une vitesse donnée. Si la connexion réussit, le bouton devient vert et l'étiquette change.

La fonction d'
envoi envoie une chaîne d'octets à notre port - nous forçant à activer le mode clignotant.
Ainsi, vous pouvez contrôler divers appareils connectés à USB.
Cet article est une introduction et une vue d'ensemble, des informations plus complètes peuvent être trouvées, par exemple ici:
Le code source complet pour l'esquisse pour Arduino et le programme est hébergé sur
GitHub .