Электрооборудование

Как работает говорящая игрушка. Кот-анекдот KiQ или как мы говорящую игрушку для взрослых сделали

Как работает говорящая игрушка. Кот-анекдот KiQ или как мы говорящую игрушку для взрослых сделали

Процессор – это ядро современного видеорегистратора, от производительности которого будут зависеть возможности всего прибора. Процессор (SoC) является однокристальным модулем, который содержит непосредственно сам чип центрального процессора и периферийные устройства. Продукция тайваньской компании Novatek – одна из самых популярных на рынке, в особенности в бюджетных видеорегистраторах. На базе неё выпускают устройства такие производители как ParkCity, Stealth, Procam, Каркам, и другие игроки бюджетного и премиального рынка.

Производитель начал работать в конце XX века (1997 год), но сегодня он считается одним из лидеров рынка, уступая лишь решениям от Ambarella как по популярности, так и по производительности. Чипы Novatek имеют незначительный уклон в сторону обработки видео, что является достаточно спорным решением – многие конкуренты делают узкоспециализированные кристаллы. В принципе, продукты компании «умеют» делать гораздо больше, чем разработки Mediatek или Ambarella , но это негативно сказывается на их основных функциях – здесь возможна медлительность и задержки.

В ассортименте производителя есть как совсем бюджетные чипы, так и достаточно производительные решения, заточенные под топовые модели видеорегистраторов.

NTK 96220 – максимально бюджетное решение

Это самый простой чип тайваньского производителя, который пользуется огромным спросом в видеорегистраторах начального уровня – почти все они работают на этом решении. Процессор «умеет» снимать видео в HD-разрешении с частотой 30 кадров в секунду , а также делать интерполяцию FullHD с частотой 25 кадров в секунду .

Самый главный недостаток этого чипа – работа с устаревшим кодеком M-JPEG , который сегодня многие устройства даже не поддерживают. Готовые видеоролики за счёт этого занимают очень много памяти (в 2 раза больше, чем при использовании популярного кодека H.264 ). Просмотреть их на некоторой технике можно с трудом – проблемы наблюдаются на новых телевизорах и домашних кинотеатрах.

К тому же, разрешение HD сегодня – это очень плохая «картинка». А интерполяция (растягивание изображения до большего расширения) проблему не решает – уменьшается fps, из-за чего ухудшается чёткость видео, а качество остаётся прежним. Поскольку решение бюджетное, оно не поддерживает периферийные устройства, в частности, GPS , и не позволяет снимать видео в HDR и WDR – из-за этого цветопередача изображения также оставляет желать лучшего.

NTK 96226 – бюджетный чип с поддержкой H.264

Основное отличие этого решения от самого дешёвого отражено в подзаголовке – он поддерживает самый популярный сегодня кодек H.264 и не поддерживает устаревший M-JPEG . За счёт этого существенно экономится место на карте памяти устройства – видео «весят» в 2 раза меньше при том же качестве «картинки». Кроме того, все видеозаписи можно запустить на любом телевизоре – кодек поддерживает сегодня вся электроника.

NTK 96550 – универсальное и недорогое решение

96550 – это один из самых интересных чипов компании, который сочетает в себе невысокую стоимость и отличный набор функций. Он устанавливается в распространённом на отечественном рынке регистраторе Subini R660 . Здесь реализована поддержка съёмки в FullHD разрешении без интерполяции с частотой 30 кадров в секунду . Видео преобразуется кодеком H.264, как и в 96226.

Процессор поддерживает внешние модули, в том числе ГЛОНАСС и GPS . За счёт этого в памяти устройства может записываться как дорожная обстановка, так и карта передвижений. Как мы говорили в самом начале, Novatek выпускает универсальные решения, поэтому видеорегистраторы на базе 96550 часто выполняют также функцию информатора на базе данных со спутника о положении автомобиля. Что интересно, здесь реализована поддержка Wi-Fi, за счёт чего управлять регистратором можно через любой мобильный телефон.

NTK 96632 – бюджетный чип с поддержкой GPS

