PythonでArduinoを操作する方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonでArduinoを操作する方法について現役エンジニアが解説しています。Arduinoとは、マイコンボード及び専用のIDEで構成されるシステムのことです。シリアル通信を使ってUSBで接続されたパソコンとArduinoボードをPythonで操作する方法について説明します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

PythonでArduinoを操作する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PythonでArduinoを操作する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

Arduinoとは

Arduinoとは、マイコンボード、および専用のIDEで構成されるシステムのことを言います。

ボードにはジャンパーワイヤーを接続するための接続ポートがあり、そこからブレッドボードに配線することで電子制御を行うことができる基板になっています。

一方IDEはC++ 言語をベースに作られたArduino言語をプログラムを作成し、コンパイル、デバッグ、そしてボードへの転送までを一貫して行います。

もともとは、2005年にイタリアで「学生がシンプルで安価に電子制御を行えるようにする」ことを目的に、Arduinoプロジェクトが発足されたことがきっかけです。

ボードの仕様はオープンソースで公開されているため、自分でAruduinoと互換性のある基板を簡単に設計できます。
 

[PR] Pythonで挫折しない学習方法を動画で公開中

Arduinoを操作する方法

Arduinoで作成した制御を外部システムから操作する方法はいくつかありますが、その中でよく使われる仕組みがシリアル通信と呼ばれる仕組みです。

パソコンとArduinoボードをUSBで接続することでプログラム上でボードにメッセージを送信できます。

逆にArduinoボードからプログラムで情報を受け取ることができます。

PythonでArduinoとシリアル通信を行う場合は、PySerialを使うことで簡単にできます。
 

実際に書いてみよう

それでは実際にArduinoをPythonで操作してみましょう。
 

用意するもの

  • Arduinoボード(互換機でも大丈夫です)
  • LED
  • 抵抗(330Ωあるといいです)
  • USBケーブル(Arduinoボードと接続できるもの)

 

接続

LEDのアノード(足が長い方)がデジタルの2番側、カソード(足の短い方)がGND側になるように接続します。

抵抗はLEDの破損を防ぐためにつなげます。

コード

Arduinoに書き込むコードは以下の通りです。

書き込むときには事前にArduino IDEをインストールします。

void setup() {
  // 2番ピンをアウトプットに設定
  pinMode(2, OUTPUT);
  Serial.begin(9600);
}

byte inputData;
void loop() {
  // シリアルデータを受信したら処理を実行する
  if (Serial.available() > 0) {
    inputData = Serial.read();
    switch(inputData){
      case '0':
        digitalWrite(2, LOW);
        Serial.println("turn off");
        break;
      case '1':
        digitalWrite(2, HIGH);
        Serial.println("turn on");
        break;
      default:
        break;
    }
  }
}

書き込みを行ったときにIDEの右下に表示しているポートはPythonでシリアル通信をするために必要なので、メモしておきましょう。


続いて、Arduinoとシリアル通信をするためのPythonコードです。

PySerialをインストールしてない場合は、以下のコマンドでインストールしておきます。

pip install pyserial

ソースコードは以下です。
YOUR_PORTに関しては、先程メモしたポートに書き換えます。

import serial
import time

#  COMポートを開く
print("Open Port")
ser =serial.Serial("YOUR_PORT", 9600)
while True:
    try:
        command = input("type 0 or 1: ")
        if command == "0" or command == "1":
            ser.write(command.encode())
        else:
            print("ignore command")
    except KeyboardInterrupt:
        break

print("Close Port")
ser.close()

プログラムを実行するとテキスト入力ができる状態になるので、半角で0を入力するとLEDが消灯し、1を入力するとLEDが点灯します。

プログラムを終了するときは、Ctrl(Macの方はCmd)+Cを入力します。


 

まとめ

今回はPythonを使ってArduinoを操作する方法を紹介しました。

パソコンからUSB経由でマイコンと通信を行う方法はIoTや実験のデータ測定などでよく使われるので、知っていると便利です。
 

監修してくれたメンター

メンター三浦

モバイルゲームを運用している会社のエンジニアをしています。趣味でWEB開発やクラウドコンピューティングもやっており、ソフトもハードもなんでもやります。

TechAcademyジュニアではPythonロボティクスコースを担当しています。好きな言語はPython, Node.js。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。