Кіт-анекдот KiQ або як ми говорючу іграшку для дорослих зробили. Як зробити собаку, що говорить, BLE сервіси на nRF51822 та iOS додаток

Серед іграшок, що існують, особливу позицію займають ті, які можуть говорити і реагувати на дотики. Такі іграшки називають інтерактивними.

У Останнім часомНайбільшою популярністю у дівчаток і хлопчиків користується інтерактивна пташка Little Live Pets. Така іграшка стане чудовим подарунком для дитини, яка мріє про домашнього вихованця.

Особливості інтерактивних іграшок

Говорити іграшки можуть завдяки спеціальному пристрою, який монтується усередині іграшкового корпусу. Ці блоки відрізняються функціональністю:

  • найпростішим механізмом є звуковий модуль, що одноразово записується. Час відтворення може бути від 1 до 6.5 хвилин;
  • більш складні пристрої дозволяють повторно записувати мелодії чи фрази. Інтерактивні іграшки з такими системами навчаються розмовляти разом із дитиною, постійно збільшуючи словниковий запас. Також можна записати казки чи пісні, виконані мамою чи іншим родичем;
  • існують системи, які активуються не натисканням кнопки на звуковому блоці, а за допомогою голосу чи торкання різних частиніграшки.

Наприклад, інтерактивна лялька при дотику до щоки починає сміятися, а якщо взяти її за руку – заговорить.

Діти різного вікулюблять іграшки, що говорять. Граючи з ними, малюки вчаться спілкуванню, набувають нових знань та інших навичок. Єдиним недоліком інтерактивних іграшок можна назвати їхню вартість. Чим більше така іграшка виконує функції, тим вище її ціна.

Майструємо іграшку самостійно

Якщо ви хочете порадувати дитину іграшкою, що говорить, то можна зробити її самостійно.

Зібрати програмований звуковий модуль в домашніх умовах зможе людина, яка знайома з радіоелектронікою. Але в цьому немає особливої ​​потреби, сьогодні такі блоки можна придбати в інтернеті чи спеціалізованому магазині.

Процес виготовлення іграшки, що говорить, виглядає так:

  1. Підбираємо іграшку. Вона може бути магазинною або виготовленою самостійно. Сьогодні дуже популярними є текстильні іграшки ручної роботи.
  2. Придбаємо музичний модуль та записуємо на нього мелодію, текст чи казку. Також можна взяти звуковий модуль із будь-якої старої іграшки, тільки перевірте працездатність батарейок.
  3. Розпарюємо шов на тому місці, де встановлюватиметься блок.
  4. Розміщуємо модуль усередині іграшки, при цьому важливо звернути увагу на кнопку, вона має бути доступною для натискання.

Після цього залишиться лише непомітно зашити шов і все - іграшка стала розмовляючою.

Навчитися робити іграшку, що говорить, допоможе цей ролик:

У світі існує неймовірна кількість іграшок, що говорять, для дітей і це тільки посилює враження, що дорослим бути нудно. Наша команда вирішила виправити цю ситуацію.

Початок історії

Все почалося з того, що в допитливий розум одного мого друга і колеги netsnail прийшла світла думка: а чому б не тільки дітей, а й дорослих не порадувати тематичними жартами? Благо доступне залізо, що добре зарекомендувало себе, зараз вже жодного разу не рідкість, та й вміє воно не тільки лампочками блимати, а й пісні співати.

У зв'язку з цим він зателефонував мені і запропонував повторити епічний подвиг переконатися, чи так добре ESP8266 музику в MP3 форматі грає по мережі і чи не розриває хом'ячка на шматки чи вистачає реально продуктивності, що я і зробив по швидкому в новорічні свята 2016 року:


На відео ESP8266 грає інтернет радіо, виводячи звук за допомогою хаку "5-бітний PWM через I2S".

Однак програвання MP3 радіо з інтернету їло майже весь ресурс ESP8266 і звучало «так собі», тоді як уява вже малювало нам щось більше, ніж просто MP3 радіо колонку. З цими творчими поривами ми й пішли до нашої команди та улюбленого шефа Володимира.

