zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    学习笔记5_Day09_网站访问量统计小练习
    学习笔记4_ServletContext(重要整个Web应用的动态资源之间共享数据)
    学习笔记03_Day09-----Servle与反射()
    学习笔记2_Day09_servlet的细节
    学习笔记1_Day09_Servlet
    OC对数组排序的方法
    sqlite事务处理
    封装数据库
    JsonModel的使用
    RBAC表
  • 原文地址:https://www.cnblogs.com/yefanqiu/p/1861953.html
Copyright © 2011-2022 走看看