KiQ anekdot kedisi veya yetişkinler için nasıl konuşan bir oyuncak yaptık. nRF51822 ve iOS uygulamasında konuşan köpek BLE hizmetleri nasıl yapılır

Mevcut oyuncaklar arasında, konuşabilen ve dokunmaya cevap verebilenlerin özel bir yeri vardır. Bu tür oyuncaklara interaktif denir.

Son zamanlarda, etkileşimli kuş Little Live Pets, kızlar ve erkekler arasında en popüler olanı olmuştur. Böyle bir oyuncak, evcil hayvan hayal eden bir çocuk için harika bir hediye olacaktır.

Etkileşimli oyuncakların özellikleri

Oyuncak kutusu içine monte edilmiş özel bir cihaz sayesinde oyuncaklar konuşabilir. Bu bloklar işlevsellik açısından farklılık gösterir:

  • en basit mekanizma, sesli bir kez yazma modülüdür. Oynatma süresi 1 ila 6,5 ​​dakika arasında olabilir;
  • daha gelişmiş cihazlar, melodilerin veya cümlelerin yeniden kaydedilmesine izin verir. Bu tür sistemlere sahip etkileşimli oyuncaklar, çocukla konuşmayı öğrenerek kelime dağarcığını sürekli arttırır. Anneniz veya başka bir akrabanız tarafından seslendirilen masalları veya şarkıları da kaydedebilirsiniz;
  • Ses bloğu üzerinde bir tuşa basılarak değil, sesle veya oyuncağın çeşitli yerlerine dokunularak devreye giren sistemler vardır.

Örneğin interaktif bir oyuncak bebek yanağına dokunulduğunda gülmeye başlıyor, elini tutarsanız konuşmaya başlıyor.

Her yaştan çocuk konuşan oyuncakları sever. Onlarla oynayarak çocuklar iletişim kurmayı, yeni bilgiler ve diğer beceriler kazanmayı öğrenirler. Etkileşimli oyuncakların tek dezavantajı maliyetleridir. Böyle bir oyuncak ne kadar çok işlev görürse, fiyatı o kadar yüksek olur.

Kendimiz bir oyuncak yapıyoruz

Çocuğunuzu konuşan bir oyuncakla memnun etmek istiyorsanız, bunu kendiniz yapabilirsiniz.

Radyo elektroniğine aşina olan bir kişi, evde programlanabilir bir ses modülü monte edebilir. Ancak bu özellikle gerekli değildir, bugün bu tür bloklar İnternetten veya özel bir mağazadan satın alınabilir.

Konuşan bir oyuncak yapma süreci şöyle görünür:

  1. Bir oyuncak seçiyoruz. Mağazadan satın alınabilir veya kendi kendine yapılabilir. El yapımı tekstil oyuncaklar günümüzde çok popüler.
  2. Bir müzik modülü satın alıyoruz ve üzerine bir melodi, metin veya masal kaydediyoruz. Ayrıca herhangi bir eski oyuncaktan bir ses modülü alabilirsiniz, sadece pillerin performansını kontrol edin.
  3. Bloğun kurulacağı yerde dikişi yırtıyoruz.
  4. Modülü oyuncağın içine yerleştiriyoruz, butona dikkat etmek önemliyken basılabilir durumda olması gerekiyor.

Bundan sonra, sadece dikişi sessizce dikmek kalır ve bu kadar - oyuncak konuşan biri haline geldi.

Bu video, konuşan bir oyuncak yapmayı öğrenmenize yardımcı olacak:

Dünyada çocuklar için inanılmaz sayıda konuşan oyuncak var ve bu sadece yetişkinlerin sıkıldığı izlenimini artırıyor. Ekibimiz bu durumu düzeltmeye karar verdi.

hikayenin başlangıcı

Her şey, arkadaşlarımdan ve meslektaşım ağ salyangozundan birinin meraklı zihnine parlak bir düşüncenin gelmesiyle başladı: neden sadece çocuklar değil, yetişkinler de onları tematik şakalarla eğlendirmesin? Neyse ki, uygun fiyatlı ve kanıtlanmış donanım artık hiçbir zaman nadir değildir ve yalnızca ışıkları yanıp sönmekle kalmaz, aynı zamanda şarkı da söyler.

