精靈寶可夢Go是全世界最受歡迎的手機遊戲之一。捕捉精靈寶可夢有很多技巧,但是今天我們將構建一個Arduino精靈寶可夢Go車,使您可以更容易地完成孵蛋。精靈寶可夢Go孵蛋車旨在協助玩家孵化遊戲中的蛋,最終透過製造一輛車並攜帶您的個人手機來完成。我們將對常規的RC車進行修改,並載入一些元件,例如用於藍牙控制的HC06模組和用於檢測物體以在撞上障礙物前轉彎的HC-SR04距離感測器。遊戲中有三種類型的蛋,車輛具有調整機制來適應不同的孵蛋里程。在本教程中,我們將介紹兩種蛋(3km和5km)。
組件概述
I. H橋
H橋中的H來自上圖中四個馬達連接所構成的H形。我們使用H橋而不是直接使用Arduino的GPIO主要因為我們想用外部電源來給馬達供電,這樣就不會影響Arduino的電源供給。
下表顯示了H橋如何根據開關狀態進行操作。S1和S2是前部馬達的端子,而S3和S4是後部馬達的端子。
S1 | S2 | S3 | S4 | 結果 |
1 | 0 | 0 | 1 | 馬達右轉 |
0 | 1 | 1 | 0 | 馬達左轉 |
0 | 0 | 0 | 0 | 馬達未被使用 |
0 | 1 | 0 | 1 | 馬達制動 |
1 | 0 | 1 | 0 | 馬達制動 |
1 | 1 | 0 | 0 | 短路 |
0 | 0 | 1 | 1 | 短路 |
1 | 1 | 1 | 1 | 短路 |
表1:H橋開關表
II. 超聲波感測器
我們將一個典型的HC-SR04超聲波感測器用於實現避障功能。超聲波感測器發出一個高頻脈衝,然後計算脈衝的反射波返回的時間。該時間對應於感測器與最近的障礙物之間的距離。感測器有兩個開口:一個發射超聲波,另一個接收超聲波。
III.藍牙模組
如果您想要找一個低成本的藍牙模組,那麼HC06能夠滿足您的要求。雖然它的覆蓋範圍很小(10米),但是可以用於有低功耗要求的專案中。
HC-06模組有兩種模式:主模式和從模式。主設備具有存儲最後配對的從設備的功能。主設備將搜索最後配對的從設備,直到建立連接。如果按下“喚醒”按鈕,則模組記憶體將會丟失並開始搜索新的設備。
在我們的專案中,我們將遙控器(行動電話)作為主設備,將RC車作為從設備。只要RC車在連接範圍內,就會自動與主設備連接。
對於本專案,我選擇購買一輛RC車並進行拆解和改造,以添加前面所提到的其他組件。您也可以使用任何可用的車輛。畢竟,這只是一輛有兩台馬達(每個馬達都有兩個端子)的小車。
我在這裡想要做的是移除所有不再使用的塑膠車殼和裝飾物。我直接透過擰開RC車兩側的螺釘完成了拆卸。
卸下蓋子後,您會看到一些電線和主控制器板。之後不會使用這個主控制器板,因此可以將其卸下。我們需要保留用於與輪胎機械連接的馬達電線,其他的電線就可以拆卸了。
您會看到兩根電線從兩個馬達引出。您可以透過將9V電池的正極連接到一根電線,然後將另一根電線接地來對其進行測試。如果您不想執行查找馬達電線端子這一步驟,則可以購買兩個裝有直流3-6v齒輪馬達的塑膠輪胎輪,就像此處的這樣。
我們將使用一個簡單的藍牙終端應用程式來發送資料,並檢查模組是否捕獲了串列監視器上的資料。
首先,我們必須按照下圖所示方式連接模組:
上傳該草圖,並確保上傳草圖時斷開TX和RX,因為這些引腳負責與PC進行UART通信。
https://github.com/formus14/PokemonGO/tree/master/Milestone%20sketches/BluetoothTest
如果您不熟悉Arduino通信協議,請隨時查閱我們的Arduino通信協議教程!
成功上傳後,按照接線圖重新連接TX和RX,然後下載該應用程式: Bluetooth Terminal HC-05
這個應用程式可以使我們透過藍牙對RC車進行控制,而且您可以用應用程式終端傳送任何類型的指令。該應用程式有5個按鈕,您可以透過按下其中的按鈕來選擇發送特定的指令。
當您打開應用程式時,它將自動搜索可用的設備。根據模組版本,您將會找到名為“HC-05”或“HC-06”的模組。連接到模組,您將看到嵌入式LED在閃爍。
如下圖所示,將應用程式連接到模組後,嵌入式LED將停止閃爍,並在整個連接過程中都保持穩定亮起。您可以以此來判斷藍牙是否成功配對!
現在可以嘗試編寫任何文本,並注意Arduino串列監視器上所發生的情況。
我們寫入“test ..”看看會發生什麼。
將串列監視器中的串列傳輸速率設置為9600,您將在螢幕上看到文本資訊。
注意:發送文本之前,請以9600串列傳輸速率打開串列監視器。
如果有任何問題,請重新檢查連線和嵌入式LED(如果它們在非穩定狀態下發光)。
在應用程式上創建控制按鈕
在同一應用程式上,您可以添加發送特定資料的按鈕。例如,按鈕“Press Here”可以發送字串“I love Pokemon GO”或者任何您想發送的指令。
我選擇創建5個按鈕來用於5種不同的功能:2個按鈕用於控制方向(左右)。1個按鈕用於停止車輛,2個按鈕用於控制在找到您的寶可夢之前所需要的孵蛋里程(3km或5km).
想要選擇按鈕名稱對應發送的資料,請用力按下任意按鈕,控制視窗將會被打開。
您可以指定按鈕的名稱(我選擇了“Left”),然後在指令部分指定從應用程式發送的資料或字元。我選擇了“l”,可以在之後的Arduino代碼中再次確認是否接收到了“l”。
與“Left”按鈕相同,您可以指定按鈕名稱和相應要發送的資料。只要發送的字元與您在Arduino代碼中指定的字元相匹配,發送什麼字元都可以。但是還是建議您使字元與名稱一致(如“r”代表“Right”,“l”代表“Left”等等),以免造成混淆。
按鈕3Km將字元“3”發送給Arduino,以啟動計時器,一旦接收到該字元,計時器便開始計算車輛所行駛的距離。
按鈕5Km將字元“5”發送給Arduino,以啟動計時器,一旦接收到該字元,計時器便開始計算車輛所行駛的距離。
字元“s”命令車輛停止。添加此按鈕用於緊急情況下停車或一般狀況下讓車輛停止。
現在,我們已經添加了5個按鈕。
您還可以透過寫入字元或指令來啟動這些功能,就像我們之前透過發送“testing..”來實現的那樣。我們透過寫入“b”添加了汽車向後移動的功能。您可以透過組合感測器的多種函數來創建自己的功能(如自動泊車)。
您需要將H橋連接到2個馬達和Arduino上,如下所示:
Sketch :
https://github.com/formus14/PokemonGO/tree/master/Milestone%20sketches/Hbridge
確定行駛距離的最簡單方法是速度x行駛時間。
在假設車的速度恒定的前提下,我使用了外部測量的方式來確定車輛的平均速度。還有其他可以用於確定距離的方法:可以使用GPS模組,透過旋轉編碼器測量車輪的RPM或者使用霍爾效應感測器。這些方法都會消耗主電池的能量,而這是我希望儘量避免的。您只需要將起點和終點突出地顯示出來,然後測量出車輛經過該範圍所花費的時間,就可以簡單地計算出速度。
我標記了汽車所行使區域的多個固定距離,然後檢測出所花費的時間,從而計算出汽車的平均速度。
在我的專案中,車輛在2秒內行駛了1.1米,速度=(1.1) / (2)= 0.55 米/秒。
我又進行了幾次試驗來測量速度。每次試驗的速度幾乎都相同。使用這些資料,我們可以計算出車輛達到所需里程花費的時間:
1.1 米 — 2秒 ( 2/60 分鐘)
5 米 — 9 秒 ( 9/60 分鐘)
3,000 米 ( 3 Km) — 1.5 小時
5,000米 ( 5 Km) — 2.5 小時
這些結果與三個重要因素相關:馬達功率,電池功率以及增加了部件之後車輛的總重量。
我已經用塑膠手機殼和橡皮筋將手機固定在了車輛上,如圖13所示。您可以使用3D列印製造手機殼,或者直接使用任何可以達到相同目的的手機殼。
對於該專案,我們不需要使用任何庫。所有的需要的函數都在主草圖中。
不要忘記更改定義的車速,使其與以下所示的已定義部分中的車速匹配:
在這裡,我們構建了低成本、低功耗、功能強大的精靈寶可夢Go車。完成組裝很容易,但是仍有很多可以提升的地方。我們可以添加更多的感測器來實現高級功能,也可以透過升級馬達和電池來加快行駛速度。我們還可以使用覆蓋範圍更大的藍牙模組來實現更長距離的控制。請繼續關注這個有趣專案的進展!如果您有任何改進建議,請隨時與我們分享!