步驟1:為Android設備編寫應用程序,以將數據發送到藍牙模塊。
我們使用MIT應用程序發明家2網站來編寫應用程序。在此網站上,您無需編程知識即可輕松創建帶有編程塊的應用程序。
汽車的基本行駛方向是左,右,前進和后退。要指定4個不同的動作,2位就足夠了。指定汽車的方向移動之后,讓我們設置汽車的速度。我們可以將速度調整為4種不同的設置,而2個二進制位就足夠了。數據以8位數據包的形式發送到Bluetooth模塊,而5位數據對我們來說就足夠了。
現在,我們可以創建有關這些計算的應用程序。 4個用于定義旋轉的按鈕,一個用于設備和速度控制的列表選擇器以及一個用于連接的按鈕就足夠了。另外,我們必須添加藍牙客戶端和藍牙服務器模塊以建立藍牙連接。要查看方向按鈕是否對齊,請使用表格排列。
在設計之后,我們通過單擊塊部分來通過編程。使用Mix Application Inverter 2進行編程非常容易。您可以通過單擊左側的組件來添加所需的塊。在這一部分中,我們填寫列表選擇器的內容,然后將藍牙設備排成一行,以便前者與設備匹配,因此,為了提高速度,我們將數字排列為“ 1、2、3、4”。您可以在此處找到此Android應用程序的項目。
步驟2:從藍牙模塊獲取數據
《用于藍牙通信的p》 HC06模塊使用UART作為通信協議。 HC06默認發送1個起始位,8個數據位和1個停止位,并且波特率為9600。 Silego GreenPAK具有SPI模塊。我們將對SPI模塊進行一些補充,以允許從HC06模塊獲取數據。最初,SPI協議需要一個外部時鐘。但是,在UART協議下,數據以恒定速率傳輸。另一個區別是SPI通信中沒有啟動或停止位。我們將使用一個起始位來獲取SPI時鐘。 UART協議在空閑時處于高功率狀態,在開始通信時(進入低位)進入低功率狀態。
我們可以使用下降沿檢測器來識別通信的開始。我們將此信號連接到DFF的時鐘引腳,將VDD連接到數據引腳,以使連接在連接期間保持活動狀態。因此,PDLY0塊將在通信開始時通過捕捉下降沿來設置連接標志。 UART協議具有9600波特率,這意味著它能夠每秒傳輸9600位。要找到一個周期的時間,您必須將1秒除以9600。如果立即開始運行時鐘,則數據和時鐘信號將同時更改,這可能會導致數據丟失。因此,時鐘信號必須延遲半個周期。我們使用CNT6/DLY6塊應用了此延遲。通過將OSC模塊中的RC OSC頻率設置為2000 kHz,我們獲得了更高的頻率。從中獲得較高頻率的周期具有較短的周期,并且計數器的絕對定時分辨率提高。因此,我們降低了計數器的錯誤率。
CNT6塊設置為延遲半個周期(0,1042/2 = 0,0520 ms)。我們使用另一個計數器(CNT2)獲得一個周期的持續時間(0,142 ms)。我們將此計數器的時鐘設置為External Clock0。通過應用邏輯和處理,我們將來自OSC的OUT1信號和CLK BEGIN信號連接到OSC的外部Clock0輸入。因此,CNT2僅在連接開始時才開始計數。為了提供更多細節,計數器模塊對時鐘信號的邊沿進行計數。如果計數器不斷向CLK引腳發送高電平或低電平信號,則計數器停止計數。在這里,我們將CLK Begin信號與OUT1信號進行“與”運算,并將它們連接到外部CLK0輸入。這樣,在沒有連接的時刻,ANDing CLK Begin信號和OUT1信號將始終等于0,并且CNT2將停止計數。
但是,當提供連接時,CLK Begin信號將為“ 1“,邏輯和運算的結果將是OUT1信號,并將使CNT2繼續計數。我們將CNT2計數器的輸出(其周期持續時間已預先計算)連接到SPI模塊的SCLK引腳。因此,我們為來自HC06的每個字節數據生成了一個時鐘周期。
最后,我們設置延遲以計算連接的到期時間并將連接清零。連接開始后,該計數器將開始測量持續時間,并在數據傳送完成后結束連接。在測量9個字節的持續時間后,我們將連接歸零。在停止字節期間將連接清零可使SPI模塊在形成新連接之前準備就緒。否則,如果打算在10個字節的持續時間結束時將其清零,則可能無法捕獲新連接的起始字節。我們將來自PLY5模塊的SPI引腳的輸出引腳,計算出的1個周期持續時間的計數器以及用作連接標志的DFF0復位。但是,與其他信號不同,我們在復位DFF0之前將信號延遲了一段時間。如果您重置SLG46620V芯片的反延遲模塊,則該模塊的輸出芯片將保持高電平1個周期。如果您同時重置CNT2和DFF0,則CLK Begin信號將保持低電平,從而停止CNT2的時鐘停止。由于CNT2將保持高電平1個周期,并且時鐘將不斷變為低電平狀態,因此CNT2將無法完成1個周期,而是將穩定地保持在高電平狀態。因此,我們首先重置CNT2塊,然后在幾個周期后重置DFF0。
步驟3:電動機/汽車的控制
在此階段,我們通過更改直流電動機的輸出來更改汽車的速度和方向。通過藍牙接收汽車的方向和速度信息。當我們通過SPI模塊接收到來自UART協議的數據時,將在這里使用SPI并行輸出模塊。
UART和SPI通信之間的區別之一是發送字節的順序。當最初使用SPI協議發送MSB(最高有效位)時,最后使用UART協議發送它。因此,我們將以相反的順序接收數據的字節。我們將S1和S0字節字節鏈接到PWM0塊。如上所示應用了PWM0的設置后,就配置了CNT8/DLY8模塊。 。 SLG46620V CMIC無法直接驅動直流電動機。因此,我們將使用電源和電機驅動器來控制它們。直流電動機驅動器通過根據通常稱為M1-A,M1-B,M2-A和M2-B的控制銷向電動機的銷通電來運行電動機。我們在設計中建立了連接,如表6所示。
LUT為電機驅動器輸入提供適當的邏輯信號。因此,當開合信號處于低電平狀態時,電機輸出引腳將保持低電平,并且電機將不會旋轉。
-
Android
+關注
關注
12文章
3946瀏覽量
128207 -
藍牙
+關注
關注
114文章
5889瀏覽量
171576
發布評論請先 登錄
相關推薦
無線遙控車的電機抖動
OM6621E 低功耗BLE5.1協議Soc芯片 藍牙語音遙控器原理應用
OM6621E 低功耗BLE5.1協議Soc芯片 藍牙語音遙控器原理應用
開源項目!打造一款FPV頭部追蹤相機,讓你仿佛置身遙控車之中!
藍牙語音遙控器方案

藍牙自動感應模塊BLE HID無感車鑰匙方案
藍牙數字車鑰匙方案

自制一輛遙控悍馬
制作一只3D打印的遙控機器狗
基于國民技術N32WB031的藍牙語音遙控器解決方案

評論