开发者社区> 技术小美> 正文

【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车

简介:
+关注继续查看

Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片。

其实封装好的Zigbee模块,使用起来和操作串口一样,特别是我们把其通信模式设置为透明传输模式,这时候我们已经感觉不到是在用Zigbee模块,而觉得是在用一条串口线。在之前写的《Zigbee.Net Micro Framework系统中的应用》博文中相对详细的介绍了Zigbee相关模块的应用,感兴趣的网友,可以参考一下。

 

单个的Zigbee模块非常小,其串口管脚为TTL电平,需要直接和MCU相连,具体接线管脚如下(简便期间,我们只接4根管脚):

序号

Zigbee模块

红牛开发板

1

3RX0

PA2USART2_TX

2

4TX0

PA3USART2_RX

3

6GND

GND

4

7VCC

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以上

本文源码1http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PCZigbee.rar

本文源码2http://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






本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/411006,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
W800开发板上手体验:点亮智能灯
首先很感谢平头哥提供的W800开发板的试用机会,以下内容是我以点亮智能灯为例,将W800开发板连接网络和云端,并通过云智能APP进行控制的体验过程。
1472 0
【物联网智能网关-04】WinForm for .NET MF 功能一览
 .Net Micro Framework界面开发官方标准功能仅支持WPF方式,并且所谓的WPF开发和Windows平台上的WPF有很大的区别,即不支持可视化界面设计,也不支持XML方式界面格式定义,另外提供的控件也很少,又不含事件处理,所以使用上相对繁琐,需要自己写很多额外代码。
670 0
物联网入门训练营“W800开发板的奇思妙想”:智能药盒
如果你有好的创意或者对文中的创意有更多延展想法,也可以在本文后评论,我们还有少数试用开发板的机会,期待你的评论。
585 0
【STM32 .Net MF开发板学习-26】借道调试口与开发板通信
所谓调试口,就是供windows平台上的VS2008/VS2010调试的信道,当然MFDeploy和我编写的工具YFAccessFlash也是通过这个信道和开发板实现通信的。不过,这些通信过程,作为运行到开发板上的应用程序是无从知道的,这些基于开发板底层的通信,完全由TinyCLR进行全权管理。
446 0
物联网入门训练营“W800开发板的奇思妙想”:基于WiFi模块的智能门锁系统
如果你有好的创意或者对文中的创意有更多延展想法,也可以在本文后评论,我们还有少数试用开发板的机会,期待你的评论。
1654 0
在VSCode中编辑HTML文档时,在Dom标签上写style属性时智能提示的问题
首先在VSCode中打开一个HTML文件 然后点右下角的“选择语言模式” 然后点击配置HTML语言的基础设置 然后在打开的界面中(右侧) 输入如下代码 { "editor.quickSuggestions": { "other": true, "comments": tr...
1712 0
bundle adjustment算法学习
  今天学习了稀疏的光束平差法,基于上一篇博文Levenberg–Marquardt算法学习,这里对学习内容做一个理论梳理。本次内容包括: BA简介 BA迭代步长的数学推导 稀疏BA迭代步长的算法求解过程 1.BA简介    摄像机在静态环境中移动,得到不同时刻拍摄的多幅图像。
2024 0
+关注
6819
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载