前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >树莓派与arduino通信

树莓派与arduino通信

作者头像
似水的流年
发布于 2018-01-18 08:45:42
发布于 2018-01-18 08:45:42
1.6K00
代码可运行
举报
文章被收录于专栏:电光石火电光石火
运行总次数:0
代码可运行

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

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

(1)安装Python

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update
sudo apt-get install python

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar xvzf RPi.GPIO-0.6.2.tar.gz  (tar解压)
cdRPi.GPIO-0.6.2               (进入解压后的文件夹)
sudo python setup.py install     (安装GPIO库文件)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install python-serial

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo nano test.py 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import serial
import RPi.GPIO

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

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

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

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

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

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

arduino代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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链接。

树莓派代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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运行程序。

显示结果:

此图是两者之间的通信结果:树莓派向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 输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /boot/cmdline.txt

看到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除 变成这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派3b+串口配置
树莓派从大的方向来说一共出了3代,每一代的CPU外设基本相同,但内核不同,外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,虽然你可以固定内核的时钟频率,但这显然不符合低碳、节能的口号。在所有的树莓派板卡中都通过排针将一个串口引出来了,目前除了树莓派3代以外 ,引出的串口默认是CPU的那个硬件串口。而在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx。 树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,只能通过ssh或者远程桌面连接树莓派后进行控制。
全栈程序员站长
2022/09/12
1.8K0
树莓派3b+串口配置
树莓派3B+使用GPIO实现串口通信[通俗易懂]
  由于项目原因需要使用树莓派连接串口,从串口获取机器人的信息同时也向机器人发送控制信息,因此串口在这里灰常重要。下面简单介绍下目前的方案:
全栈程序员站长
2022/09/12
2.3K0
树莓派3B+使用GPIO实现串口通信[通俗易懂]
STM32和树莓派串口透传
1、树莓派UART端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。
不脱发的程序猿
2021/01/20
2.1K0
树莓派基础实验36:通用串口通信实验
  对于树莓派 3B+来说,他的UART功能有三种: 1、内部蓝牙使用; 2、控制终端使用; 3、与其他设备进行串口通信。
张国平
2020/09/27
3.9K0
「电子」树莓派4B与Arduino开发板通信
大学开学也快两个月了,现在这边是运动会。 当然,作为大学生的我当然不会参加任何运动会比赛的啦。
筱锋xiao_lfeng
2022/11/12
1.3K0
「电子」树莓派4B与Arduino开发板通信
树莓派重设密码
参考博文:http://shumeipai.nxez.com/2017/02/17/how-to-reset-a-forgotten-raspberry-pi-password.html
墨文
2020/02/28
1.9K0
树莓派基础实验37:pyserial模块通信实验
  串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议,pyserial模块封装了python对串口的访问,为多平台的使用提供了统一的接口。
张国平
2020/09/27
3K0
树莓派的GPIO编程
树莓派除了提供常见的网口和USB接口 ,还提供了一组GPIO(General Purpose Input/Output)接口。这组GPIO接口大大拓展了树莓派的能力。GPIO不仅能实现通信,还能直接控
Vamei
2018/01/18
2.6K0
树莓派的GPIO编程
在树莓派3上测试Modbus RTU通信
本文主要涉及Modbus RTU模式的测试。关于Modbus TCP/IP在之前的文章中也推送过,因为树莓派3的硬件串口和蓝牙是公用的,所以在用串口通信的时候,需要对树莓派做一些配置和设置。并关掉串口
用户1605515
2018/04/10
3.6K0
在树莓派3上测试Modbus RTU通信
树莓派4B 开启串口登陆
烧录镜像 Raspberry Pi OS – Raspberry Pi Operating system images – Raspberry Pi OS (64-bit) 串口登录 sudo raspi-config 3 Interface Options Configure connections to peripherals I6 Serial Port Enable/disable shell messages on the serial connection
iOSDevLog
2022/04/24
9010
树莓派4B 开启串口登陆
Mjpg-Streamer+Node.js实现在树莓派上的监控与拍照
最近在做一个机器人项目,需要将试试捕获安装于机器人身上的视频图像,并能够对机器人进行无线运动控制。作为前端工程师的我,很自然的想到了使用Node作为服务器和机器人的控制中心,通过前端页面实现对机器人控制和视频图像的捕捉。
vincentKo
2022/09/19
2.2K0
Mjpg-Streamer+Node.js实现在树莓派上的监控与拍照
树莓派基础实验38:逻辑分析仪分析PWM、UART信号
  逻辑分析仪是专门针对数字信号的调试工具,可长时间采集,无波形死区,支持复杂触发定位以及全面的协议内容解析。
