概要
ラズパイとArduinoをシリアル通信してみたメモ
ラズパイの設定
- /boot/config.txtを編集する
/boot/config.txt
$ sudo vi /boot/config.txt
# 末尾にこの行を追記
dtoverlay=pi3-miniuart-bt
- /boot/cmdline.txtを編集する
/boot/cmdline.txt
$ sudo vi /boot/cmdline.txt
前) dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
後) dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
- 再起動
$ sudo reboot
Arduinoと接続
$ dmesg | grep ttyACM0
[ 2991.602972] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
- Arduinoは下記を書き込む
void setup(){
// シリアルポートを9600 bps[ビット/秒]で初期化
Serial.begin(9600);
}
void loop(){
Serial.write("hello world¥n");
delay(3000);
}
- ラズパイ側のpython
import serial
import time
def main():
con = serial.Serial('/dev/ttyACM0', 9600)
time.sleep(2)
print con.portstr
while 1:
# シリアル通信からデータを受け取って、MQTTでpublishするとかは下記でできそう
str=con.read(30)
#print str
if __name__ == '__main__':
main()
実行結果
$ python serial-arduino.py
/dev/ttyACM0
helhello w
orld¥nhel
lo world¥
nhello wor
・・・・・