Після невеликого мозкового штурму почала вимальовуватися детальніша картина і навіть логічний ланцюжоктого, що ми не тільки хочемо, але й можемо зробити:

  • MP3 замінити щось менш вимогливе до ресурсів та більше вільне, зупинилися на Speex , котрий flexxnn досить вдало та швидко портував на ESP8266.
  • Записи жартів брати з сервера у хмарі і складати локально на карту SD, т.к. інтернет не скрізь є, та й на ESP8266 якщо постійно увімкненим тримати - ніякої батарейки не напасешся.
  • Прив'язати «жарти гумору» до якихось подій, а не просто говорити по random. Генератором подій було обрано смартфон, тому що він майже у всіх уже є. Ну а власне події можна легко отримувати з Apple Notification Center Service (ANCS), який вже є на iPod, iPhone та iPad.
  • Використовувати для зв'язку зі смартфоном Bluetooth Low Energy (BLE), тому що заряджати іграшку частіше за раз на тиждень мало кому здасться забавним.
  • Щоб іграшка не бешкетувала користувача частими жартами на всі події, що приходять, вирішили використовувати логіку скриптовою мовою. Зупинилися на Pawn language.
  • Так як смаки на жарти у всіх різні, а слухати той самий жарт це вже сумно - було вирішено дати користувачеві можливість голосувати за жарти шляхом «погладити» і «побити» (акселерометр), щоб на контент-сервері наступного разу сформувати йому більш релевантний плейлист.

Вибір заліза

Спочатку хотілося зробити дуже простий, але повністю робочий прототип на платі все в одному, тому вирішили спробувати на LinkIt ONE від MediaTek. І netnail це майже відразу вдалося. Був і коннект з телефоном і з SD картки MP3 чудово програвали.
Здавалося б – ось воно щастя та готова вже платформа! Але потім ми зіткнулися із суворою реальністю обмеженнями їхнього закритого SDK і ейфорія пройшла.

Ми зрозуміли, що готової платформи на одній платі, яка задовольняє всім нашим побажанням, не було в природі, а отже нам потрібно було створити її з нуля.

Отже, ми мали вибрати (лютий 2016) найбільш підходящий BLE чіп, який необхідно було зв'язати з ESP8266. Як зв'язок між ESP8266 і BLE чіпом (ми тоді не знали ще який це буде чіп) вирішили використовувати стандартний TWI (I2C).

А ось з BLE вибір був тоді не дуже великий:

  • TI CC2541 - відразу якось не сподобався через архітектуру, та й 8 Кб RAM виглядали малообіцяючими легке життя, враховуючи кількість BLE сервісів та характеристик, які були потрібні нам в іграшці.
  • BCM20732 - виглядав дуже багатообіцяюче, але на перевірку SDK виявився дуже сирою, а залізо BLE "брелка" Broadcom WICED Smart настільки глючним, що я нічого тут особливо писати не буду, щоб не сваритися. Дайте знати, якщо зараз ситуація покращала.
  • nRF52832 - перший чіп, який одразу порадував. Але тоді не було компактного BLE модуля - rekod почав прототипувати на платі налагодження, SDK дуже сподобався, містив багато різних робітниківприкладів. Приклад BLE ANCS запустився відразу і ми відразу побачили повідомлення з iPhone в логах з UART. До речі, на цій налагоджувальній платі є справжній програматор і відладчик SEGGER J-Link, що полегшило нам життя надалі.
  • nRF51822 – на той момент існували готові модулі, а програмували їх через SEGGER від nRF52832. Що найбільше мене здивувало - код зі старшою моделлю nRF52832 відмінно переноситься на молодшу nRF51822 і назад!
У результаті перше залізо виглядало як павук тарантул приблизно так:

Ловити глюки через відвалюються dupont кабелів, особливо на модулі nRF51822, де pin"и трохи менше розміром, було дуже сумно.

BLE сервіси на nRF51822 та iOS додаток

