【Raspberry Pi】Raspberry PiとArduinoをシリアル通信で接続する【Arduino】
はじめに
こんにちは、がんがんです。
今回はRaspberry PiとArduinoをシリアル通信でつないでみたので
そのときの備忘録です。
目的
- Raspberry PiとArduinoでシリアル通信する
- シリアル通信ではPyserialを使う
実験
Raspberry PiからArduinoへPySerialでシリアル通信を行います。
今回はArduinoからブレッドボード上のLEDを点滅させてみます。
使用機器
- Raspberry Pi 3 Model B+
- Arduino Uno Rev3
- LED × 2
シリアルケーブル、配線の購入はオンラインが便利です。
はんだ付け不要の圧接コネクタもボードの拡張や構成変更に役立ちます。詳しくはRaspberry Pi正規代理店のアールエスコンポーネンツからどうぞ。
配線の様子
配線した様子はこんな感じです。
せっかくだったので、2つのLED(オレンジ)を用意しました。
Raspberry Pi側
ラズパイ側ではpyserialモジュールを用いてArduinoへシリアル通信を行います。
#------------------------------------------------------------ # # Python×Arduino×Raspberry Pi # Raspberry PiとArduinoをシリアル通信 # #------------------------------------------------------------ import serial, time def main(): # COMポートを開く print("Open Port") ser =serial.Serial("/dev/ttyACM0", 9600) for i in range(10): # LED点灯 ser.write("1") print("ON") time.sleep(1) # LED消灯 ser.write("0") print("OFF") time.sleep(1) print("Close Port") ser.close() if __name__ == '__main__': main()
Arduino側
#define LED_PIN1 8 #define LED_PIN2 9 byte val = 0; void setup() { pinMode(LED_PIN1, OUTPUT); pinMode(LED_PIN2, OUTPUT); Serial.begin(9600); } void loop() { if ( Serial.available() > 0 ) { val = Serial.read(); } // 条件分岐 if ( val == '1') { digitalWrite(LED_PIN1, HIGH); digitalWrite(LED_PIN2, LOW); } else if( val == '0'){ digitalWrite(LED_PIN1, LOW); digitalWrite(LED_PIN2, HIGH); } }
注意点
まとめ
今回はRaspberry PiとArduinoをシリアル通信で接続しました。
これを使っていろいろと遊んでみようと思います。