张国平
2020/09/27
3K0
树莓派4可以不用SD卡启动?
Raspberry Pi 4具有一个SPI连接的EEPROM(4MBits / 512KB),其中包含用于启动系统的代码,并替换了先前在SD卡的启动分区中找到的bootcode.bin。请注意,如果Pi 4的SD卡的启动分区中存在bootcode.bin,则将其忽略。
bigmagic
2020/05/22
5.5K0
树莓派4可以不用SD卡启动?
树莓派4b串口通信配置
请注意:在默认状态下,serial0(就是GPIO14,15)是映射到ttyS0的(就是MINI串口:/dev/ttyS0),ttyS0的特点是其工作时钟来自于CPU,CPU的时钟呢又是从600MHZ到1.5Ghz动态变化的,所以这个串口经常会因为时钟频率发生变化而发生错误,因此我们不用这个串口。
全栈程序员站长
2022/09/05
1.9K0
树莓派4b c语言,【树莓派4B学习】七、树莓派4B的GPIO基础操作
链接:https://pan.baidu.com/s/1icgrCoc-piC0Eid0NlRlMA 提取码:6h0b
全栈程序员站长
2022/09/02
2.3K0
树莓派4b c语言,【树莓派4B学习】七、树莓派4B的GPIO基础操作
Python+树莓派制作IoT(物联网)门控设备
因为考虑需要在户外使用这套物联网门控设备,所以利用树莓派完成这个设备有两个问题需要解决, 第一是需要解决树莓派和相关模块的供电问题。 第二就是需要户外没有宽带网络情况下的信号传输问题。 只要解决这两个问题那么剩下来的问题就是编程方面的了,针对以上两个问题,这里我们采用比较大众化的方式解决,设备的供电问题我们使用太阳能配合蓄电池进行实现7X24小时供电,信号的传输问题我们使用一块叫做SIM868的通讯模块来实现。下面来介绍一下设备制作的材料准备、制作过程以及程序的编写和调试。
緣來
2020/01/02
3.3K0
Python+树莓派制作IoT(物联网)门控设备
基于树莓派的多功能USB实现--系统安装
优势:保证功能健全的同时体积不到传统Raspberry Pi尺寸的一半。但是最主要的优势是:
PedroQin
2020/02/12
2.1K0
树莓派无界面初始化
无界面初始化,也就是常说的 headless initialization,目的是在不需要给树莓派接入额外的显示器的情况下完成基本的无线网络配置,并且启动好必要的远程管理工具比如 ssh 等。
evilpan
2023/02/12
1.5K0
树莓派无界面初始化
SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
微雪官方教程:http://www.waveshare.net/wiki/SIM7600CE_4G_HAT
墨文
2020/02/28
3.8K0
SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
树莓派综合项目2:智能小车(三)无线电遥控
《智能小车(一)四轮驱动》中,实现了代码输入对四个电机的简单控制。《智能小车(二)tkinter图形界面控制》中,实现了本地图形界面控制小车的前进后退、转向和原地转圈。
张国平
2020/11/04
1.9K1
树莓派综合项目2:智能小车(三)无线电遥控
相关推荐
树莓派3b+串口配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验