OrangePi Kunpeng Pro 是一款面向开发者和爱好者的高性能开发板。在本次测评中,主要将以前的一些代码在该开发板上实现,包括docker部署hass,引脚驱动SPI小屏幕。中间遇到了一些小小问题,但都成功了,一起来试试吧~
一、开箱
1. 开箱全貌
快递第三天收到了主办方寄来的OrangePi Kunpeng Pro套装(主板,8G,电源,散热组件,32GB存储卡),SD卡中已经安装了最新的openEuler系统,即插即用👍。
2. 主板观赏
以下说几个比较关注的,具体的主板说明可参考官方链接。
正面:CPU、内存、无线网卡和一些接口指示灯。
接口:PD电源输入、HDMI、多个USB3.0接口和一个千M网口。
3. 背面接口
清晰明了的三种不同存储接入接口:SD卡、SSD和EMMC,并可通过两个拨码开关选择启动方式。特别注意的是,虽然M2接口支持nvme和sata两种SSD硬盘,但是默认是nvme硬盘,如果接入的是sata硬盘,需要进行额外的操作(如图就是sata硬盘,额外操作在后续会介绍)。
二、基础入门
0. 说明
1) 账号密码均为:openEuler
1. 烧录系统到sata固态硬盘(nvme可跳过前三个步骤)
SD卡速度慢,手头有一个sata固态硬盘,正好用上。但是sata的固态硬盘,需要额外的修改才能够被开发板识别。
1) 系统烧录:使用balenaEtcher,将系统烧录到硬盘中(使用移动硬盘盒),随后插入到开发板M.2接口中(由于无螺丝,使用了胶带简单固定),但此时还无法读取到这个硬盘。
2) 暂不更改拨码开关,从SD卡进入系统,在此系统下更新SATA 驱动需要的的dt.img
文件。
首先进入/opt/opi_test/sata
文件夹:
cd /opt/opi_test/sata
然后运行下update.sh
脚本来更新SATA 对应的dt.img
:
sudo ./update.sh
然后重启,使用lsblk查看硬盘,可正常识别:
3) 将SD卡的dt.img
配置,更新到sata硬盘中(需要根据情况修改sata硬盘的节点名称,如图为sda)
sudo dd if=/opt/opi_test/dt_img/dt_drm_sata.img of=/dev/sda count=4096 seek=114688 bs=512
4) 切换拨码开关,以SSD方式启动,顺利开机。使用df -h
可查看当前系统空间。
2. 增加swap内存
开发板内存有8G,大部分应用已经完全足够,不够时还可以通过设置swap扩展系统内存。
1) 创建一个swap文件
sudo fallocate -l 16G /swapfile
2) 依次配置
sudo chmod 600 /swapfile # 权限为root用户可以读写
sudo mkswap /swapfile
sudo swapon /swapfile
free -h # 查看内存结果
可以看到swap空间为15G(小数部分被直接忽略了),使用free -m
可以看到更详细的数据。
3) 设置重启自动生效
将对应的配置添加到/etc/fstab
文件中。
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
3. 配置无线网络
前面都用的是有线网口,接下来通过ssh配置其连接无线wifi。
1) 使用 nmcli
命令扫描附近的 Wi-Fi 网络:
nmcli dev wifi list
2) 使用 nmcli
命令连接到你的 Wi-Fi 网络。假设Wi-Fi SSID 是 SSIDWiFi
,密码是 MyPassword
,请进行修改:
sudo nmcli dev wifi connect SSIDWiFi password MyPassword
3) 验证连接状态:
nmcli dev status
# 或者 ifconfig
4. 安装docker
方法1:直接使用 YUM 安装 Docker。简单,但可能安装的是系统软件仓库中提供的较老版本的 Docker。
sudo yum update -y
sudo yum install -y docker
sudo systemctl enable docker
sudo systemctl start docker
方法2:通过 YUM 源安装 Docker。首先添加了 Docker 的 YUM 源,然后使用 yum install 命令安装 Docker 软件包。确保了安装的是最新版本的 Docker,并且可以通过 YUM 包管理器进行更新。
1) 更新
sudo yum update -y
2) 添加 Docker YUM 源
需要添加如下源,如果后面update报错,可以删除该文件。
简单说明:Docker 官方提供了适用于 CentOS/RHEL 的 YUM 源,而 openEuler 在很大程度上与 CentOS/RHEL 兼容,因此使用这些源进行 Docker 的安装。
sudo nano /etc/yum.repos.d/docker-ce.repo
添加以下内容:
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
3) 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
4) 启动 Docker 服务
sudo systemctl start docker # 启动服务
sudo systemctl enable docker # 开机自启
sudo systemctl status docker # 查看状态
5) 测试
sudo docker run hello-world
6) 其他一些指令
以下为使用docker常用的一些指令:
docker --version # 查看 Docker 版本
docker run hello-world # 运行一个 Hello World 容器
docker ps -a # 列出所有容器
docker images # 列出所有镜像
docker stop CONTAINER_ID # 停止一个运行中的容器
docker start CONTAINER_ID # 启动一个停止的容器
docker rm CONTAINER_ID # 移除一个容器
docker rmi IMAGE_ID # 移除一个镜像
docker logs CONTAINER_ID # 查看容器日志
docker exec -it CONTAINER_ID /bin/bash # 进入一个运行中的容器
docker stats CONTAINER_ID # 查看容器的资源使用情况
docker build -t my-image:latest . # 构建一个 Docker 镜像
docker pull ubuntu:latest # 拉取一个 Docker 镜像
docker push my-image:latest # 推送一个 Docker 镜像到仓库
docker info # 显示 Docker 系统信息
docker network ls # 查看 Docker 网络配置
docker network create NETWORK_NAME # 创建一个 Docker 网络
docker network connect NETWORK_NAME CONTAINER_ID # 连接容器到指定网络
docker network disconnect NETWORK_NAME CONTAINER_ID # 断开容器与网络的连接
三、功耗测量
虽然针对这个高性能开发板,低功耗是不太可能了,但是测量功耗可以明确对电源的需求。目前开发板搭配了最高3A的电源(仅考虑12V)。
1.说明
开发板使用了256G Sata固态硬盘作为系统盘,插入了网线和电源,不接显示器使用ssh登录。使用系统自带的风扇调节方案无修改。依次测量开机、CPU25%、50%和75%运行下、和关机的功耗。
2. 测量程序
写一个cpu_stress.py程序,占用一个核进行满负荷运行(25%CPU占用)。多开可占用更多的CPU资源。
#!/bin/bash
echo "Starting CPU stress test..."
while true; do
# 执行一些无限循环的计算任务,例如计算圆周率
echo "scale=5000; 4*a(1)" | bc -l >/dev/null
done
3. 结果
1) 开机:接入typeC供电后,开发板自动开机。首先开发板通过PD协议让电源输入电压升到12V,风扇启动,电流最大到1.1A,经过40s后稳定到660mA。
2) cpu运行测量:依次测量CPU占用25%、50%和75%时的功耗,由于其中1核被设置为了AI核,无法被该程序调用,因此最高占用只有75%。在25%、50%和75%占用时,电流分别为750mA、800mA和970mA。
3) 关机:最后,通过指令poweroff,使开发板关机,测量功耗。此时电压仍保持在12V,电流为280mA,风扇不转。
四、Docker部署Hass
在安装docker后,依次安装homeassistant、数据库、mqtt服务器、esphome、nodered,并让他们互相链接,是指一个完善的、且可方便更新的智能家居管理系统,而且不影响其他服务的安装。