当我拿到一块OrangePi AIpro开发板,是真的香~
前言 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。 OrangePi AIpro(8T)采用昇腾AI技术路
前言
Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。
OrangePi AIpro(8T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。
开发板实物图
顶层视图 | 底层视图 |
---|---|
开发板接口详情图
底层视图 | |
---|---|
配套学习资源
香橙派官方提供了非常全面学习资源,可进入 官方资料 页面获取先关学习资源:
相关链接
- Orange Pi 官网:http://www.orangepi.cn/
- Orange Pi AIpro 介绍页:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html
- Orange Pi 论坛:http://forum.orangepi.cn/
- Huawei 昇腾社区:http://hiascend.com/
连接开发板
串口连接
OrangePi AIpro 提供了串口调试接口,通过串口可以在不借助显示器的情况下对开发板进行状态检查和运行控制。
关于串口的接入,OrangePi AIpro 提供了两种接入方式,分别是:
(1) 通过板载的 Micro USB 接口接入;
(2) 通过板载的 40Pin 接口的8号和10号引脚接入。
这两种接入方式的区别在于:MicroUSB可以通过USB线与控制设备(电脑)进行通信;而40Pin口的串口资源还需要借助USB转TTL模块来实现与控制设备(电脑)的通信。
方式1: Micro USB 接口 | 方式2: 40Pin 接口 |
---|---|
上述两种接入方式本质上是共用了同一组硬件资源,那就是UART0
,因此在实际使用过程中,只能二选一,否则会产生冲突。
Micro USB作为上一代的通信接口,现如今已经不常用,因此要寻得一条与之匹配的数据线也不见的是一件易事,但作为一名嵌入式工程师,USB转TTL模块还是顺手拈来的事。因此接下来将以第二种方式介绍串口连接。
接线说明
拿出准备好的USB转TTL模块,并按下方介绍完成接线:
a.USB 转 TTL 模块的 GND 接到开发板的 GND(6号引脚) 上。
b.USB 转 TTL 模块的 RXD 接到开发板的 TXD(8号引脚) 上。
c.USB 转 TTL 模块的 TXD 接到开发板的 RXD(10号引脚) 上。
🍩注意:在串口通信中,TXD 和 RXD 是需要交叉连接的,否则无法正常通信。
在完成USB转TTL模块与Orange-Pi-AIpro开发板的连接后,接下来就可以将USB转TTL模块插入电脑了:
接线示意图 | 接线实况图 |
---|---|
串口工具配置
市面上提供串口调试的软件有很多,例如:putty、SecureCRT、MobaXterm 等。软件各有优缺:
- Putty:免费。支持 Windows、Linux 平台。
- SecureCRT:付费。支持 Windows、Linux、MacOS 平台。
- MobaXterm:有免费版本。支持 Windows 平台。
接下来将以 SecureCRT 为例讲解串口连接配置,关于软件安装问题,这里暂不讨论,请自行完成。
1)打开SecureCRT软件,并按下述完成配置。
a. 点击闪电⚡(快速连接)图标。
b. 选择串口类型。
c. 选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用 360 驱动大师扫描安装 USB 转 TTL 串口芯片的驱动。
d. 选择串口的波特率为 115200。
e. 最后点击“Connect”进行连接。
2)给Orange-Pi-AIpro开发板上电。
给开发板加电后,终端上会不断的打印从串口中接收到的开机日志,直至显示登录入口:
3)登录系统。
当看到登录入口后,就可以使用以下账号和密码来登录Linux系统了。
账号 | 密码 |
---|---|
root | Mind@123 |
HwHiAiUser | Mind@123 |
网络连接
前面介绍串口连接已经成功连接到了开发板,但这得属于有线连接,始终得拖着一根线,长期下来总会觉得麻烦。接下来介绍如何给开发板连接网络,在给开发板接入网络获取网络资源的同时,也给后续的连接做好铺垫。
Orange-Pi-AIpro 可以通过 有线 和 无线 两种方式接入互联网,接下来将以无线接入方式进行讲解。
wifi连接
在 Linux 下,管理系统网络的工具有很多(例如: nmcli:基于命令行的网络管理工具、 nmtui:基于命令行的图形化网络管理工具、 ip:基于命令行的网络管理工具 等),下面以nmcli
工具为例。
- 登录 Linux 系统
使用串口调试器将开发板与电脑进行连接,然后通过串口终端登录 Linux 系统(具体步骤参见“串口连接”一节)。
登录时可以选择root
或HwHiAiUser
用户,下面以登录HwHiAiUser
用户为例。
🔈提示:除了通过串口连接,还可通过以西方式进行连接:
- 如果开发板连接了网线,可以通过 ssh 远程登录 Linux 系统。
- 如果连接了开发板到 HDMI 显示器,可以通过 HDMI 显示的终端登录到 Linux 系统。
- 扫描周边的 WIFI 信号
在打开的命令行终端输入并执行nmcli dev wifi
命令,稍等片刻后即可看到搜索🔍结果。
(base) HwHiAiUser@orangepiaipro:~$ nmcli dev wifi
- 连接到指定的 WIFI 信号
继续使用 nmcli 命令连接扫描到的 WIFI 热点,其中:
- wifi_name:需要换成想连接的 WIFI 热点的名字。
- wifi_passwd:需要换成想连接的 WIFI 热点的密码。
(base) HwHiAiUser@orangepiaipro:~$ sudo nmcli dev wifi connect wifi_name password wifi_passwd
Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.
提示: 由于当前登录的是
HwHiAiUser
用户,因此需要加sudo
关键字进行提权,提示的密码输入root
用户的密码(默认:Mind@123
)即可。
- 查看 IP 地址
执行ip address show wlan0
命令查看当前 WIFI 的 IP 地址。
(base) HwHiAiUser@orangepiaipro:~$ ip address show wlan0
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether 54:f2:9f:7b:ba:36 brd ff:ff:ff:ff:ff:ff
inet 10.31.2.93/16 brd 10.31.255.255 scope global dynamic noprefixroute wlan0
valid_lft 43191sec preferred_lft 43191sec
inet6 fe80::5297:7036:a33c:bb93/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 网络连通性测试
使用 ping 命令可以测试 wifi 网络的连通性,格式为:ping <域名/主机地址> -I 网卡名
。
注意: Linux 下的 ping 操作会持续进行,如果需要中断退出,可以通过 Ctrl+C 快捷键来中断运行。
(base) HwHiAiUser@orangepiaipro:~$ ping www.orangepi.org -I wlan0
PING www.orangepi.org (123.57.147.237) from 10.31.2.93 wlan0: 56(84) bytes of data.
64 bytes from 123.57.147.237 (123.57.147.237): icmp_seq=1 ttl=53 time=47.1 ms
64 bytes from 123.57.147.237 (123.57.147.237): icmp_seq=2 ttl=53 time=44.3 ms
64 bytes from 123.57.147.237 (123.57.147.237): icmp_seq=3 ttl=53 time=45.0 ms
64 bytes from 123.57.147.237 (123.57.147.237): icmp_seq=4 ttl=53 time=71.0 ms
^C
--- www.orangepi.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 44.377/51.902/71.082/11.119 ms
SSH连接
当连接到无线或有线网络后,接下来就可以通过SSH远程连接到开发板,实现远程连接控制、开发了。
Orange-Pi 官方提供的系统镜像默认已经开启了 ssh 远程登录,并且允许 root 和 HwHiAiUser 用户登录系统。
1) 获取开发板IP地址
可通过串口连接到系统,然后执行ip address
命令查看全局网络信息,又或按下方方法查看指定网卡的网络信息:
ip address show wlan0 #查看wifi网络信息
ip address show eth0 #查看有线网络信息
2) SSH连接到Linux系统
接下来通过 ssh 命令远程登录 Linux 系统,常见的方法有两种:
- 通过命令行终端连接:适合在 Linux、Ubuntu、Windows10(或以上版本) 等系统。
- 通过远程管理软件连接:常见的有 Putty、SecureCRT、XShell 等。
a) 通过命令行终端连接
以Windows10为例,打开CMD命令行终端,接着通过SSH命令远程连接到开发板的Linux系统,格式为:ssh 用户名@IP地址
,其中:
- 用户名:可以是
root
或HwHiAiUser
用户。 - IP地址:可以是有线网络或无线网络的IP地址。
例如:
C:\Users\xxx> ssh root@192.168.2.xxx #这里需要替换为开发板的IP地址,不要照抄)
root@192.168.2.xx's password: #在这里输入密码,默认密码为 Mind@123
登录成功后,提示如下:
b) 通过远程管理软件连接
除了通过命令行终端ssh到系统,还可以通过图形管理工具连接到系统。这里继续以 SecureCRT 软件为例。
打开SecureCRT软件,并按下图所示完成相关项的配置和操作:
执行连接后,在弹出的对话窗口中输入用户密码(默认:Mind@123)即可登录到操作系统,登录后提示如下:
VNC连接
前面介绍的 串口连接 和 SSH连接 都属于命令行管理,但如果希望查看系统中的图片或视频等资源时,就必须先将文件拉取到笔记本电脑本地,然后通过本地相关软件才能查看,这显得非常麻烦。
那有什么办法可以直接查看开发板的Linux系统桌面呢?答案:有的,那就是通过VNC远程连接到Linux系统桌面。
值得开心的是,官方提供的 Ubuntu 镜像默认已运行 VNC 服务,用户直接通过相关客户端远程进去即可。
1) 查看VNC服务情况
- 默认Ubuntu已安装VNC并且已经运行,可以通过以下命令查看服务情况:
ps -ef | grep vnc #查看vnc进程是否存在
- 查看进程情况:
- 查看网络监听情况:
netstat -antulp | grep 5901 #查看5901端口是否在进程
2) 安装VNC客户端
比较常用的有 RealVNC Viewer 客户端,其支持 Windows、Mac、Linux、Android、IOS 全场景平台,而且操作简单,这里以该软件为例。
直接访问 RealVNC Viewer 下载中心 根据您电脑系统及架构情况选择合适的安装包,然后运行并根据向导提示完成安装即可!
3) 使用VNC客户端远程到Linxu系统桌面
运行 RealVNC Viewer 软件,接着依次点击File
->New connection...
,在弹出的界面按下方提示配置:
1、创建访问连接 | 2、查看新增的连接 |
---|---|
双击新建的连接开始远程VNC访问:
3、同意进行非加密连接 | 4、输入用户密码(root用户) | 5、成功登录 |
---|---|---|
VNC到Linux系统桌面后,发现目前通过鼠标或键盘对桌面资源进行操作时是没有反应的,猜测当前处于仅查看模式。接下来可通过下方步骤进行提权。
4) 修改VNC密码(取消仅查看权限)
通过修改VNC的密码,可以在修改密码的过程中取消仅查看权限。
从上面第1步执行ps -ef
输出可知,VNC服务是由root
用户启动的,因此需要到root
用户下去操作:
提示:如果使用的是
root
用户,可忽略用户切换步骤。
(base) HwHiAiUser@orangepiaipro:~$ su root #切换到root用户
Password:
(base) root@orangepiaipro:/home/HwHiAiUser#
(base) root@orangepiaipro:/home/HwHiAiUser# vncpasswd #执行修改vnc密码操作
Using password file /root/.vnc/passwd
Password: #输入vnc密码(可以与原密码一致)
Verify: #确认密码
Would you like to enter a view-only password (y/n)? n #输入 n 即可取消仅显示模式【重点!重点!重点!】
(base) root@orangepiaipro:/home/HwHiAiUser#
(base) root@orangepiaipro:/home/HwHiAiUser# exit
exit
(base) HwHiAiUser@orangepiaipro:~$
修改密码后,重新登录VNC,可以看到可以操作远程桌面的资源了:
5) VNC服务管理命令(扩展)
systemctl enable vncserver@1.service #设置VNC开机自启(默认)
systemctl disable vncserver@1.service #关闭VNC开机自启
systemctl start vncserver@:1.service #开启vnc服务
systemctl stop vncserver@:1.service #关闭vnc服务
systemctl restart vncserver@:1.service #重启vnc服务
vncpasswd #设置VNC密码
vncserver :1 #开启VNC
vncserver -kill :1 #关闭VNC 1号远程
vncserver -kill :* #关闭VNC所有远程
vncserver -list #查看VNC会话列表
开发板实验
实验1:目标检测(YOLOv5)
在镜像中预装了 Jupyter Lab 软件。Jupyter Lab 软件是一个基于 Web 的交互式开发环境,集成了代码编辑器、终端、文件管理器等功能,使得开发者可以在一个界面中完成各种任务。并且在镜像中也预置了一些可以在 Jupyter Lab 软件中运行的 AI 应用样例。这些样例都是使用 Python 编写的,并调用了 Python 版本的 AscendCL 编程接口。本节介绍如何登录 Jupyter Lab 并在其上运行这些预置的 AI 应用样例。
运行并登录 Jupyter Lab
1)进入AI应用样例目录
首先通过SSH登录Linux系统,然后工作目录切换到保存 AI 应用样例的目录下。
cd ~/samples/notebooks/
2)查看样例目录资源情况
在当前目录下有 9 个文件夹和 1 个 shell 文件,分别对应 9 个 AI 应用样例和 Jupyter Lab 启动脚本 start_notebook.sh。
3)启动Jupyter Lab
按格式执行start_notebook.sh
脚本启动 Jupyter Lab,如果你是通过SSH连接到Linux系统的,需要在执行脚本的后面加上主机的IP地址进行启动,否则后续将无法访问。原因在于启动脚本默认仅允许本地连接。
./start_notebook.sh [IP地址]
在执行该脚本后,终端会打印出相关信息,其中就包含了登录 Jupyter Lab 的网址链接。在后续的访问中,如果你是在系统本地进行操作的,可以使用任一链接进行访问,但如果你是通过外部设备(例如:笔记本、台式机)操作的,则只能使用与指定(启动脚本后面那个)IP相关的链接进行访问。
4)登录 Jupyter Lab
打开浏览器,然后在地址栏中输入访问地址,回车访问就可以登录到 Jupyter Lab 上了。
5)查看 Jupyter Lab 资源
登录 Jupyter Lab 后的界面如下所示,左侧文件管理器中是 9 个 AI 应用样例和 Jupyter Lab 启动脚本。
运行目标检测(YOLOv5)样例
YOLOv5 是一种单阶段目标检测器算法,在这个样例中,我们选取了 YOLOv5s,它是 YOLOv5 系列中较为轻量的网络模型,适合在边缘设备部署,进行实时目标检测。在样例中已经包含转换后的 om 模型和测试视频、图片,可以按照以下流程在 Jupyter Lab 中运行该样例。
1)进入样例目录
在 Jupyter Lab 首页中找到并双击“01-yolov5”,进入到该目录下。
2)打开样例主文件
进入样例目录后,左侧显示的是与该样例相关的所有资源,其中mian.ipynb
是在 Jupyter Lab 中运行该样例的文件,双击打开main.ipynb
,在右侧窗口中会显示main.ipynb
文件中的内容。
3)了解数据输入源
在 main.ipynb 文件中 infer_mode 的值可赋值为 image、video 和 camera,分别对应对图片、视频、USB摄像头中的内容进行目标检测,默认值为 video。
🔈说明:video 和 image 的测试源文件放置在了本样例目录下,分贝对应
racing.mp4
和world_cup.jpg
这两个文件。
4)运行样例
单击运行按钮运行本样例,在弹出的对话框中单击Restart
按钮,此时该样例开始运行。
5)查看视频推理效果(video)
稍等片刻后,在窗口中出现了一段赛车的视频,通过视频画面可以看到模型对视频的每一帧进行推理,并将检测到的赛车标注了出来。
6)推理图片(image)
将infer_mode
的值修改image
,切换为图片推理模式。
7)查看图片推理效果(image)
再次运行样例,稍等片刻后,在窗口中出现了一张足球比赛的图片,我们可以看到模型对图片进行推理,识别到了图片中的三个人和一个足球。
实验2:使用开发板点亮LED
传统技能,拿到开发板,先电灯。
1)引脚说明
1、引脚顺序图 | 2、引脚功能图 |
---|---|
注意:
- 40 pin 接口中总共有 26 个 GPIO 口,但 8 号和 10 号引脚默认是用于调试串口功能的,并且这两个引脚和 Micro USB 调试串口是连接在一起的,所以这两个引脚请不要设置为 GPIO 等功能。
- 所有的 GPIO 口的电压都是 3.3v。
- 40 pin 接口中 27 号和 28 号引脚只有 I2C 的功能,没有 GPIO 等其他复用功能,另外这两个引脚的电压默认都为 1.8v。
2)引脚驱动
Linux 镜像中预装了gpio_operate
工具用于设置 GPIO 管脚的输入与输出方向,也可将每个 GPIO 管脚独立的设为 0 或 1。
关于gpio_operate
工具的详细使用方法,可通过gpio_operate -h
命令获取其帮助信息:
注意:
gpio_operate
工具必须使用root
帐号执行。
(base) root@orangepiaipro:~# gpio_operate -h
Usage: gpio_operate <Command|-h> [Options...]
gpio_operate Command:
-h : This command's help information.
set_value : Set gpio pin value.
get_value : Get gpio pin value.
set_direction : Set gpio pin direction value.
get_direction : Get gpio pin direction value.
从帮助信息可见,gpio_operate
支持4操作,总结如下:
gpio_operate get_direction gpio_group gpio_pin #查询GPIO管脚方向
gpio_operate set_direction gpio_group gpio_pin direction #设置GPIO管脚方向
gpio_operate get_value gpio_group gpio_pin #查询GPIO管脚值
gpio_operate set_value gpio_group gpio_pin value #设置GPIO管脚值
- gpio_group: GPIO组号,取值为[0,8]。
- gpio_pin: GPIO管脚号,取值为[0,31]。
- direction: GPIO方向, 0:输入方向; 1:输出方向。
- value: GPIO电平,0:低电平; 1:高电平。(注意:只有GIOP被设置为输出方向后才能设置其值。)
3)接线示意图
-
->GND
R
->GPIO0_03
G
->GPIO7_04
B
->GPIO4_00
接线示意图1 | 接线示意图2 |
---|---|
4)编写代码
简单点亮一颗RGB三色LED只需以下6行命令:
#设置GPIO输入输出方向 (输出:1 输入:0)
gpio_operate set_direction 0 3 1 #R
gpio_operate set_direction 7 4 1 #G
gpio_operate set_direction 4 0 1 #B
#设置GPIO引脚电平 (高电平:1 低电平:0)
gpio_operate set_value 0 3 1
gpio_operate set_value 7 4 1
gpio_operate set_value 4 0 1
稍作完善,引入循环和延时,即可实现LED的闪烁效果。接下来新建一个名为RGB_Flash.sh
的文件,然后写入以下代码。
#!/bin/bash
# 设置GPIO引脚输出方向
gpio_operate set_direction 0 3 1 #R
gpio_operate set_direction 7 4 1 #G
gpio_operate set_direction 4 0 1 #B
# 通过数组定义LED灯的亮灭状态
commands=(
"gpio_operate set_value 0 3 1"
"gpio_operate set_value 0 3 0"
"gpio_operate set_value 7 4 1"
"gpio_operate set_value 7 4 0"
"gpio_operate set_value 4 0 1"
"gpio_operate set_value 4 0 0"
)
# 无限循环执行命令,每隔0.5秒执行一条,ctrl+c结束执行
while true
do
for cmd in "${commands[@]}"
do
eval $cmd
sleep 0.5
done
done
5)执行代码
先给脚本文件增加可执行权限,然后再运行:
chmod +x RGB_Flash.sh #增加可执行权限
./RGB_Flash.sh #运行
效果如下:
后续
由于时间关系,篇幅暂至此。喜欢的朋友可先关注,本文还在不断的完善和内容更新中...
更多推荐
所有评论(0)