KiQ笑话猫或我们如何制作成人有声玩具

Kiq玩具

世界上有数量惊人的儿童发声玩具,这只会给成年人带来无聊的印象。我们的团队决定纠正这种情况。

故事的开始


一切始于这样一个事实:我的一个朋友和一个网蜗牛同事的脑海里浮现出一个聪明的主意:为什么不但要小孩,还要让成年人逗笑主题笑话?负担得起的,久经考验的熨斗的好处现在从来都不是稀罕的,它不仅可以随着灯光闪烁,而且还可以唱歌

在这方面,他打电话给我,并提出要重复史诗般的壮举,以确保ESP8266在网络上播放MP3音乐,以确保它很好,并且如果仓鼠被撕成碎片,是否真的有足够的性能,这是我在2016年新年假期中做到的:


ESP8266在视频上播放互联网广播,并通过I2S hack使用5位PWM输出声音。

然而,从互联网贵霜播放MP3收音机几乎所有的资源ESP8266,听起来“马马虎虎”,而想象力已经吸引了我们更多的东西不仅仅是一个MP3收音机列。有了这些创造性的动力,我们来到了团队和心爱的厨师弗拉基米尔(Vladimir)

经过一番脑力激荡,我们不仅想要而且可以做到的更加详细的图片甚至逻辑链

  • 为了用更少资源和更自由的方式替换MP3,我们停在Speexflexxnn成功并迅速地移植到了ESP8266。

  • SD , .. , ESP8266 — .

  • « » - , random . , . Apple Notification Center Service (ANCS), iPod, iPhone iPad.

  • Bluetooth Low Energy (BLE), .

  • . Pawn language.

  • , — «» «» (), - .


最初,我想在一个多合一板上制作一个非常简单但可以正常工作的原型,因此我们决定在LinkIt ONE上尝试MediaTek。而netsnail几乎立即获得了成功。与手机建立了连接,并且SD卡MP3播放得很好。
似乎-这是幸福和现成的平台!但是随后,我们面临着封闭的SDK 局限性和欣喜若狂严峻现实

我们意识到,满足我们所有愿望的一块板上完成的平台不是自然的,这意味着我们必须从头开始创建它。

因此,我们不得不选择(2016年2月)最适合的BLE芯片,该芯片需要与ESP8266连接。作为ESP8266和BLE芯片之间的连接(我们尚不知道会是哪种芯片),我们决定使用标准的TWI(I2C)。

但是使用BLE时,选择不是很好:

  • TI CC2541-考虑到BLE服务的数量和玩具中所需的特性,由于8051的体系结构,我立即不喜欢它,并且8 Kb的RAM看起来寿命很短。

  • BCM20732-它看起来非常有前途,但实际上SDK却非常粗糙,而且Broadcom WICED Smart BLE“钥匙串”是如此的小巧,以至于我在这里不会写任何东西以免发誓。让我知道现在情况是否有所改善。

  • nRF52832 — , . BLE — rekod , SDK , . BLE ANCS iPhone UART. SEGGER J-Link, .

  • nRF51822, SEGGER nRF52832. — nRF52832 nRF51822 !

其结果是,第一铁看上去像蜘蛛狼蛛

铁蜘蛛

抓毛刺由于脱落杜邦电缆,特别是在nRF51822模块,其中pin'y尺寸略小,这是非常可悲的。

nRF51822和iOS应用程序上的BLE服务


尽管如此,事情和我已经在这个蜘蛛网上开始在nRF51822上实现BLE服务和功能,将所有内容一分为二:

  • Apple Notification Center服务(ANCS)-用于从智能手机接收事件通知。
  • 苹果当前时间服务(CTS)-连接后,玩具会从手机上花费时间。
  • HandShake Service (HSS) — , , «» . , lientID pair Bluetooth, , . , .
  • Battery As Service (BAS) — .
  • Content Service (CONTS) — , ( ).
  • Settings Service (SETTS) — , (, ) ..

同时,MaximKit正在为iOS开发一个应用程序

图片
右图显示了该应用程序的主屏幕。

