装備品
最近、非常に興味深いボードを手に入れました: Arduino SS Micro 。 それでも、このボードはDigispark Attiny 85に似ていますが、USB出力を備えた中国語版のArduino Microです。

これについては詳しく説明しません。なぜなら、 iomoioというニックネームを持つYouTubeユーザーは既にこれを行っており、彼のレビューはここにあります 。
ワイヤーには非常に優れた特性があるため、これは小さな家のプロジェクトには非常にクールで便利なデバイスであるように思えます。
制御コンピューターとして、macOS Mojaveオペレーティングシステムを搭載したMacBook Proを使用しましたが、WindowsまたはLinuxを使用している場合は記事を閉じないでください。
Arduinoのスケッチ
例として、シリアルポートからのコマンドで、LEDをオン/オフするスケッチが使用されます。
警告
Arduino SS MicroのLEDはSSポートでハングするため、自動的にオフになります。 それにもかかわらず、標準の点滅の例はLEDの点滅です。
char inChar; #define LED_PIN SS void setup() { pinMode(LED_PIN, OUTPUT); // Serial.begin(115200); // Serial - } void loop() { if (Serial.available() > 0) { inChar = Serial.read(); if (inChar=='e') // e - Enable - { digitalWrite(LED_PIN,HIGH); } } else if (inChar=='d') // d - Disable - { digitalWrite(LED_PIN,LOW); } else if (inChar=='b') // b - Blink - { while (true){ digitalWrite(LED_PIN,HIGH); delay(1000); digitalWrite(LED_PIN,LOW); delay(1000); } } }
別のArduinoを使用する場合は、LEDのピンを変更することを忘れないでください。
コンピューターコード
Pythonの利点の1つは、クロスプラットフォームに加えて、膨大な数のライブラリが存在することです。 必要なもの:
- PySerial-シリアルポートを操作するためのライブラリ
- PyQT5-グラフィカルインターフェイスを作成するためのライブラリ
設置
インストールするには、組み込みのパッケージマネージャー-pipを使用します。
pip install pyserial pyqt5
GUIを作成するために、QTDesignerプログラムをインストールできます。
インターフェース
このプログラムは機能を示す可能性が高いため、ユーザーは提案されたポートからポートを選択でき、通信速度も選択できます。

ソースコード
デバイスでのすべての作業は、PySerialライブラリのおかげです。 しかし、いくつかのニュアンスがあります。 たとえば、デバイスがどのポートに接続されているかをどのように確認しますか?
よく知られているstackoverflowサイト全体で、 Thomasというニックネームを持つユーザーが既成のソリューションを提案し、それを使用しました。
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'): # this excludes your current terminal "/dev/tty" ports = glob.glob('/dev/tty[A-Za-z]*') elif sys.platform.startswith('darwin'): ports = glob.glob('/dev/tty.*') else: raise EnvironmentError('Unsupported platform') result = [] for port in ports: try: s = serial.Serial(port) s.close() result.append(port) except (OSError, serial.SerialException): pass return result
さらに、使用可能な速度のリストを保持する必要があります。
speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200']
次に、 設計 (QtDesignerで作成され、pyuic5ユーティリティを使用して.pyファイルに変換される)、 ポートをスキャンする機能、およびメインプログラムコードをまとめましょう。
すべてのプログラムロジックを含むメインクラス
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')
変数self.Portおよびself.Speedは、使用可能なポートと速度の値を含むドロップダウンリストです。
self.ConnectButtonボタンをクリックすると、 connect関数が呼び出され、指定された速度で指定されたポートへの接続が試行されます。 接続が成功すると、ボタンが緑色に変わり、ラベルが変わります。

send関数は、バイト文字列をポートに送信します-点滅モードを強制的にオンにします。
このようにして、USBに接続されたさまざまなデバイスを制御できます。
この記事は入門と概要であり、より完全な情報は、例えばここにあります:
Arduinoのスケッチとプログラムの両方の完全なソースコードは、 GitHubでホストされています 。