Bu bağlamda, beni aradı ve ESP8266'nın ağ üzerinden MP3 formatında müzik çalmasını ve hamsteri parçalara ayırmasını sağlamak için destansı başarıyı tekrarlamayı teklif etti. 2016'nın Yeni Yıl tatilleri:


Videoda, ESP8266 internet radyosu çalar ve "I2S üzerinden 5-bit PWM" hackini kullanarak ses çıkışı verir.

Bununla birlikte, İnternet'ten MP3 radyo çalmak, ESP8266'nın neredeyse tüm kaynağını tüketti ve "şöyle" geliyordu, hayal gücümüz zaten bize bir MP3 radyo sütunundan daha fazlasını çiziyordu. Bu yaratıcı dürtülerle ekibimize ve sevgili şefimiz Vladimir'e gittik.

Biraz beyin fırtınası yaptıktan sonra daha detaylı bir resim ortaya çıkmaya başladı ve hatta mantıksal zincir sadece istediğimiz değil, aynı zamanda yapabileceğimiz şey:

  • MP3, kaynakları daha az talep eden ve daha özgür bir şeyle değiştirildi, flexxnn'in oldukça başarılı ve hızlı bir şekilde ESP8266'ya taşındığı Speex'e karar verdiler.
  • Şakaların kayıtları buluttaki sunucudan alınır ve yerel olarak SD karta konur, çünkü. İnternet her yerde mevcut değildir ve ESP8266'yı sürekli açık tutarsanız yeterli pil alamazsınız.
  • Bazı olaylara “mizah şakaları” bağlayın ve rastgele konuşmayın. Etkinlik oluşturucu olarak bir akıllı telefon seçildi, çünkü hemen hemen herkes buna zaten sahip. Gerçek olaylar, zaten iPod, iPhone ve iPad'de bulunan Apple Bildirim Merkezi Hizmetinden (ANCS) kolayca alınabilir.
  • Akıllı telefonunuzla iletişim kurmak için Bluetooth Düşük Enerji (BLE) kullanın, çünkü çok az kişi oyuncağı haftada bir defadan fazla şarj etmeyi eğlenceli bulacaktır.
  • Oyuncağın sık sık yapılan şakalarla kullanıcıyı çileden çıkarmaması için gelen tüm olaylar için scripting dilinde mantığı kullanmaya karar verdik. Piyon diline karar verdik.
  • Herkesin fıkra zevki farklı olduğundan ve aynı fıkrayı dinlemek zaten üzücü olduğundan, içerikte şekillenmesi için kullanıcıya "vuruş" ve "döverek" (ivmeölçer) fıkralara oy verme imkanı verilmesine karar verildi. sunucu bir dahaki sefere daha alakalı çalma listesi.

demir seçimi

Başlangıçta, hepsi bir arada bir anakartta çok basit ama tam olarak çalışan bir prototip yapmak istedik, bu yüzden MediaTek'ten LinkIt ONE'da denemeye karar verdik. Ve netsnail neredeyse anında başarılı oldu. Ayrıca telefonla bir bağlantı vardı ve SD karttan MP3 mükemmel bir şekilde çalındı.
Görünüşe göre - işte mutluluk ve hazır bir platform! Ama sonra kapalı SDK'larının sınırlamalarının sert gerçekliğiyle karşılaştık ve coşku sona erdi.

Tek bir pano üzerinde tüm isteklerimizi karşılayacak hazır bir platform olmadığını fark ettik, bu da onu sıfırdan yaratmamız gerektiği anlamına geliyordu.

Bu nedenle, ESP8266 ile eşleştirmek için en uygun BLE çipini (Şubat 2016) seçmek zorunda kaldık. ESP8266 ile BLE çipi arasında bir bağlantı olarak standart TWI (I2C) kullanmaya karar verdik (o zaman hangi çip olacağını bilmiyorduk).

