第 1 章 打开极客之门

1.1 TurnipBit 是什么

TurnipBit 是以 microbit 为基础,由 TurnipSmart 公司设计的面向青少年编程学习的开发板。该开发板带有蓝牙、加速度传感器、磁敏传感器、耳机插口、按钮以及 5 × 5 LED 点阵等,配有拼插编程工具以及代码编程工具。如果你是一个零基础的“小白”,那么 TurnipBit 能够让你在较短的时间内学会拼插编程;如果你参加过“乐高”等机器人的学习,已经有了编程的基础,那么 TurnipBit 能够帮助你顺利从拼插编程过渡到代码世界,帮助你成为一个真正的“程序员”。

TurnipBit 可以帮助你实现自己的创意, 你可以利用 TurnipBit 实现任何酷炫的小发明,无论是智能小车、指南针、机器人还是乐器。你只需要简单的几节课程学习,就可以充分发挥自己的想象力,打开创意空间。

你还可以使用 25 个可显示消息的 LED 灯,画出想显示的图形和文字;可以通过两个可编程按钮,控制游戏操作或者暂停/播放一首音乐;也可以利用加速度传感器、磁敏传感器检测动作并且告知动作进行的方向,同时它也可以通过低功耗蓝牙模块与其他设备或互联网连接。

1.2 从拼插编程开始

拼插编程主要是针对程序设计的初学者或者是年龄较小的爱好者的。拼插编程平台利用简单的拖曳插件,实现快速的程序设计。初学者能够很快掌握拼插的方法,并实现自己的想法,培养起对编程的兴趣。你可以通过 www.turnipbit.com网站,进入“开始编程”来体验拼插平台的优势。这里我们来实现一个“ Hello World! ”程序。

① 进入 TurnipBit 官方主页 http://www.turnipbit.com/,如图 1-1 所示。

② 点击“开始编程” 按钮进入编程界面, 进行基础的模块化拼插编程的学习,如图 1-2 所示。

③ 向世界说“ Hello World!”。

你只需要编辑一个简单的程序,并将程序下载到名为 TURNIPBIT 的磁盘中,就可以看到程序效果,如图 1-3 所示。

点击“下载 hex”按钮,将程序保存到电脑中,文件的后缀为.hex,如图 1-4所示。

将 TurnipBit 用下载数据线与电脑连接,就会在电脑中出现名为 TURNIPBIT的磁盘,如图 1-5 所示。

将之前保存的 HEX 文件拖入 TURNIPBIT 磁盘中,我们会看到 TurnipBit 板子上的灯在闪烁,说明正在下载到控制板中。下载成功后,会看到程序正常运行。

1.3 做个真正的程序员

拼插编程并不是学习编程的目的,只是一个入门和培养兴趣的途径。要想做个真正的程序员,最终还是要学习计算机语言的。 TurnipBit 正是通过拼插与代码的对比实现了快速学习编程的目的。 TurnipBit 支持的是 Python 语言,它属于MicroPython 开发板的一种,其固件中集成了 microbit、 music 等多个库文件。

1.3.1 什么是 Python

Python 与 C、 Java 等一样,是一门计算机语言,由吉多·范罗苏姆于 1989年创建。 Python 最初是吉多用来打发时间而开发的,经过近 30 年的不断完善,现在已经成为最受欢迎的语言之一。 2017 年 7 月, IEEE Spectrum 杂志(美国电气电子工程师学会出版的旗舰杂志)发布的研究报告显示, 2016 年排名第三位的Python,在 2017 年已经成为世界上最受欢迎的语言, C 和 Java 分别位居第二位和第三位。

由于 Python 语言的简洁性、易读性以及可扩展性,一些知名大学已经采用Python 来教授程序设计课程。例如卡内基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用 Python 语言讲授。除高校以外,国外在面向青少年编程的教育中也开始引入 Python。 Python 在我国也相当流行,各著名高校都开设了 Python 课程,同时一些面向青少年的教育机构、中小学校也积极引入 Python作为编程启蒙课。

Python 在执行时,首先会将.py 文件中的源代码编译成 Python 的 Byte Code (字节码),然后再由 Python Virtual Machine( Python 虚拟机)来执行这些编译好的字节码。与计算机编程不同的是,在 TurnipBit 开发板的编程中,则是将 Python代码编译为 HEX 文件,然后烧录到开发板中进行执行。

1.3.2 面向硬件的 MicroPython

