树莓派和Arduino使用USB进行通信基于Python——For初学者

树莓派和Arduino之间的通信主要有三种方式,即USB对接,GPIO对接和I2C总线对接。本文主要学习一下使用USB进行对接。(以及GPIO的准备工作)。
硬件准备:

硬件 数量
Arduino UNO 一块
Arduino UNO的USB接口线 一条
树莓派3B+ 一块
显示器(视情况而定) 一块
鼠标、键盘等(视情况而定) 各一个
树莓派3B+的充电线 一条

环境搭配:
Arduino的IDE(我的版本是1.8.5的),树莓派里的系统(任何一个Linux均可,一般树莓派有自己的),还有树莓派中的Python环境(我的是2.7.13,建议是2.7以上的版本)。
以上的安装我假定你们都完成了
那么接下来就是这两个硬件之间的通信需要的环境。
首先是安装Python的两个库RPi.GPIO和serial,前一个是可控制LED、电机什么的,后一个是串口通信,用于发送消息的。

#在普通用户下进行操作(也可以是root,这样下面的sudo就不用输入了)
#下载GPIO库
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.6.2.tar.gz   
#解压
tar -xvzf RPi.GPIO-0.6.2.tar.gz    
#进入解压后的目录(文件夹)
cd RPi.GPIO-0.6.2
#安装GPIO库文件(权限不够加sudo)
python setup.py install 

树莓派和Arduino使用USB进行通信基于Python——For初学者_第1张图片
OK,接下来是serial库

#一般现在的系统里面都有这个库
sudo apt-get install python-serial

接下来我们验证一下是否装好了这两个库

#新建一个test.py的测试文件
touch test.py
#使用vim进行编辑(vim可能要自己装,sudo apt-get install vim)
vim test.py

输入的内容如下:
树莓派和Arduino使用USB进行通信基于Python——For初学者_第2张图片
vim的使用相信在座的各位都会。
接下来运行这个文件

#使用Python运行
python test.py

如果没有报错证明安装成功了,如下:
在这里插入图片描述
那么我们需要的环境配置就完成了,前戏结束,接下来就是正餐,即连接这两大硬件了。
USB对接:
首先我们检查一下端口:

#输入如下命令
ls /dev/tty*

树莓派和Arduino使用USB进行通信基于Python——For初学者_第3张图片
接下来我们把Arduino和树莓派连接起来:
树莓派和Arduino使用USB进行通信基于Python——For初学者_第4张图片
接着输入上述的命令,我们会发现:
树莓派和Arduino使用USB进行通信基于Python——For初学者_第5张图片
因此多了个这个/dev/ttyACM0(此ACM非彼ACM)端口。有这个说明可以通信了,接下来先给Arduino烧录如下代码:


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

void loop() {
   if ( Serial.available())//判断串口缓存区有没有数据
    {
      if('s' == Serial.read())//有数据就用read来读取并判断是不是s
        Serial.println("Hello Raspberry,I am jiayu's Arduino.");//是的话就向串口打印这串字符
     }
}

(可以在树莓派中下载Arduino的IDE进行烧录,也可以在Windows上的IDE进行烧录,在Linux里的话需要下载Arduino的IDE命令也很简单:sudo apt-get install arduino)。
在树莓派中新建一个文件用来写Python的程序:

#新建.py文件
touch communication.py
#使用vim进行编辑,和上面一样
vim communication.py

输入以下的代码:

#-*-coding:UTF-8-*-
import serial    #导入serial库
ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1);   #打开端口,每一秒返回一个消息
#try模块用来结束循环(靠抛出异常)
try:
  while 1:
    ser.write('s');#写s字符
    response = ser.readall();#用response读取端口的返回值
    print response;#进行打印
except:
  ser.close();#抛出异常后关闭端口

保存退出即可(相信你已经会熟练使用vim了 )。
输入命令运行程序就行了:

#如果权限不够前面就加上sudo
python communication.py 

运行结果如下:(Ctrl+z结束,也就是代码中的异常)
树莓派和Arduino使用USB进行通信基于Python——For初学者_第6张图片
如此一来我们就完成了树莓派和Arduino的第一个通信,本文也就接近尾声了。
以上是我的总结至于Arduino的使用,树莓派的安装,树莓派上Python的安装,以及vim的一般使用,我都假定你们已经完成或者有基础了。本文主要讲解如何连接两个硬件。由于本人能力有限,难免有疏漏错误之处,欢迎大家指正以及留言探讨。

你可能感兴趣的:(树莓派,Arduino)