ARM技术论坛
直播中

jf_08252801

未满1年用户 21经验值
擅长:可编程逻辑 电源/新能源 测量仪表 嵌入式技术 连接器 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU RF/无线
私信 关注

【核桃派1B 开发板试用体验】开箱+系统烧录+SSH+wifi+VNC+GPIO在python中使用

首先,我要给官方一个大大的赞。我过去使用过很多板卡,在学习官方资料的时候,总是避免不了会碰到各式各样的坑。唯独核桃派,官方文档写的非常详细清晰,且一路跟着做下来,没有遇到任何意外,无比丝滑。这是需要大力肯定的。

那么开始进入正题。快递收到后开箱,满满一个大全套。
微信图片_20240105083633.jpg

为了方便,作为底板的亚克力板我没有安装。但注意使用时就要格外小心,不要让核桃派周围出现导电物体,避免出现短路。但散热片该贴还是要贴上的。

我们先拿出TF卡,插上电脑,烧录固件。由于我的项目中需要用到图像展示,因此这里我烧录的是桌面版固件。这里多插一句,强烈建议大家在烧录固件前先用diskgenius等磁盘工具检查一下TF卡坏道。如果TF卡有坏道的话,烧录过程中可能不会有报错,但在后期使用时会出现各种卡顿死机等莫名其妙的问题。

烧录img镜像我使用的是balenaEtcher,官方推荐的是下载下面的第一个,
2

而我下载的是第二个,也就是portable免安装版本,使用起来更加方便。

打开软件后,选择镜像,再选择目标tf卡,点击烧录即可,非常傻瓜的操作。
5

烧录完成后,不要忘记先安全弹出磁盘再拔卡。整个过程中windows可能会多次跳出提示需要格式化盘符,直接关掉不要理睬即可。这主要是因为windows不识别linux的ext4分区格式所致。

烧录好后,我们把TF卡拔出,插入核桃派后,上电。如果正确进入系统,我们会观察到蓝灯亮起:
微信图片_20240105083639.jpg

由于是第一次登录,如果大家手里没有HDMI显示器的话,还需要一根网线连接已确保接入网络。这样我们可以通过SSH来配置wifi和vnc。

插入网线后,先到我们自己的路由器中找到连接设备的ip地址,这里我的ip是192.168.8.158。我们打开cmd,在里面输入

ssh pi@192.168.8.158

若提示添加身份信息,输入yes,等跳出密码输入后,输入pi并按回车。注意输入密码时terminal不会有任何反应,这是正常的。

当看到如下界面,说明成功登录。
image.png

下一步我们需要连接wifi,输入以下命令

sudo nmtui

进入菜单后选择第二个:
image.png

进入后,选择自己家的wifi名称,点activate,然后输入密码,即可完成连接。

完成后,我们就可以不再需要连接网线。拔出网线后,SSH连接会断开。因为之前的SSH是基于有线连接的。只需要回到上面的步骤,重新进入路由器管理界面,找到核桃派无线网卡对应的ip,再次连接即可。

接下来我们开启vnc。根据官方文档,目前核桃派预装的是X11VNC服务器,好处是直接远程到当前桌面不额外占内存。不过远程时核桃派需要通过HDMI一直连接到显示器,否则会出现卡顿,原因未知,应该是没插入HDMI时系统没用到硬件渲染桌面导致。

但我们用VNC就是为了省一个显示器。这里给一个解决方案就是花10几元成本使用一个叫HDMI显卡欺骗器的东西,通过microHDMI转HDMI母头接到核桃派,解决未接显示器卡顿问题。
vnc0

在SSH界面中输入以下命令

set-vnc enable
sudo reboot

待核桃派重启完成后,我们下载一个RealVNC,输入核桃派的ip地址,即可完成连接。

image.png

到现在,系统环境配置工作已经完成。让我们开始进入项目。我的项目是一个全车自动化控制系统,这套系统中对GPIO有着大量的使用,那我们就先调通python中使用GPIO输入输出的功能,为接下来的项目实现做好准备工作。

先输入gpio readallgpio pins查看所有引脚的定义。
image.png

其中Physical是物理编号,也就是插针的位置,wPi是软件中的编号,也就是我们在代码中使用时需要输入的编号。板载有一颗LED和一个开关,从最下面一行可以看到,目前被配置为输出模式,输出高电平。接下来我们尝试在python中使用它们。

但在项目中我们使用更为易用的Blinka库,这是adafruit发起的项目,这样我们可以跟使用circuitpython一样去操作linux系统,非常方便。但要用另外一套引脚的命名系统,如下图所示:
pinout

在终端中输入python来进入python环境,接下来输入以下命令

import board
dir(board)

可以看到如下输出,我们能够调用的引脚名称都被打印了出来。可以注意到列表中并没有PC12和PC13,是因为库中已经将他们命名为了KEY和LED,增加可读性与易用性。

image.png

下面我们新建一个test.py文件,输入以下代码:

import board
from digitalio import DigitalInOut, Direction, Pull

#构建LED对象和初始化
led = DigitalInOut(board.LED) #定义引脚编号
led.direction = Direction.OUTPUT  #IO为输出

#构建按键对象和初始化
key = DigitalInOut(board.KEY) #定义引脚编号
key.direction = Direction.INPUT #IO为输入

while True:

    if key.value == 0: #按键被按下
        led.value = 1 #点亮LED

    else: #松开
        led.value = 0 #关闭LED

保存后,输入sudo python test.py。由于这里使用了硬件资源,大家切记一定要加上sudo。接着按开发板上的按键,我们就可以看到LED随着按键变化而变化。

更多回帖

发帖
×
20
完善资料,
赚取积分