bom2buy 魔方是一个可编程设备。从外观看,它结构简单,没有任何按钮或显示屏,其实它的底部和机身配有多种 LED,同时还配有麦克风、加速计和 USB 接口。

魔方开箱即用,在您学会编程后还可以体验更多有趣的功能。

 


说明
首先,您可以在魔方的底部看到 10 个随机闪亮的白色 LED。当拿在手里时,魔方有时会灯光闪烁。观察一会儿您就可以发现,每当有人拍手、击打或周围有很大噪声时,指示灯就会闪烁,这其实表明了魔方内部有麦克风,我们可以通过声音来控制它的 LED。
 

部件

 

                       

连接计算机
如果将魔方与计算机建立通信,就可以支持更多功能。通信通过虚拟串行端口执行,因此,如果计算机配有串口终端软件 (RealTerm 或类似软件),可以发送一个命令到魔方,它将给您返回相应的状态或数据。串口通信配置为 9600、8、N、1。这个串口用于向魔方发送命令或参数,获取状态、切换模式、开关指示灯等。不要忘记每个命令后面设置自动 CR 和 LF 字符,因为魔方的固件通过每个命令后面的这种字符进行识别。


命令行不区分大小写,可以包含一个命令字 (或缩写)、一个 (可选) 单字符操作数或一个 (可选) 数值数据,彼此之间用空格隔开。除了 HELP (帮助) 命令,所有命令缩写均为两个字符。HELP (帮助) 命令的缩写由一个问号代替。因此,如果输入“?” (然后输入 <CR> 和 <LF> ),将显示 HELP (帮助) 屏幕。

如下图所示:
 


上图的帮助信息可供您了解魔方可以执行的操作。当然啦,还有一些独立功能是不需要通过终端软件操作的。不过,USB 连接还是有必要的,至少您需要将魔方连接到电源。也就是说,您需要使用 USB 线将魔方连接到计算机,或者连接到 USB 充电器。

基本功能
魔方内置两种指示灯。一种位于魔方底部,由 10 个 LED 组成,称为副灯;另一种位于魔方顶部,由 5 个大功率 LED 组成,称为主灯。默认状态下,底部指示灯随机闪烁,可以通过模式(MODE) 命令 关闭 (OFF) 或永久打开 (ON),可设置 R (随机)、P (永久) 或 D (熄灭)。默认状态下,顶部指示灯常亮 (MODE 1) ,它也可以被关闭 (MODE 2)、逆时针依序发亮 (MODE 3)、顺时针依序发亮 (MODE 4) 或闪烁 (MODE 5)。请注意,每个命令可输入双字符缩写代替。

您也可以拍手或拍打桌子上的物体切换模式。通过这种方式操作时,必须分别记录每个模式的拍打方式,这些方式是开关指示灯的“密码”。我们在后面的“拍打方式编程”中再谈。

状态 (STATUS) 命令用于读取魔方当前状态: 起始阈值 (Attack)、衰减阈值 (Decay)、通知时长 (Notification)、延迟系数 (Speed) 和模式 (Mode)。所有列出的参数都可以通过输入 DEFAULT 来重置默认状态,我们会在后面的“高级命令”中详谈这些参数。

魔方内置加速计 MEMS 传感器,它检测 X、Y 和 Z 轴的重力加速度,从而感知魔方的角度位置。输入 ACCEL,可以读取魔方当前位置。ACCEL_LOOP 命令以无限循环方式执行相同的操作,您可以看到魔方旋转和移动过程中,这些参数的变化。循环可通过发送字符 Q 终止 (这是唯一不需要 <CR> 和 <LF> 就可以发出的命令)。

正常操作期间,魔方每次转到新位置时发送位置更改信息。试着翻转一下魔方,它将显示‘Cube Left’ (即魔方的左面朝下放置)、‘Cube Right’、‘Cube Bottom’等信息。此外,每种模式通过拍打方式改变后,将显示“Clap 1” (即拍打方式 1 被魔方识别) 、“Clap 2” 等。两个选项都可通过 MODE N 关闭,第一个选项可通过 MODE S (Side) 打开,第二个选项可以通过 MODE C (Clap) 打开。

拍打方式编程
想要通过编程让主灯按某种拍打方式亮起 (MODE 1) ,需将魔方的左侧朝下放置。如果已连接到计算机,终端软件将显示 "Cube Left"。同时,主灯亮一段时间 (这个时间段可以通过 NOTIF 命令来设置),然后熄灭。现在,您可以拍手、打响指或用硬物或指甲轻轻敲打桌面(拍打的时间间隔才是唯一重要的参数,而不是拍打的力度)。拍打方式应该为 3 到 31 下,否则不会被接受。完成拍打方式编程后静等一会儿,直到魔方灯光重复相同的方式。然后,将魔方放回到正立位置 (底部向下),测试是否正常工作。所有可用模式最多可用五种拍打方式进行编程。以下列表是各模式对应的灯光效果和编程时需要将魔方放置的位置。

MODE1    主灯亮    左面朝下放置
MODE2    主灯灭    右面朝下放置
MODE3    主灯逆时针依序发亮    前面朝下放置
MODE4    主灯顺时针依序发亮    后面朝下放置
MODE5    主灯闪烁    上面朝下放置(倒置)


如果您忘了其中任何一种拍打方式,只需将魔方倾倒到对应的一侧,静等至少 3 秒钟, 魔方将使用灯光表示拍打方式。


