树莓派与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线进行连接

``
②在树莓派终端输入

ls /dev/tty*

查看两者连接端口的名字。查看是否出现ttyACM0 。看到ttyACM0就说明二者可以通讯了
在这里插入图片描述
另一篇则提出是ttyUSB0或者ttyUSB1,博主无法解释,欢迎有大牛在评论解释一下。

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

③编写树莓派与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.就说明可以了。

参考链接:

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


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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Arduino树莓派之间的串口通讯配置示例代码 #### 1. 硬件连接 Arduino树莓派可以通过 USB 或硬件串口实现连接。如果使用 USB 连接,直接将 ArduinoUSB 数据线插入树莓派USB 接口即可[^3]。若选择硬件串口,则需要通过 GPIO 引脚连接 Arduino树莓派,具体连接方式如下: - 树莓派的 TX 引脚连接到 Arduino 的 RX 引脚。 - 树莓派的 RX 引脚连接到 Arduino 的 TX 引脚。 - 共用地线(GND)。 #### 2. 软件环境准备 在树莓派上安装 Python 开发环境,并确保已安装 `pyserial` 库以支持串口通信。可以使用以下命令安装该库: ```bash pip install pyserial ``` 同时,在 Arduino 上编写相应的代码并上传到开发板中。以下是具体的配置步骤和示例代码。 #### 3. 示例代码 ##### Arduino 端代码 Arduino 端的代码用于接收来自树莓派的数据并通过串口返回结果。以下是一个简单的示例代码: ```cpp void setup() { Serial.begin(9600); // 初始化串口,波特率为 9600 } void loop() { if (Serial.available() > 0) { // 检查是否有数据从串口传入 String data = Serial.readString(); // 读取串口数据 Serial.println("Received: " + data); // 返回接收到的数据 } } ``` ##### 树莓派端代码 树莓派端的 Python 脚本用于向 Arduino 发送数据并接收其响应。以下是示例代码: ```python import serial import time # 配置串口参数 ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 替换为实际的串口设备名称 time.sleep(2) # 等待串口初始化完成 try: for i in range(2): # 循环两次以确保稳定通信 message = "Hello Arduino" ser.write(message.encode()) # 发送数据到 Arduino response = ser.readline().decode().strip() # 读取 Arduino 的响应 print(f"Arduino Response: {response}") finally: ser.close() # 关闭串口 ``` #### 4. 注意事项 - 在树莓派上运行代码前,需确认串口设备名称(如 `/dev/ttyUSB0` 或 `/dev/ttyACM0`),可通过命令 `ls /dev/tty*` 查看[^3]。 - 如果使用硬件串口连接,需注意树莓派的电压为 3.3V,而某些 Arduino 型号的电压为 5V,可能需要使用电平转换器以避免损坏硬件。 - 串口通信的波特率必须一致,否则可能导致数据传输失败。 #### 5. 运行结果 成功运行后,树莓派会向 Arduino 发送字符串 `"Hello Arduino"`,Arduino 接收后返回 `"Received: Hello Arduino"`,并在树莓派终端打印输出。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值