這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
精靈寶可夢Go是全世界最受歡迎的手機(jī)游戲之一。捕捉精靈寶可夢有很多技巧,但是今天我們將構(gòu)建一個Arduino精靈寶可夢Go車,使您可以更容易地完成孵蛋。精靈寶可夢Go孵蛋車旨在協(xié)助玩家孵化游戲中的蛋,最終通過制造一輛車并攜帶您的個人手機(jī)來完成。我們將對常規(guī)的RC車進(jìn)行修改,并加載一些組件,例如用于藍(lán)牙控制的HC06模塊和用于檢測物體以在撞上障礙物前轉(zhuǎn)彎的HC-SR04距離傳感器。游戲中有三種類型的蛋,車輛具有調(diào)整機(jī)制來適應(yīng)不同的孵蛋里程。在本教程中,我們將介紹兩種蛋(3km和5km)。
目標(biāo)
1.車輛根據(jù)用戶指定的距離進(jìn)行移動。
2.車輛具有避障功能
3.通過藍(lán)牙進(jìn)行無線控制。
硬件
? Arduino Uno
? RC車
? L9110S H橋
? HC-SR04 超聲波傳感器
? HC06 藍(lán)牙模塊
軟件
? Arduino IDE
? 藍(lán)牙終端應(yīng)用程序
? https://github.com/formus14/PokemonGO
工具
? 面包板
? 螺絲刀
? 烙鐵
組件概述
I. H橋
圖1:L9110S H橋步進(jìn)電機(jī)雙直流驅(qū)動控制器
圖2:H橋概要圖示
H橋中的H來自上圖中四個電機(jī)連接所構(gòu)成的H形。我們使用H橋而不是直接使用Arduino的GPIO主要因為我們想用外部電源來給電機(jī)供電,這樣就不會影響Arduino的電源供給。
下表顯示了H橋如何根據(jù)開關(guān)狀態(tài)進(jìn)行操作。S1和S2是前部電機(jī)的端子,而S3和S4是后部電機(jī)的端子。
S1 | S2 | S3 | S4 | Result |
1 | 0 | 0 | 1 | 電機(jī)右轉(zhuǎn) |
0 | 1 | 1 | 0 | 電機(jī)左轉(zhuǎn) |
0 | 0 | 0 | 0 | 電機(jī)未被使用 |
0 | 1 | 0 | 1 | 電機(jī)制動 |
1 | 0 | 1 | 0 | 電機(jī)制動 |
1 | 1 | 0 | 0 | 短路 |
0 | 0 | 1 | 1 | 短路 |
1 | 1 | 1 | 1 | 短路 |
表1:H橋開關(guān)表
II. 超聲波傳感器
圖3:HC-SR04 超聲波傳感器
我們將一個典型的HC-SR04超聲波傳感器用于實現(xiàn)避障功能。超聲波傳感器發(fā)出一個高頻脈沖,然后計算脈沖的反射波返回的時間。該時間對應(yīng)于傳感器與最近的障礙物之間的距離。傳感器有兩個開口:一個發(fā)射超聲波,另一個接收超聲波。
III. 藍(lán)牙模塊
圖4:HC06藍(lán)牙模塊
如果您想要找一個低成本的藍(lán)牙模塊,那么HC06能夠滿足您的要求。雖然它的覆蓋范圍很?。?0米),但是可以用于有低功耗要求的項目中。
HC-06模塊有兩種模式:主模式和從模式。主設(shè)備具有存儲最后配對的從設(shè)備的功能。主設(shè)備將搜索最后配對的從設(shè)備,直到建立連接。如果按下“喚醒”按鈕,則模塊內(nèi)存將會丟失并開始搜索新的設(shè)備。
在我們的項目中,我們將遙控器(移動電話)作為主設(shè)備,將RC車作為從設(shè)備。只要RC車在連接范圍內(nèi),就會自動與主設(shè)備連接。
步驟1:構(gòu)建一個小車!
對于本項目,我選擇購買一輛RC車并進(jìn)行拆解和改造,以添加前面所提到的其他組件。您也可以使用任何可用的車輛。畢竟,這只是一輛有兩臺電機(jī)(每個電機(jī)都有兩個端子)的小車。
圖5:改造前的RC車
圖6:RC車(底視圖)
我在這里想要做的是移除所有不再使用的塑料覆蓋物/裝飾物。我直接通過擰開RC車兩側(cè)的螺釘完成了拆卸。
圖7:無蓋RC車及其主控制器板
卸下蓋子后,您會看到一些電線和主控制器板。之后不會使用這個主控制器板,因此可以將其卸下。我們需要保留用于與輪胎機(jī)械連接的電機(jī)電線,其他的電線就可以拆卸了。
圖8:RC車基底
您會看到兩根電線從兩個電機(jī)引出。您可以通過將9V電池的正極連接到一根電線,然后將另一根電線接地來對其進(jìn)行測試。如果您不想執(zhí)行查找電機(jī)電線端子這一步驟,則可以購買兩個裝有直流3-6v齒輪電機(jī)的塑料輪胎輪,就像此處的這樣。
步驟2:設(shè)置藍(lán)牙模塊
我們將使用一個簡單的藍(lán)牙終端應(yīng)用程序來發(fā)送數(shù)據(jù),并檢查模塊是否捕獲了串行監(jiān)視器上的數(shù)據(jù)。
首先,我們必須按照下圖所示方式連接模塊:
圖9: HC06藍(lán)牙模塊與Arduino UNO的連接/? c-sharpcorner
上傳該草圖,并確保上傳草圖時斷開TX和RX,因為這些引腳負(fù)責(zé)與PC進(jìn)行UART通信。
https://github.com/formus14/PokemonGO/tree/master/Milestone%20sketches/BluetoothTest
如果您不熟悉Arduino通信協(xié)議,請隨時查閱我們的Arduino通信協(xié)議教程!
成功上傳后,按照接線圖重新連接TX和RX,然后下載該應(yīng)用程序:Bluetooth Terminal HC-05
這個應(yīng)用程序可以使我們通過藍(lán)牙對RC車進(jìn)行控制,而且您可以用應(yīng)用程序終端傳送任何類型的指令。該應(yīng)用程序有5個按鈕,您可以通過按下其中的按鈕來選擇發(fā)送特定的指令。
當(dāng)您打開應(yīng)用程序時,它將自動搜索可用的設(shè)備。根據(jù)模塊版本,您將會找到名為“HC-05”或“HC-06”的模塊。連接到模塊,您將看到嵌入式LED在閃爍。
如下圖所示,將應(yīng)用程序連接到模塊后,嵌入式LED將停止閃爍,并在整個連接過程中都保持穩(wěn)定亮起。您可以以此來判斷藍(lán)牙是否成功配對!
現(xiàn)在可以嘗試編寫任何文本,并注意Arduino串行監(jiān)視器上所發(fā)生的情況。
我們寫入“test ..”看看會發(fā)生什么。
將串行監(jiān)視器中的波特率設(shè)置為9600,您將在屏幕上看到文本信息。
注意:發(fā)送文本之前,請以9600波特率打開串行監(jiān)視器。
如果有任何問題,請重新檢查連線和嵌入式LED(如果它們在非穩(wěn)定狀態(tài)下發(fā)光)。
在應(yīng)用程序上創(chuàng)建控制按鈕
在同一應(yīng)用程序上,您可以添加發(fā)送特定數(shù)據(jù)的按鈕。例如,按鈕“Press Here”可以發(fā)送字符串“I love Pokemon GO”或者任何您想發(fā)送的指令。
我選擇創(chuàng)建5個按鈕來用于5種不同的功能:2個按鈕用于控制方向(左右)。1個按鈕用于停止車輛,2個按鈕用于控制在找到您的寶可夢之前所需要的孵蛋里程(3km或5km)。
想要選擇按鈕名稱對應(yīng)發(fā)送的數(shù)據(jù),請用力按下任意按鈕,控制窗口將會被打開。
您可以指定按鈕的名稱(我選擇了“Left”),然后在指令部分指定從應(yīng)用程序發(fā)送的數(shù)據(jù)或字符。我選擇了“l(fā)”,可以在之后的Arduino代碼中再次確認(rèn)是否接收到了“l(fā)”。
與“Left”按鈕相同,您可以指定按鈕名稱和相應(yīng)要發(fā)送的數(shù)據(jù)。只要發(fā)送的字符與您在Arduino代碼中指定的字符相匹配,發(fā)送什么字符都可以。但是還是建議您使字符與名稱一致(如“r”代表“Right”,“l(fā)”代表“Left”等等),以免造成混淆。
按鈕3Km將字符“3”發(fā)送給Arduino,以激活計時器,一旦接收到該字符,計時器便開始計算車輛所行駛的距離。
按鈕5Km將字符“5”發(fā)送給Arduino,以激活計時器,一旦接收到該字符,計時器便開始計算車輛所行駛的距離。
字符“s”命令車輛停止。添加此按鈕用于緊急情況下停車或一般狀況下讓車輛停止。
現(xiàn)在,我們已經(jīng)添加了5個按鈕。
您還可以通過寫入字符或指令來激活這些功能,就像我們之前通過發(fā)送“testing..”來實現(xiàn)的那樣。我們通過寫入“b”添加了汽車向后移動的功能。您可以通過組合傳感器的多種函數(shù)來創(chuàng)建自己的功能(如自動泊車)。
步驟3:將H橋與電機(jī)端子連接
您需要將H橋連接到2個電機(jī)和Arduino上,如下所示:
圖10:H橋連接
草圖 :
https://github.com/formus14/PokemonGO/tree/master/Milestone%20sketches/Hbridge
步驟4:確定汽車速度/行駛距離
確定行駛距離的最簡單方法是速度x行駛時間。
圖11:速度,距離和時間之間的關(guān)系
在假設(shè)車的速度恒定的前提下,我使用了外部測量的方式來確定車輛的平均速度。還有其他可以用于確定距離的方法:可以使用GPS模塊,通過旋轉(zhuǎn)編碼器測量車輪的RPM或者使用霍爾效應(yīng)傳感器。這些方法都會消耗主電池的能量,而這是我希望盡量避免的。您只需要將起點(diǎn)和終點(diǎn)突出地顯示出來,然后測量出車輛經(jīng)過該范圍所花費(fèi)的時間,就可以簡單地計算出速度。
圖12:測量車輛所要行駛區(qū)域的固定距離
我標(biāo)記了汽車所行使區(qū)域的多個固定距離,然后檢測出所花費(fèi)的時間,從而計算出汽車的平均速度。
在我的項目中,車輛在2秒內(nèi)行駛了1.1米,速度=(1.1) / (2)= 0.55 米/秒。
我又進(jìn)行了幾次試驗來測量速度。每次試驗的速度幾乎都相同。使用這些數(shù)據(jù),我們可以計算出車輛達(dá)到所需里程花費(fèi)的時間:
1.1 米 — 2 秒 ( 2/60 分鐘)
5 米 — 9 秒 ( 9/60 分鐘)
3,000 米 ( 3 Km) — 1.5 小時
5,000 米 ( 5 Km) — 2.5 小時
? 行駛3 Km所需時間 = ( 3000 X (9/60 ) ) / 5 = 90 分鐘 = 1.5 小時
? 行駛5 Km所需時間 = ( 5000 X (9/60 ) ) / 5 = 150 分鐘 = 2.5 小時
? 行駛10 Km所需時間 = ( 10000 X (9/60 ) ) / 5 = 300 分鐘 = 5 小時
這些結(jié)果與三個重要因素相關(guān):電機(jī)功率,電池功率以及增加了部件之后車輛的總重量。
步驟5:將手機(jī)放在車輛上并上傳最終草圖
我已經(jīng)用塑料手機(jī)殼和橡皮筋將手機(jī)固定在了車輛上,如圖13所示。您可以使用3D打印制造手機(jī)殼,或者直接使用任何可以達(dá)到相同目的的手機(jī)殼。
對于該項目,我們不需要使用任何庫。所有的需要的函數(shù)都在主草圖中。
不要忘記更改定義的車速,使其與以下所示的已定義部分中的車速匹配:
圖13:最終的精靈寶可夢Go車(側(cè)視圖)
圖14:最終的精靈寶可夢Go車(頂視圖)
技巧和竅門
? 每當(dāng)您上傳草圖時,都要從Arduino斷開RX線,否則會出現(xiàn)編譯錯誤。這是因為引腳0和1負(fù)責(zé)UART通信,開發(fā)板將會接收來自PC端的代碼。
? 一定要選擇可充電電池。我使用過Nikko可充電電池組。這種電池在RC車領(lǐng)域非常受歡迎。
? 選擇H橋模塊而非H橋PIC,PIC很容易發(fā)熱,H橋模塊板上嵌有散熱器,可以防止這種情況產(chǎn)生。
在這里,我們構(gòu)建了低成本、低功耗、功能強(qiáng)大的精靈寶可夢Go車。完成組裝很容易,但是仍有很多可以提升的地方。我們可以添加更多的傳感器來實現(xiàn)高級功能,也可以通過升級電機(jī)和電池來加快行駛速度。我們還可以使用覆蓋范圍更大的藍(lán)牙模塊來實現(xiàn)更長距離的控制。請繼續(xù)關(guān)注這個有趣項目的進(jìn)展!如果您有任何改進(jìn)建議,請隨時與我們分享!
Rabindranath Andujar
Rab擁有計算物理學(xué)博士學(xué)位,是計算、自動化和復(fù)雜系統(tǒng)領(lǐng)域的專業(yè)科研人員。Rab還擁有電子、機(jī)器人和數(shù)字制造方面的經(jīng)驗。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2552文章
51383瀏覽量
756040 -
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5866瀏覽量
171029 -
超聲波
+關(guān)注
關(guān)注
63文章
3039瀏覽量
138607 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187663
發(fā)布評論請先 登錄
相關(guān)推薦
評論