【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车
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
【低价开发板】http://item.taobao.com/item.htm?id=7117999726