主頁(yè) > 知識(shí)庫(kù) > 怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人

怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人

熱門標(biāo)簽:安陽(yáng)百應(yīng)外呼系統(tǒng)怎么樣 宿州正規(guī)外呼系統(tǒng)平臺(tái) e-chart 地圖標(biāo)注 番禺市橋地圖標(biāo)注 福州語(yǔ)音電銷機(jī)器人價(jià)格 登封防封卡外呼系統(tǒng)線路 外呼系統(tǒng)3000系統(tǒng)費(fèi) 電子地圖標(biāo)注軟件安卓版 圓堡山市區(qū)多層停車場(chǎng)地圖標(biāo)注
我們需要什么 配置了Arduino IDE的Tactigon 機(jī)器人。我們使用帶有Arduino板的2輪機(jī)器人和與UART接口的BLE無(wú)線電。其他類型的機(jī)器人或定制機(jī)器人也可以正常工作。 機(jī)器人BLE MAC地址和特征 趣味 收集BLE MAC地址和特征 配置好環(huán)境并且我們的電路板開啟后,我們需要收集BLE MAC地址和特征。為此,我們使用了一個(gè)名為BLE Scanner的免費(fèi)Android應(yīng)用程序。 應(yīng)用程序顯示后幾秒鐘機(jī)器人的BLE: 如我們所見,我們周圍的所有BLE設(shè)備都在本節(jié)中展示。我們需要記下Waveshare_BLE MAC地址:在這個(gè)例子中它是:00:0E:0B:0C:4A:00 通過(guò)點(diǎn)擊CONNECT按鈕,我們可以訪問設(shè)備的信息作為屬性,服務(wù)和自定義特征。 這里我們需要寫下CUSTOM CHARACTERISTIC UUID,在這種情況下:0000ffe1-0000 -1000-8000-00805f9b34fb。 通過(guò)這些項(xiàng)目,我們可以將Tactigon BLE設(shè)置為代碼的setup()部分中的BLE Central。 Tactigon Sketch 循環(huán) 在本節(jié)中,我們有草圖的核心。在頻率為50Hz時(shí),我們更新四元數(shù)和歐拉角。 由Tactigon庫(kù)提供的Analizyng俯仰角,我們可以通過(guò)減速來(lái)確定轉(zhuǎn)向半徑內(nèi)輪和加速外輪。 Analizying roll,我們可以確定機(jī)器人的行進(jìn)速度。 使用sprintf我們準(zhǔn)備緩沖區(qū)以寫入特征。 機(jī)器人草圖 由于我們的藍(lán)牙通過(guò)UART發(fā)送接收數(shù)據(jù),因此我們可以直接在串行緩沖器中獲得輪速。 我們將機(jī)器人引腳設(shè)置如下,全部作為輸出: 要解析命令,我們首先讀取所有串行緩沖區(qū)并驗(yàn)證它是否長(zhǎng)于0: 如果命令包含“Wh”,我們可以解析字符串并收集leftSpeed和rightSpeed。 direct_motor函數(shù)將Tactigon傳輸?shù)乃俣确峙浣o機(jī)器人的每個(gè)車輪。通過(guò)這樣做Tactigon將充當(dāng)虛擬方向盤! 最終注意事項(xiàng) 此草圖顯示了Tactigon的潛在應(yīng)用,BLE Central模式可以連接到現(xiàn)有的BLE設(shè)備并收集信息或控制它們。 請(qǐng)繼續(xù)關(guān)注更多Tactigon的代碼! Alphabot2代碼 Tactigon代碼 #include #include #include extern int ButtonPressed; T_Led rLed, bLed, gLed; T_QUAT qMeter; T_QData qData; T_BLE bleManager; UUID targetUUID; uint8_t targetMAC[6] = {0x00,0x0e,0x0b,0x0c,0x4a,0x00}; T_BLE_Characteristic accChar, gyroChar, magChar, qChar; int ticks, ticksLed, stp, cnt, printCnt; float roll, pitch, yaw; void setup() { // put your setup code here, to run once: ticks = 0; ticksLed = 0; stp = 0; cnt = 0; //init leds rLed.init(T_Led::RED); gLed.init(T_Led::GREEN); bLed.init(T_Led::BLUE); rLed.off(); gLed.off(); bLed.off(); //init BLE bleManager.setName(“Tactigon”); bleManager.InitRole(TACTIGON_BLE_CENTRAL); //role: CENTRAL targetUUID.set(“0000ffe1-0000-1000-8000-00805f9b34fb”); //target characteristic bleManager.setTarget(targetMAC, targetUUID); //target: mac device and its char UUID } void loop() { char buffData[24]; int deltaWheel, speedWheel; int pitchThreshold, rollThreshold, th1, th2; //update BLE characteristics @ 50Hz (20msec) if(GetCurrentMilli() 》= (ticks +(1000 / 50))) { ticks = GetCurrentMilli(); //get quaternions and Euler angles qData = qMeter.getQs(); //Euler angles: rad/sec --》 degrees/sec roll = qData.roll * 360/6.28; pitch = qData.pitch * 360/6.28; yaw = qData.yaw * 360/6.28; //build command to rover depending on Euler angles //left/right pitchThreshold = 15; if(pitch 《 -pitchThreshold || pitch 》 pitchThreshold) { if(pitch《-pitchThreshold) { deltaWheel =- (fabs(pitch) - pitchThreshold)*3; } else { deltaWheel =+ (fabs(pitch) - pitchThreshold)*3; } } else { deltaWheel=0; } //forward/backword rollThreshold = 15; th1 = 90 + rollThreshold; th2 = 90 - rollThreshold; roll = fabs(roll); if(roll 》 th1) { speedWheel = (roll - th1) * 3; } else if(roll 《 th2) { speedWheel = (roll - th2) * 3; } else { speedWheel = 0; } //command in buffData sprintf(buffData,“Wh(%d)(%d)”, speedWheel-(-deltaWheel/2), speedWheel+(-deltaWheel/2)); //if connected and attached to peripheral characteristic write in it if(bleManager.getStatus() == 3) { //signal that connection is on bLed.on(); //send command every 100msec rLed.off(); cnt++; if(cnt 》 5) { cnt = 0; bleManager.writeToPeripheral((unsigned char *)buffData, strlen(buffData)); rLed.on(); } } //say hello on serial monitor every second and blink green led printCnt++; rLed.off(); if(printCnt 》 50) { //Serial.println(“Hello!”); //Serial.println(roll); printCnt = 0; rLed.on(); } } }

標(biāo)簽:三沙 澳門 黔南 克拉瑪依 陜西 臨滄 海東 北海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人》,本文關(guān)鍵詞  怎樣,用,Tactigon,通過(guò),BLE,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章