1. 程式人生 > >【STM32 Net MF開發板學習-20】藍芽遙控智慧小車(手機模式)

【STM32 Net MF開發板學習-20】藍芽遙控智慧小車(手機模式)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

無論是用WIfi還是用GPRS遙控小車,目前都離不了PC這個中轉站,並且PC還得藉助Zigbee通道和小車通訊,這就大大地增加了此遙控平臺的構建代價。以前在研究iRobot機器人的時候,用過其配套的藍芽模組,可以通過

PC上的藍芽連線,遠端控制iRobot(相關文章《MF控制機器人》)。目前大部分手機也都支援藍芽介面,所以基於此,我們借用iRobot的藍芽模組,就可以用手機直接遙控智慧小車了。

 

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

最終的pin

腳定義及與開發板接線如下:

序號

藍芽模組

.NET MF開發板

1

2RX0

PA2USART2_TX

2

1TX0

PA3USART2_RX

3

25GND

GND

4

8VCC

3.3v

注:藍芽模組要求5V供電,開發板上比較容易引出的是3.3v,實際測試發現3.3v也能使藍芽模組正常工作,另外藍芽模組的串列埠為

TTL電平。

 

 

  

好了,小車這邊的藍芽模組我們已經接線完畢。下面我們開始配置手機上的藍芽模組,下面就是手機藍芽模組的設定步驟(注意,需保證與小車相連的藍芽模組上電)

 

     、進入設定面板,選擇藍芽模組並進入;

     、選擇新增新裝置;

     、掃描周圍的藍芽裝置;

     、發現藍芽串列埠模組;

     、進行連線,並輸入連線密碼;

     、選擇串列埠服務,單擊“完成”按鈕;

     、進入COM埠面板,選擇新建傳送埠;

     、選擇新建串列埠的裝置為藍芽串列埠裝置;

     、選擇對應的串列埠,並單擊“完成”按鈕;

     、執行藍芽操控程式(其實就是一個普通的串列埠程式);

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

[c-sharp] view plain copy print ?
  1. namespace WMBluetooth  
  2.     {  
  3.         public partial class frmMain : Form  
  4.         {  
  5.             //串列埠  
  6.             SerialPort serial = null;  
  7.             public frmMain()  
  8.             {  
  9.                 InitializeComponent();     
  10.                 serial = new SerialPort("COM7", 57600, Parity.None, 8, StopBits.One);  
  11.                 serial.Open();  
  12.             }  
  13.             private void btnForward_Click(object sender, EventArgs e)  
  14.             {  
  15.                 serial.Write("0");  
  16.                 serial.DiscardInBuffer();  
  17.             }  
  18.             private void btnLeft_Click(object sender, EventArgs e)  
  19.             {  
  20.                 serial.Write("1");  
  21.                 serial.DiscardInBuffer();  
  22.             }  
  23.             private void btnRight_Click(object sender, EventArgs e)  
  24.             {  
  25.                 serial.Write("2");  
  26.                 serial.DiscardInBuffer();  
  27.             }  
  28.             private void btnBack_Click(object sender, EventArgs e)  
  29.             {  
  30.                 serial.Write("3");  
  31.                 serial.DiscardInBuffer();  
  32.             }  
  33.             private void btnStop_Click(object sender, EventArgs e)  
  34.             {  
  35.                 serial.Write("4");  
  36.                 serial.DiscardInBuffer();  
  37.             }  
  38.             private void frmMain_Closed(object sender, EventArgs e)  
  39.             {  
  40.                 serial.Close();  
  41.             }         
  42.         }  
  43.  }  
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遙控智慧小車》。

 

 

 

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

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

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

 

附記:

在討論組發表相關圖片後,有網友說iRobot的藍芽模組太大了,此外考慮到iRobot的藍芽一是價格比較高,二是國內很難買到,所以我這邊測試了一款小巧實用的藍芽模組,效果還不錯,價效比還是很高的。 

 

    注:此藍芽模組的通訊波特率為9600預設配對密碼 1234採用這款模組,記得把相關波特率由57600修改為9600

    

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

 

 

 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述