Проте я і affair вже на цьому залізі-павуку почали реалізовувати BLE сервіси та характеристики на nRF51822, поділивши все приблизно навпіл.
  • Apple Notification Center Service (ANCS) – для отримання повідомлень про події зі смартфона.
  • Apple Current Time Service (CTS) – при підключенні іграшка бере час із телефону.
  • HandShake Service (HSS) – цей сервіс, до речі, робить іграшку «невганяною» на відміну від звичайних гарнітур та подібних гаджетів. Справа в тому, що в хмарі є СlientID і користувач не просто робить pair телефону та іграшки по Bluetooth, але і додаткову прив'язку, яку не так легко скинути. Опис цього процесу вимагає окремої статті, тому обмежуся короткою згадкою.
  • Battery As Service (BAS) - передача стану батарейки додатку на смартфон.
  • Content Service (CONTS) - цим можна переглянути список програних раніше жартів, з текстом (текст береться з сервера в хмарі).
  • Settings Service (SETTS) - цим можна налаштувати фільтри неприйнятного контенту жартів, час коли іграшка повинна мовчати (вночі, наприклад) і т.д.
MaximKit у цей же час робив додаток під iOS.

На зображенні праворуч видно головний екран програми.

Тут flexxnn не витримав наших страждань через проводки, що відвалюються і зробив вдома методом лазерної праски перший нормальний прототип:

На фото не видно, але слот для картки microSD там вже є. На маленькій квадратній хустці внизу - ALC5627, звук був вже набагато кращим, ніж 5-бітний PWM через I2S.

Для керування живленням вибрали AXP209. Дозволяє та заряджати та використовувати акумулятор одночасно, а також стежити за його станом. Чіп дуже поширений, але має багато специфіки як у програмуванні, так і в потрібних зовнішні компоненти, Т.зв. «обв'язування».

Магія на ESP8266

Паралельно з цим flexxnn портував на ESP8266 Speex, FatFs, зробив bootloader для ESP8266 і nRF51822, щоб можна було не шити оновлені прошивки по дротах, а робити це поміщаючи файли прошивок на microSD карту.

Особисто мені здається йому допомагали інопланетяни, тому що зробив він це приблизно за місяць. Але він не зізнається у контактах з інопланетним розумом.

А потім і другий нормальніший прототип:

Але нормальніший прототип вже не ліз у м'яку іграшку. А якби і вліз, то при різкому русі на потенційного користувача з іграшки поліз би «чужий», що, звичайно, було неприйнятно для MVP.

Тому вирішено було замовити платню професіоналам і ось що вийшло:

У кота така конструкція вже добре поміщається, правда виглядає це якось негуманно:

У той же час підтвердилися побоювання, що події з телефону можуть приходити досить часто і в результаті користувач отримав роздратування замість веселощів. Потрібна була гнучка логіка для фільтрації, яку можна легко змінювати в будь-який момент без перепрошивки. У зв'язку з цим я, вивчивши матч і зрозумівши, що для ESP8266 швидких і компактних скриптів немає (Lua і microPython - інтерпретатори), вирішив портувати Pawn language, який швидко (всього лише в 18 разів повільніше нативного) виконує компактний байткод.

До речі вихідники на Pawn дуже схожі на C, тому скрипти модифікувати одне задоволення - їх достатньо лише скомпілювати в AMX байткод і скопіювати на карту SD.

Обман гаджетів. Прикидаємося iOS на Android

І тут «раптово» ми всі згадали, що Android телефоніву світі не так і мало, а навіть більше, ніж телефонів з iOS.

У результаті мені довелося в темпі перевірити, чи зможемо ми. обдурити гаджети і прикинутися iOS на Android, щоб вони побачили сервіс ANCS, невідмінний від Apple.

У результаті все вдалося і вже через тиждень гаджети (і наш кіт не виняток) щиро вірили, що у мене iPhone з ANCS сервісом, підключаючись до мого Nexus 5 і навіть до старого Samsung Galaxyз Android 4.4.

Go Cloud

Так як ніхто не любить слухати жарт по кілька разів (факт), а також існують переваги та культурні обмеження, вирішено було кожному користувачеві формувати унікальний playlist. Для цього affair впритул зайнявся сервером у хмарі.