2013 年年底, 英国剑桥大学数学科学中心理论物理学家 Damien P. George(乔治·达明)提出了 MicroPython。在工作中,他经常使用 Python 语言,并进行一些机器人项目开发。有一天,他突然有了一个想法,能否用 Python 语言来控制单片机,实现对机器人的操控呢?

要知道, Python 虽然很强大,但遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼。为了突破这种限制, Damien 花费了 6 个月的时间来打造 MicroPython。 MicroPython 基于 ANSI C,语法跟 Python 3 基本一致,拥有自己的解析器、编译器、虚拟机和类库等。目前它支持基于 32bit 的 ARM 处理器,比如 STM32F405、 STM32F407 等。借助 MicroPython,用户完全可以通过 Python脚本语言实现硬件底层的访问和控制,比如控制 LED 灯、 LCD 显示器、读取电压、控制电机、访问 SD 卡等。

MicroPython 在支持库方面围绕着 MCU 的特性进行了精减,并形成了 5 个版本,包括开源的标准版本( standard)、双精度浮点版本( double FP)、支持线程功能版本( threading)、双精度浮点+线程版本( double FP + threading)以及支持网络功能版本( network)。主要的固件结构如表 1-1 所示。

1.3.3 支持 MicroPython 的开发板

MicroPython 从诞生的那一刻起, 就被很多人关注, 相应的开发板也应运而生。国际上最有名的就是 Pyboard, 有 PYB v1.0 和 PYB v1.1 等多款。 在我国 TPYBoard是做得比较成熟的,涵盖系列较多。本书中使用的 TurnipBit 与 TPYBoard 相似,是支持 MicroPython 的开发板之一。

1. Pyboard 的兴起

Damien 利用 STM32F405 制作的第一块支持 MicroPython 的开发板就是Pyboard。它基于 STM32F405 单片机,通过 USB 接口进行数据传输。该开发板内置 4 个 LED 灯、一个加速度传感器、时钟模块,可在 3~10V 的电压下正常工作。值得一提的是,它遵守 MIT 协议开源,被授权人拥有复制、修改、发行和再授权的权利。到目前为止, Pyboard 已经有两个版本,分别是 v1.0 和 v1.1。

MicroPython 一经公开,并在 Kickstarter 上进行众筹后,就引起了各地技术人员的关注, 在极短的时间内, MicroPython 被移植到了 ESP8266、 ESP32、 STM32F407等开发板上。

2.我国的 MicroPython 开发板

随着 MicroPython 被广泛关注,我国的许多技术人员也开始仿照 Pyboard 制作自己的开发板,如制作了 Pymagic、 PYB nano 等。当前,影响力较大的当属TPYBoard。 这块开发板与 Pyboard 功能类似, 也采用了 STM32F405 作为 MCU(微控制单元,又称单片机),具有 4 个 LED 灯以及一个加速度传感器。该开发板除支持 DFU 外,还加入了 SWD 接口,可利用该接口进行固件调试。 TPYBoard 发布后,也一度引起了国外技术人员的关注,在 MicroPython 的官方论坛上进行了多次讨论。

目前 TPYBoard 已经发展出多个版本,包括 STM32 标准版、基于 LAN 的有线版、基于 ESP8266 的无线版等,并发布了自己的固件。

( 1) STM32 标准版

该版本包括支持 TPYBoard 固件及兼容 PYBv10 的 V102 开发板(见图 1-6)和支持 TPYBoard 固件及兼容 PYBv11 的 V103 开发板。其中 V103 为高端板,采用黑色镀金工艺,除适合实验学习外,也可应用在工业设计中。

( 2)基于网络的 TPYBoard V20X 系列

V20X 为 TPYBoard 的网络系列,更适合物联网使用。其中包括基于 LAN 的V201 开发板(见图 1-7) 和基于 Wi-Fi 的 ESP8266 开发板 V202(见图 1-8)。 V20X开发板的应用更加广泛,可轻松实现 Socket 服务器、 Web 服务器,也可以完成Socket、 TCP 以及 UDP 通信。

( 3)基于北斗定位的 TPYBoard V70X

TPYBoard V70X 系列开发板(见图 1-9)集成了 GU620 芯片,该芯片支持北斗定位或者 GPS、 GPRS 基站定位,使得 TPYBoard 可以直接利用 MicroPython 进行 GPS 定位开发。同时 TPYBoard V70X 还自带一套 Web 接收与控制服务器,使用者可以轻松完成定位硬件及 Web 端展示。