Ancak BLE ile seçim o zaman çok iyi değildi:

  • TI CC2541 - bir şekilde mimari nedeniyle hemen beğenmedim ve BLE hizmetlerinin sayısı ve oyuncakta ihtiyaç duyduğumuz özellikler göz önüne alındığında 8 KB RAM kolay bir yaşam için tavizsiz görünüyordu.
  • BCM20732 - çok umut verici görünüyordu, ancak aslında SDK'nın çok ham olduğu ortaya çıktı ve Broadcom WICED Akıllı anahtarlığın BLE donanımı o kadar bozuk ki, küfür etmemek için buraya özel bir şey yazmayacağım. Şimdi işler daha iyiyse bana haber ver.
  • nRF52832 beni hemen mutlu eden ilk çip. Ama sonra kompakt bir BLE modülü yoktu - rekod bir hata ayıklama panosunda prototip oluşturmaya başladı, SDK'yı gerçekten beğendim, birçok farklı içeriyordu işçilerörnekler. BLE ANCS örneği hemen başladı ve UART'ın günlüklerinde iPhone'dan gelen bildirimleri hemen gördük. Bu arada, bu hata ayıklama panosu, gelecekte hayatımızı çok daha kolaylaştıran gerçek bir SEGGER J-Link programcısı ve hata ayıklayıcısına sahiptir.
  • nRF51822 - o zamanlar hazır modüller vardı ve bunlar nRF52832'den SEGGER aracılığıyla programlandı. Beni en çok şaşırtan şey, eski nRF52832 modelinden gelen kodun daha genç nRF51822'ye mükemmel bir şekilde aktarılması ve geri alınması!
Sonuç olarak, ilk demir şu şekilde bir tarantula örümceğine benziyordu:

Özellikle pinlerin biraz daha küçük olduğu nRF51822 modülünde dupont kabloların düşmesi nedeniyle oluşan aksaklıklar çok üzücüydü.

nRF51822 ve iOS uygulamasında BLE hizmetleri

Yine de, ilişki ve ben zaten bu örümcek donanımında nRF51822'de BLE hizmetlerini ve özelliklerini uygulamaya başladık ve her şeyi yaklaşık olarak ikiye böldük:
  • Apple Bildirim Merkezi Hizmeti (ANCS) - akıllı telefonunuzdan olay bildirimleri almak için.
  • Apple Current Time Service (CTS) - bağlandığında, oyuncak telefondan zaman alır.
  • HandShake Service (HSS) - bu arada, bu hizmet, oyuncağı geleneksel kulaklıkların ve benzeri cihazların aksine "kırılmaz" hale getirir. Gerçek şu ki, bulutta bir ClientID var ve kullanıcı sadece telefonu ve oyuncakları Bluetooth üzerinden eşleştirmekle kalmıyor, aynı zamanda sıfırlanması o kadar kolay olmayan ek bir bağlama da sağlıyor. Bu sürecin açıklaması ayrı bir makale gerektiriyor, bu yüzden kendimi kısa bir değinme ile sınırlayacağım.
  • Battery As Service (BAS) - pil durumunun akıllı telefondaki uygulamaya aktarılması.
  • İçerik Hizmeti (CONTS) - bu, daha önce oynanan şakaların bir listesini metinle birlikte görmenizi sağlar (metin buluttaki bir sunucudan alınır).
  • Ayarlar Hizmeti (SETTS) - bu, uygunsuz şaka içeriği, oyuncağın sessiz olması gereken zaman (örneğin geceleri) vb. için filtreler ayarlamak için kullanılabilir.
MaximKit aynı zamanda iOS için uygulama.

Sağdaki resim, uygulamanın ana ekranını gösterir.

İşte flexxnn düşen teller nedeniyle çektiğimiz acıya dayanamadı ve lazerli ütü kullanarak evde ilk normal prototipi yaptı:

Fotoğrafta görünmüyor, ancak microSD kart yuvası zaten orada. Alttaki küçük kare atkıda - ALC5627, ses zaten I2S aracılığıyla 5-bit PWM'den çok daha iyiydi.

Güç yönetimi için AXP209 seçildi. Pili aynı anda şarj etmenize ve kullanmanıza ve ayrıca durumunu izlemenize olanak tanır. Çip çok yaygındır, ancak hem programlamada hem de sözde gerekli harici bileşenlerde birçok özelliğe sahiptir. "bağlayıcı".

ESP8266'da Büyü

Buna paralel olarak, ESP8266 Speex'e taşınan flexxnn, FatFs, ESP8266 ve nRF51822 için bir önyükleyici yaptı, böylece güncellenmiş bellenimi kablo üzerinden flashlayamazsınız, ancak bellenim dosyalarını bir microSD karta yerleştirerek yapabilirsiniz.

Şahsen bana öyle geliyor ki, uzaylılar ona yardım etti, çünkü hepsini yaklaşık bir ay içinde yaptı. Ancak uzaylı bir zihinle temas kurduğunu itiraf etmez.

Ve sonra ikinci daha normal prototip:

Ancak daha normal bir prototip artık yumuşak bir oyuncağa tırmanmıyor. Ve içeri girse bile, potansiyel bir kullanıcı üzerinde keskin bir hareketle, oyuncaktan bir “yabancı” tırmanacaktı, bu elbette MVP için kabul edilemezdi.

Bu nedenle, profesyoneller için bir kurul sipariş edilmesine karar verildi ve sonunda olan buydu:

Bir kedide, böyle bir tasarım, bir şekilde insanlık dışı görünse de, zaten mükemmel bir şekilde uyuyor:

Aynı zamanda, telefondan olayların oldukça sık gelebileceği ve bunun sonucunda kullanıcının eğlenmek yerine sinirleneceği korkuları doğrulandı. Herhangi bir zamanda yanıp sönmeden kolayca değiştirilebilen esnek bir filtreleme mantığı gerekiyordu. Bu bağlamda, donanımı inceledikten ve ESP8266 için hızlı ve kompakt komut dosyaları olmadığını fark ettikten sonra (Lua ve microPython tercümandır), hızlı bir şekilde (yerel dilden sadece 18 kat daha yavaş) yürüten Pawn dilini taşımaya karar verdim. kompakt bir bayt kodu.

Bu arada, Pawn kaynakları C'ye çok benziyor, bu yüzden komut dosyalarını değiştirmek bir zevk - onları AMX bayt kodunda derlemeniz ve SD karta kopyalamanız yeterli.

Gadget dolandırıcılığı. Android'de iOS gibi davranmak

Ve sonra “aniden” hepimiz, dünyada çok az Android telefon olmadığını ve hatta iOS telefonlardan daha fazlasının olduğunu hatırladık.

Sonunda, çabucak kontrol edip edemeyeceğimizi kontrol etmem gerekti. gadget'ları kandırın ve Android'de iOS gibi davranın böylece Apple'dan farkı olmayan ANCS hizmetini görebilirler.

Sonunda, her şey yolunda gitti ve bir hafta sonra gadget'lar (ve kedimiz bir istisna değil), Nexus 5'ime ve hatta Android 4.4 ile eski Samsung Galaxy'ye bağlanan ANCS hizmetine sahip bir iPhone'um olduğuna içtenlikle inandı.

Buluta Git

Hiç kimse bir şakayı birkaç kez dinlemeyi sevmediğinden (gerçek) ve ayrıca tercihler ve kültürel kısıtlamalar olduğundan, her kullanıcının benzersiz bir çalma listesi oluşturmasına karar verildi. Bunun için buluttaki sunucuyla başa çıktı.

Ama kimin neyi sevdiğine nasıl karar veriyorsunuz? Bu doğru - kullanıcının karar vermesine izin verin! Bunu yapmak için STMicroelectronics'ten bir ivmeölçer üzerinde temel bir hareket algılaması yaptım. Şakayı beğendim - kediyi "evet" gibi eğdim, şakayı beğenmedim - "hayır" gibi yana yatırdım. Ayrıca telefon için bir "unutma beni" ekledi - BLE üzerinden bağlantı kaybolursa ve ivmeölçer hareket algılarsa, o zaman kedi bir yere taşınıyor, ancak telefon unutuldu.

Kullanıcı "beğendi" ve böylece tercihlerini belirttikten sonra bilgiler sunucuya gider, burada çalma listelerinin "genomları" karşılaştırılır ve kullanıcı için yeni şaka setleri oluşturulur, ancak bu ayrı bir makalenin konusu.

Sonuçlar

