【めも】Raspberry PiとArduinoでシリアル通信【Python】

あるプロジェクトに使う用にRaspberry PiとArduinoの通信をしなきゃいけなくて,動作確認程度ながら出来たのでメモ.


f:id:katosunmemo:20140919023955j:plain

テストなので,Arduino側からはひたすら振動センサの値を送るプログラムを書き込んでおき,Raspberry Pi側ではそれを表示し続けるプログラムを実行する.



まずPythonのシリアルポートライブラリのインストール
sudo apt-get install python-serial


Arduino側】

/*
ピン配置がUNOとMegaで違うのに注意
UNO→A0から14
Mega→A0から54
*/

#define __AVR_ATmega1280__
#define __AVR_ATmega2560__


 enum{
  VIB_PORT1,
  VIB_PORT2
};

int vib_1, vib_2;//振動センサの値

void setup(){
  Serial.begin(9600);
 
  //デバッグランプ(引き込み)
  pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
}

void loop(){
  vib_1 = analogRead(VIB_PORT1);
  vib_2 = analogRead(VIB_PORT2);
 
  Serial.print(vib_1, DEC);
  Serial.print('\t');
  Serial.print(vib_2, DEC);
  Serial.print('\n');
 
  //デバッグランプ||<
  digitalWrite(A3, HIGH);
  digitalWrite(A4, LOW);
  digitalWrite(A5, HIGH);
 
 
}



【Raspberry Pi側(Giga Hacks さまより引用)】

import serial
 
ser=serial.Serial("/dev/ttyACM0",9600)
 
while True:
    val=ser.readline()
    print(val)

【実行結果】


f:id:katosunmemo:20140919024017j:plain

二軸の振動センサなので,2つの情報を並べている.