Несмотря на номер, этот процессор больше похож на NTK 96220 , чем на NTK 96550. Это бюджетное решение, которое поддерживает только HD-картинку , умеет работать с кодеком H.264 и допускает использование внешних модулей. Впрочем, производители довольно часто последнюю функцию оставляют без внимания – производительность чипа ограничена и работающий GPS может загрузить его на 100%. В такой ситуации могут возникнуть проблемы с записью видео или в целом с работой устройства.

NTK 96650 – лучший среди недорогих

Это один из самых лучших процессоров компании, который используется в самых качественных недорогих видеорегистраторах. Более того – производительности здесь хватает для подключения сразу нескольких периферийных устройств, из-за чего на этом процессоре часто делают многофункциональные решения. Чип уверенно справляется с потоковой записью видео в FullHD разрешении, при этом его мощности хватает для обработки изображения алгоритмами WDR и HDR .

За счёт этого с картинки убираются засветы, а цвета становятся гораздо приятнее. Поддержка внешних устройств здесь работает гораздо лучше, чем у бюджетных решений – одновременно процессор способен работать с GPS , ГЛОНАСС , подключаться к телефону по Wi-Fi или Bluetooth . Столь огромный перечень возможностей определяет ценовую категорию устройств, которые работают на этом чипе. Встречается он в довольно дорогих брендовых устройствах или в сравнительно дешёвых (порядка 100 долларов) китайских решениях.

NTK 96655 — решение для двухканальной записи

Процессор разрабатывался в 2012 году, его представили осенью 2013-го. Это не полноценная новая версия, а планомерное развитие линейки 96650 . Частота здесь увеличилась до 432 МГц , при этом процессор стал на порядок лучше работать с матрицами сторонних производителей.

Чип «умеет» снимать с разрешением до 16 мегапикселей при частоте 10 к/сек. – это очень удобная функция для раскадровки происшествия. Чип поддерживает и 4K-видеопоток , но производительности его хватает только на 20 к/сек., чего не хватает для нормальной записи видео. Альтернатива – интерполированная картинка с двух каналов в разрешении 3000х1700 пикселей с 30 к/сек..

NTK 96660 – флагманский чип для дорогих устройств

Качественное, быстрое и производительное решение, разработка которого заняла несколько лет. Какой-то революции в своей сфере процессор не сделал, по факту это улучшенный NTK 96650 . Производитель пошёл на снижение тактовой частоты до 380 МГц из-за того, что функцией съёмки при 16 мегапикселях с низким FPS просто никто не пользовался. Снижение тактовой частоты на производительности не сказалось – процессор отлично снимает, обрабатывает и сжимает 2К-видео . К тому же, чип стал греться гораздо меньше, выросла его энергоэффективность – из-за этого популярным 96660 стал не только в видеорегистраторах, но и в экшн-камерах.
Он поддерживает съёмку при 24 fps в 4К разрешении с интерполяцией, при 30 fps – в 2К . Для FullHD поддерживается частота 60 fps , для HD – 120 fps . Присутствует модуль для установления связи по Bluetooth и Wi-Fi , улучшена поддержка сторонних матриц.

