前段时间我开始了对CrowPi2 树莓派4学习套件的评测,当时我展示了套件中的内容以及它首次开机启动的操作。现在我将花更多的时间在这个非常特别的树莓派4笔记本电脑上,这次评测我会将重点集中在教育部分,即CrowPi2软件,但也会看看在有和没有风扇的情况下的散热冷却情况,并尝试在笔记本电脑外壳内安装另一块树莓派兼容板。
CrowPi2教育软件
在开始使用电脑之前,阅读用户手册是相当重要的,因为如果不阅读用户手册,你有可能会忽略一些必要操作。例如,最开始我认为只需要按下电源按钮后就可以使用无线键盘,但实际上并不是这样。
在用户手册里关于怎么让无线键盘工作有相关的说明,无线键盘的射频接收器放在了在鼠标的内部,只有从鼠标里取出接收器然后插到该电脑上,你才可以使用开箱即用的键盘,此外,你还可以通过微型USB线给键盘充电。相机和麦克风需要单独的USB数据线连接,稍后会做详细介绍。

首次开机启动时,系统会要求你完成树莓派操作系统设置以安装最新版本的操作系统,并从这时开始,笔记本电脑将默认开机即启动CrowPi2教育软件。
用户界面上有Learning、Projects、Minecraft、AI、Python、Game、Microbit、Scratch和Arduino等组件图标。我们将逐一对这些组件进行介绍,但由于这些组件包含了数百个教程和课程,我不会把所有教程和课程都一一介绍,为了让大家了解笔记本电脑所能提供的内容,我会在每个项目中选择一个示例来介绍。

如果你点击界面左上角的图标,会转回到树莓派系统的桌面环境,点击导航栏上的蓝、红、黄、绿色的环形图标,将会回到CrowPi2界面。
但是,根据用户手册,我们应该做的第一件事是点击上面的第二个图标,创建一个用户账户。
该账户是离线的,即没有同步到云端,账号会允许几个孩子使用笔记本电脑,而且再次使用时会允许回到他们上次退出的地方。
事后看来,我建议从Projects(没有代码,只是演示如何使用每个教学图标)开始,然后是Learning(基本的Python/Scratch),最后是AI(更高级的Python),以及随着难度增加逐渐进行其他部分的学习。
Learning组件
我已经从Learning开始,这里可以选择32节的Python课程或者16节的scratch课程。

我先选择了Python,在完成几节课后(整体的和部分的),你可以看到每节课的过程都会有显示,学生可以将鼠标指针停在组件插图上,以了解有关于每个组件的更多信息。

我的学习方式有点随意,但我建议按顺序学习:第 1 课、第 2 课、第 3 课等…
让我们学习一个特定的课程,看看该平台提供了什么:原来是4 位数码管的显示。

屏幕上有打开文件、运行代码、停止代码和文件保存的图标(如下图)。左上部分是编写的Python,左下部分显示Python的输出,右侧会提供对每一步的说明和解释。
老师也会讲解每行代码的作用,并向学生详细介绍一些接口,比如I2C。你可以用鼠标加Ctrl+C或使用中键复制代码。
课程完成后,我们可以运行代码,并在 4 位数码管上显示当前时间。到目前为止,这些都让我印象非常深刻,我觉得这可以成为学习电子学和Python的绝佳平台。
让我们切换到Scratch。

它将在左边打开Scratch可视化编程应用程序,在右边打开课程。第一课讲解的是Scratch的作用。
旁注:在 11.6 英寸全高清显示屏上打开 Scratch 窗口会使文本变得非常小。我不得不戴上老花镜继续我的学习……
我选择了“someone calls”来开始学习可视化编程。这节课将文字与视频混合在一起,讲解了涉及绘图的每个步骤…
并连接块以执行任务、添加计时器、文本等……

然后,我们可以通过程序显示蜂鸣器发出“铃”声时来显示信封打开的动画。我希望这一部分能允许使用笔记本电脑的屏幕来做Scratch,并通过树莓派 4上的第二个HDMI端口来使用辅助显示器以获取说明,但由于HDMI适配器板的阻挡,没有办法插入HDMI线。以后会有详细说明。 我更喜欢Python课程部分,但Scratch也不错。
Projects组件
我应该从Projects部分开始,因为没有编码,只有一些使用各种组件的示例。

我选取了NFC music部分进行测试。我们需要从写到卡片上开始。

该演示使用NFC模块、RFID卡、LCD1602显示屏和按钮矩阵。点击运行,并阅读显示屏上的说明,然后按照要求按下按钮,最后以显示屏上显示着“Success”结束。

