精华内容
下载资源
问答
  • Arduino用USB线连接到树莓派的USB,在树莓派中输入(注意ls后有一个空格) Ls /dev/tty* 查看两者连接端口的名字。查看是否出现ttyACM0或ttyUSB0。连接uno出现ttyACM0,连接mega2560出现ttyUSB0。看到ttyACM0或...

    安装serial,用于串口通信
    sudo apt-get install python-serial
    将Arduino用USB线连接到树莓派的USB,在树莓派中输入(注意ls后有一个空格)
    Ls /dev/tty*
    查看两者连接端口的名字。查看是否出现ttyACM0或ttyUSB0。连接uno出现ttyACM0,连接mega2560出现ttyUSB0。看到ttyACM0或ttyUSB0就说明二者可以通讯了(树莓派上安装了arduino IDE的也可以通过它看开发板的串口号)
    在这里插入图片描述

    另外硬件通信要用到树莓派的GPIO,那嚒需要安装GPIO库。树莓派中安装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库文件

    作者:GPNU-IOT先生
    来源:CSDN
    原文:https://blog.csdn.net/qq_18402617/article/details/81414541
    版权声明:本文为博主原创文章,转载请附上博文链接!

    代码例一
    编写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文件中,保存为xxx.py
    在这里插入图片描述
    import serial #import serial module
    ser = serial.Serial(’/dev/ttyACM0’, 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 KeyboardInterrupt:
    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

    在这里插入图片描述
    代码例二
    arduino端通信代码
    int temp,data;
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    temp=analogRead(0);
    temp = (long)100*temp/1024;
    Serial.print(“db:”);
    Serial.println(temp);
    delay(1000);
    }
    树莓派代码:(写到python文件中,保存为xxx.py
    在这里插入图片描述
    import serial
    ser = serial.Serial(’/dev/ ttyACM0’, 9600, timeout=1)
    ser.write(“testing”)
    try:
    while 1:
    response = ser.readline()
    print response
    except KeyboardInterrupt:
    ser.close()
    然后将Arduino的程序上传到开发板,连接好电路之后运行树莓派的程序,运行截图如下:

    在这里插入图片描述

    展开全文
  • 树莓派arduino通信

    千次阅读 2018-05-04 17:30:53
    一 安装树莓派arduino开发环境 1 Arduino开发环境 Arduino开发环境搭建比较简单,在Arduino官网下载相应的Arduino IDE安装包即可。Arduino官网地址:...2 树莓派串口通信开发环境 (1)安装python: $ su...

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

    1 Arduino开发环境
    Arduino开发环境搭建比较简单,在Arduino官网下载相应的Arduino IDE安装包即可。Arduino官网地址:https://www.arduino.cc/en/Main/Software
    本文使用的Arduino IDE的版本为1.8.3
    2 树莓派串口通信开发环境
    (1)安装python:

    $ sudo apt-get update
    $ sudo apt-get install python

    (2)安装python的GPIO模块

    //下载GPIO库,因为更新,具体参考官网网址变动
    $ wget https://sourceforge.net/projects/raspberry-gpio-python/files/RPi.GPIO-0.6.2.tar.gz
    $ tar xvzf RPi.GPIO-0.6.2.tar.gz  //tar解压)
    $ cd RPi.GPIO-0.6.2  //进入解压后的文件夹
    $ sudo python setup.py install  //安装GPIO库文件

    (3)安装serial,用于串口通信及USB通信:
    用nano编辑器编辑一个test文件

    $ sudo apt-get install python-serial

    (4)检验前三步环境安装是否正确
    在test.py文件中写入下面两行代码

    $ import serial
    $ import RPi.GPIO

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

    二 树莓派与Arduino通过USB进行通信

    1 将树莓派与arduino通过usb线进行连接
    2 在树莓派终端输入 ls /dev/tty*查看两者连接端口的名字。查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的)最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了 接下来上测试代码
    这里写图片描述
    3 编写树莓派与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/ttyACM0', 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运行程序。
    此图是两者之间的通信结果:树莓派向arduino发送一个字符‘s’,arduino向树莓派回复字符串“hello raspberry,i am arduino”。

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

    1 连接方式:
    树莓派的RX ----- arduino的TX
    树莓派的TX ----- arduino的RX
    树莓派的GND ----- arduino的GND
    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)实验
    使用之前编写的代码进行实验即可
    参考文献:
    https://blog.csdn.net/u011577439/article/details/51762076

    展开全文
  • 小组内成员共享代码,互相提出修改意见,内容包括电机测试,舵机测试,编码器使用函数,巡线模块,超声测距模块使用,机器人运动逻辑说明等等,希望大家努力工作,进入决赛!
  • 计划做一个浇花系统,树莓派做主控,uno作为节点进行数据采集和控制,两者之间采用nrf24的2.4G来通信。 uno上很快就上手了,推荐TMRh20的RF24.h库,非常完毕,而且例子也不错,可以乒乓发信 树莓派遇到难点,原...

    计划做一个浇花系统,树莓派做主控,uno作为节点进行数据采集和控制,两者之间采用nrf24的2.4G来通信。

    uno上很快就上手了,推荐TMRh20的RF24.h库,非常完毕,而且例子也不错,可以乒乓发信

    树莓派遇到难点,原计划用python来写,这样调用数据库,还有后面用AI库也更方便。

    但是网上搜了下教程很少,大多数直接用访问设备文件的方式来做,python即使调用,也肯定要用设备文件,所以先试试C方法。

    TMRh20是个好东西,不仅有UNO的,下面的文件夹还有py和C的,核心其实还是C函数。

    大神主页地址如下

    http://tmrh20.github.io/RF24/index.html

    先用wget将项目下下来,git地址

    https://github.com/TMRh20/RF24.git

    然后cd到RF24文件夹下,使用如下命令进行编译

    ./configure --driver=SPIDEV

    然后安装SPI模块

    sudo make install -B

    网上有一步修改/etc/modprobe.d/raspi-blacklist.conf,如果其中存在blacklist spi-bcm2708,将其注释。我的没有,我用的4B+,比较新,可能以前老的系统有相应的内容。

    修改/etc/modules文件,在其中追加一行,开启SPI。我的里面本身有I2C-dev,本来我改成spi-dev,但是想了下怕源文件调用设备文件如果没有中间的“-”,到时候又报些莫名其妙的错误,所以还是将就原文。

    spidev

    另外还可以用rasp-config来图形配置,我也配置了,怕一会出错又去解决开机默认启动之类的问题。

    最后重启,/dev下会新增spidev0.0和spidev0.1两个设备文件。

    这里是分界线,如果没有两个设备文件,则不用进行下面的了,设备文件是调用的关键。


    开始准备执行文件。

    cd 到RF24的examples_linux文件夹

    查看gettingstarted.cpp文件(网上资料是大写,但是目前作者是小写,所以不能光复制,看看真正的文件名)

    里面其他都可以不改,下面这两行最关键

    RF24 radio(22, 0);
    
    bool radioNumber = 1;

    第一行是设置SPI的CE脚,CS脚,22对应的是树莓派管脚的BCM编码,我的接是GPIO.6也就是BCM是25的脚,所以要改这个地方。0对应的是树莓派的CS脚,树莓派只有CS0和CS1两组SPI,而NRF24的CS连到树莓派CS0的话,这里就是0,如果连CS1的话,这里就应该改为1。可以参考大神的解释,要多读几遍就能懂。。

    第二行是用来定义收发两端的,作者用0/1来互斥两个地址,所以用树莓派和UNO通信的话,一个为0则另一个代码就得改成1。TMRh20的例子都是1,所以这地方必须改。我改的UNO端,因为树莓派要make编译,所以偷个懒,改UNO更方便。

    然后在当前目录下sudo make,如果报红字,则需要改gettingstarted.cpp对应的行,如果不知道make。。。那还是先用UNO耍着,这个坑要填的话要费点神。我用make的时候报gettingstarted_call_response.cpp引用了pi3的处理器没定义,所以改了下makefile,把其他几个例子都注释了,只留一个gettingstarted.cpp来make。

    最后以下命令来执行程序

    sudo ./gettingstarted

    出现命令行,选0/1对应收发,和UNO上R/T是一个道理,都可以试试。

    最后UNO上如下图

    树莓派上出现如下图

    完美


    昨天调了arduino的UNO和NANO的通信,大概10包就出现丢包,原因是发送端没发出去。

    但是和树莓派就不会,看回环时间差不多,昨天以为是功率问题,还提高了功率,而且让两个nrf24脸对脸都不行。。。现在看来可能是UNO 16M的主频用loop方式发数据,发完等NANO返回回来,NANO的时间也要ms级处理时间,所以RF.avaliable老是占用着,所以发送失败。而4B基础1.5G的主频,完全是秒收秒发,UNO端也不会出现被占用的情况了。

    贴个实物接线图

                            4B+                                                                                                        UNO

                                    


    补充一个树莓派接线图(借用如有不妥联系撤下),需要说明的是几代树莓派硬件管脚基本兼容,而这个图是面向树莓派,USB口向下,右上方插针对应的管脚图。上面RF的程序里面要设置的引脚号,是BCM编码。而接线用的,是灰色的那两列。这个有必要慢慢接,接完检查下,免得烧机。

    展开全文
  • 便携式ROV搭建系列(三):通信之树莓派Arduino通信 可行方案 USB 参考这篇 GPIO IIC 参考这篇 USB方式 1 安装必要的支持库 (1) 更新软件源和系统软件 sudo apt-get update sudo apt-get upgrade ...

    便携式ROV搭建系列(三):通信之树莓派与Arduino通信


    1 可行方案

    2 USB方式

    1 安装必要的支持库
    (1) 更新软件源和系统软件

    sudo apt-get update
    sudo apt-get upgrade

    (2)安装serial,用于串口通信及USB通信

    sudo apt-get install python-serial

    (3)验证是否安装成功
    新建一个test.py文件

    sudo nano test.py  

    写入下面两行代码

    import serial
    import RPi.GPIO

    运行以下语句,若没有报错说明安装成功

    python test.py

    2 USB端口查询
    将arduino与树莓派通过usb线连接,并在树莓派终端输入以下命令,查看两者连接端口的名字,查看有没有ttyACM0,若有则表明连接成功可进行通信了

    ls /dev/tty*

    3 通信代码
    arduino 端:

    void setup() 
    {
      Serial.begin(9600); // 9600 bps
    }
    void loop()
    {
      if ( Serial.available())
        {
          if('s' == Serial.read())   // 输入为 s 则输出以下语句
            Serial.println("Hello Raspberry,I am Arduino.");
         }
    }

    树莓派端:
    新建一个名为communication.py的文件,并复制以下内容

    import serial    
    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');             # 向串口内写入字符 s
        response = ser.readall();   # 读取串口输出并打印在窗口
        print response;
    except:
      ser.close();

    在终端输入以下命令运行程序,并观察结果

    sudo python communication.py
    展开全文
  • 问题1.arduino通信 arduino UNO R3 与 arduino nano之间使用无线连接控制 arduino UNO R3 连接 PS2摇杆 arduino nano 连接电机 实现:控制摇杆实现arduino UNO R3 无线发送指令到arduino nano 上执行 问: ...
  • 树莓派Arduino通信

    2020-11-02 19:18:53
    树莓派Arduino通信树莓派端的程序Arduino端的程序 树莓派端的程序 import serial import time ser = serial.Serial("/dev/ttyUSB1",115200,timeout=1) #"/dev/ttyUSB1"是自己插的端口,115200为波特率 while ...
  • 咳,时隔多月又回到了熟悉的博客园。 从现在开始重新去培养写博客的习惯。...回归正题,如何实现树莓派Arduino串口通信 首先是接线方式 一、树莓派arduino通过USB进行通信 1、将树莓派与...
  • Arduino: Serial: 如果串行数据缓冲区有数据,这个函数会读取串行数据缓冲区的第一个字节,数据读取位置移动到下一个数据缓冲区,也就是说如果继续读取的话会读取下一个数据缓冲区的第一个字节.字符都写在单引号,如...
  • 树莓派Arduino进行串口通信

    千次阅读 2018-11-04 01:31:39
    树莓派Arduino进行串口通信 通常树莓派Arduino连接通信方式一般有三种 1.USB接口连接 2.GPIO接口进行连接 3.IIC方式
  • 树莓派arduino串口通信

    千次阅读 2018-11-21 17:51:42
    上次内容树莓派arduino之间是通过USB进行通信的,这次内容是如何通过串口进行通信。 参考文章:http://ukonline2000.com/?p=880 一、背景介绍 根据官方的反馈和回复,我们了解到树莓派3上用户目前无法正常是使用...
  • Arduino的优点主要是具有丰富的外围硬件及类库支持,同时具备模拟引脚和数字引脚(MEGA、Due具有更多的引脚),缺点主要是作为一款单片机,其运算能力不太足(8位字长16MHz时钟频率的配置跟C51、STM32、ESP系列甚至...
  • 树莓派arduino蓝牙通信学习笔记

    千次阅读 2019-08-04 15:02:50
    树莓派arduino蓝牙通信 树莓派上使用pybluez蓝牙模块 树莓派上使用蓝牙通信模块来进行通信 pybluez的安装 使用pip工具安装,python2 使用 sudo pip install pybluez 进行安装,python版本使用 sudo pip3 ...
  • 树莓派arduino串行通信

    万次阅读 2015-07-26 16:20:00
    树莓派arduino都有一个串行口,都是TTL电平,可以直接连接。不同的是树莓派是5V供电,而arduino是3.3V供电。 1、连接方式:  树莓派的RX ----- arduino的TX  树莓派的TX ----- arduino的RX ...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 190
精华内容 76
关键字:

树莓派arduino通信