KiQ joke cat ou comment nous avons fabriqué un jouet parlant pour adultes
Dans le monde, il y a une quantité incroyable de jouets parlants pour les enfants et cela ne fait que donner l'impression que les adultes s'ennuient. Notre équipe a décidé de rectifier cette situation.Le début de l'histoire
Tout a commencé avec le fait qu'une pensée brillante est venue à l'esprit curieux d'un de mes amis et d'un collègue de netnet : pourquoi pas seulement des enfants, mais aussi des adultes pour amuser des blagues thématiques? L'avantage du fer abordable et bien éprouvé n'est désormais jamais une rareté, et il peut non seulement clignoter avec des lumières, mais aussi chanter des chansons .À cet égard, il m'a appelé et m'a proposé de répéter l'exploit épique pour m'assurer que ESP8266 joue de la musique MP3 sur le réseau afin que ce soit bon et que si le hamster se déchire, y a - t - il vraiment assez de performances, ce que j'ai fait lors d'un rapide congé du Nouvel An en 2016:ESP8266 joue une radio Internet sur la vidéo, émettant du son en utilisant le PWM 5 bits via le piratage I2S.Cependant, la lecture de la radio MP3 à partir d'Internet a consommé la quasi-totalité de la ressource ESP8266 et sonnait "so-so", alors que l'imagination nous attirait déjà quelque chose de plus qu'une simple colonne de radio MP3. Avec ces impulsions créatives, nous sommes allés à notre équipe et au chef bien-aimé Vladimir .Après un petit brainstorming, une image plus détaillée et même une chaîne logique de ce que nous voulons non seulement, mais pouvons faire:- Pour remplacer MP3 par quelque chose de moins gourmand en ressources et plus libre, nous nous sommes arrêtés chez Speex , que flexxnn a porté avec succès et rapidement sur ESP8266.
- SD , .. , ESP8266 — .
- « » - , random . , . Apple Notification Center Service (ANCS), iPod, iPhone iPad.
- Bluetooth Low Energy (BLE), .
- . Pawn language.
- , — «» «» (), - .
Au départ, je voulais créer un prototype très simple mais pleinement fonctionnel sur une carte tout-en-un, nous avons donc décidé d'essayer MediaTek sur LinkIt ONE . Et netsnail a presque immédiatement réussi. Il y avait une connexion avec le téléphone et la carte SD MP3 jouait parfaitement.Il semblerait - ici, c'est le bonheur et une plate-forme prête à l'emploi! Mais ensuite, nous avons été confrontés à la dure réalité des limites de leur SDK fermé et l'euphorie est passée.Nous avons réalisé que la plate-forme finie sur une planche, satisfaisant tous nos souhaits, n'était pas dans la nature, ce qui signifie que nous devions la créer à partir de zéro.Nous avons donc dû choisir (février 2016) la puce BLE la plus adaptée, qui devait être connectée à l'ESP8266. En tant que connexion entre l'ESP8266 et la puce BLE (nous ne savions pas encore de quel type de puce il s'agissait), nous avons décidé d'utiliser le TWI standard (I2C).Mais avec BLE, le choix n'était pas très grand alors:- TI CC2541 - Je ne l' aimais pas tout de suite en raison de l'architecture de 8051 , et 8 Ko de RAM semblaient une vie facile sans promesse, compte tenu du nombre de services BLE et des caractéristiques dont nous avions besoin dans le jouet.
- BCM20732 - cela semblait très prometteur, mais en fait le SDK s'est avéré très grossier, et le "trousseau" Broadcom WICED Smart BLE est tellement bogué que je n'écrirai rien ici pour ne pas jurer. Faites-moi savoir si la situation s'est améliorée maintenant.
- nRF52832 — , . BLE — rekod , SDK , . BLE ANCS iPhone UART. SEGGER J-Link, .
- nRF51822 — , SEGGER nRF52832. — nRF52832 nRF51822 !
En conséquence, le premier fer ressemblait à une araignée tarentule quelque chose comme ceci: il
était très triste d'attraper des problèmes en raison de la chute de câbles Dupont, en particulier sur le module nRF51822, où les broches étaient un peu plus petites.Services BLE sur nRF51822 et application iOS
Néanmoins, affaire et moi déjà sur ce fer araignée avons commencé à implémenter les services et fonctionnalités BLE sur nRF51822, divisant le tout en deux:- Service Apple Notification Center ( ANCS ) - pour recevoir des notifications d'événements d'un smartphone.
- Apple Current Time Service (CTS) - une fois connecté, le jouet prend du temps sur le téléphone.
- HandShake Service (HSS) — , , «» . , lientID pair Bluetooth, , . , .
- Battery As Service (BAS) — .
- Content Service (CONTS) — , ( ).
- Settings Service (SETTS) — , (, ) ..
MaximKit faisait en même temps une application pour iOS .
L'image de droite montre l'écran principal de l'application.Ici, flexxnn n'a pas pu supporter nos souffrances en raison de la chute de fils et a fabriqué le premier prototype normal à la maison avec un fer à repasser laser :
il n'est pas visible sur la photo, mais il y a déjà un emplacement pour carte microSD. Sur le petit châle carré ci-dessous - ALC5627 , le son était déjà bien meilleur que le PWM 5 bits via I2S. AXP209 a étéchoisi pour la gestion de l' alimentation. Vous permet de charger et d'utiliser la batterie en même temps, ainsi que de surveiller son état. La puce est très courante, mais possède de nombreuses spécificités à la fois dans la programmation et dans les composants externes requis, les soi-disant "Harnais".Magie sur l'ESP8266
Parallèlement à cela, flexxnn a porté Speex , FatFs sur l'ESP8266, a fait un chargeur de démarrage pour l'ESP8266 et le nRF51822 afin qu'il soit possible de ne pas mettre à jour le firmware par fil, mais pour ce faire en plaçant les fichiers du firmware sur une carte microSD.Personnellement, il me semble que les extraterrestres l'ont aidé, puisqu'il a fait tout cela en un mois environ. Mais il n'admet pas être en contact avec un esprit étranger.Et puis le deuxième prototype plus normal:
Mais le prototype plus normal n'est plus monté dans une peluche. Et même s'il montait, alors avec un mouvement brusque sur un utilisateur potentiel à partir d'un jouet, un «étranger» grimperait, ce qui bien sûr était inacceptable pour MVP.Par conséquent, il a été décidé de facturer des honoraires aux professionnels et c'est ce qui s'est produit en conséquence:
Un tel design s'intègre déjà parfaitement dans le chat, bien qu'il semble en quelque sorte inhumain:
En même temps, les craintes ont été confirmées que les événements du téléphone pourraient arriver assez souvent et en conséquence, l'utilisateur serait ennuyé au lieu de s'amuser. Une logique de filtrage flexible était nécessaire, qui peut être facilement modifiée à tout moment sans clignoter. À cet égard, après avoir étudié le matériel et réalisé qu'il n'y a pas de scripts rapides et compacts pour ESP8266 (Lua et microPython sont des interprètes), j'ai décidé de porter le langage Pawn , qui exécute rapidement (seulement 18 fois plus lentement que le natif) un bytecode compact.Soit dit en passant, les sources Pawn sont très similaires à C, c'est donc un plaisir de modifier les scripts - il suffit de les compiler en bytecode AMX et de les copier sur une carte SD.Gadgets de triche. Faire semblant d'être iOS sur Android
Et puis «soudainement», nous nous sommes tous souvenus que les téléphones Android dans le monde n'étaient pas si petits, mais encore plus que les téléphones avec iOS.En conséquence, j'ai dû ralentir pour vérifier si nous pouvions tromper les gadgets et faire semblant d'être iOS sur Android afin qu'ils voient le service ANCS indiscernable d'Apple.En fin de compte, tout a fonctionné et après une semaine, les gadgets (et notre chat ne fait pas exception) ont sincèrement cru que j'avais un iPhone avec un service ANCS, se connectant à mon Nexus 5 et même à l'ancien Samsung Galaxy avec Android 4.4.Passez au cloud
Étant donné que personne n'aime écouter une blague plusieurs fois (fait), et qu'il existe également des préférences et des restrictions culturelles, il a été décidé pour chaque utilisateur de créer une liste de lecture unique. Pour ce faire, l' affaire est venue à bout du serveur dans le cloud.Mais comment décider qui l'aimera? C'est vrai - laissez l'utilisateur décider! Pour ce faire, j'ai effectué une détection basique des gestes sur l'accéléromètre LIS3DH de STMicroelectronics. J'ai aimé la blague - j'ai incliné le chat, comme si "oui", je n'aimais pas la blague - j'ai incliné sur le côté, comme si "non". Et il a ajouté un "oublie-moi" pour le téléphone - si la connexion BLE disparaît et que l'accéléromètre détecte le mouvement, alors le chat est transporté quelque part et le téléphone a été oublié.Après que l'utilisateur «polikal» et ainsi désigné ses préférences - les informations vont à un serveur où les «génomes» des listes de lecture sont comparés et de nouveaux ensembles de blagues sont générés pour l'utilisateur. Mais c'est un sujet pour un article séparé.Résumé
En conséquence, le divertissement s'est avéré être une excellente plate-forme qui peut:- communiquer avec le téléphone via BLE et recevoir des notifications d'événements;
- communiquer via WiFi et télécharger le contenu et les mises à jour du firmware;
- enregistrer et lire des fichiers en FAT32 sur microSD;
- jouer des blagues remplies de codec speex;
- Déterminer les préférences de l'utilisateur à l'aide d'un accéléromètre (détection de gestes)
- créer des listes de lecture pour chaque utilisateur en fonction de ses préférences en matière d'humour;
Ce qui est remarquable, les «poignées très intelligentes» peuvent bien être connectées aux broches correspondantes (même les trous pour les connecteurs sur la carte sont laissés) et «sage le chat» comme bon leur semble. Cela rend la plate-forme tout-en-un attrayante pour les geeks.Avec cette plate-forme, nous sommes allés sur kickstarter, appelant le jouet fini KiQ. Le premier jour, 40% ont été collectés, et maintenant 57%. Mais c'est une histoire complètement différente.Merci à tous ceux qui ont lu cette ligne. En attente de questions intéressantes de votre part.Source: https://habr.com/ru/post/fr398389/
All Articles