Pythonを使用してArduino Unoとシリアルを通信する方法

How to Use Python to Communicate with an Arduino Uno Over Serial

PythonとArduino UNOの間でシリアルを介して通信すると、Pythonスクリプトを使用してハードウェアを制御するか、ArduinoからPythonに処理のためにデータを送信できます。このチュートリアルでは、Pythonを使用して、シリアル接続をめぐるArduino UNOと通信することをガイドします。


あなたが必要とするもの

  1. USBケーブル付きArduino UNO
  2. コンピューターにインストールされているPython(バージョン3.x推奨)
  3. Arduino IDEがインストールされました
  4. Pythonシリアル通信のライブラリ(例えば、 pyserial)

ステップ1:必要なソフトウェアをインストールします

1. Pythonをインストールします

Pythonがインストールされていない場合は、ダウンロードしてください python.org インストール手順に従ってください。

2. Arduino IDEをインストールします

Arduino IDEをダウンロードしてインストールします arduino.cc.

3.宮廷図書館をインストールします

Pyserialは、Pythonがシリアルポートを介して通信するために必要です。次のコマンドを使用してインストールします。

pip install pyserial

ステップ2:Arduinoコードを書き込み、アップロードします

Arduinoは、シリアルポートを介してデータを送信および受信します。以下はスケッチの例です。

Arduinoコード

void setup() {
  Serial.begin(9600); // Start serial communication at 9600 baud
  while (!Serial);    // Wait for the serial port to connect
  Serial.println("Arduino is ready!");
}

void loop() {
  // Check if data is available on the serial port
  if (Serial.available()) {
    String data = Serial.readString(); // Read the incoming data
    Serial.print("Received: ");
    Serial.println(data); // Echo the data back

    // Optional: Respond based on the received data
    if (data.trim() == "LED_ON") {
      Serial.println("Turning LED on");
    } else if (data.trim() == "LED_OFF") {
      Serial.println("Turning LED off");
    }
  }
}
  1. Arduino IDEを開きます。
  2. 上記のコードをエディターに貼り付けます。
  3. 正しいものを選択します ボード そして ポート の下 ツール メニュー。
  4. クリック アップロード コードをArduino UNOにアップロードします。

ステップ3:Pythonコードを書きます

以下は、Arduinoと通信するためのPythonスクリプトの例です。

Pythonコード

import serial
import time

# Configure the serial connection
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=1) # Replace 'COM3' with your Arduino's port

def send_data(data):
    print(f"Sending: {data}")
    arduino.write(f"{data}\n".encode()) # Send data to Arduino
    time.sleep(0.1)

    response = arduino.readline().decode().strip() # Read response from Arduino
    if response:
        print(f"Arduino responded: {response}")

if __name__ == "__main__":
    time.sleep(2)  # Wait for Arduino to initialize
    print("Connected to Arduino")

    # Example: Send commands to Arduino
    send_data("LED_ON")
    time.sleep(2)
    send_data("LED_OFF")

    # Close the serial connection
    arduino.close()

ステップ4:セットアップをテストします

  1. USBを介してArduinoをコンピューターに接続します。
  2. Arduinoのポートを見つける:
    • Windowsで:デバイスマネージャーのポートを確認します(COM3など)。
    • MacOS/Linuxで:使用します ls /dev/tty.* 正しいポートを見つけるためのコマンド(例えば、 /dev/ttyUSB0).
  3. 更新します port Arduinoのポートに一致するPythonスクリプトの値。
  4. コマンドを使用してPythonスクリプトを実行します。
python your_script_name.py
  1. ターミナルモニターとシリアルモニターで、PythonとArduinoの間の通信を観察します。

Python-Arduino通信のアプリケーション

  1. ハードウェアタスクの自動化(例:LEDをオンにし、モーターを制御する)
  2. ファイルまたはデータベースにセンサーデータを記録します
  3. TkinterやPyqtなどのPythonライブラリを使用してArduinoプロジェクトのカスタムGUIを作成する
  4. ArduinoをIoTプラットフォームと統合します

トラブルシューティング

  • Arduinoへの接続はありません:

    • Pythonスクリプトで正しいポートが指定されていることを確認してください。
    • ボーレートがArduinoスケッチと一致することを確認します。
  • Arduinoからの応答はありません:

    • シリアル接続を開いた後、遅延を追加します(time.sleep(2)).
    • Arduinoが別のプログラムで使用されていないことを確認してください(たとえば、Arduino IDEのシリアルモニター)。
  • UnicodedeCodeError:

    • 送信/受信されるデータのエンコードを確認してください。使用 .decode(errors='ignore') 必要に応じて。

結論

PythonとArduino UNOの間の通信をシリアル上で正常にセットアップしました。これにより、Pythonの強力なライブラリをArduinoのハードウェア機能と統合するための無限の可能性が開かれます。センサー、モーター、またはプロジェクト用のPythonベースのGUIを作成して、さらに実験してください!

コメントを残す

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.