1.3.4 利用 TurnipBit 进行编程学习

随着信息技术的发展与普及,越来越多的家庭开始重视青少年编程学习,以编程能力为基础的信息奥林匹克竞赛和 STEM 教育等一度受到追捧。 TurnipBit 正是在这种背景下产生的。 TurnipBit 支持 MicroPython,将易接受的拼插编程与纯代码编程相结合,帮助青少年快速从拼插编程过渡到代码编程,建立程序员思维。通过拼插与代码的对比学习,青少年很容易理解和掌握变量、数学运算、逻辑运算、循环、函数等基本知识,对于进行 Python 学习培养兴趣,建立基础。

TurnipBit 的正面和背面示意图分别如图 1-10 和图 1-11 所示。

TurnipBit 的基本硬件操作包括以下几个部分。

( 1)电源输入, TurnipBit 电源输入采用 microusb 接口,电压为 5V,其位置如图 1-11 所示。

( 2)重置按键(见图 1-11),即我们常说的 RESET 键,用来重启开发板。

( 3)按键 A 和 B(见图 1-10),即两个用来进行控制的按键,在进行程序设计时,我们可以利用该按键完成指定任务。

( 4)耳机接口(见图 1-11),用来通过耳机输出声音。

( 5) GPIO 金手指连接件(见图 1-11),该连接件将 GPIO 从开发板中引出,实现扩展功能。例如,我们可以利用所引出的引脚接 DS3231 时钟模块,也可以用来接温度传感器等其他模块。各引脚的具体定义如图 1-12 所示。

接下来,让我们一起从广告牌制作、倒计时器、计算器、会走的机器人、无线投票器等实验开始奇妙的编程之旅吧!

第 2 章 滚动的广告牌

2.1 滚动的“Hello World!”

滚动字幕的广告牌在城市的大街小巷经常能够看到,这种广告牌在白天和夜间都可以进行信息展示。

Hello World!的中文意思是“世界,你好! ”。因 The C Programme Language 中使用它作为第一个演示程序而变得非常有名,所以后来程序员在学习编程或进行设备调试时都习惯使用“ Hello World!”来作为第一个程序。现在我们就利用TurnipBit 板载的 5× 5 LED 点阵来完成滚动显示字符“ Hello World!”,标志MicroPython 学习之旅的开始。

所需器材:

y TurnipBit 开发板一块

y 下载数据线一条

y 接入互联网的电脑一台(推荐使用 Google Chrome 或者 Firefox 浏览器)

2.2 动手进行拼插编程

2.2.1 实现滚动显示“Hello World!”

① 打开官方网站 http://www.turnipbit.com/ (如图 2-1 所示), 点击“开始编程”

按钮进入编程界面,开始学习基础的模块化拼插编程,如图 2-2 所示。

② 在左侧的块选择区找到“显示”块,用鼠标选中 ,如图 2-3 所示。

拖曳至模块编辑区,如图 2-4 所示。

③ 保持程序名 TurnipBit 不变,点击“下载 hex”按钮将程序保存到电脑中,如图 2-5 所示。

把所保存的 HEX 文件拖入 TURNIPBIT 磁盘中,我们会看到 TurnipBit 板子上的灯在闪烁,说明正在下载到控制板中。下载成功后,会看到程序正常运行,如图 2-6 所示。

【思考】

细心的同学会发现滚动的“ Hello World! ”只显示了一次,而实际生活中的LED 广告牌是如何显示的呢?

比如按一下“重置”按键看看会发生什么情况呢?那么如何制作出可以循环滚动显示的 LED 广告牌呢?

2.2.2 实现循环滚动显示“Hello World!”

① 在左侧的块选择区找到“循环”块,用鼠标选中 ,拖曳至模块编辑区,如图 2-7 所示。

② 把“滚动消息”拖到“重复 10 次”中,表示循环 10 次,如图 2-8 所示。

③ 保持程序名 TurnipBit 不变,点击“下载 hex”按钮将程序保存到电脑中,如图 2-9 所示。

把所保存的 HEX 文件拖入 TURNIPBIT 磁盘中,我们会看到 TurnipBit 板子上的灯在闪烁,说明正在下载到控制板中。下载成功后,会看到程序正常运行。

【思考】

发现有什么变化了吗?

有没有一直进行循环显示的方法?这个问题留给同学们自己研究。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