如果不喜欢新的方式,可以重置魔方 (输入 PATTERN_RD,或断开然后重新连接 USB 插头),重新加载最后记录的拍打方式 (如果有通过 PATTERN_WR 命令保存的话)。当完成所有的拍打方式的编程 (或重新编程,因为可以多次编程) 后,您可能想将方式记录在内部非易失性 EEPROM 存储器中,这时您可以输入 PATTERN_WR 命令,当魔方下次连接电源时,将重新加载上次记录的拍打方式。

高级命令


以上命令可以让您设置声音的阈值,这个阈值将决定拍打的声音是否会被魔方识别。如果阈值过高,有些拍打不会识别;如果过低,环境噪声会被误识别为拍打。因此,必须将阈值调整到最佳水平。您可以分别调整起始阈值和和衰减阈值。起始和衰减阈值默认值分别为 80 和 60。

 
Drawing represents the waveform of the typical clap signal
NOTIF n 魔方位置变化后通知 (灯亮) 时长 (n × 13 ms)
当魔方从正立位置变动为其他位置时,例如进行拍打方式编程时将魔方倾向一侧,主灯会亮起一段时间,以表示记录拍打方式编程之前的保护期。这个时长可以使用此命令预设。默认的值是 110,也就是说 NOTIF 时长是 1.4 s。

SPEED n 定时功能延迟系数 (n = 延迟系数)
有些定时功能可以使用这个系数来达到延迟 (如 ACCEL_LOOP 和 MODE 5 闪烁功能)。默认延迟系数为 1。

GET_PATTERN n 在屏幕上显示拍打方式的计时 (n = MODE 1...5)
以十进制 ASCII 数字列出所编程模式 n 的拍打方式的计时 (以 13 ms 为一个时段)。注意,计时数会少于拍打数,因为最后一次拍打后的计时是无限的。总共有 31 个时段,记录有若干拍打数,所有未使用的时段表示为零。

PUT_PATTERN n 上传拍打方式 (n = MODE 1...5)
您可以采用十进制 ASCII 数字编写好拍打方式的计时,然后上传到魔方。编写好后上传,和用拍打方式编程 (Pattern Programming) 来编写,是一样的效果。上传的代码格式应当和 GET_PATTERN 命令中所述展示的格式相同。

MODE n 设置模式和选项
MODE 命令后面只能跟一个参数。如果是数字 1…5,则会将模式 (MODE) 分别设置为 1...5。如果是字符 R、P 或 D,则会将副灯分别设置为随机、永久或熄灭 (关闭) 状态。如果是 S、C 或 N,魔方将会分别被重设为侧面亮 (Side ON)、拍打亮 (Clap ON) 或者侧面和拍打都关闭 (Side and Clap OFF)。(当魔方旋转到新位置并且识别出有效的拍打方式时,魔方不会将报告发送到终端)。

PATTERN_WR 所有拍打方式写入内部 EEPROM
这个命令将所有拍打方式从易失性 RAM 复制到内部非易失性 EEPROM。执行 PATTERN_WR 命令时,以前保存的拍打方式不再使用,新方式将在下一次接通电源时加载。

PATTERN_RD 从内部 EEPROM 读取所有拍打方式
将所有拍打方式从内部非易失性 EEPROM 读入 RAM。每次接通电源时自动执行这个命令。

WRITE 将参数写入内部 EEPROM
将这些参数从易失性 RAM 复制到内部非易失性 EEPROM: 起始阈值 (Attack)、衰减阈值 (Decay)、通知时长 (Notification)、延迟系数 (Speed) 和模式 (Mode)。执行 PATTERN_WR 命令时, 以前保存的参数不再使用,新参数将在下一次接通电源时加载。

READ 从内部 EEPROM 中读取参数
将这些参数从内部非易失性 EEPROM 读入 RAM: 起始阈值 (Attack)、衰减阈值 (Decay)、通知时长 (Notification)、延迟系数 (Speed) 和模式 (Mode)。每次接通电源时自动执行这个命令。

STATUS 显示当前状态
在屏幕上显示这些状态参数:起始阈值 (Attack)、衰减阈值 (Decay)、通知时长 (Notification)、延迟系数 (Speed) 和模式 (Mode)。

DEFAULT 恢复出厂默认值
所有参数将预设为默认值,并删除所有拍打方式。

出品方
所有电子产品 (电路板、固件) 由 Voja Antonic 开发,外壳由 Giovanni Salinas 在加利福尼亚州帕萨迪纳 Supplyframe 设计实验室设计和开发。

 

关于魔方的 1.0 版本,你可以在《一个小方块颠覆工程是想象,它能做的不只是个控制器》这篇文章中看到详细信息。

 

与非网原创内容,未经许可,不得转载!

 

有人说硬件技术将很快达到极限,而在我们看来,硬件创新,尤其是中国硬件工程师的创新,还远未走到尽头,而只是刚刚开始。作为致力于为全球硬件开发者提供技术共享服务的平台,与非网母公司 SupplyFrame 旗下最大的全球硬件开发者社区 Hackaday.com 已连续五年举办全球硬件开发者大赛 Hackadayprize,有超过 3000 多个硬件团队在这个赛事中互动交流、切磋技艺。


这个《硬件改变世界》系列,我们挑选在前几届 Hackadayprize 大赛中获奖的优秀作品加以展示,硬件技术可以多有意思,硬件开发者可以多有创意,从这些作品中你可以看到。

2019 年 3 月,Hackadayprize 中国区赛事将隆重开启,我们很期待看到国内的硬件开发者大开脑洞、大展技艺。你准备好了没,与来自全球的硬件开发者同台 PK?