树莓派——树莓派和Arduino的简单串口通信

本文参考《爱上Raspberry Pi》第六章,同学们可以选择直接看书,本文只是把关键的部分提炼了出来,仅供大家参考~~~

定位串口

想要使树莓派和Arduino进行串口通信,首先要确定Arduino连在树莓派上的串口设备名,就像在Windows上打开设备管理器查看所连接的端口(COM)是多少一样。

与Windows的查看方式不同,树莓派等linux系统的设备管理是在/dev/目录下的,可以通过 ls  /dev/tty*查看;

也可以直接在树莓派上的Arduino IDE的Serial Port中查看;

第一次连上一般都是 ttyACM0 ,之后如果进行过插拔,这个端口号可能会变,在编写代码和烧写程序的时候要记得调整。

串口通信

要让树莓派和Arduino通过串口通信,在Arduino端需要使用内置的Serial库,在树莓派端需要使用Python的pySerial串口通信模块。

安装Python的串口通信模块:

sudo apt-get install python-serial python3-serial

安装好通信模块之后,接下来就可以开始进行测试了。

首先打开Arduino IDE,把下面的代码输入到Arduino上,并进行编译和烧写;

void setup() 
{
    Serial.begin(9600);   //定义波特率
}

void loop()
{
    for (byte n = 0; n < 255; n++) {
        Serial.write(n);   //向串口写入n
        delay(50);     //延时0.05s
        }
}

(这段程序把一个递增的数字序列发送到串口上。)

然后编写在树莓派上运行的Python脚本:

import serial

port = "/dev/ttyACM0"
serialFromArduino = serial.Serial(port,9600)    //打开串口,连接到Arduino上
serialFromArduino.flushInput()    //清空输入缓冲区

while True:
    if (serialFromArduino.inWaiting() > 0):
        input = serialFromArduino.read(1)    //从串口缓冲区读入一个字节的数据
        print(ord(input))    //用ord()函数把读入的字节数据转换为实际的数值

上面这段代码可以先使用vim 进行编辑,保存退出之后再用 python  example.py 运行。

运行Python代码之后就可以看到命令行界面收到Arduino发送来的数据了。

 注意:在创建Python代码文件的时候,一定要先使用sudo touch example.py 创建一个空文件出来,然后修改权限为777(sudo chmod 777 example.py ),之后再vim  example.py 进去进行编辑;如果直接vim创建并编辑的话会因为权限问题导致不能保存,功亏一篑!

进一步学习

上面只是简单的介绍了如何使用 serial 串口通信模块,还有py脚本的编辑和运行,想要实现树莓派和Arduino IDE真正的串口通信(一发一收),可以参考《爱上Raspberry Pi》的P109-P111.

猜你喜欢

转载自blog.csdn.net/damanchen/article/details/85221312