一切顺利。现在我们需要读取数字,以便播放设备中预装的音乐。
于是我点击了Run,把卡放在NFC读卡器上,但什么也没发生,显示屏始终只是显示“Checking”。我就这个问题联系了这家公司,他们让我安装了某个Python脚本(pi-rc522.zip),但这让情况变得更糟,CrowPi2软件变成一直处于安装中状态(经常崩溃),编写的演示也不再能够正常运行了。
Minecraft组件
Minecraft(我的世界)是一款游戏,但该部分不仅是关于游戏,因为有16个Python课程可以自定义游戏。

但是Minecraft Pi Edition默认是树莓派操作系统的一部分,它并非CrowPi2所特有。
CrowPi2人工智能程序
人工智能部分也依赖于Python编程,但它要复杂得多,所以学生在进入语音识(Speech Recognition)别和人脸识别(Face Recognition)课程之前,可能应该需要先完成其他课程。

这里有五个使用Snowboy软件或谷歌助手(Google Assistant)的语音识别课程,以及七个使用OpenCV 的人脸识别教程,其中一个课程包括如何训练一个模型。

在识别出“turn on the light”一词后,我尝试了利用RGB LED矩阵的语音识别演示。
教程按步骤解释了代码,但有时如果没有相关经验,可能很难知道代码的真正作用。
完成教程后,我遇到了/dev/mem的权限错误。所以我去终端尝试以root身份运行它:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
sudo python3 2020-08-2719\:35\:40.py Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ... ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused ALSA lib pcm_a52.c:823:(_snd_pcm_a52_open) a52 is only for playback ALSA lib conf.c:5014:(snd_config_expand) Unknown parameters {AES0 0x6 AES1 0x82 AES2 0x0 AES3 0x2 CARD 0} ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM iec958:{AES0 0x6 AES1 0x82 AES2 0x0 AES3 0x2 CARD 0} ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock Traceback (most recent call last): File "2020-08-2719:35:40.py", line 55, in <module> with sr.Microphone() as source: File "/usr/local/lib/python3.7/dist-packages/speech_recognition/__init__.py", line 86, in __init__ device_info = audio.get_device_info_by_index(device_index) if device_index is not None else audio.get_default_input_device_info() File "/usr/local/lib/python3.7/dist-packages/pyaudio.py", line 949, in get_default_input_device_info device_index = pa.get_default_input_device() OSError: No Default Input Device Available |
但是它失败了,因为脚本无法检测到任何麦克风。所以我咨询了EleCrow公司,他们让我连接USB摄像头和麦克风电缆。可是我误解了他们所提供的说明和照片,最终导致树莓派4 4GB被烧毁,所以我值得继续使用自己的树莓派4 1GB板。关于这个问题稍后会有更多介绍…
诀窍是USB网络摄像头电缆位于安装的树莓派 4底盖下方。它在用户手册中有明确指出,但据我所知,这点并没有出现在任何课程中提到过,所以我忽略了。

