两大开源硬件之树莓派与Arduino的USB串口通讯

本文参考并结合两篇相关文章进行操作。

1、搭建树莓派串口通信开发环境

树莓派中安装python的GPIO模块(库文件),在树莓派中总链接不上,所以建议直接登录网址手动下载,并且可以选择最新版本(博主此时用的是RPi.GPIO-0.6.3)

https://sourceforge.net/projects/raspberry-gpio-python/files/

通过SSH方式(不在此介绍,博主用的是filezilla进行SSH传输)传输到树莓派中

tar xvzf RPi.GPIO-0.6.3.tar.gz(tar解压)

cd RPi.GPIO-0.6.3 (进入解压后的文件夹)

sudo python setup.py install (安装GPIO库文件)

安装serial,用于串口或者USB通信

sudo apt-get install python-serial

测试环境(nano/vi/vim,如果出现命令错误的三个都可以试一下,博主这里因为系统不支持vim命令所以用了vi)

sudo vi test.py

编辑如下代码

import serial

import RPi.GPIO

保存退出然后运行

sudo python test.py

没有报错说明环境搭建成功

2、安装串口调试工具

sudo apt-get install minicom

配置minicom

sudo minicom -s

启动出现配置菜单

选serial port setup →进入串口配置 
输入A →配置串口驱动为/dev/ttyAMA0 
输入E →配置速率为9600 8N1 
输入F →将 Hardware Flow Control 设 为 NO 
回车→退出 
修改Modem and dialing,将Init string,Reset string,Hang-up string设置为空。

设置完成后,在配置菜单选Save setup as df1保存(将当前设置保存为默认设置)

选Exit→退出。 

3、树莓派与arduino通过USB进行通信

①将树莓派与arduino通过usb线进行连接

两大开源硬件之树莓派与Arduino的USB串口通讯_第1张图片

②在树莓派终端输入

ls /dev/tty*

查看两者连接端口的名字。查看是否出现ttyACM0 。看到ttyACM0就说明二者可以通讯了

另一篇则提出是ttyUSB0或者ttyUSB1,博主无法解释,欢迎有大牛在评论解释一下。

所以博主认为可以在二者连接之前可以运行一次ls /dev/tty*,连接之后再运行一次ls /dev/tty*,看哪个是多出来的就知道是哪个了。

两大开源硬件之树莓派与Arduino的USB串口通讯_第2张图片

③编写树莓派与arduino通信代码。

Arduino:

void setup() 
{
  Serial.begin(9600); // 9600 bps
}
void loop()
{
  if ( Serial.available())
    {
      if('s' == Serial.read())
        Serial.println("Hello Raspberry,I am Arduino.");
     }
}

把上面代码烧录到arduino中,再与树莓派usb链接。

RPI(树莓派)

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();

上面代码在树莓派中保存为communication.py文件。

注:这里千万不要命名为serial.py,否则后面运行会出现    AttributeError: 'module' object has no attribute 'Serial'         的错误。

对代码的简单说明:树莓派向arduino发送一个字符‘s’,arduino向树莓派回复字符串“hello raspberry,i am arduino”。

④运行程序

在树莓派终端运行

sudo python communication.py

实际上博主是在做mfrc522,所以效果图略有不同,只要显示Hello Raspberry,I am Arduino.就说明可以了。

两大开源硬件之树莓派与Arduino的USB串口通讯_第3张图片

 

参考链接:

  1. song527730241. 使用串口连接Arduino与树莓派开发板[EB/OL]. https://blog.csdn.net/song527730241/article/details/50884890, 2016-03-04
  2. goasis. 树莓派与arduino通信[EB/OL]. https://blog.csdn.net/u011577439/article/details/51762076, 2016-06-26
  3. https://stackoverflow.com/questions/11403932/python-attributeerror-module-object-has-no-attribute-serial

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