Micro:bit on otto

Hello, otto otto 是个可爱的 Arduino 开源双足教育机器人项目。寒假前,福州哈雷创客空间的朋友找到我说希望整个 micro:bit(mbt) 的冬令营,本来想说之前做的RC车换个玩具车的底盘就能上了,结果被嫌弃说车子满大街,而且希望小朋友们能多学点东西,体现一点逼格。后来找来找去,发现 otto 还是比较合适。因为扯到动作的话,可以说是无底洞,够玩很久的。好吧,那就 otto 吧。 框架设计 接下活儿,就发现原来还是个不小的坑。因为主控还是 micro:bit,金手指部分的 IO 口其实少得可怜,除去鳄鱼夹口、按键、LED、i2c、SPI以后,只有 P8、P16 可用。还有 IDE 部分,makecode 在浏览器里拖来拖去感觉是很方便,但是也确实太占地方了……超过三层的嵌套看过去就是很大一坨了,而且传参数部分还有分行处理,平常一行的代码也会变得一大坨。写库的话,如果是这样,大家平时看不到,还是可以忍受,但是来小朋友来玩就不太合适了。 库的部分,也是不看不知道,一看吓一跳。内容其实也是很多,那最简单的舵机转至特定角度来说,本质是保持一个特定占空比的脉冲输出。在火车扳道这类的动作中,比较直接,只要一条指令就可以了,然后 PWM 保持住就可以了。而在机器人则全然不是这么一回事。这里有了速度的概念,在 5 秒和在 0.5 秒内从 0 度到 90 度,对于机器人来说,是完全不同的两个概念,前者可以实现一个金鸡独立的动作,而后者则会因为动作太快直接倒地。这里就出现了动作帧的概念。毕竟模拟舵机的命令周期是 25ms。那么基本就是每 25ms 有一个动作帧。一个 5 秒的连续动作,拆分成 5000 / 25 = 200 帧。 于是代码分为三层:1)最底层:保持 PWM 信号;2)中间层:拆分动作帧并发送至最底层;3)业务层:动作业务逻辑,发送到中间层。这里对于 mbt 以及 mbed 就有很多问题: PWM 口不足,其实也有看到实现了三只舵机驱动的版本。 哪怕通过 PCA9685 扩展 PWM 口,中间层感觉在 mbt 上感觉也不太容易实现,一方面:这部分有实时性很高,而 mbt 在接口部分已经经过了层层封装,而且看起来用的还是“高级语言”。 如果 microbit 这么忙的话,对于蓝牙连接等会不会有比较大的影响? 想来想去,还是觉得把底下两层外移,引入一块舵机板来解决问题。好在 mbt 的串口能转发到金手指上。至于舵机板呢?那就自己开发好了,反正手也痒了很久了。

RC Car with micro:bit

认识 micro:bit

The purpose of micro:bit is to encourage kids to learn how computers work, rather than simply consuming media on them.

这句关于 micro:bit 原理的介绍说得太好了,以至于直接把英文引用过来。micro:bit 的目的,是鼓励孩子们去学习计算机是如何工作的,而非仅仅消费计算机提供各种媒体。“消费”这个词用得很妙,计算机走进人们的生活,样子早不是原先的大块头,笔记本、手机、手表、电视等等。计算机真是无处不在,而我们在使用它的同时,正一步步沦为了“消费者”。真的是在“消费”呢,上面的内容那么丰富,各种游戏、视频、娱乐,应接不暇,消费都消费来不及呢。而 micro:bit 的期望,是希望新生代们对计算机的认识,不仅仅局限于“消费”,而更多的是在“研究”或是“学习”。有点像我早期开始玩电脑的阶段,虽然最终目的,可能也是为了更爽的“消费”,但软硬件各种知识也学了不少,现在能靠这个混饭吃,很大程度上归功于当年打下的基础。而如今,都快物联网了,各类计算机设备那么多,集成度越来越高,功能越来越强大,交互越来越“傻瓜”,新一代人可能再也无法体验想当年那种,一台电脑配置单研究几个月,硬件装一天,系统再装半天,然后,为了各种驱动还要不断折腾的年代了。

重新出发

建个新博客,之前的博客 aguegu.net 暂时还不会关闭,不过也是有不少问题: photobucket 关闭了免费图片的外链,导致很多图片现在看不到; WordPress 写东西还是太麻烦,基本都要用在线编辑器去写,而现在写东西都是在用 markdown 了; 在内容方面,主要还是太忙顾不上这一块,所以长草就比较厉害,想想距离当初建博客已经是6年前的事情,岁月说慢也慢,说快也快呢。虽然有点淡出江湖,但是,生活方面娶妻生子,工作方面也正式成为了一名程序开发人员,经历几家公司的洗礼,涉猎越来越广,现在终于也敢自称是“全栈程序员”了。 博客还是要写呢,回头看,写下来才是最好的沉淀,咱也试着用 Hugo 玩玩静态站咯。 希望在这里能结识新朋友,重逢老朋友。