天天看點

【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)

無論是用WIfi還是用GPRS遙控小車,目前都離不了PC這個中轉站,并且PC還得借助Zigbee通道和小車通信,這就大大地增加了此遙控平台的建構代價。以前在研究iRobot機器人的時候,用過其配套的藍牙子產品,可以通過PC上的藍牙連接配接,遠端控制iRobot(相關文章《用MF控制機器人》)。目前大部分手機也都支援藍牙接口,是以基于此,我們借用iRobot的藍牙子產品,就可以用手機直接遙控智能小車了。

不過問題來了,原藍牙子產品是和iRobot配套的,其子產品供電、序列槽連接配接等問題不用考慮,直接插入25針的接口就可以了,而我們想單獨使用,必須搞明白藍牙子產品的25針的各個含義才成。很可惜,藍牙子產品本身沒有更進一步的說明資料,幸好我們有iRobot的25針接口資料,可以反推藍牙子產品的pin腳資訊,說明書上pin1為RXD,則藍牙子產品的pin1就應該是TXD,同樣道理pin2為RXD。

最終的pin腳定義及與開發闆接線如下:

【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)
注:藍牙子產品要求5V供電,開發闆上比較容易引出的是3.3v,實際測試發現3.3v也能使藍牙子產品正常工作,另外藍牙子產品的序列槽為TTL電平。
【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)
好了,小車這邊的藍牙子產品我們已經接線完畢。下面我們開始配置手機上的藍牙子產品,下面就是手機藍牙子產品的設定步驟(注意,需保證與小車相連的藍牙子產品上電)
【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)

①     、進入設定面闆,選擇藍牙子產品并進入;

②     、選擇添加新裝置;

③     、掃描周圍的藍牙裝置;

④     、發現藍牙序列槽子產品;

⑤     、進行連接配接,并輸入連接配接密碼;

⑥     、選擇序列槽服務,單擊“完成”按鈕;

⑦     、進入COM端口面闆,選擇建立發送端口;

⑧     、選擇建立序列槽的裝置為藍牙序列槽裝置;

⑨     、選擇對應的序列槽,并單擊“完成”按鈕;

⑩     、運作藍牙操控程式(其實就是一個普通的序列槽程式);

手機的系統為Windows Mobile 6.0,相關代碼如下:

namespace WMBluetooth
    {
        public partial class frmMain : Form
        {
            //序列槽
            SerialPort serial = null;
            public frmMain()
            {
                InitializeComponent();   
                serial = new SerialPort("COM7", 57600, Parity.None, 8, StopBits.One);
                serial.Open();
            }
            private void btnForward_Click(object sender, EventArgs e)
            {
                serial.Write("0");
                serial.DiscardInBuffer();
            }
            private void btnLeft_Click(object sender, EventArgs e)
            {
                serial.Write("1");
                serial.DiscardInBuffer();
            }
            private void btnRight_Click(object sender, EventArgs e)
            {
                serial.Write("2");
                serial.DiscardInBuffer();
            }
            private void btnBack_Click(object sender, EventArgs e)
            {
                serial.Write("3");
                serial.DiscardInBuffer();
            }
            private void btnStop_Click(object sender, EventArgs e)
            {
                serial.Write("4");
                serial.DiscardInBuffer();
            }
            private void frmMain_Closed(object sender, EventArgs e)
            {
                serial.Close();
            }       
        }
 }           

小車上的代碼其實和上幾篇的文章類似,不過需要提醒的是,藍牙子產品要求的通信波特率為57600,具體代碼請參見《Zigbee遙控智能小車》。

【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)

一切配置停當後,運作手機上的程式,我們就可以直接控制小車了,和GPRS和Wifi方式不同,這次我們就可以把他們帶到室外,去盡情示範和控制了(前兩個你也可以帶到室外,不過前提是要帶上那個中轉站--PC)。

相關視訊(這是GPRS的視訊,控制方式相同,不過藍牙控制要比GPRS控制速度快多了):

http://video.sina.com.cn/v/b/40307740-1804832611.html

附記:

在讨論組發表相關圖檔後,有網友說iRobot的藍牙子產品太大了,此外考慮到iRobot的藍牙一是價格比較高,二是國内很難買到,是以我這邊測試了一款小巧實用的藍牙子產品,效果還不錯,成本效益還是很高的。 

注:此藍牙子產品的通信波特率為9600,預設配對密碼 1234,采用這款子產品,記得把相關波特率由57600修改為9600。

【STM32 .Net MF開發闆學習-20】藍牙遙控智能小車(手機模式)

(1)、小車底盤

http://item.taobao.com/item.htm?id=7218838776

(2)、四路直流電機驅動器

http://item.taobao.com/item.htm?id=7218717808

(3)、.NET Micro Framework開發闆

http://item.taobao.com/item.htm?id=7117999726

(4)、藍牙子產品

http://item.taobao.com/auction/item_detail.htm?item_num_id=8333868680

本文源碼:

http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/WMBluetooth.rar http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/BluetoothCar.rar

繼續閱讀