然而当我连接好了USB摄像头,却由于上述的/dev/mem权限问题,程序仍然无法运行,Elecrow工程师告诉我只能使用sudo命令作为变通方法,所以我不得不去终端去执行命令。
我又失败了,因为没有安装flac(无损音频编解码器,Free Lossless Audio Codec),所以我又在终端使用命令把它安装到了系统中:
1 |
sudo apt install flac |
最后,程序终于可以运行了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
sudo python3 light-up-rgbpy.py Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835_alsa.pcm.front.0:CARD=0' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM front ... ALSA lib pcm_a52.c:823:(_snd_pcm_a52_open) a52 is only for playback ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835_alsa.pcm.iec958.0:CARD=0,AES0=6,AES1=130,AES2=0,AES3=2' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM iec958:{AES0 0x6 AES1 0x82 AES2 0x0 AES3 0x2 CARD 0} ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock Please speak: You said: turn on the light Color wipe animations. Theater chase animations. Rainbow animations. Wipe LEDs pi@raspberrypi:~/Desktop $ |
Python输出中仍然有很多警告/错误,但程序却运行得很好。
具体运行情况可以观看该视频:https://youtu.be/6jmIWMSaq68
这意味着学生在学习这部分时可能需要有成年人的监督,而且最好是一个熟悉Linux命令的成年人。
CrowPi2 教育软件的其他部分
界面的其他部分更像是应用程序(App)和游戏的快捷方式,以及独立开发的教程。Python将打开Thonny Python IDE工具,点击Games将会显示一个免费游戏的列表。
点击Microbit将启动Chromium,并将BBC Micro:bit主板的持有者链接进入makecode.microbit.org,而点击Scratch和Arduino将启动相应程序。
CrowPi2上的RetroPie
该套件还附带了另一张32GB的MicroSD卡,并预装了RetroPie,目的是使学生在长时间学习编程之后才可以玩游戏。我连接上了两个附带提供的USB 游戏手柄……
… 经过一些设置,并在RetroPie中加载了可选游戏包后…
过了一段时间,就可以玩Doom等免费游戏了。
CrowPi2的显示屏尺寸相当小,而且没有外部HDMI输出,所以它不是玩游戏的理想平台,特别是当你只有两岁的话。你也可以去掉HDMI适配器,将树莓派直接连接到电视上,但这不是很方便。
CrowPi2散热设计和压力测试
也许有人想把CrowPi2当作标准的笔记本电脑来使用。树莓派4的性能是众所周知的,重要的部分通常是散热设计,在过热的情况下可能会大大影响性能。
CrowPi2是用一个相当嘈杂的风扇来冷却的,其噪音与我的空调产生的噪音相当,但通过将键盘放在上面,可以使它的温度有所下降。所以我先在这种设置下测试了CrowPi2笔记本电脑。然而,当我试图运行sbc-bench.sh基准来对笔记本进行压力测试时,我发现CrowPi2会在后台占用一些资源,使脚本无法运行。
于是我关闭了Crowpi2程序,即使等待一段时间,它也没有重新启动,因为即使待机了四个小时,CPU负载也总是显示在2.0左右。于是我编辑了SBC Bench程序,跳过负载检查,然后继续测试。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
sudo ./sbc-bench.sh -c sbc-bench v0.7.2 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Checking cpufreq OPP... Done. It seems neither throttling nor frequency capping has occured. sed: -e expression #1, char 0: no previous regular expression Memory performance: memcpy: 2478.9 MB/s memset: 3267.4 MB/s (0.1%) 7-zip total scores (3 consecutive runs): 5481,5509,5526 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 62492.67k 76708.54k 83064.41k 84463.96k 85185.88k 85164.03k aes-128-cbc 62522.70k 76788.61k 82952.96k 84610.73k 85035.69k 85207.72k aes-192-cbc 56271.78k 67297.19k 72080.21k 73237.85k 73569.62k 73695.23k aes-192-cbc 56269.33k 67470.46k 71924.39k 73325.91k 73670.66k 73558.70k aes-256-cbc 50805.78k 59808.11k 63276.03k 64381.95k 64664.92k 64678.57k aes-256-cbc 50821.00k 60039.83k 63657.73k 64414.38k 64905.22k 64929.79k Full results uploaded to http://ix.io/2vxZ. Please check the log for anomalies (e.g. swapping or throttling happenend) and otherwise share this URL. |
性能很好,CPU根本没有降频。
待机温度约为45 ℃(环境温度为30 ℃),并且在sbc-bench 脚本运行期间始终没有超过55 ℃。一切都很好。
现在让我们断开风扇的连接。但是2针连接器不是很容易取出,所以我用镊子把它推了出去。
我在开机后关闭了Crowpi2程序,并等待了几分钟让温度稳定下来,然后再次启动sbc-bench。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
sudo ./sbc-bench.sh -c sbc-bench v0.7.2 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Checking cpufreq OPP... Done. ATTENTION: Throttling and frequency capping has occured. Check the log for details. sed: -e expression #1, char 0: no previous regular expression Memory performance: memcpy: 1968.4 MB/s (5.1%) memset: 2673.6 MB/s (2.4%) 7-zip total scores (3 consecutive runs): 2374,2089,1850 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 30485.50k 32811.50k 40347.39k 35450.54k 38513.32k 37999.96k aes-128-cbc 30550.36k 37557.48k 39898.54k 39183.02k 40856.23k 40916.31k aes-192-cbc 24592.13k 27808.24k 33650.18k 32600.41k 32003.41k 30758.23k aes-192-cbc 29541.37k 32518.59k 33584.73k 34761.05k 33428.82k 33319.59k aes-256-cbc 24503.37k 25579.63k 28867.84k 26816.85k 27074.56k 27650.73k aes-256-cbc 21155.20k 25582.61k 25425.92k 28026.54k 27615.23k 26378.24k Full results uploaded to http://ix.io/2vyj. Please check the log for anomalies (e.g. swapping or throttling happenend) and otherwise share this URL. |
基准测试结果数据要低得多,并且脚本报告表明CPU已发生降频,而且达到了频率使用上限。
我们可以看到待机温度高于80 ℃,并且主板在基准测试期间温度高于85 ℃……
让我们来看看内部是如何进行冷却的。树莓派主板是裸露的,没有任何散热器,风扇负责了所有的冷却工作。
如果我们重新插入主板并取出风扇,就可以看到处理器了。
这意味着,通过添加一个厚厚的散热垫和一个适合28 x 28 x 10 mm左右体积的散热片,我们也许可以制作一个无风扇的CrowPi2笔记本电脑。
我们可以用 CrowPi2 和 Rock Pi 4C SBC 制作笔记本电脑吗?
我最近收到了一块树莓派 4 兼容板:搭载瑞芯微RK3399处理器的Rock Pi 4C单板计算机,我想如果将它安装在 CrowPi2 中可能会很有趣。

