这里是在一块前人用过的树莓派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,而是匿名科创的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串口通信。
本文介绍了在树莓派3上通过串口(UART)与OpenMV进行通信的方法,包括树莓派上网的简单方法、物理连接步骤、树莓派的UART配置以及通信代码实现。警告不要随意修改etc/network/interfaces文件,以防无法远程登录。
1699