Sonuç olarak, eğlencenin mükemmel bir platform olduğu ortaya çıktı:
  • telefonla BLE aracılığıyla iletişim kurun ve olay bildirimlerini alın;
  • WiFi üzerinden bağlanın ve içerik ve aygıt yazılımı güncellemelerini indirin;
  • dosyaları microSD'de FAT32'de kaydedin ve okuyun;
  • speex codec bileşeniyle dolu şakalar yapın;
  • ivmeölçer (hareket algılama) kullanarak kullanıcı tercihlerini belirleme;
  • her kullanıcı için mizah konusundaki tercihlerine göre çalma listeleri oluşturun;
Dikkat çekici bir şekilde, "çok hünerli eller" uygun pinlere iyi bir şekilde bağlanabilir (kart üzerindeki konektörler için delikler bile bırakılmıştır) ve istedikleri gibi "akıllı kedi" Bu hepsi bir arada platformu inekler için çekici hale getirir.

Bu platformla, bitmiş oyuncağa KiQ adını vererek kickstarter'a gittik. İlk gün %40, şimdi ise %57 topladılar. Ama bu tamamen farklı bir hikaye.

Bu satıra kadar okuyan herkese teşekkürler. İlginç sorularınızı bekliyorum.

Kendi elinizle konuşan bir köpek tekrarlayıcı nasıl yapılır. Zanaat, özellikle Yılbaşı Gecesi'ndeki çizimler için yapıldı. Maalesef köpek satışında tekrarlayıcılarla karşılaşmadım. Zaten dayak yolu yürüyen köpek kendi elleriyle yapıldı. Bunu yapmak için sadece iki oyuncak satın almanız ve üzerlerinde kendi ellerinizle basit işlemler yapmanız gerekir. Fotoğraf ve videolarla konuşan bir köpeğin nasıl yapılacağına ilişkin ayrıntılar için sunulan ana sınıfa bakın. Her zaman olduğu gibi, yeni yılda bir çocuğa hazır bir oyuncak sunulacak.

Tekrarlayıcı bir köpek yapmak için bir tekrarlayıcı hamstera ve yumuşak bir köpek oyuncağına ihtiyacınız var. Usta, bağlantıyı kullanarak Aliexpress'ten bir hamster satın alarak bu sorunu çözdü http://ali.pub/q3pti . Köpek bir oyuncakçıdan satın alındı. Fotoğraf fiyatı.




köpek oyuncağı

köpek oyuncağı

Montaj Talimatları Tekrarlayıcı Köpekler

  1. Hamsterin mekanizmasını deriden çıkarıyoruz. Genellikle cilt bir kablo bağı ile sabitlenir. Sadece kesilmesi gerekiyor. Bağlantı elemanlarının nasıl kesileceğini görebilirsiniz.
  2. Mekanizmanın çalışmasını kontrol ediyoruz. Mekanizma, hareketli platformun üst konumunda durdurulmalıdır. Bir video izle.
  3. Seçilen köpek oyuncağı, mekanizmaya takmak için biraz küçüktür. Bu nedenle, astar yırtılarak açıldı ve dolgu polyesterinin bir kısmı kafadan çıkarıldıktan sonra, mekanizmanın üst platformu oyuncağın başına oturdu.
  4. Köpeğin patilerine hacim kazandırmak için yerleştirilmiş fazla sentetik kışlayıcı
  5. Oyuncağın kafasının net bir şekilde hareket etmesi için, mekanizmanın çalışmasına göre, başın tepesi, mekanizma platformuna ipliklerle tutturulmuştur.
  6. Dolgunun altında oyuncağın kenarında bir iplik eksikti. İplik gerilir ve derinin kenarını mekanizmanın oluğunda sabitler. Videoyu izle.


Mekanizma uzatılmış konumda kurulur

Bitmiş oyuncağın mağazalardan satın alınamaması üzücü, ancak kendi ellerinizle kendiniz yapabilirsiniz. Zanaat zaman ayırmaya değer. Ana şey, Yeni Yılı karşılarken zamanında eyleme geçirmek ve herkesin gözyaşlarına gülmesi sağlanacak! Ve zanaatın kendisi bir çocuk için değerli bir hediyedir. Çocuklar, arkadaşlarınızla bulamayacağınız oyuncakları takdir eder.

Yükleniyor...Yükleniyor...