KiQ Witzkatze oder wie wir ein sprechendes Spielzeug für Erwachsene gemacht haben
Auf der Welt gibt es unglaublich viele sprechende Spielzeuge für Kinder, und dies macht nur den Eindruck, dass Erwachsene sich langweilen. Unser Team hat beschlossen, diese Situation zu korrigieren.Der Anfang der Geschichte
Angefangen hat alles damit, dass ein Freund von mir und ein Netznagelkollege einen hellen Gedanken hatten: Warum nicht nur Kinder, sondern auch Erwachsene, um thematische Witze zu amüsieren? Der Vorteil von erschwinglichem und bewährtem Eisen ist heute keine Seltenheit mehr und es kann nicht nur mit Lichtern blinken, sondern auch Lieder singen .In diesem Zusammenhang rief er mich an und bot mir an , das epische Kunststück zu wiederholen, um sicherzustellen, dass ESP8266 MP3-Musik im Netzwerk wiedergibt, damit es gut ist und wenn der Hamster in Stücke reißt, gibt es wirklich genug Leistung, die ich in einem kurzen Neujahrsurlaub 2016 gemacht habe:Der ESP8266 spielt ein Internetradio auf dem Video ab und gibt den Ton mithilfe des 5-Bit-PWM über einen I2S-Hack aus.Das Abspielen von MP3-Radio aus dem Internet verbrauchte jedoch fast die gesamte ESP8266-Ressource und klang "so lala", während die Fantasie uns bereits mehr als nur eine MP3-Radiosäule anzog. Mit diesen kreativen Impulsen gingen wir zu unserem Team und geliebten Koch Vladimir .Nach einem kleinen Brainstorming, einem detaillierteren Bild und sogar einer logischen Kette dessen, was wir nicht nur wollen, sondern können:- Um MP3 durch etwas zu ersetzen, das weniger Ressourcen beansprucht und freier ist, haben wir bei Speex Halt gemacht , das flexxnn recht erfolgreich und schnell auf ESP8266 portiert hat .
- SD , .. , ESP8266 — .
- « » - , random . , . Apple Notification Center Service (ANCS), iPod, iPhone iPad.
- Bluetooth Low Energy (BLE), .
- . Pawn language.
- , — «» «» (), - .
Ursprünglich wollte ich einen sehr einfachen, aber voll funktionsfähigen Prototyp auf einem All-in-One-Board erstellen . Deshalb haben wir uns entschlossen, MediaTek auf LinkIt ONE zu testen . Und Netsnail war fast sofort erfolgreich. Es bestand eine Verbindung zum Telefon und von der SD-Karte wurde MP3 perfekt abgespielt.Es scheint - hier ist es Glück und eine fertige Plattform! Aber dann wurden wir mit der harten Realität der Einschränkungen ihres geschlossenen SDK konfrontiert und die Euphorie ging vorbei.Wir stellten fest, dass die fertige Plattform auf einem Board, die alle unsere Wünsche erfüllte, nicht in der Natur lag, was bedeutet, dass wir sie von Grund auf neu erstellen mussten.Daher mussten wir (Februar 2016) den am besten geeigneten BLE-Chip auswählen, der mit dem ESP8266 verbunden werden musste. Als Verbindung zwischen dem ESP8266 und dem BLE-Chip (wir wussten noch nicht, um welche Art von Chip es sich handelt) haben wir uns für den Standard-TWI (I2C) entschieden.Aber mit BLE war die Auswahl damals nicht sehr groß:- TI CC2541 - Aufgrund der Architektur von 8051 hat es mir irgendwie nicht sofort gefallen , und 8 KB RAM sahen angesichts der Anzahl der BLE-Dienste und -Eigenschaften, die wir für das Spielzeug benötigten, vielversprechend einfach aus.
- BCM20732 - es sah sehr vielversprechend aus, aber tatsächlich erwies sich das SDK als sehr grob, und der Broadcom WICED Smart BLE-Schlüsselbund ist so fehlerhaft, dass ich hier nichts schreibe, um nicht zu schwören. Lassen Sie mich wissen, ob sich die Situation jetzt verbessert hat.
- nRF52832 — , . BLE — rekod , SDK , . BLE ANCS iPhone UART. SEGGER J-Link, .
- nRF51822 — , SEGGER nRF52832. — nRF52832 nRF51822 !
Infolgedessen sah das erste Bügeleisen wie eine Tarantelspinne aus : Es
war sehr traurig, Störungen zu erkennen, die durch das Herunterfallen von Dupont-Kabeln entstanden waren, insbesondere beim nRF51822-Modul, bei dem die Stifte etwas kleiner waren.BLE-Dienste für nRF51822- und iOS-Anwendungen
Trotzdem haben Affäre und ich bereits mit diesem Spinneneisen begonnen, BLE-Dienste und -Funktionen auf nRF51822 zu implementieren, wobei alles in etwa die Hälfte geteilt wurde:- Apple Notification Center Service ( ANCS ) - zum Empfangen von Ereignisbenachrichtigungen von einem Smartphone.
- Apple Current Time Service (CTS) - Wenn die Verbindung hergestellt ist, benötigt das Spielzeug Zeit vom Telefon.
- HandShake Service (HSS) — , , «» . , lientID pair Bluetooth, , . , .
- Battery As Service (BAS) — .
- Content Service (CONTS) — , ( ).
- Settings Service (SETTS) — , (, ) ..
Gleichzeitig erstellte MaximKit eine Anwendung für iOS .
Das Bild rechts zeigt den Hauptbildschirm der Anwendung.Hier konnte flexxnn unser Leid nicht ertragen, weil Kabel herunterfielen und der erste normale Prototyp mit einem Lasereisen zu Hause hergestellt wurde :
Er ist auf dem Foto nicht sichtbar, aber dort befindet sich bereits ein microSD-Kartensteckplatz. Auf dem kleinen quadratischen Schal unten - ALC5627 - war der Klang bereits viel besser als beim 5-Bit-PWM über I2S. AXP209 wurdefür die Energieverwaltung ausgewählt. Ermöglicht das gleichzeitige Laden und Verwenden des Akkus sowie das Überwachen des Zustands. Der Chip ist sehr verbreitet, hat aber viele Besonderheiten sowohl bei der Programmierung als auch bei den erforderlichen externen Komponenten, den sogenannten "Geschirr".Magie auf dem ESP8266
Parallel zu dieser flexxnn zu ESP8266 portierte die Speex , FATFS , machte Bootloader für ESP8266 und nRF51822, so dass Sie nicht die aktualisierte Firmware auf dem Draht nähen, und es zu tun , indem Sie auf einer microSD - Karte Firmware - Dateien setzen.Persönlich scheinen ihm Außerirdische geholfen zu haben, da er dies alles in ungefähr einem Monat getan hat. Aber er gibt nicht zu, mit einem fremden Geist in Kontakt zu sein.Und dann der zweite normalere Prototyp:
Aber der normalere Prototyp kletterte nicht mehr in ein Stofftier. Und selbst wenn er einstieg, würde mit einer scharfen Bewegung eines potenziellen Benutzers von einem Spielzeug aus ein „Fremder“ klettern, was für MVP natürlich nicht akzeptabel war.Aus diesem Grund wurde beschlossen, Fachleuten eine Gebühr aufzuerlegen, und dies geschah als Ergebnis:
Ein solches Design passt bereits perfekt in die Katze, obwohl es irgendwie unmenschlich aussieht:
Gleichzeitig wurden Befürchtungen bestätigt, dass Ereignisse vom Telefon ziemlich häufig auftreten könnten und der Benutzer sich dadurch eher ärgern als Spaß machen würde. Es war eine flexible Filterlogik erforderlich, die jederzeit leicht geändert werden kann, ohne zu blinken. Nachdem ich das Material studiert und festgestellt hatte, dass es für ESP8266 keine schnellen und kompakten Skripte gibt (Lua und microPython sind Interpreter), entschied ich mich, die Pawn-Sprache zu portieren , die schnell (nur 18-mal langsamer als die native) einen kompakten Bytecode ausführt.Übrigens sind Pawn-Quellen C sehr ähnlich, daher ist es eine Freude, die Skripte zu ändern - Sie müssen sie nur in AMX-Bytecode kompilieren und auf die SD-Karte kopieren.Betrugsgeräte. Gib vor, iOS auf Android zu sein
Und dann „plötzlich“ erinnerten wir uns alle daran, dass Android-Handys auf der Welt nicht so klein sind, sondern sogar mehr als Handys mit iOS.Infolgedessen musste ich auf und ab gehen, um zu prüfen, ob wir Gadgets zum Narren halten und so tun können, als wären wir iOS auf Android, damit der ANCS-Dienst nicht von Apple zu unterscheiden ist.Am Ende hat alles geklappt und nach einer Woche glaubten die Geräte (und unsere Katze ist keine Ausnahme) aufrichtig, dass ich ein iPhone mit ANCS-Dienst hatte, das eine Verbindung zu meinem Nexus 5 und sogar zum alten Samsung Galaxy mit Android 4.4 herstellte.Geh Wolke
Da niemand gerne mehrmals einen Witz hört (Tatsache) und es auch Vorlieben und kulturelle Einschränkungen gibt, wurde für jeden Benutzer entschieden, eine eindeutige Wiedergabeliste zu erstellen. Zu diesem Zweck hat sich die Affäre mit dem Server in der Cloud auseinandergesetzt.Aber wie soll man entscheiden, wem es gefällt? Das ist richtig - lassen Sie den Benutzer entscheiden! Zu diesem Zweck habe ich eine grundlegende Gestenerkennung am LIS3DH- Beschleunigungsmesser von STMicroelectronics durchgeführt. Ich mochte den Witz - ich kippte die Katze, als ob "Ja", ich mochte den Witz nicht - ich kippte zur Seite, als ob "Nein". Und er fügte ein "Vergissmeinnicht" für das Telefon hinzu - wenn die BLE-Verbindung verschwindet und der Beschleunigungsmesser Bewegungen erkennt, wird die Katze irgendwohin getragen und das Telefon wurde vergessen.Nachdem der Benutzer „polikal“ und damit seine Präferenzen festgelegt hat, werden die Informationen an einen Server gesendet, auf dem die „Genome“ von Wiedergabelisten verglichen und neue Sätze von Witzen für den Benutzer generiert werden. Dies ist jedoch ein Thema für einen separaten Artikel.Zusammenfassung
Infolgedessen erwies sich die Unterhaltung als eine hervorragende Plattform, die:- über BLE mit dem Telefon kommunizieren und Ereignisbenachrichtigungen erhalten;
- Kommunikation über WLAN und Herunterladen von Inhalten und Firmware-Updates;
- Speichern und Lesen von Dateien in FAT32 auf microSD;
- Spiele Witze mit Speex-Codec;
- Bestimmen Sie die Benutzereinstellungen mithilfe eines Beschleunigungsmessers (Gestenerkennung).
- Erstellen Sie Wiedergabelisten für jeden Benutzer basierend auf seinen Vorlieben für Humor.
Was bemerkenswert ist, können „sehr intelligente Griffe“ durchaus mit den entsprechenden Stiften verbunden werden (sogar Löcher für die Anschlüsse auf der Platine bleiben übrig) und „die Katze weise machen“, wie es ihnen gefällt. Dies macht die All-in-One-Plattform für Geeks attraktiv.Mit dieser Plattform gingen wir auf Kickstarter und nannten das fertige Spielzeug KiQ. Am ersten Tag wurden 40% und jetzt 57% gesammelt. Aber das ist eine ganz andere Geschichte.Vielen Dank an alle, die diese Zeile gelesen haben. Warten auf interessante Fragen von Ihnen.Source: https://habr.com/ru/post/de398389/
All Articles