【STM32 Net MF開發板學習-16】Zigbee遙控智慧小車
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
Zigbee技術目前在物聯網領域和RFID一樣,受關注度非常高。日前中科院上海微系統與資訊科技研究所、無錫物聯網產業研究院等感測器網路標準工作組成員單位聯合釋出了名為VW628、WSNS1_SCBR
其實封裝好的Zigbee模組,使用起來和操作串列埠一樣,特別是我們把其通訊模式設定為透明傳輸模式,這時候我們已經感覺不到是在用Zigbee模組,而覺得是在用一條串列埠線。在之前寫的《Zigbee在.Net Micro Framework系統中的應用》博文中相對詳細的介紹了Zigbee相關模組的應用,感興趣的網友,可以參考一下。
單個的Zigbee模組非常小,其串列埠管腳為TTL電平,需要直接和MCU相連,具體接線管腳如下(簡便期間,我們只接
序號 |
Zigbee模組 |
紅牛開發板 |
1 |
3(RX0) |
PA2(USART2_TX) |
2 |
4(TX0) |
PA3(USART2_RX) |
3 |
6(GND) |
GND |
4 |
7(VCC) |
3.3v |
開發板上的控制程式如下(非常簡單,就是串列埠接收和小車控制程式):
//開啟串列埠,並設定zigbee模組為透明傳輸模式
serial.Open();
serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
string strCommand = "---2-";
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);
serial.Write(byteData, 0, byteData.Length);
//讀取資料
static void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (serial.BytesToRead > 0)
{
byte[] bytData = new byte[serial.BytesToRead];
serial.Read(bytData, 0, bytData.Length);
serial.Write(bytData, 0, bytData.Length);
string KeyName = "";
switch (bytData[0])
{
case 48: //'0'
KeyName = "Forward";
MoveForward();
break;
case 49: //'1'
KeyName = "Left";
MoveLeft();
break;
case 50: //'2'
KeyName = "Right";
MoveRight();
break;
case 51: //'3'
KeyName = "Back";
MoveBack();
break;
case 52: //'4'
KeyName = "Stop";
MoveStop();
break;
}
Debug.Print(KeyName);
}
}
上面的程式進行了簡化,關於小車PWM控制部分的程式碼,請參考我以前寫的博文《用PWM驅動智慧小車》及《紅外遙控智慧小車》。
為了便於控制,我們需要在PC上編寫一個最簡單的串列埠傳送程式,以控制智慧小車的運轉,相關程式碼如下:
//串列埠
SerialPort serial = null;
public frmMain()
{
InitializeComponent();
serial = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
serial.Open();
string strCommand = "---1-";
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);
serial.Write(byteData, 0, byteData.Length);
}
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
serial.Close();
}
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();
}
執行後的介面如下:
單擊相關按鈕,如果不出意外的話,在Zigbee通訊範圍的智慧小車應該已經動起來了。
相關控制視訊如下:
http://video.sina.com.cn/v/b/40292033-1804832611.html
(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
注:需要紅牛開發板韌體在 V1.0.0以上
本文原始碼1:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PCZigbee.rar
本文原始碼2:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/ZigbeeCar.rar
MF快速參考: .NET Micro Framework 快速入門
MF中文討論組:http://space.cnblogs.com/group/MFSoft/
微軟官方論壇:MSDN微軟中文技術論壇(.NET Micro Framework)
開發板簡明手冊:http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html
【低價開發板】http://item.taobao.com/item.htm?id=7117999726