树莓派与Arduino通过GPIO串口通讯

树莓派与Arduino通过GPIO串口通讯
感谢大佬,传送门

首先,启用串口ttyS0
在root权限下

#raspi-config

进入系统配置界面
进入系统配置界面
选择Interfacing options

在下方看到Serial
找到Serial
回车
禁用串口登陆
先选No,禁用串口登陆
打开串口tyyS0
然后Yes,启用串口ttyS0
接着OK,并重启
重启后

#ls -la /dev/

查看是否有ttyS0
查看是否有ttyS0
第二,关闭console

root权限下

#systemctl stop serial-getty@ttyS0.service
#systemctl disable serial-getty@ttyS0.service

这两行指令之后,重启
重启后

#systemctl mask serial-getty@ttyS0.service

然后连线
树莓派 RX ————> Arduino的 TX
树莓派 TX ————> Arduino的 RX
树莓派 GND ————> Arduino的 GND

写一个py文件

先展示下Python3的

#Communication.py
#Python3.7.3
import serial

ser = serial.Serial("/dev/ttyS0", 9600, timeout=1)  #初始化串口,9600为波特率,timeout为读取时间延迟
ser.flushInput()


def main():
    while True:
        ser.write("s".encode("utf-8"))  #向串口发送信息“s”,python3需要编码
        recv = ser.readall().decode()  #接收串口信息,并将二进制信息解码
        print(recv)
        ser.flushInput()  #清空串口缓存区


if __name__ == '__main__':
    main()

然后Python2的

#Communication.py
import serial    #import serial module
ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1);   #open named port at 9600,1s timeot

#try and exceptstructure are exception handler
try:
  while 1:
    ser.write('s');#writ a string to port
    response = ser.readall();#read a string from port
    print response;
except:
  ser.close();

然后运行代码

如果不行是因为ttyS0串口权限不够
可以
#chmod 666 /dev/ttyS0
但这样每次都需要给他一次权限,很麻烦
所以修改.rules文件让他自动获取

#vim /etc/udev/rules.d/99-com.rules

Tip:这里的rules文件可能名字不一样,请自行到该文件夹下去ls下

在里面加上

KERNEL=="ttyS0*", OWNER="root", GROUP="tty", MODE="0666"

保存退出重启就好了。ヾ(๑╹◡╹)ノ"

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值