你想知道的關於在線娃娃機的乾貨都在這裡了

最近幾個月,在線抓娃娃機像雨後春筍般冒了出來,粗略的統計了一下,大概有50款以上的抓娃娃APP,最火的當屬天天抓娃娃、歡樂抓娃娃,兩家公司最近均得到了資本的青睞,融資幾千萬。隱約中好像感到了一個風口正在到來。作者本人正好在負責研發一款在線娃娃機的產品,最近已經上線測試,本著共享的精神,我會從研發到上線各個方面對在線娃娃機這個產品進行拆解分析。

先交代一下前背景,大概去年11月份的時候,我無意中發現了《抓樂霸》這款產品,當時在中國市場上還沒有類似的產品,跟團隊成員商量之後覺得可以做一款出來。由於我們是做APP出身,對硬體的了解也就停留在大學課本上,所以當時並沒有十足的把握能做出來,但還好娃娃機對硬體設計的要求其實不高,我們決定嘗試一下。差不多在年底的時候我們開始對娃娃機的網路化進行研究,從分析原有娃娃機主板、設計新主板到視頻方案的選擇,趟了無數的坑之後,大概今年3月份的時候第一個demo版本測試成功,從視頻延遲、操作體驗各個方面我們都非常滿意。

文章以下內容會從以下幾個大方面來介紹,這次先簡單介紹,後續會詳細補充相關內容

  1. 娃娃機主板設計
  2. 視頻方案選擇
  1. 娃娃機主板設計

    娃娃機從本質上來說就是通過電機來控制天車的前後左右移動,電磁鐵來控制爪子的開合,再加各個感測器(微動開關)來監測各個部件當前的位置,可以說就這麼簡單。

    只要學過高中物理的就知道可以通過電流的正負切換來控制電機的正傳和反轉,電流的大小來控制電磁鐵的吸力,通過繼電器可以控制電路的開合,那麼問題就簡單了,只要我們設計一個電路來控制幾個繼電器的開合情況就能對娃娃機來進行控制了。電流大小的控制後面介紹。

    以上設計可以實現對娃娃機的各個部件的控制,但無法獲取天車是否歸位、爪子是否到底等等的部件狀態,這樣就需要獲取各個感測器的狀態,還好在娃娃機的硬體中,這些都已經集成好。

    電路設計好之後就需要選擇一個可以操控硬體的晶元了,這塊我們選擇了樹莓派,可以認為他是一個低成本(200元左右)的linux微型電腦,並且集成了可以控制硬體的介面(GPIO口),並可以接收感測器的輸入,最方便的是樹莓派還帶了4個USB口,可以通過樹莓派來採集視頻流。

    剛才說到的電流控制可以通過PWM來模擬電流的控制,樹莓派的GPIO口可以輸出PWM信號。PWM信號的原理這裡先不詳說,感興趣的可以Google一下。

    這樣一來,通過樹莓派的GPIO介面來控制各個繼電器的開合、接收感測器信號便能實現對娃娃機的完整控制了。

  2. 視頻方案選擇

    視頻方案我們開始了解了騰訊雲、阿里雲、七牛雲之類的一些雲直播服務,並進行了測試發現這些直播服務的延遲都比較高,根本無法滿足實時的要求,當然他們也提供所謂延遲較低的互動直播,但測試下來也不盡人意。於是我們又開始了折騰,決定自己來實現自己的視頻架構。

    我本身是技術出身,雖然之前從沒有接觸過視頻的相關技術,但之前在網路安全方面積累了很多經驗,所以分析視頻流、破解協議各方面並難不倒我。

    研究結果如下,當前在視頻領域最流行的就是h264視頻編碼,不管從軟解碼還是硬解碼都能找到大量的資料,而且用樹莓派可以方便的採集到h264的裸流,使用樹莓派自帶的raspvid採集到h264裸流之後,通過tcp上傳到視頻伺服器,然後通過視頻伺服器再轉發到客戶端,最後實現解碼播放。

    最後測試的視頻延遲最好可以達到200ms,這樣在用戶端已經基本感覺不到延遲了。

由於內容較多,本篇文章會陸續進行補充,有問題的可以給我發郵件,我會盡量幫大家解答的。

推薦閱讀:

食玩——我愛夏威夷I Love Hawaii!
食玩——吃飽了沒?
為什麼那麼多人討厭blythe小布D娃?
50元以內可以買什麼精緻小擺件?

TAG:抓娃娃機 | 娃娃 |