OpenMV与树莓派3串口通信(UART)

本文介绍了在树莓派3上通过串口(UART)与OpenMV进行通信的方法,包括树莓派上网的简单方法、物理连接步骤、树莓派的UART配置以及通信代码实现。警告不要随意修改etc/network/interfaces文件,以防无法远程登录。

这里是在一块前人用过的树莓派3上做的事情,所以有些配置步骤是没有或者说没用的。
在此基础上,为了某个更远大的目标,需要我先实现OpenMV与树莓派之间的通信。

远程连接树莓派。

1.树莓派想上网

上网是为了安装pyserial。
前人似乎已经配置过树莓派,就是按照网上更改wpa_supplicant.conf,更改interfaces等等。
校园网不给力,只能用手机热点。到了我这里,同样的配置操作不知道为什么不管用了,热点都连不上。
所以我提供的树莓派上网方法简单粗暴,用树莓派USB接口连接手机,手机打开USB网络共享。一般可以在手机设置 → \rightarrow 网络和连接 → \rightarrow 更多连接方式下找到。
所以说前人的配置,不能假定他所做的操作都是对的,至少对你来说可能不是。

这里要说一下,不要乱改etc/network/interfaces,可能导致不能联网远程登录。

不得不说很多博客写得不详细,就会误导人。发生这个问题时,树莓派的WiFi死活连不上,也就没办法通过远程连接改回。说一下我的解决方法:
电脑打开ubuntu系统(任何linux的系统),将树莓派SD卡拔下,通过读卡器连接电脑,就能挂载到/media/pi/rootfs这个目录里。之后在目录下找到interfaces文件并修改回来。
sudo nano /media/pi/rootfs/etc/network/interfaces
或者(之所以这么做是因为我上一条报错未找到文件)

cd /media/pi/rootfs/etc/network/
sudo nano interfaces

2.openmv和树莓派3串口通信

2.1物理连接

使用树莓派的GPIO引脚与OpenMV进行串口通信。
树莓派的RX连接OpenMV 的TX,
树莓派的TX连接OpenMV 的RX,
树莓派的GND连接OpenMV 的GND。
如果是官方OpenMV(如OPENMV4 H7)摄像头,连接应当如下:
官方OpenMV与树莓派连接
这里我所用的并非OpenMV,而是匿名科创的ANO_OPENMV视觉开发板
ANO_OPENMV视觉开发板
由于它对串口进行了集成,需要对应的找连接关系。我的连接如下:
在这里插入图片描述
这里连接的是下面的u3,直连飞控串口。按理来说保留串口u2也行,但是我用u3才成功实现了通信。我也没整明白。

2.2树莓派3配置

禁用蓝牙,禁用UART登入,启用UART数据传输。
由于本人树莓派以前被配置过,为了防止不必要的误导,只给出我的参考。
建议参见文章:串口(UART)的配置和使用
如果蓝牙没有被禁用,树莓派上运行串口接收信息代码Serial.inwaiting()时会报错:

OSerror:inappropriate ioctl for device.
2.3串口通信代码

首先树莓派上要下载pyserial包:

sudo apt-get install pyserial

树莓派上代码(read.py):

# -*- coding: utf-8 -*
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 9600)
#9600为波特率,通信双方要保持一致
if ser.isOpen == False:
    ser.open()                # 打开串口
#ser.write(b"Raspberry pi is ready")
try:
    while True:
        size = ser.inWaiting()               # 获得缓冲区字符
        if size != 0:
            response = ser.read(size)        # 读取内容并显示
            print(response)        
            ser.flushInput()                 # 清空接收缓存区
            time.sleep(0.1)                  # 软件延时
except KeyboardInterrupt:
    ser.close()

OpenMV中代码(官方示例,改了波特率):

# UART Control
#
# This example shows how to use the serial port on your OpenMV Cam. Attach pin
# P4 to the serial input of a serial LCD screen to see "Hello World!" printed
# on the serial LCD display.

import time
from pyb import UART

# Always pass UART 3 for the UART number for your OpenMV Cam.
# The second argument is the UART baud rate. For a more advanced UART control
# example see the BLE-Shield driver.
uart = UART(3, 9600)

while(True):
    uart.write("Hello World!\r")
    time.sleep(1000)

物理连接无误,树莓派端运行read.py:

python read.py

就会得到:
在这里插入图片描述
成功实现了OpenMV与树莓派3串口通信。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值