【Arduino】シリアル通信で文字列の送受信【Python】

ArduinoマイコンとPC(Arduino IDE,Pythonなど)の間をUSBケーブルで繋いでシリアル通信で文字列を送受信する方法をソースコード付きで解説します。

スポンサーリンク

【Arduino – Arduino IDE間】文字の送受信

1文字の場合

Serial.read()とSerial.write()を用いてArduino-PC間で文字を送受信します。
今回はUSBケーブルでシリアル通信をおこないました。

実装するプログラムの処理の流れは下記の通りです。

①シリアルポートを9600 bps[ビット/秒]で初期化する
②PCから送られてくる1文字をシリアル通信で受け取る
③受け取った文字と改行文字をシリアル通信で送信する
④2~3を繰り返す

サンプルプログラムのソースコードは下記の通りです。


サンプルプログラムの実行結果は下記の通りです。

【Arduino】シリアル通信で1文字の送受信
この記事では、ArduinoマイコンとPCの間をUSBケーブルで繋いでシリアル通信で文字を送受信する方法をソースコード付きで解説します。

文字列の場合

Serial.read()とSerial.write()を用いてArduino-PC間で文字列を送受信します。
今回はUSBケーブルでシリアル通信をおこないました。

実装するプログラムの処理の流れは下記の通りです。

①シリアルポートを9600 bps[ビット/秒]で初期化する
②PCから送られてくる文字列をシリアル通信で受け取る
③受け取った文字列+改行文字をシリアル通信で送信する
④2~3を繰り返す

サンプルプログラムのソースコードは下記の通りです。


サンプルプログラムの実行結果は下記の通りです。

シリアルモニターを用いて、Arduinoと文字列を送受信しました。

スポンサーリンク

【Arduino – Python間】シリアル通信でLED点滅

パソコン(Python)から Arduino経由で13番ピンとGNDに刺したLEDを点灯させます。
点滅の合図はシリアル通信で送信する1文字で行いました。

● 回路構成(配線図)

Arduinoと電子部品の構成・配線は下記の通りです。

※LEDとピンの間に470kΩ程度の抵抗を入れます。
※LEDをさす際はアノードとカソードの向きに注意してください。

【電子部品】
・Arduino UNO (1個)
・LED (1個)

サンプルプログラムのソースコードは下記の通りです。
【Arduino側】


【パソコン側(Python)】


文字列の場合

パソコン(Python)から Arduino経由で13番ピンとGNDに刺したLEDを点灯させます。
点滅の合図はシリアル通信で送信する文字列で行いました。

● 回路構成(配線図)

Arduinoと電子部品の構成・配線は下記の通りです。

※本当はLEDとピンの間に470Ω程度の抵抗を入れます。
※LEDをさす際はアノードとカソードの向きに注意してください。

【電子部品】
・Arduino UNO (1個)
・LED (1個)

サンプルプログラムのソースコードは下記の通りです。
【Arduino側】


【パソコン側(Python)】


【Python/Arduino】シリアル通信でLED点滅(文字列)
この記事では、Arduinoマイコンとパソコン(Python)でシリアル通信によりLEDを点滅させる方法をソースコード付きで解説します。
スポンサーリンク

【Arduino – Processing間】文字列の送受信

Processingでは、「processing.serial」というライブラリを使うことで簡単にシリアル通信を行うことが出来ます。
今回は、シリアル通信でProcessingからArduinoに文字列を送信し、さらにArduinoからProcessingへ受信した文字列を送り返すプログラムを作成しました。

回路構成(配線図)

Arduinoと電子部品の構成・配線は下記の通りです。

【電子部品】
・Arduino UNO (1個)
・RCサーボ S03R 2BBMG (1個)
・赤外線測距モジュール GP2Y0A21 (1個)
・ジャンパワイヤー(数本)

実装したプログラムの処理手順は下記の通りです。

【Arduino側】
①シリアルポートを9600 bps[ビット/秒]で初期化する。
②シリアル通信でProcessing(PC側)から送られてくる文字列を受信する。
(Serial.read()を使って、文字を終端コードが来るか30文字以上になるまで1文字ずつデータを受信して配列に格納します)
③受信した文字列をそのままProcessing(PC側)に送信する。

【Python側】
①シリアル通信の設定をする。(COMポート5番、通信速度9600 bps)
②画面サイズを設定する。(縦・横400px)
③画面を黒に塗りつぶす。
④マウスクリックがあれば、シリアル通信で「XYZ」+終端文字コード「\0」をArduinoへ送信する。
⑤マウスクリックが終われば、シリアル通信で「ABC」+終端文字コード「\0」をArduinoへ送信する。

ソースコード

サンプルプログラムのソースコードは下記の通りです。
【Arduino側】


Processing(PC側)から受信した文字列をそのまま送り返すプログラムです。
最大30文字(終端文字コード除く)まで文字列を受信できます。(1行目のdataの配列数を変更すれば最大文字数を増やせます)

【パソコン側(Processing)】


シリアル通信でArduinoに文字列「XYZ」もしくは「ABC」を送るプログラムです。
※環境によってArduinoが接続されているCOMポートの番号が違うので,それに応じて10行目のポート番号を変更してください。
(私の環境では、COM5にArduinoが繋がっていたので、COM5と指定しています。どこに繋がっているかはArduinoIDEで確認できます)

実行結果

サンプルプログラムの実行結果は下記の通りです。


Processing側のプログラムを起動すると黒い画面が出てきます。
画面をマウスクリックすると、画面に「XYZ」という文字列が表示されます。
これにより、Processingから送信した文字列をArduinoがそのまま送り返してきてることがわかります。
同様に画面をマウスクリックを終了すると、画面に「ABC」という文字列が表示されます。

【Processing/Arduino】シリアル通信で文字列の送受信
ProcessingとArduinoの間でシリアル通信を用いて文字列を送信・受信する方法をソースコード付きで解説します。
【Processing/Arduino】シリアル通信でLED点滅
この記事では、Processingからシリアル通信でArduinoを操作し、LED点滅を行う方法をソースコード付きで解説します。
【Arduino入門】サンプル集
このページでは、Arduinoで電子工作する方法やサンプルプログラム(ソースコード)を入門者向けに解説しています。
【Python超入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。 主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...
Arduino
スポンサーリンク

コメント