KiQ笑话猫或我们如何制作成人有声玩具
世界上有数量惊人的儿童发声玩具,这只会给成年人带来无聊的印象。我们的团队决定纠正这种情况。故事的开始
一切始于这样一个事实:我的一个朋友和一个网蜗牛同事的脑海里浮现出一个聪明的主意:为什么不但要小孩,还要让成年人逗笑主题笑话?负担得起的,久经考验的熨斗的好处现在从来都不是稀罕的,它不仅可以随着灯光闪烁,而且还可以唱歌。在这方面,他打电话给我,并提出要重复史诗般的壮举,以确保ESP8266在网络上播放MP3音乐,以确保它很好,并且如果仓鼠被撕成碎片,是否真的有足够的性能,这是我在2016年新年假期中做到的:ESP8266在视频上播放互联网广播,并通过I2S hack使用5位PWM输出声音。然而,从互联网贵霜播放MP3收音机几乎所有的资源ESP8266,听起来“马马虎虎”,而想象力已经吸引了我们更多的东西不仅仅是一个MP3收音机列。有了这些创造性的动力,我们来到了团队和心爱的厨师弗拉基米尔(Vladimir)。经过一番脑力激荡,我们不仅想要而且可以做到的更加详细的图片甚至逻辑链:- 为了用更少资源和更自由的方式替换MP3,我们停在Speex,flexxnn成功并迅速地移植到了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的魔力
同时,flexxnn将Fatfs的Speex,FatFs移植到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