开发者社区> 似水的流年> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

树莓派与arduino通信

简介:
+关注继续查看

一、安装树莓派及arduino开发环境


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

1)安装Python

sudo apt-get update
sudo apt-get install python

2)安装pythonGPIO模块,用于控制LED、电机等: wget https://sourceforge.NET/projects/raspberry-gpio-python/files/RPi.GPIO-0.6.2.tar.gz    (下载GPIO库,因为更新,具体参考官网网址变动)

tar xvzf RPi.GPIO-0.6.2.tar.gz  (tar解压)
cdRPi.GPIO-0.6.2               (进入解压后的文件夹)
sudo python setup.py install     (安装GPIO库文件)

3)安装serial,用于串口通信及USB通信:

sudo apt-get install python-serial

4)检验前三步环境安装是否正确

     #nano编辑器编辑一个test文件

 sudo nano test.py 

     #test.py文件中写入下面两行代码

import serial
import RPi.GPIO

     #运行python test.py语句,如果没有报错说明树莓派开发环境搭建正确。

到此树莓派及arduino通信开发环境搭建完毕,下面讲解具体通信实现。


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


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

2、在树莓派终端输入 ls /dev/tty*查看两者连接端口的名字。查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了。

3、编写树莓派与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.");
     }
}

把上面代码通过python IDE下载到arduino中,然后再再与树莓派usb链接。

树莓派代码:

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文件。

2、在树莓派终端输入sudo python communication.py运行程序。

显示结果:

QQ截图20170428213252.jpg

此图是两者之间的通信结果:树莓派向arduino发送一个字符‘s’arduino向树莓派回复字符串“hello raspberryi am arduino”


三、树莓派与arduino通过GPIO引脚通信

1、连接方式:

          树莓派的RX       -----      arduinoTX

          树莓派的TX       -----      arduinoRX

          树莓派的GND      -----      arduinoGND

2、修改树莓派配置文件(要看详细的请移步这里 http://www.eeboard.com/bbs/thread-8574-1-1.html)

1)修改cmdline.txt
输入

sudo nano /boot/cmdline.txt

看到

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 删除
变成这样

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

ctrl+x Y保存退出
2.
修改inittab 然后禁止掉从串口登录的功能,
  
输入

sudo nano /etc/inittab

找到

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

这一行 在前面加个#注释掉这一行变成

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

ctrl+x Y保存退出
然后重启树莓派,之后树莓派的pin8(GPIO14) pin10(GPIO15)这两个口就可以当成普通的串口来用了 现在你可以像使用一个普通串口那样使用/dev/ttyAMA0了。

3、实验代码及效果

只需要将上面USB通信树莓派上的代码ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1); 中的ttyACM1改成ttyAMA0即可。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
单片机与PC机串口通信编程
单片机与PC机串口通信编程
0 0
树莓派系列-3-连接到树莓派
树莓派系列-3-连接到树莓派
0 0
树莓派和arduino蓝牙通信
树莓派上使用蓝牙通信模块来和arduino进行通信,首发在csdn https://blog.csdn.net/qq_33902044/article/details/98465301
1984 0
《用于物联网的Arduino项目开发:实用案例解析》—— 2.2 Arduino Uno的有线连接(以太网)
这一节,我们要给Arduino Uno加一块以太网盾板,然后写代码来通过以太网把Arduino连接到互联网。 如果你用的Arduino具有内置以太网功能,比如Arduino Yún,就不需要额外的以太网盾板。Arduino Yún的互联网连接设置在本章后面会介绍。
1610 0
用树莓派玩转蓝牙
摘要: 作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。   蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。
1645 0
+关注
似水的流年
开发工程师O(∩_∩)O
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载