首先,我要给官方一个大大的赞。我过去使用过很多板卡,在学习官方资料的时候,总是避免不了会碰到各式各样的坑。唯独核桃派,官方文档写的非常详细清晰,且一路跟着做下来,没有遇到任何意外,无比丝滑。这是需要大力肯定的。
那么开始进入正题。快递收到后开箱,满满一个大全套。
为了方便,作为底板的亚克力板我没有安装。但注意使用时就要格外小心,不要让核桃派周围出现导电物体,避免出现短路。但散热片该贴还是要贴上的。
我们先拿出TF卡,插上电脑,烧录固件。由于我的项目中需要用到图像展示,因此这里我烧录的是桌面版固件。这里多插一句,强烈建议大家在烧录固件前先用diskgenius等磁盘工具检查一下TF卡坏道。如果TF卡有坏道的话,烧录过程中可能不会有报错,但在后期使用时会出现各种卡顿死机等莫名其妙的问题。
烧录img镜像我使用的是balenaEtcher,官方推荐的是下载下面的第一个,
而我下载的是第二个,也就是portable免安装版本,使用起来更加方便。
打开软件后,选择镜像,再选择目标tf卡,点击烧录即可,非常傻瓜的操作。
烧录完成后,不要忘记先安全弹出磁盘再拔卡。整个过程中windows可能会多次跳出提示需要格式化盘符,直接关掉不要理睬即可。这主要是因为windows不识别linux的ext4分区格式所致。
烧录好后,我们把TF卡拔出,插入核桃派后,上电。如果正确进入系统,我们会观察到蓝灯亮起:
由于是第一次登录,如果大家手里没有HDMI显示器的话,还需要一根网线连接已确保接入网络。这样我们可以通过SSH来配置wifi和vnc。
插入网线后,先到我们自己的路由器中找到连接设备的ip地址,这里我的ip是192.168.8.158。我们打开cmd,在里面输入
ssh pi@192.168.8.158
若提示添加身份信息,输入yes,等跳出密码输入后,输入pi并按回车。注意输入密码时terminal不会有任何反应,这是正常的。
当看到如下界面,说明成功登录。
下一步我们需要连接wifi,输入以下命令
sudo nmtui
进入菜单后选择第二个:
进入后,选择自己家的wifi名称,点activate,然后输入密码,即可完成连接。
完成后,我们就可以不再需要连接网线。拔出网线后,SSH连接会断开。因为之前的SSH是基于有线连接的。只需要回到上面的步骤,重新进入路由器管理界面,找到核桃派无线网卡对应的ip,再次连接即可。
接下来我们开启vnc。根据官方文档,目前核桃派预装的是X11VNC服务器,好处是直接远程到当前桌面不额外占内存。不过远程时核桃派需要通过HDMI一直连接到显示器,否则会出现卡顿,原因未知,应该是没插入HDMI时系统没用到硬件渲染桌面导致。
但我们用VNC就是为了省一个显示器。这里给一个解决方案就是花10几元成本使用一个叫HDMI显卡欺骗器的东西,通过microHDMI转HDMI母头接到核桃派,解决未接显示器卡顿问题。
在SSH界面中输入以下命令
set-vnc enable
sudo reboot
待核桃派重启完成后,我们下载一个RealVNC,输入核桃派的ip地址,即可完成连接。
到现在,系统环境配置工作已经完成。让我们开始进入项目。我的项目是一个全车自动化控制系统,这套系统中对GPIO有着大量的使用,那我们就先调通python中使用GPIO输入输出的功能,为接下来的项目实现做好准备工作。
先输入gpio readall
或gpio pins
查看所有引脚的定义。
其中Physical是物理编号,也就是插针的位置,wPi是软件中的编号,也就是我们在代码中使用时需要输入的编号。板载有一颗LED和一个开关,从最下面一行可以看到,目前被配置为输出模式,输出高电平。接下来我们尝试在python中使用它们。
但在项目中我们使用更为易用的Blinka库,这是adafruit发起的项目,这样我们可以跟使用circuitpython一样去操作linux系统,非常方便。但要用另外一套引脚的命名系统,如下图所示:
在终端中输入python
来进入python环境,接下来输入以下命令
import board
dir(board)
可以看到如下输出,我们能够调用的引脚名称都被打印了出来。可以注意到列表中并没有PC12和PC13,是因为库中已经将他们命名为了KEY和LED,增加可读性与易用性。
下面我们新建一个test.py文件,输入以下代码:
import board
from digitalio import DigitalInOut, Direction, Pull
led = DigitalInOut(board.LED)
led.direction = Direction.OUTPUT
key = DigitalInOut(board.KEY)
key.direction = Direction.INPUT
while True:
if key.value == 0:
led.value = 1
else:
led.value = 0
保存后,输入sudo python test.py
。由于这里使用了硬件资源,大家切记一定要加上sudo
。接着按开发板上的按键,我们就可以看到LED随着按键变化而变化。