1. 問(wèn)題的提出
在設(shè)計(jì)機(jī)器人結(jié)構(gòu)時(shí),我們常常會(huì)用到舵機(jī),作為旭日x3派“首百嘗鮮”活動(dòng)的試用者,本次實(shí)驗(yàn)我準(zhǔn)備用旭日x3派控制一臺(tái)舵機(jī),為了方便讀者了解實(shí)驗(yàn)的設(shè)計(jì)意圖,下面先提出幾個(gè)基本問(wèn)題以供討論:
(1)什么是舵機(jī)?舵機(jī)是一種能夠按照指定角度轉(zhuǎn)動(dòng)的電動(dòng)執(zhí)行器。
(2)舵機(jī)的結(jié)構(gòu)?舵機(jī)一般由馬達(dá)、減速齒輪組、電位器和控制電路組成。
(3)怎樣控制舵機(jī)動(dòng)作?給舵機(jī)提供一個(gè)特定的PWM信號(hào),舵機(jī)就可以旋轉(zhuǎn)到指定的位置。

(4)怎樣用旭日x3派遠(yuǎn)程控制一臺(tái)舵機(jī)?旭日x3派本身有兩個(gè)PWM脈沖信號(hào)端口(32、33),受限于供電電流,一般不建議直接控制舵機(jī),所以我們需要借助MCU驅(qū)動(dòng)舵機(jī)運(yùn)動(dòng),而旭日派的任務(wù)就是給MCU發(fā)送指令,通常我們想到的就是通過(guò)串口(旭日派UART3的14、15端口)發(fā)送指令,僅僅為了串口硬線連接而把旭日派與MCU“綁定”到一起,倒不如通過(guò)無(wú)線串口通訊方便實(shí)用,所以本文準(zhǔn)備探索通過(guò)無(wú)線串口通信控制一臺(tái)舵機(jī)。
(5)有沒(méi)有具體方案?如果采用普通舵機(jī),還要考慮MCU的編程,為了簡(jiǎn)化起見(jiàn),采用UART串行總線舵機(jī),只需要向舵機(jī)控制板發(fā)送指令,舵機(jī)就會(huì)按照指定角度旋轉(zhuǎn),這樣就大大簡(jiǎn)化了編程。對(duì)于無(wú)線串口部分,我們采用無(wú)線發(fā)送接收模塊實(shí)現(xiàn)。
2. 總體方案
具體方案如下圖所示,筆記本電腦通過(guò)wifi(SSH無(wú)線網(wǎng)絡(luò)ip地址)連接并登陸旭日x3派,實(shí)現(xiàn)筆記本端到旭日派端的無(wú)線連接,旭日x3派與串口控制板采用無(wú)線串口收發(fā)器,實(shí)現(xiàn)旭日派與MCU控制板之間無(wú)線傳遞“信息”。


3. 控制編程
下面借鑒了官方python例程,并做了修改:
#!/usr/bin/env python3# coding = utf-8import sysimport osimport timeimport serialimport serial.tools.list_portsdef serialTest(): print("List of enabled UART:") os.system('ls /dev/tty[a-zA-Z]*') uart_dev= '/dev/ttyS3' #定義串口端口 baudrate = 115200 #波特率 val = 1500 #舵機(jī)初始位置(0位) incr = 100 #舵機(jī)轉(zhuǎn)位遞增(減)步長(zhǎng) try: ser = serial.Serial(uart_dev, int(baudrate), timeout=1) # 1s timeout except Exception as e: print("open serial failed!\n") print(ser) print("Starting demo now! Press CTRL+C to exit") while True: #舵機(jī)一秒轉(zhuǎn)位一次,到達(dá)限位后反轉(zhuǎn),往復(fù)轉(zhuǎn)動(dòng) if val >= 2500: #高限位 incr = -incr if val <= 0: #低限位 incr = -incr val += incr val1 = str(val) #轉(zhuǎn)換成字符串 if val <= 1000: test_data = '#000P'+'0'+val1+'T1000!' #當(dāng)val<1000時(shí),前位自動(dòng)補(bǔ)0,即:若val=500,則字符串為“0500”,實(shí)際發(fā)送字符串為:#000P0500T1000! else: test_data = '#000P'+val1+'T1000!' write_num = ser.write(test_data.encode('UTF-8')) #發(fā)送到串口 print(test_data) time.sleep(1) ser.close() return 0if __name__ == '__main__': if serialTest() != 0: print("Serial test failed!") else: print("Serial test success!")
4. 運(yùn)行效果
在筆記本端運(yùn)行MobaXterm,運(yùn)行python程序,效果如圖所示:


5. 挖坑時(shí)間
請(qǐng)旭友們幫幫忙,我的這篇文章里有一處錯(cuò)誤和一處疑惑,幫我解答一下唄!
(1)電機(jī)轉(zhuǎn)動(dòng)到某個(gè)限位時(shí),會(huì)停幾秒,為什么?代碼有哪里需要改進(jìn)?
(2)筆記本不需要用串口線連接旭日x3派,開(kāi)機(jī)直接用充電寶給旭日派插電,Ubuntu要做什么設(shè)置,MobaXterm又要采用什么連接方式?
本文轉(zhuǎn)自地平線開(kāi)發(fā)者社區(qū)原作者:David988
原鏈接:https://developer.horizon.ai/forumDetail/106482341031035906
-
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44934瀏覽量
647676
發(fā)布評(píng)論請(qǐng)先 登錄
韻樂(lè)Vinal X3/X5卡拉OK音頻處理器調(diào)音軟件簡(jiǎn)介
RDK X3 帶飛的智能護(hù)理系統(tǒng):讓機(jī)器人秒變貼心小棉襖

有人這CAN機(jī)器手臂控制板的原理圖嗎?CAN舵機(jī)ID無(wú)法被識(shí)別
從模擬到數(shù)字:舵機(jī)控制技術(shù)的飛躍!

HMC-XTB110 無(wú)源x3倍頻器,24-30GHz輸入技術(shù)手冊(cè)

“你的錢(qián)來(lái)了”:財(cái)神1號(hào),RDK X3驅(qū)動(dòng),自動(dòng)撿錢(qián)不手軟!

Cadence推出Palladium Z3與Protium X3系統(tǒng)
【RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用】+03+UART+控制舵機(jī)+控制LED
【RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用】+02+舵機(jī)控制+串口通訊
CC13x1x3、CC26x1x3 Simplelink?無(wú)線MCU技術(shù)參考手冊(cè)

舵機(jī)技術(shù)新突破,無(wú)線控制更自由!
串口通信協(xié)議解析 串口通信應(yīng)用實(shí)例
Simplelink? Wi-Fi? CC3x20、CC3x3x無(wú)線更新

評(píng)論