開発者だけでなく初心者もよく質問をします。 コンピューターからArduinoで制御する方法? コンピューターがRaspberry Piではなく、通常のホームコンピューターである場合はどうでしょうか。 また、ESP8266に悩まされ、Webインターフェイスを介して管理したくない場合はどうでしょうか。 Arduino IDEを毎回開き、
ポートモニターを介してコマンドを送信する必要は本当にありますか? Arduinoを制御するための独自のGUIアプリケーションを作成する方法について説明します。
装備品
最近、非常に興味深いボードを手に入れました:
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);
別の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'):
さらに、使用可能な速度のリストを保持する必要があります。
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でホストされ
ています 。