PythonでArduinoを操作する方法を現役エンジニアが解説【初心者向け】
初心者向けにPythonでArduinoを操作する方法について現役エンジニアが解説し ています。Arduinoとは、マイコンボード及び専用のIDEで構成されるシステムのことです。シリアル通信を使ってUSBで接続されたパソコンと ArduinoボードをPythonで操作する方法について説明します。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PythonでArduinoを操作する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
PythonでArduinoを操作する方法について詳しく説明していくね!
お願いします!
目次
Arduinoとは
Arduinoとは、マイコンボード、および専用のIDEで構成されるシステムのことを言います。
ボードにはジャンパーワイヤーを接続するための接続ポートがあり、そこからブレッドボードに配線することで電子制御を行うことができる基板になっています。
一方IDEはC++ 言語をベースに作られたArduino言語をプログラムを作成し、コンパイル、デバッグ、そしてボードへの転送までを一貫して行います。
もともとは、2005年にイタリアで「学生がシンプルで安価に電子制御を行えるようにする」ことを目的に、Arduinoプロジェクトが発足されたことがきっかけです。
ボードの仕様はオープンソースで公開されているため、自分でAruduinoと互換性のある基板を簡単に設計できます。
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講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。