树莓派与arduino通过usb串口进行通信

树莓派与 Arduino 通过 USB 接口通信是一种方便且常用的方式,本质上还是基于串口通信原理。下面为你详细介绍实现步骤:

硬件连接

你只需使用一根 USB 线将 Arduino 连接到树莓派的 USB 接口上。在连接后,树莓派会将 Arduino 识别为一个串口设备。

软件准备

Arduino 端
  • 安装 Arduino IDE:你可以从Arduino 官方网站下载并安装适合你操作系统的 Arduino IDE。
  • 编写代码:以下是一个简单的示例代码,用于通过串口发送和接收数据。

cpp

void setup() {
  // 初始化串口通信,波特率为9600
  Serial.begin(9600); 
}

void loop() {
  // 向树莓派发送数据
  Serial.println("Hello from Arduino!"); 
  delay(1000);

  // 检查是否有来自树莓派的数据
  if (Serial.available() > 0) {
    // 读取接收到的数据
    char incomingChar = Serial.read(); 
    // 打印接收到的数据
    Serial.print("Received from Raspberry Pi: "); 
    Serial.println(incomingChar);
  }
}
  • 上传代码:将 Arduino 通过 USB 连接到电脑,打开 Arduino IDE,选择正确的开发板和端口,然后将上述代码上传到 Arduino。
树莓派端
  • 启用串口通信:打开树莓派的终端,运行以下命令编辑配置文件:(也可以通过点击左上角树莓派标志,在首选项找到树莓派配置,把串口打开)
  • 控制台方式如下:

bash

sudo nano /boot/config.txt

在文件末尾添加以下内容以启用串口:

plaintext

enable_uart=1

按下Ctrl + X,然后按Y保存并退出。接着运行以下命令重启树莓派:

bash

sudo reboot
  • 安装 Python 串口库:在树莓派的终端中运行以下命令安装pyserial库:

bash

sudo pip3 install pyserial
  • 编写 Python 代码:以下是一个简单的 Python 代码示例,用于与 Arduino 进行通信。

python

import serial
import time

# 初始化串口对象,根据实际情况修改串口号和波特率
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)

try:
    while True:
        # 检查是否有来自Arduino的数据
        if ser.in_waiting > 0:
            # 读取接收到的数据
            line = ser.readline().decode('utf-8').rstrip()
            print(f"Received from Arduino: {line}")

        # 向Arduino发送数据
        ser.write('A'.encode('utf-8'))
        time.sleep(1)

except KeyboardInterrupt:
    print("Communication stopped by user.")
    ser.close()

结果展示

树莓派接收到arduino的信号

代码解释

Arduino 代码
  • Serial.begin(9600):初始化串口通信,设置波特率为 9600。
  • Serial.println("Hello from Arduino!"):向树莓派发送一条消息。
  • Serial.available():检查是否有数据从树莓派发送过来。
  • Serial.read():读取接收到的数据。
树莓派 Python 代码
  • serial.Serial('/dev/ttyACM0', 9600, timeout=1):初始化串口对象,指定串口号为/dev/ttyACM0,波特率为 9600,超时时间为 1 秒。
  • ser.in_waiting:检查是否有数据从 Arduino 发送过来。
  • ser.readline().decode('utf-8').rstrip():读取接收到的数据并进行解码和去除换行符处理。
  • ser.write('A'.encode('utf-8')):向 Arduino 发送一个字符A

注意事项

  • 串口号:树莓派识别 Arduino 的串口号可能会有所不同,常见的有/dev/ttyACM0/dev/ttyUSB0,你可以通过ls /dev/tty*命令查看连接的串口设备。
  • 波特率:Arduino 和树莓派的串口通信波特率必须保持一致,否则会出现数据传输错误。

通过以上步骤,你就可以实现树莓派与 Arduino 通过 USB 接口进行通信了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值