Сейчас линейка процессоров Novatek позволяет делать отличные недорогие решения для съёмки видео в автомобилях. Топовые процессоры компании устанавливаются в достаточно производительных и качественных моделях, в том числе – в экшн-камерах. Дешёвые процессоры выбирать не стоит – они уже устарели, да и съёмка видео в HD – это не то, что нужно современным пользователям.

  • Краудсорсинг
  • В мире существует невероятное количество говорящих игрушек для детей и это только усугубляет впечатление, что взрослым быть скучно. Наша команда решила исправить эту ситуацию.

    Начало истории

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

    В связи с этим он позвонил мне и предложил повторить эпический подвиг убедиться так ли хорошо ESP8266 музыку в MP3 формате играет по сети и не разрывает ли хомячка на куски хватает ли реально производительности, что я и сделал по быстрому в новогодние праздники 2016 года:


    На видео ESP8266 играет интернет радио, выводя звук с помощью хака «5-битный PWM через I2S».

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

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

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

    Выбор железа

    Изначально хотелось сделать очень простой, но полностью рабочий прототип на плате «всё в одном», поэтому решили попробовать на LinkIt ONE от MediaTek. И это почти сходу удалось. Был и коннект с телефоном и с SD карточки MP3 отлично проигрывались.
    Казалось бы - вот оно счастье и готовая уже платформа! Но потом мы столкнулись с суровой реальностью ограничениями их закрытого SDK и эйфория прошла.

    Мы поняли, что готовой платформы на одной плате, удовлетворяющей всем нашим пожеланиям, не было в природе, а значит нам предстояло создать её с нуля.

    Итак, нам предстояло выбрать (февраль 2016) наиболее подходящий BLE чип, который необходимо было связать с ESP8266. В качестве связи между ESP8266 и BLE чипом (мы тогда не знали ещё какой это будет чип) решили использовать стандартный TWI (I2C).

    А вот с BLE выбор был тогда не особо велик:

    • TI CC2541 - сразу как-то не приглянулся из-за архитектуры , да и 8 Кб RAM выглядели малообещающими лёгкую жизнь, учитывая количество BLE сервисов и характеристик, которые требовались нам в игрушке.
    • BCM20732 - выглядел очень многообещающе, но на поверку SDK оказался очень сырой, а железо BLE «брелка» Broadcom WICED Smart настолько глючным, что я ничего тут особо писать не буду, чтобы не ругаться. Дайте знать, если сейчас ситуация улучшилась.
    • nRF52832 - первый чип, который сразу порадовал. Но тогда не было компактного BLE модуля - начал прототипировать на отладочной плате , SDK очень понравился, содержал много разных рабочих примеров. Пример BLE ANCS запустился сходу и мы тут же увидели уведомления с iPhone в логах с UART. Кстати на этой отладочной плате есть настоящий программатор и отладчик SEGGER J-Link, что сильно облегчило нам жизнь в дальнейшем.
    • nRF51822 - на тот момент существовали готовые модули , а программировали их через SEGGER от nRF52832. Что больше всего меня удивило - код со старшей модели nRF52832 отлично переносится на младшую nRF51822 и обратно!
    В итоге первое железо выглядело как паук тарантул примерно так:

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

    BLE сервисы на nRF51822 и iOS приложение

    Тем не менее я и уже на этом железе-пауке начали реализовывать 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) - этим можно настроить фильтры неприемлемого контента шуток, время когда игрушка должна молчать (ночью, например) и т.д.
    в это же время делал приложение под iOS .

    На картинке справа виден главный экран приложения.

    Тут не выдержал наших страданий из-за отваливающихся проводков и сделал дома методом лазерного утюга первый нормальный прототип:

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

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

    Магия на ESP8266

    Параллельно с этим портировал на 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. Для этого вплотную занялся сервером в облаке.

    Но как решить кому что понравится? Правильно - пусть решит сам пользователь! Для этого я сделал базовый gesture detection на акселерометре

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

    В последнее время наибольшей популярностью у девчонок и мальчишек пользуется интерактивная птичка Little Live Pets . Такая игрушка станет прекрасным подарком для ребенка, который мечтает о домашнем питомце.

    Особенности интерактивных игрушек

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

    • самым простым механизмом является звуковой однократно записываемый модуль. Время проигрывания может быть от 1 до 6.5 минут;
    • более сложные устройства позволяют повторно записывать мелодии или фразы. Интерактивные игрушки с такими системами учатся говорить вместе с ребенком, постоянно увеличивая словарный запас. Также можно записать сказки или песни, исполненные мамой или другим родственником;
    • существую системы, которые активируются не нажатием кнопки на звуковом блоке, а при помощи голоса или касания различных частей игрушки.

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

    Дети разных возрастов любят говорящие игрушки. Играя с ними, малыши учатся общению, получают новые знания и другие навыки. Единственным недостатком интерактивных игрушек можно назвать их стоимость. Чем больше такая игрушка выполняет функций, тем выше ее цена.

    Мастерим игрушку самостоятельно

    Если вы хотите порадовать ребенка говорящей игрушкой, то можно сделать ее самостоятельно.

    Собрать программируемый звуковой модуль в домашних условиях сможет человек, который знаком с радиоэлектроникой. Но в этом нет особой необходимости, сегодня такие блоки можно приобрести в интернете или специализированном магазине.

    Процесс изготовления говорящей игрушки выглядит так:

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

    После этого останется лишь незаметно зашить шов и все – игрушка стала говорящей.

    Научиться делать говорящую игрушку поможет этот ролик: