KiQ bercanda kucing atau bagaimana kami membuat mainan berbicara untuk orang dewasa

Mainan kiq

Di dunia ada banyak sekali mainan untuk anak-anak dan ini hanya membuat orang dewasa merasa bosan. Tim kami memutuskan untuk memperbaiki situasi ini.

Awal cerita


Semuanya berawal dari fakta bahwa sebuah pemikiran cemerlang muncul di benak seorang teman saya dan seorang rekan netsnail yang bertanya : mengapa tidak hanya anak-anak, tetapi juga orang dewasa untuk menghibur lelucon tematik? Manfaat dari besi yang terjangkau dan terbukti dengan baik sekarang tidak pernah langka, dan tidak hanya bisa berkedip dengan lampu, tetapi juga menyanyikan lagu .

Dalam hal ini, dia menelepon saya dan menawarkan untuk mengulangi prestasi epik untuk memastikan bahwa ESP8266 memutar musik MP3 di jaringan sehingga itu baik dan jika hamster sobek berkeping-keping, apakah ada kinerja yang benar-benar cukup, yang saya lakukan dengan cepat pada liburan Tahun Baru 2016:


ESP8266 memutar radio Internet pada video, menghasilkan suara menggunakan PWM 5-bit melalui I2S hack.

Namun, memutar radio MP3 dari Internet menghabiskan hampir seluruh sumber daya ESP8266 dan terdengar "biasa-biasa saja", sedangkan imajinasi sudah membuat kita lebih dari sekadar kolom radio MP3. Dengan dorongan kreatif ini, kami pergi ke tim kami dan koki tercinta Vladimir .

Setelah sedikit brainstorming, gambaran yang lebih rinci dan bahkan rantai logis dari apa yang tidak hanya kita inginkan, tetapi dapat dilakukan:

  • Untuk mengganti MP3 dengan sesuatu yang kurang menuntut sumber daya dan lebih bebas, kami berhenti di Speex , yang port flexxnn cukup berhasil dan cepat ke ESP8266.

  • SD , .. , ESP8266 — .

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

  • Bluetooth Low Energy (BLE), .

  • . Pawn language.

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


Awalnya, saya ingin membuat prototipe yang sangat sederhana, tetapi berfungsi penuh pada papan all-in-one, jadi kami memutuskan untuk mencoba MediaTek di LinkIt ONE . Dan netsnail segera berhasil. Ada koneksi dengan telepon dan dari kartu SD MP3 diputar dengan sempurna.
Tampaknya - ini dia kebahagiaan dan platform yang siap pakai! Tapi kemudian kami dihadapkan dengan kenyataan pahit keterbatasan SDK tertutup mereka dan euforia berlalu.

Kami menyadari bahwa platform selesai di satu papan, memuaskan semua keinginan kami, tidak pada dasarnya, yang berarti kami harus membuatnya dari awal.

Jadi, kami harus memilih (Februari 2016) chip BLE yang paling cocok, yang perlu dihubungkan dengan ESP8266. Sebagai koneksi antara ESP8266 dan chip BLE (kami belum tahu akan seperti apa chip itu), kami memutuskan untuk menggunakan TWI standar (I2C).

Tetapi dengan BLE, pilihannya tidak terlalu bagus:

  • TI CC2541 - Entah bagaimana saya tidak langsung menyukainya karena arsitektur 8051 , dan 8 Kb RAM terlihat tidak mudah, mengingat banyaknya layanan BLE dan karakteristik yang kami butuhkan dalam mainan itu.

  • BCM20732 - itu terlihat sangat menjanjikan, tetapi pada kenyataannya SDK ternyata sangat kasar, dan "gantungan kunci" Broadcom WICED Smart BLE sangat buggy sehingga saya tidak akan menulis apa pun di sini agar tidak bersumpah. Beritahu saya jika situasinya sudah membaik sekarang.

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

  • nRF51822, SEGGER nRF52832. — nRF52832 nRF51822 !

Akibatnya, besi pertama terlihat seperti laba-laba tarantula seperti ini: Sangat

laba-laba besi

menyedihkan untuk menangkap gangguan karena jatuh dari kabel dupont, terutama pada modul nRF51822, di mana pin sedikit lebih kecil.

Layanan BLE pada aplikasi nRF51822 dan iOS


Namun demikian, perselingkuhan dan saya tentang besi laba-laba ini mulai menerapkan layanan dan fitur BLE pada nRF51822, membagi semuanya menjadi sekitar setengah:

  • Apple Notification Center Service ( ANCS ) - untuk menerima pemberitahuan acara dari smartphone.
  • Apple Current Time Service (CTS) - saat terhubung, mainan memerlukan waktu dari telepon.
  • HandShake Service (HSS) — , , «» . , lientID pair Bluetooth, , . , .
  • Battery As Service (BAS) — .
  • Content Service (CONTS) — , ( ).
  • Settings Service (SETTS) — , (, ) ..

MaximKit pada saat yang sama sedang membuat aplikasi untuk iOS .

gambar
Gambar di sebelah kanan menunjukkan layar utama aplikasi.

Di sini flexxnn tidak tahan dengan penderitaan kami karena terjatuh dari kabel dan membuat prototipe normal pertama di rumah dengan besi laser :

pertama kurang lebih prototipe

Tidak terlihat dalam foto, tetapi sudah ada slot kartu microSD di sana. Pada syal persegi kecil di bawah ini - ALC5627 , suaranya sudah jauh lebih baik daripada PWM 5-bit via I2S. AXP209

dipilih untuk manajemen daya. Memungkinkan Anda untuk mengisi dan menggunakan baterai secara bersamaan, serta memantau kondisinya. Chip ini sangat umum, tetapi memiliki banyak spesifikasi baik dalam pemrograman dan komponen eksternal yang diperlukan, yang disebut "Harness".

Sihir pada ESP8266


Sejalan dengan ini, flexxnn porting Speex , FatFs ke ESP8266, membuat bootloader untuk ESP8266 dan nRF51822 sehingga dimungkinkan untuk tidak memperbarui firmware dengan kawat, tetapi melakukan ini dengan menempatkan file firmware pada kartu microSD.

Secara pribadi, menurut saya alien membantu dia, karena dia melakukan semua ini dalam waktu sekitar satu bulan. Tapi dia tidak mengaku berhubungan dengan pikiran alien.

Dan kemudian prototipe kedua yang lebih normal:

pertama kurang lebih prototipe

Tapi prototipe yang lebih normal tidak lagi naik ke mainan lunak. Dan bahkan jika dia masuk, kemudian dengan gerakan tajam pada pengguna potensial dari mainan, "orang asing" akan naik, yang tentu saja tidak dapat diterima untuk MVP.

Oleh karena itu, diputuskan untuk memesan biaya kepada para profesional dan inilah yang terjadi sebagai hasilnya:

gambar

Desain seperti itu sudah sangat pas di mata kucing, meskipun entah bagaimana terlihat tidak manusiawi:

gambar

Pada saat yang sama, ketakutan dipastikan bahwa peristiwa dari ponsel mungkin datang cukup sering dan akibatnya pengguna akan merasa kesal alih-alih bersenang-senang. Diperlukan logika penyaringan yang fleksibel, yang dapat dengan mudah diubah kapan saja tanpa berkedip. Dalam hal ini, setelah mempelajari materi dan menyadari bahwa tidak ada skrip yang cepat dan ringkas untuk ESP8266 (Lua dan microPython adalah penerjemah), saya memutuskan untuk mem-porting bahasa Pion , yang dengan cepat (hanya 18 kali lebih lambat daripada yang asli) menjalankan bytecode yang ringkas.

Ngomong-ngomong, sumber Gadai sangat mirip dengan C, jadi senang untuk memodifikasi skrip - Anda hanya perlu mengkompilasinya menjadi bytecode AMX dan menyalin ke kartu SD.

Gadget curang. Berpura-pura menjadi iOS di Android


Dan kemudian "tiba-tiba" kita semua ingat bahwa ponsel Android di dunia tidak begitu kecil, tetapi bahkan lebih dari ponsel dengan iOS.

Akibatnya, saya harus mempercepat untuk memeriksa apakah kita dapat menipu gadget dan berpura-pura menjadi iOS di Android sehingga mereka melihat layanan ANCS tidak dapat dibedakan dari Apple.

Pada akhirnya, semuanya berjalan lancar dan setelah seminggu gadget (dan kucing kami tidak terkecuali) dengan tulus percaya bahwa saya memiliki iPhone dengan layanan ANCS, menghubungkan ke Nexus 5 saya dan bahkan ke Samsung Galaxy lama dengan Android 4.4.

Go cloud


Karena tidak ada yang suka mendengarkan lelucon beberapa kali (fakta), dan juga ada preferensi dan batasan budaya, diputuskan untuk setiap pengguna untuk membuat daftar putar yang unik. Untuk melakukan ini, perselingkuhan muncul dengan server di cloud.

Tetapi bagaimana memutuskan siapa yang akan menyukainya? Itu benar - biarkan pengguna yang memutuskan! Untuk melakukan ini, saya membuat deteksi gerakan dasar pada accelerometer LIS3DH dari STMicroelectronics. Saya menyukai lelucon itu - saya memiringkan kucing itu, seolah-olah "ya", saya tidak suka lelucon itu - saya memiringkannya ke samping, seolah-olah "tidak." Dan dia menambahkan "forget-me-not" untuk telepon - jika koneksi BLE terputus, dan accelerometer mendeteksi gerakan, maka kucing dibawa ke suatu tempat, dan telepon dilupakan.

Setelah pengguna "polikal" dan dengan demikian menunjukkan pilihannya - informasi masuk ke server tempat "genom" daftar putar dibandingkan dan kumpulan lelucon baru dihasilkan untuk pengguna. Tetapi ini adalah topik untuk artikel terpisah.

Ringkasan


Hasilnya, hiburan ternyata menjadi platform luar biasa yang dapat:

  • berkomunikasi dengan telepon melalui BLE dan menerima pemberitahuan acara;
  • berkomunikasi melalui WiFi dan mengunduh konten dan pembaruan firmware;
  • simpan dan baca file dalam FAT32 pada microSD;
  • bermain lelucon yang dikemas dengan codec speex;
  • Tentukan preferensi pengguna menggunakan accelerometer (deteksi gerakan)
  • membuat daftar putar untuk setiap pengguna berdasarkan kesukaannya dalam humor;

Apa yang perlu diperhatikan, “pegangan yang sangat pintar” mungkin terhubung ke pin yang sesuai (bahkan lubang untuk konektor pada papan dibiarkan) dan “bijaksana kucing” sesuka mereka. Ini membuat platform all-in-one menarik bagi para Geeks.

Dengan platform ini, kami melakukan kickstarter, memanggil mainan KiQ yang sudah jadi. Pada hari pertama, 40% dikumpulkan, dan sekarang 57%. Tetapi ini adalah kisah yang sangat berbeda.

Terima kasih untuk semua yang membaca hingga baris ini. Menunggu pertanyaan menarik dari Anda.

Source: https://habr.com/ru/post/id398389/


All Articles