在这里,flexxnn因电线脱落而无法忍受我们的痛苦,并在家中用激光熨斗制作了第一个普通原型:

第一个或多或少的原型

照片中看不到它,但是那里已经有一个microSD卡插槽。ALC5627下方的小方形披肩上,声音已经比通过I2S的5位PWM好得多。

选择AXP209进行电源管理使您可以同时为电池充电和使用,以及监视其状态。该芯片非常普遍,但是在编程和所需的外部组件方面都有很多细节,所谓的 “线束”。

ESP8266的魔力


同时,flexxnnFatfs的SpeexFatFs移植到ESP8266,为ESP8266和nRF51822制作了引导加载程序,这样就可以不通过有线方式更新固件,而是通过将固件文件放在microSD卡上来进行更新。

就我个人而言,在我看来,外星人帮助了他,因为他在大约一个月内完成了所有这一切。但是他不承认与外星人的思想接触。

然后是第二个更普通的原型:

第一个或多或少的原型

但是,更普通的原型不再爬进毛绒玩具中。即使他进入,然后随着潜在用户从玩具中猛烈移动,“陌生人”也会爬升,这对于MVP当然是不可接受的。

因此,决定向专业人员收取费用,结果是这样:

图片

尽管看起来有些不人道,但这种设计已经非常适合猫的使用:

图片

同时,人们担心会发生电话事件的发生,因此用户会感到烦恼而不是乐趣。需要灵活的过滤逻辑,可以随时轻松更改而不闪烁。在这方面,研究了材料并意识到ESP8266没有快速紧凑的脚本(Lua和microPython是解释器)后,我决定移植Pawn语言,该语言很快(仅比本地语言慢18倍)执行紧凑的字节码。

顺便说一下,Pawn源代码与C非常相似,因此很高兴修改脚本-只需将其编译为AMX字节码并将其复制到SD卡即可。

作弊的小工具。假装是Android上的iOS


然后“突然”我们都记得世界上的Android手机并没有那么小,甚至比带有iOS的手机还要多。

结果,我不得不加快步伐,检查我们是否可以愚弄小工具,并假装自己是Android上的iOS,以便他们看到ANCS服务与Apple并无区别。

最后,一切顺利,一周后,这些小工具(我们的猫也不例外)真诚地认为我拥有一部带有ANCS服务的iPhone,可以连接到Nexus 5甚至是旧的装有Android 4.4的三星Galaxy。

去云


由于没有人喜欢多次听一个笑话(事实),并且也有喜好和文化限制,因此决定为每个用户创建一个唯一的播放列表。为此,事务与云中的服务器息息相关。

但是如何决定谁会喜欢呢?是的-让用户决定!为此,我对意法半导体LIS3DH加速度计进行了基本的手势检测。我喜欢这个笑话-我倾斜了猫,好像是“是”,我不喜欢这个笑话-我侧身倾斜了,好像在“否”。然后,他为手机添加了一个“勿忘我”功能-如果BLE连接消失,并且加速度计检测到运动,则说明猫被抬到某个地方,并且手机也被遗忘了。

在用户“保持警惕”并由此表明他的喜好之后,该信息进入服务器,在服务器中比较播放列表的“基因组”,并为用户生成新的笑话集。但这是另一篇文章的主题。

总结


结果,娱乐成为一个出色的平台,可以:

  • 通过BLE与电话通信并接收事件通知;
  • 通过WiFi进行通信并下载内容和固件更新;
  • 在microSD上的FAT32中保存和读取文件;
  • 玩带有speex编解码器的笑话;
  • 使用加速度计确定用户的偏好(手势检测)
  • 根据每个用户的喜好形成播放列表;

值得注意的是,“非常聪明的手柄”很可能已连接到相应的引脚上(甚至板上的连接器的孔都留了下来),并且可以随意“向上抬起猫”。这使得多功能平台吸引了极客。

在这个平台上,我们进行了kickstarter,将成品玩具称为KiQ。在第一天,收集了40%,现在收集了57%。但这是一个完全不同的故事。

感谢所有阅读这一行的人。等待您的有趣问题。

Source: https://habr.com/ru/post/zh-CN398389/


All Articles