我们一直对树莓派(Raspberry Pi)偏爱有加,之前写了很多与树莓派有关的文章:

codelab-adapter的最新版本内置了树莓派插件。

树莓派(Raspberry Pi)

就编程教育而言,树莓派是非常理想的开源硬件。

它也深受黑客们的喜欢。如果你不知道技术社区有什么好东西,一种聪明的技巧是,看看黑客们都喜欢什么,此处的黑客是黑客: 计算机革命的英雄一书定义的那种黑客,不是盗取QQ号那种。

近年,我们看到树莓派社区涌现了非常多优秀的软硬件,它们致力于降低编程的门槛,但不降低编程这件事的天花板。

其中python-gpiozeroAdafruit CRICKIT HAT极为突出。

使用过RPi.GPIO的老用户,可能和我一样,觉得它用起来挺烦人的,需要接触很多底层概念,颗粒太细。于是python-gpiozero应运而生,提供了许多易用的API,难怪连Python之父Guido van Rossum都在twitter表白说:

GPIOzero I love you!

如果你希望将树莓派用于编程教育,python-gpiozero不容错过。

同样地,Adafruit CRICKIT HAT也大大降低了硬件编程的复杂性。或者说,它剔除了那些不必要的复杂性。

使用raspberrypi插件

codelab-adapter自带的树莓派插件便基于python-gpiozero

为了使用raspberrypi插件,你需要本地有Python3(Mac/Linux用户已经系统自带了),然后安装相关依赖: pip3 install gpiozero pigpio pyzmq --user(windows用户则是:pip install gpiozero pigpio --user)

然后就可以使用了。

注意,我们目前只是开了个头,给出了基本架构,这个插件目前没有具体功能,为了增强它,需要完善:raspberrypi_server.py,欢迎开发者社区一起来改进它。

C/S架构

这里我们以树莓派插件为例,单独提一下codelab-adapter中C/S架构类型的插件。目前这类插件在: codelab_adapter_extensions servers.

C指Client, S指Server, 之所以存在C/S架构风格的插件,是因为,codelab-adapter不可能包含所有第三方Python库。原因有很多,其一是技术上不可能,比如说有Vector官方库需要在shell进行认证。其二是我们想保持内核的精简,除非这个依赖非常通用,比如pyserial,否则我们就不打包。

目前codelab-adapter内置的所有第三方库,参考: wiki

  • chardet==3.0.4
  • pyserial==3.4
  • pyzmq==17.0.0
  • requests==2.21.0

但我们又希望,尽可能支持更多功能。所以解决方案是C/S架构。C/S架构之下,外部库实际由本地Python驱动,codelab-adapter中的对应插件负责调度。具体代码参考codelab_adapter_extensions servers

这正是使用ZeroMQ的典型场景。

如此一来,我们就可以支持Python生态的所有库。

参考