<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 【學(xué)霸帶節(jié)奏】教你DIY跳舞機(jī)器人之“上位機(jī)部分”

          【學(xué)霸帶節(jié)奏】教你DIY跳舞機(jī)器人之“上位機(jī)部分”

          作者:郭曉宇 時(shí)間:2018-04-03 來源:電子產(chǎn)品世界 收藏

            通過前兩周介紹的機(jī)器人硬件部分和軟件部分,你打造的機(jī)器人是否已經(jīng)可以運(yùn)動(dòng)起來了?這周小編將主要介紹機(jī)器人的上位機(jī)部分,讓你可以自由控制自己的小π。小π機(jī)器人的上位機(jī)部分分為電腦端的上位機(jī)軟件和手機(jī)端的APP。

          本文引用地址:http://www.ex-cimer.com/article/201804/377851.htm

            一、手機(jī)APP

            1、appinventor簡介

            App Inventor 原是Google實(shí)驗(yàn)室(Google Lab)的一個(gè)子計(jì)劃,由一群Google工程師和勇于挑戰(zhàn)的Google使用者共同參與設(shè)計(jì)完成。Google App Inventor是一個(gè)完全在線開發(fā)的Android編程環(huán)境,拋棄復(fù)雜的程式代碼而使用積木式的堆疊法來完成開發(fā)者的Android程式。除此之外它也正式支持樂高NXT機(jī)器人,對(duì)于Android初學(xué)者或是機(jī)器人開發(fā)者來說是一大福音。因?yàn)閷?duì)于想要用手機(jī)控制機(jī)器人的使用者而言,他們不大需要太華麗的界面,只要使用基本元件例如按鈕、文字輸入輸出即可。

            2、手機(jī)APP開發(fā)

            手機(jī)app部分主要包括三部分功能:實(shí)時(shí)遙控,重力遙控,動(dòng)作記錄。實(shí)時(shí)遙控功能即按一個(gè)動(dòng)作,小π完成一個(gè)動(dòng)作??梢詫?shí)現(xiàn)較復(fù)雜動(dòng)作如搖頭、抬腳、晃腿、彈跳等,比如重力遙控功能主要是使用手機(jī)的重力感應(yīng)模塊,可以控制小π的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退等簡易動(dòng)作。動(dòng)作記錄功能,可以實(shí)現(xiàn)一組動(dòng)作的記錄。可以實(shí)現(xiàn)跳舞等功能,也可以自由擴(kuò)展,達(dá)到意想不到的效果。

            我們所做出的APP,是一款用于操作小π實(shí)現(xiàn)一系列動(dòng)作的APP,下面是已經(jīng)制作出來的APP操作界面。

            圖1、2、3中按鈕為button,提示(如圖2中的“改變背景顏色:”等)為label,文本輸入框?yàn)閠extbox等,點(diǎn)擊按鈕時(shí)會(huì)觸發(fā)相應(yīng)的事件,執(zhí)行對(duì)應(yīng)的代碼。例如,當(dāng)點(diǎn)擊按鈕“前”時(shí),手機(jī)就會(huì)通過藍(lán)牙向單片機(jī)發(fā)送的命令。

          圖1 重力感應(yīng)界面

          圖2 控制界面

          圖3 編輯舞步界面

            使用者可以下達(dá)不同的動(dòng)作指令(如運(yùn)動(dòng)方向、運(yùn)動(dòng)形態(tài)等),來完成對(duì)機(jī)器人的動(dòng)作控制。并且可以通過下達(dá)其他指令(如背景顏色、音樂播放),來完成更為復(fù)雜的控制。圖3為設(shè)計(jì)舞步界面,用戶能設(shè)計(jì)一套屬于自己的舞蹈動(dòng)作。我們還設(shè)置了3套固定的動(dòng)作,供用戶調(diào)用。

            3、內(nèi)部實(shí)現(xiàn)

            通信協(xié)議的基本格式為<指令,參數(shù)>。

            當(dāng)APP檢測到前進(jìn)的按鈕被按下后,APP通過手機(jī)藍(lán)牙向小π機(jī)器人發(fā)送指令。這條指令的意思就是向前走1步。其它動(dòng)作指令也是類似的。

            在重力感應(yīng)模式下,手機(jī)通過內(nèi)置的加速度傳感器和陀螺儀獲取手機(jī)當(dāng)前的姿態(tài)信息,通過對(duì)姿態(tài)信息的判斷發(fā)送前后左右運(yùn)動(dòng)命令。

            燈光顏色選擇指令由三條指令構(gòu)成,分別為。R、G、B的參數(shù)變化范圍為0-255,這樣就可以變化出1600多萬種顏色。例如發(fā)送紅色命令就是<255,0><0,0><0,0>。

            當(dāng)手機(jī)APP接收到超聲波距離、溫濕度等信息時(shí),將接收到的信息在APP界面上顯示出來。

            下圖是手機(jī)APP和HC-06藍(lán)牙模塊建立連接的核心代碼截圖,供大家參考。

          圖4 APP核心代碼

            二、電腦上位機(jī)開發(fā)

            1、C#簡介

            C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語言。C#使得C++程序員可以高效的開發(fā)程序,且因可調(diào)用由 C/C++ 編寫的本機(jī)原生函數(shù),因此絕不損失C/C++原有的強(qiáng)大的功能。因?yàn)檫@種繼承關(guān)系,C#與C/C++具有極大的相似性,熟悉類似語言的開發(fā)者可以很快的轉(zhuǎn)向C#。

            2、電腦端串口調(diào)試助手

            串口調(diào)試助手通過C#編寫,界面如下圖所示。通過“串口設(shè)置”來設(shè)置串口的相應(yīng)參數(shù),“串口檢測”可以用來檢測計(jì)算機(jī)可用的串口?!鞍l(fā)送數(shù)據(jù)”可以將“數(shù)據(jù)發(fā)送”欄中的數(shù)據(jù)通過串口發(fā)送出去。一旦串口接收到數(shù)據(jù),則會(huì)在“數(shù)據(jù)接收”欄中顯示出來,通過先前設(shè)置的“字符顯示”或者“HEX顯示”來以字符顯示或者以十六進(jìn)制數(shù)顯示?!扒蹇諗?shù)據(jù)”則可以清除“數(shù)據(jù)接收”欄以及“收據(jù)發(fā)送”欄中的所有數(shù)據(jù)。通過串口調(diào)試助手發(fā)送相關(guān)的命令可以對(duì)小π機(jī)器人進(jìn)行調(diào)試。

          圖5 電腦上位機(jī)界面

            串口調(diào)試助手的程序流程大致為開始進(jìn)行串口初始化,在串口初始化過程中對(duì)串口號(hào)、波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位等進(jìn)行設(shè)置。初始化結(jié)束后可以對(duì)命令進(jìn)行收發(fā)。小π機(jī)器人中波特率為115200,無奇偶校驗(yàn)、數(shù)據(jù)位為8位、停止位為1位。

            3、平板端上位機(jī)開發(fā)

            Win10 IoT是微軟開發(fā)的一款基于win10的物聯(lián)網(wǎng)操作系統(tǒng)。在裝有win10 IoT系統(tǒng)的平板電腦中可以直接運(yùn)行小π機(jī)器人的平板端程序。平板端程序功能和手機(jī)APP程序類似,可以通過藍(lán)牙對(duì)小π機(jī)器人進(jìn)行相應(yīng)的控制。程序是通過C#編寫的,程序界面如下圖所示。

          圖6 平板上位機(jī)界面



          關(guān)鍵詞: EDA設(shè)計(jì) 小π DIY

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();