Але як вирішити, кому що сподобається? Правильно – нехай вирішить сам користувач! Для цього я зробив базовий gesture detection на акселерометрі від STMicroelectronics. Сподобався жарт – нахилив кота, наче «так», не сподобався жарт – нахилив убік, наче «ні». А ще додав «незабудку» для телефону – якщо зв'язок по BLE пропадає, а акселерометр фіксує рух, значить кота кудись несуть, а телефон забули.

Після того як користувач "полайкал" і позначив тим самим свої переваги - інформація йде на сервер, де йде порівняння "геномів" playlist"ів і користувачеві формуються нові набори жартів. Але це вже тема для окремої статті.

Підсумки

У результаті з розваги вийшла чудова платформа, яка вміє:
  • зв'язуватися з телефоном по BLE та отримувати повідомлення про події;
  • зв'язуватися по WiFi та завантажувати контент та оновлення прошивок;
  • зберігати та читати файли в FAT32 на microSD;
  • грати жарти, упаковані speex кодеком;
  • визначати переваги користувача за допомогою акселерометра (gesture detection);
  • формувати playlists під кожного користувача на основі його переваг у гуморі;
Що примітно, «оч.умілі ручки» цілком можуть підключитися до відповідних pin" (навіть отвори під роз'єми на платі залишені) і "порозумнішати кота" так, як їм заманеться. Це і робить платформу все-в-одному привабливою для гиков.

З цією платформою ми вийшли на kickstarter, назвавши готову іграшку KiQ. Першого ж дня зібрали 40%, а зараз уже 57%. Але це вже зовсім інша історія.

Дякую всім тим, хто дочитав до цього рядка. Чекаю від вас на цікаві запитання.

Як зробити собаку, що говоритьповторюшку своїми руками. Виріб зроблений спеціально для розіграшів при зустрічі Нового року. На жаль, у продажу собак повторень не зустрів. Ідучи вже уторованим дорогою собака повторюшка була зроблена своїми руками. Для цього необхідно придбати лише дві іграшки та провести над ними нехитрі дії своїми руками. Подробиці як зробити собаку, що говорить, повторюшку з фото і відео дивіться в представленому майстер класі. Як завжди, готова іграшка вже в новому році буде подарована дитині.

Собаки повторюшки необхідний хом'як повторюшка і м'яка іграшкасобачка. Майстер це питання вирішив покупкою хом'яка на Аліекспрес за посиланням http://ali.pub/q3pti . Собачка була куплена в магазині іграшок. Ціни на фото.




Іграшка собачка

Іграшка собачка

Інструкція зі збирання Собаки повторюшки

  1. Виймаємо механізм хом'яка зі шкірки. Зазвичай шкірка кріпиться кабельною стяжкою. Її треба просто зрізати кусачками. Як зрізати кріплення можна подивитися.
  2. Перевіряємо роботу механізму. Слід зупинити механізм у верхньому положенні рухомого майданчика. Дивись відео.
  3. Вибрана іграшка Собачка трохи мала для встановлення в механізм. Тому підкладка була розпорота і після видалення частини синтепону з голови Верхній майданчик механізму помістився в голові іграшки.
  4. Надлишки синтепону поміщені в лапи Собачки для надання їм об'єму
  5. Для чіткого руху голови іграшки, згідно з роботою механізму, верхівка голови була прихоплена нитками до майданчика механізму.
  6. Краєм іграшки під прокладкою була пропущена нитка. Нитка натягується і фіксує край шкірки у жолобку механізму. Дивіться відео.


Механізм встановлений у висунутому положенні

Шкода, що готову іграшку неможливо купити в магазинах, але ви можете зробити її самі своїми руками. Виріб коштує витрат часу. Головне вчасно привести її в дію під час зустрічі Нового Року та регіт до сліз усім буде забезпечений! Та й сам виріб гідний подарунок дитині. Діти цінують іграшки, які не зустрінеш друзів.

Loading...Loading...