两块板子很相似,但以太网和USB端口换了位置,其中一个微型HDMI端口被一个迷你DisplayPort连接器取代,RK3399处理器被安装在板子下面,而Broadcom BCM2711 SoC则安装在RPi4 SBC的顶部。

以太网和USB交换不是什么大问题,但因为扁平电缆太短导致我无法插入微型HDMI适配器板,而且主板会被固定相机电缆的塑料安装位挡住……虽然可以重新加工,但这并不理想。更重要的是,由于处理器在主板下面,风扇根本不能对它有效地进行冷却。而我没有可选Rock Pi 4的散热器,就算有,也无法固定到主板的安装孔,而如果将主板安装在笔记本电脑外壳上,又可能会使整个设备太厚而无法安装。
当出现错误操作情况
如前所述,当时我误解了USB摄像头的连接说明,我烧毁了树莓派 4板。由于我急于进行测试,在离开正在执行其他任务之前,便在左边的Micro USB端口和右边的一个USB端口之间连接了一条电缆。然而设备立刻黑屏了。
虽然我可以重新启动设备,但随后发现USB端口真的被烧毁了(尽管它们可能有办法恢复,我以后可能会去查实),用于无线键盘和鼠标的射频接收器也是如此。因此,虽然我可以进入用户界面,但从那里没有办法执行任何操作。
所以我想干脆使用去年收到的树莓派4 1GB开发板。我插入了CrowPi2的microSD卡,并将主板安装在笔记本外壳上,虽然板子似乎已启动,但却没有显示输出。 于是我试着把microSD卡插入我的笔记本电脑,但仍无法访问,然后用读卡器再次尝试,但仍以失败告终。甚至显示根本无法使用Ubuntu中的fdisk或Disks程序。
为了检查SD卡,我换回了套件中包含的树莓派4,虽然它可以正确检测到卡,但它仍完全无法启动。
我天真地以为从Elecrow网站上下载CrowPi2镜像就能恢复,但我在Elecrow网站上找不到它。反而找到一个谷歌驱动器的链接(按要求不能分享),解压后就得到一个11.4GB的“crowpi2_release.img”镜像。所以我才得以继续测试,然后开始用balenaEtcher工具烧录这个镜像……
更换了另一个microSD卡后,我仍然遇到了同样的错误:
出现错误提示:如果是压缩镜像,请检查存档文件没有损坏。
我把未压缩文件的MD5sum发给了该公司,但一直没有得到回复。然而,睡了一觉后,我想到了问题所在,因为我是几个月前安装的balenaEtcher程序(v1.5.57),也许是软件版本太老了, 也许应该把它升级到最新版本(v1.5.106)。安装新软件后,问题解决了,我终于可以烧录镜像了。
因此,我从这次经历中得到两个启发:
- 要确保用dd或其他软件备份CrowPi2的SD卡内容,以便有一个备份。
- 如果在烧录时出现问题,请升级balenaEtcher。
结论
由此来看,CrowPi2的确是一个学习电子、编程和人工智能等基础知识的强大平台。这要归功于平台里的一百多个课程和教程,一台笔记本电脑就能同时供多个孩子使用,还可用一个离线账户去跟踪每个学生的学习进度。
但该平台并不完美。有时因为某些说明可能不完整,如果没有夹杂些命令行操作,示例就无法执行。一些项目示例根本无法按预期执行,但希望这些问题能在发货给最终使用者之前能够得到修复。虽然Elecrow确实有一个关于他们其他产品的Wiki网站,但我真的找不到任何关于CrowPi2和早期CrowPi的可用的在线资源。
另一个潜在的问题是,风扇响声真的很大,特别是当你取掉键盘玩下面的电子模块时。另外,正如在评测中所看到的,也许可以通过一些小步骤将其转换为无风扇笔记本电脑。
Kickstarter上的众筹活动现已结束,该公司共计筹集了 652,640美元,您现在可以直接从Elecrow 预订,没有搭配树莓派和一些附带配件的型号售价为260 美元,而包含树莓派4 4GB和较多的配件的型号(本次测评的测试样机)售价则为399 美元。

文章翻译者:Rita Wang,CNX中文站翻译人员,文字功底扎实,将科技文献以通俗易懂的形式呈现给读者,对开源硬件、AI、IoT等领域多有涉猎。