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