前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「电子」树莓派4B与Arduino开发板通信

「电子」树莓派4B与Arduino开发板通信

作者头像
筱锋xiao_lfeng
发布2022-11-12 14:04:04
1.1K0
发布2022-11-12 14:04:04
举报

前言

大学开学也快两个月了,现在这边是运动会。 当然,作为大学生的我当然不会参加任何运动会比赛的啦。

目前就正在整挑战杯的比赛,我也没想到我会去参加硬件这方面。 哈哈哈,就当拓宽路子了

处理

额,当然。我这边树莓派装的是官方的 x64 位系统,需要装PHP那一些,打算还是安装 x64 位系统会方便一些。 因为之前吃过了 x32 的痛苦,怎么装都装不上去。

注意:本篇文章都在 root 用户下执行,如果发现没有权限需要 susudo 进行提权操作

出现的问题

首先,更新一下

代码语言:javascript
复制
apt-get update 
代码语言:javascript
复制
apt-get upgrade

我这边还是安装了,Python3,最先我试过了Python2.7发现不太行。会出现下面的一个问题 serial 库怎么都装不上。 后面呢就安装了 Python3 来处理,发现 Serial 库安装上了,但是 RPi.GPIO 库安不上了,反正两个必需品就是有一个装不上

对应的 demo.py 文件如下

代码语言:javascript
复制
import serial
import RPi.GPIO

尝试处理

因为现在还是 python3 开发居多,所以我果断还是选择了 python3 先卸载掉 python2.7

代码语言:javascript
复制
# 树莓派自带的 Python
apt remove python -y
# 由于我的 Python 是后面安装的,并不是树莓派自带的 Python 所以卸载是这个
apt remove python-is-python2 -y

安装 Python3

代码语言:javascript
复制
apt-get install python3

执行不需要的依赖删除

代码语言:javascript
复制
apt-get autoremove

通过 CSDN 一顿查询,发现有 Python3 的 RPi.GPIO 模块 我去,这不是更好。

补充安装 Python3 的 Serial 模块

利用 pip 安装 serial 毕竟我原本就用过下面这条指令,发现这个操作并不可行

代码语言:javascript
复制
apt-get install python-serial

他找不到,那有什么办法,只好找其他方法咯。 后面看到可以用 pip 安装,那就用这个吧 (好在不需要我怎么配置)

代码语言:javascript
复制
pip install pyserial

最后再一次执行 demo.py 文件,发现不会报错了,OK了。 那么环境和库文件就没问题了。

配置Arduino

ArduinoIDE

在 ArduinoIDE 软件中写入以下代码

代码语言:javascript
复制
void setup() 
{
  Serial.begin(9600); // 9600 bps
}
void loop()
{
  if ( Serial.available())
    {
      if('s' == Serial.read())
        Serial.println("Hello Raspberry,I am Arduino.");
     }
}

然后直接烧录进入 Arduino 开发板中,在串口监视器输入 s 后可以直接返回结果。 证明直接在串口监视器下操作是没有问题的,也就是说这个程序是不存在问题的。

树莓派编辑 Python 页面

首先,我们需要将 Arduino 开发板与树莓派使用USB口进行链接。 随后进行查找接口

代码语言:javascript
复制
ls /dev/tty*

查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的)最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了

在树莓派中创建一份名字为 demo.py 的文件后输入内容

代码语言:javascript
复制
import serial
ser = serial.Serial('/dev/ttyACM0', 9600,timeout=1)
try:
  while 1:
    ser.write('s')
    response = ser.readall()
    print(response)
except:
  print('No Result')
  ser.close()

但是,在这里我发现一个致命的问题。 这个 Python 程序死活读不出来串口数据。

怎么读取都是 No Result 的结果。 后面我就抛开了树莓派的限制,直接查询 Arduino 与 Python 之间 Serial 的通信。 发现别人给的示例代码中,需要给 ser.write('s'.encode()) 相当于需要编码

那么最终成型的代码如下所示

代码语言:javascript
复制
#!/usr/bin/python3
from base64 
import decode
import serial
ser = serial.Serial('/dev/ttyACM0',9600,timeout=1)
try:
    while 1:
        ser.write('s'.encode())
        res = ser.readall()
        print(res.decode())
except:
    print('No Result')
    ser.close()

就可以成功用 Python3 进行输出了

页脚

说明

一篇记录文章,以前没玩过,都需要自己慢慢琢磨。 后期可能要玩到机械臂,还得先学一下 Python

引用文章

树莓派与Arduino通信 树莓派Raspberry Pi上安装和使用RPi.GPIO模块以及引脚对照表

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 处理
    • 出现的问题
      • 尝试处理
        • 补充安装 Python3 的 Serial 模块
      • 配置Arduino
        • ArduinoIDE
        • 树莓派编辑 Python 页面
    • 页脚
      • 说明
        • 引用文章
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档