Zigbee 技術目前在物聯網領域和 RFID 一樣,受關注度非常高。日前中科院上海微系統與信息技術研究所、無錫物聯網產業研究院等傳感器網絡標準工作組成員單位聯合發布了名為 VW628 、 WSNS1_SCBR 的兩款中國自主知識產權的無線傳感網 SoC 芯片,其中 WSNS1_SCBR 為中國首款符合 IEEE802.15.4g 標準的驗證型全集成傳感網節點 SoC 芯片。
其實封裝好的 Zigbee 模塊,使用起來和操作串口一樣,特別是我們把其通信模式設置為透明傳輸模式,這時候我們已經感覺不到是在用 Zigbee 模塊,而覺得是在用一條串口線。在之前寫的《 Zigbee 在 .Net Micro Framework 系統中的應用 》博文中相對詳細的介紹了 Zigbee 相關模塊的應用,感興趣的網友,可以參考一下。
單個的 Zigbee 模塊非常小,其串口管腳為 TTL 電平,需要直接和 MCU 相連 , 具體接線管腳如下(簡便期間,我們只接 4 根管腳):
序號 |
Zigbee 模塊 |
紅牛開發板 |
1 |
3 ( RX0 ) |
PA2 ( USART2_TX ) |
2 |
4 ( TX0 ) |
PA3 ( USART2_RX ) |
3 |
6 ( GND ) |
GND |
4 |
7 ( VCC ) |
3.3v |
開發板上的控制程序如下(非常簡單,就是串口接收和小車控制程序):
// 打開串口 , 并設置 zigbee 模塊為透明傳輸模式
serial = new SerialPort ( "COM2" , 115200, Parity .None, 8, StopBits .One);
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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
