RaspberryPi(ラズベリーパイ)からシリアル通信でArduinoにデータを送ってLEDを点滅させる方法をソースコード付きで解説します。
シリアル通信でLED点滅
Raspberry Pi3 (Python)から Arduino経由で13番ピンとGNDに刺したLEDを点滅させます。
点滅の合図はシリアル通信で送信する1文字で行いました。
なお、ラズパイ側でシリアル通信を行うには以下の操作が必要です。
操作 | 概要 |
---|---|
シリアル通信の有効化 | |
接続ポート確認① | |
接続ポート確認② |
回路構成
回路構成(配線図)です。
【使用機器】
・ラズベリーパイ3 ×1
・Arduino UNO ×1
・LED ×1
・抵抗(470Ω) ×1
・ブレッドボード ×1
・ジャンパーワイヤ(メス-オス) 数本
※LEDとピンの間に470kΩ程度の抵抗を入れます。
※LEDをさす際はアノードとカソードの向きに注意してください。
ソースコード
サンプルプログラムのソースコードは下記の通りです。
【Arduino側】
※何かデータが送られて来たらLEDを点灯
【ラズベリーパイ側(Python)】
■serial.Serial(シリアルポート, 通信速度, timeout=タイムアウト時間[s])
※ArduinoをUSBポートに抜き差しするとArduinoが接続されているシリアルポート「/dev/ttyACM0」が変化することがあります。
「serial.serialutil.SerialException: could not open port」などとエラーが出た場合は、下記事を参考に変化後の値に書き換えて下さい。
【ラズベリーパイ3】dmesgコマンドでArduinoのUSBシリアルポートを確認
実行結果
標準入力で「o」を入力すると、LEDが点灯、それ以外を入力すると消灯、「a」を入力するとプログラムが終了します。
シリアル通信でデータ受信
Arduinoからシリアル通信で送られてきた文字列をRaspberry Pi3 (Python)で読み込みます。
尚、シリアル通信を行う前に、以下の初期設定を行いました。
【ラズベリーパイ3】シリアル通信の有効化
回路構成
回路構成(配線図)です。
【使用機器】
・ラズベリーパイ3 ×1
・Arduino UNO ×1
・ブレッドボード ×1
・USB2.0ケーブル(A-Bタイプ)
ソースコード
サンプルプログラムのソースコードは下記の通りです。
【Arduino側】
【ラズベリーパイ側(Python3)】
■serial.read(文字数)
指定した文字数分だけデータを取得します。
返り値:Python3系はバイト型でデータを取り出すので、文字列型にデコードして表示しています。
実行結果
サンプルプログラムの実行結果です。
ESTT
ESTT
ESTT
ESTT
︙
ESTT
ESTT
ESTT
ESTT
コメント